Bingung tentang teknologi mana yang harus digunakan dalam Sistem Rumah Pintar

8

Dalam proyek kuliah saya (Smart Home System) ada fungsi di mana jika seseorang mengetuk pintu gambar harus ditampilkan pada monitor (di browser). Saya menerapkan sensor ketukan pintu (Piezo) menggunakan Arduino yang entah bagaimana harus mengirim perintah ke Raspberry Pi untuk mengambil foto, yang akan dikirim ke browser komputer yang berbeda. Ada beberapa modul lain seperti ini. Semuanya terhubung ke jaringan WiFi yang sama.

Sekarang saya berharap dapat membuatnya bekerja entah bagaimana menggunakan PHP dan MySQL dan beberapa permintaan Ajax berjalan terus-menerus, tapi itu mungkin bukan cara yang sangat rapi untuk melakukannya. Saya pernah mendengar tentang node.js dan soket web tetapi saya tidak yakin saya punya waktu untuk mempelajarinya. (Saya bisa jika itu benar-benar diperlukan)

Pokoknya ada yang bisa memberi tahu saya yang merupakan cara yang tepat untuk menerapkan sistem jenis ini? Ini akan sangat membantu.

Salim Shamim
sumber
3
Saya pikir kami akan berjuang untuk mengidentifikasi cara terbaik bagi Anda untuk melakukan ini, karena sangat tergantung pada apa yang sudah Anda ketahui - kecuali seseorang dapat mengarahkan Anda ke basis kode yang ada (tapi kemudian Anda mungkin tidak belajar banyak).
Sean Houlihane
Agar peringatan waktu nyata dipicu di browser untuk perubahan di server atau database, NodeJS akan diperlukan. Fungsionalitas lainnya dapat dikelola oleh PHP ...!
Prashanth Benny

Jawaban:

9

Dorong vs Poll

Solusi yang Anda usulkan untuk mengirim permintaan AJAX yang sering terdengar sangat mirip dengan polling - Anda sering mengirim permintaan untuk memeriksa apakah keadaan telah berubah. Akan jauh lebih masuk akal untuk mendorong perubahan ke server ketika sensor piezo mendeteksi perubahan.

Perbedaannya antara ini:

Server: Apakah ada seseorang di pintu? Sensor: Tidak .
Server: Apakah ada seseorang di pintu? Sensor: Tidak .
Server: Apakah ada seseorang di pintu? Sensor: Tidak .
... ulangi tak terhingga iklan ...

Dan ini:

Sensor: Ada seseorang di pintu!

Contoh pertama adalah polling, dan yang kedua mendorong. Anda dapat mengetahui mana yang akan memiliki penggunaan daya lebih rendah, kode kurang kompleks dan penggunaan jaringan berkurang.

HTTP atau Sesuatu Yang Lain?

Permintaan AJAX dikirim melalui HTTP, sehingga cukup berat dan membutuhkan beberapa handshake TCP per koneksi (kecuali jika Anda menggunakan Keep-Alive ).

Mungkin patut dipertimbangkan protokol alternatif seperti MQTT (ada beberapa penjelasan yang bagus dalam pertanyaan ' Kapan dan mengapa menggunakan protokol MQTT? ', Yang memiliki masalah yang sangat mirip dengan Anda).

Pialang pesan seperti MQTT mungkin sedikit lebih kuat daripada yang sebenarnya Anda butuhkan dalam situasi Anda saat ini, tetapi satu pialang MQTT dapat dengan mudah diperluas jika Anda memilih untuk menambahkan lebih banyak perangkat ke jaringan rumah pintar Anda, sedangkan sistem permintaan AJAX saat ini akan cepat berantakan. Bayangkan empat atau lima perangkat berbeda saling polling; itu akan dengan cepat menyebabkan jaringan Anda menjadi kelebihan beban dan itu akan sangat menguras penggunaan daya.

Soket Node dan Web

Menggunakan soket web dan Node akan menyelesaikan masalah penggunaan push, bukan polling , jadi menurut saya itu ide yang bagus. Namun , saya menduga polling akan berhasil jika Anda benar-benar tidak ingin belajar Node.

Jika Anda menginginkan solusi yang dapat diperluas yang akan bekerja ketika Anda memperluas rumah pintar Anda, pasti pergi dengan mendorong - itu akan menghemat banyak masalah dan air mata. Jika Anda hanya ingin bukti konsep cepat, pemungutan suara mungkin akan berhasil.

Saran pribadi saya adalah Anda harus mempelajari soket web atau menyelidiki menggunakan broker pesan seperti MQTT. Anda bisa menggunakan perpustakaan klien seperti Mosquitto-PHP (dengan panduan oleh HiveMQ ) untuk menyederhanakan menggunakan MQTT dalam PHP, atau cukup dengan Node dan soket web. Saya menduga sumber belajar untuk Node dan soket web akan lebih baik, tetapi MQTT cenderung disukai untuk lingkungan rumah pintar / IoT.

Aurora0001
sumber