プッシュvsポーリング
頻繁にAJAXリクエストを送信するという提案されたソリューションは、ポーリングのように聞こえます。状態が変化したかどうかを確認するために、リクエストを時々送信しています。ピエゾセンサーが変更を検出したときにサーバーに変更をプッシュする方がはるかに理にかなっています。
それはこれの違いです:
サーバー:ドアに誰かいますか?
センサー:いいえ。
サーバー:ドアに誰かいますか?
センサー:いいえ。
サーバー:ドアに誰かいますか?
センサー:いいえ。
...無限に広告を繰り返す...
この:
センサー:ドアに誰かがいます!
最初の例はポーリングで、2番目の例はプッシュです。どれが電力使用量が少なく、コードが複雑でなく、ネットワーク使用量が削減されるかがわかります。
HTTPまたは何か他に?
AJAX要求はHTTP経由で送信されるため、非常に負荷が大きく、接続ごとにいくつかのTCPハンドシェイク が必要です(Keep-Aliveを使用する場合を除く)。
それはのような代替プロトコル検討する価値があるかもしれMQTTを(質問「でいくつかの良い説明があります、なぜMQTTプロトコルを使用するには?」、あなたに非常に同様の問題を持っています)。
MQTTのようなメッセージブローカーは、現在の状況で実際に必要とするよりも少し強力かもしれませんが、スマートホームネットワークにデバイスを追加することを選択した場合、1つのMQTTブローカーを簡単に拡張できますが、現在のAJAXリクエストのシステムは簡単ですすぐにバラバラになります。互いにポーリングしている4つまたは5つの異なるデバイスを想像してください。すぐにネットワークが過負荷になり、電力使用量が大幅に減少します。
ノードとWebソケット
Webソケットとノードを使用すると、pollではなくpushを使用する問題が解決されるので、私の意見ではそれは良い考えです。ただし、実際にノードを学習したくない場合は、ポーリングが機能すると思います。
スマートホームを拡張するときに機能する拡張可能なソリューションが必要な場合は、確実にプッシュすることをお勧めします。これにより、多くのトラブルと涙を節約できます。概念の簡単な実証が必要な場合は、おそらくポーリングが機能します。
私の個人的なアドバイスは、Webソケットを学ぶか、MQTTのようなメッセージブローカーを使用して調査する必要があるということです。Mosquitto-PHP(HiveMQによるガイド付き)などのクライアントライブラリを使用して、PHPでのMQTTの使用を簡素化するか、ノードとWebソケットを使用します。NodeソケットとWebソケットの学習リソースは改善されると思いますが、MQTTはスマートホーム/ IoT環境に好まれる傾向があります。