スマートホームシステムで使用するテクノロジーについて混乱


8

私の大学のプロジェクト(スマートホームシステム)には、誰かがドアをノックすると画像が(ブラウザーの)モニターに表示される機能があります。私は、Arduinoを使用してドアノックセンサー(Piezo)を実装しています。Arduinoは、Raspberry Piにコマンドを送信して写真を撮り、それを別のコンピューターのブラウザーに送信する必要があります。このような他のいくつかのモジュールがあります。すべてが同じWiFiネットワークに接続されています。

うまくいけば、PHPとMySQL、およびいくつかのAjaxリクエストを絶えず実行して、何らかの方法で機能させることができます。node.jsとWebソケットについて聞いたことがありますが、学ぶ時間があるかどうかはわかりません。(絶対に必要な場合はできます)

とにかく、このタイプのシステムを実装するための正しい方法は誰ですか?それは本当に役に立ちます。


3
私はあなたがこれを行うための最良の方法を特定するのに苦労すると思います、なぜならそれはあなたが既に知っていることに依存するからです-誰かがあなたに既存のコードベースを教えてもらえない限り(しかし、あなたは多くを学ぶことができないかもしれません)。
Sean Houlihane 2017

サーバーまたはデータベースの変更に対してブラウザでリアルタイムアラートをトリガーするには、NodeJSが必要です。残りの機能はPHPで管理できます...!
Prashanth Benny

回答:


9

プッシュvsポーリング

頻繁にAJAXリクエストを送信するという提案されたソリューションは、ポーリングのように聞こえます。状態が変化したかどうかを確認するために、リクエストを時々送信しています。ピエゾセンサーが変更を検出したときにサーバーに変更をプッシュする方がはるかに理にかなっています。

それはこれの違いです:

サーバー:ドアに誰かいますか? センサー:いいえ
サーバー:ドアに誰かいますか? センサー:いいえ
サーバー:ドアに誰かいますか? センサー:いいえ
...無限に広告を繰り返す...

この:

センサー:ドアに誰かがいます!

最初の例はポーリングで、2番目の例はプッシュです。どれが電力使用量が少なく、コードが複雑でなく、ネットワーク使用量が削減されるかがわかります。

HTTPまたは何か他に?

AJAX要求はHTTP経由で送信されるため、非常に負荷が大きく、接続ごとにいくつかのTCPハンドシェイク が必要です(Keep-Aliveを使用する場合を除く)。

それはのような代替プロトコル検討する価値があるかもしれMQTTを(質問「でいくつかの良い説明があります、なぜMQTTプロトコルを使用するには?」、あなたに非常に同様の問題を持っています)。

MQTTのようなメッセージブローカーは、現在の状況で実際に必要とするよりも少し強力かもしれませんが、スマートホームネットワークにデバイスを追加することを選択した場合、1つのMQTTブローカーを簡単に拡張できますが、現在のAJAXリクエストのシステムは簡単ですすぐにバラバラになります。互いにポーリングしている4つまたは5つの異なるデバイスを想像してください。すぐにネットワークが過負荷になり、電力使用量が大幅に減少します。

ノードとWebソケット

Webソケットとノードを使用するとpollではなくpushを使用する問題が解決されるので、私の意見ではそれは良い考えです。ただし、実際にノードを学習したくない場合は、ポーリングが機能すると思います。

スマートホームを拡張するときに機能する拡張可能なソリューションが必要場合は、確実にプッシュすることをお勧めします。これにより、多くのトラブルと涙を節約できます。概念の簡単な実証が必要な場合は、おそらくポーリングが機能します。

私の個人的なアドバイスは、Webソケットを学ぶか、MQTTのようなメッセージブローカーを使用して調査する必要があるということです。Mosquitto-PHPHiveMQによるガイド付き)などのクライアントライブラリを使用して、PHPでのMQTTの使用を簡素化するか、ノードとWebソケットを使用します。NodeソケットとWebソケットの学習リソースは改善されると思いますが、MQTTはスマートホーム/ IoT環境に好まれる傾向があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.