私は、温度や湿度などの環境から情報を感知して収集するデバイスに取り組んでいます。
デバイスはどの電源にも接続されていませんが、バッテリーと充電用のソーラーパネルがあります。
ほとんどの場合、ほぼディープスリープ状態にあり、データを検知して転送する必要がある場合にのみウェイクアップします。この操作には約1〜2分かかり、その後再びスリープ状態になります。
私はこの分野の専門家ではありませんが、トピックからのメッセージを常に受信するためにデバイスにアクセスできる必要がある場合はMQTTが良いオプションだと思いますが、私のシナリオでは、センサーを読み取り、データを定期的にサーバー。
現在、HTTPを介してデータを送信していますが、MQTTを実装するのが理にかなっているのでしょうか。このシナリオでは、HTTPよりも利点がありますか?
MQTTとHTTPについては、詳細を調べる必要のある豊富な資料がありますが、ここでは、アプリケーションの重要なポイントをいくつか紹介します。
MQTT
要約すると、MQTTには、アプリケーションに最適と思われる多くの機能があります。そうは言っても、HTTPを使用してそれらの多くを複製できる可能性がありますが、より多くの作業が必要になります。
HTTP
ファイアウォールとの互換性を容易にするため、どこでもほぼサポートされています。これは、制御していないネットワークに展開している場合に重要になる可能性があります。
これはより一般的なプロトコルであるため、あなた(およびエンドユーザー)はすでにそれを快適に感じるかもしれません。同様に、セキュリティ保護を容易にするセキュリティモデルをすでに理解しているかもしれません。
さまざまなMQTT実装にはいくつかの違いがあり、問題が発生する可能性があります(つまり、私はMosquittoを使用しており、HiveMQのセットアップについて話すときに混乱することがあります)。 HTTPは私をより普遍的なものとして印象づけ、あなたを助けるために利用できる人々のはるかに大きなコミュニティを持っています。
そのため、HTTPにはMQTTと比較していくつかの固有の欠点がありますが、MQTTの特定の機能が魅力的でない場合は、作業が完了し、より実用的である可能性があります。
しかし、これが大規模なプロジェクトである場合は、両方を試して、特定のアプリケーションと環境でいくつかのベンチマークとテストを実行する価値があります。テスト環境をセットアップしていくつかのメトリックを取得することは難しくありません。これが趣味/一回限りのプロジェクトである場合、私はあなたがより快適であるか、より興味深いと思うものを使用します。
出典/参考資料:
http://stephendnicholas.com/posts/power-profiling-mqtt-vs-httpshttps://www.ibm.com/developerworks/community/blogs/sowhatfordevs/entry/ using_mqtt_protocol_advantages_over_http_in_mobile_application_development5?lang = enhttps://medium.com/@shubhanshusingh/http-vs-mqtt-9008d448bf88https://www.slideshare.net/paolopat/mqtt -iot-protocols-comparisonhttps://mobilebit.wordpress.com/2013/05/03/rest-is-for-sleeping-mqtt-is-for-mobile/ - http://bec-systems.com/site/1200/iot-protocols-mqtt-vs-coap-vs-http
パフォーマンスの観点とエネルギー消費の両方の観点から、通常のサーバーとRaspberry PiボードからSSLを介して MQTT vs HTTP(REST) をテストしました。結果は、プロセスが実行されているユースケースとデバイスによって異なります。
ユースケースに関しては、特別なテストもあります=> HTTP、HTTPバッチ、またはMQTTを介して多くのメッセージ(複数のプローブ)を配信します。 1つのHTTPリクエストでデータを送信する可能性がある場合、結果は非常に単純です。これが最良のオプションです。 MQTTは2位であり、メッセージごとの配信を伴うHTTPは、MQTTよりも電力効率がはるかに低く、低速です。
私はこのゲームを初めて使用しますが、データを収集してデバイスに情報を送信するためのmqttが大好きです。
私はシナプスrf200チップ(自己修復メッシュネットワーク)を使用しており、rf200の1つをesp8266wifiチップにシリアル接続することでブリッジを構築しました。
基本的に、トピックとしてmqtt_inとmqtt_outがあり、c#xamarin iOs/Androidアプリケーションはmqttブローカーに接続し、mqtt_in(rf200メッシュネットワーク内)を使用してrf200から情報を要求し、ノードはmqtt_out(rf200メッシュネットワーク外)を使用して応答します。必要に応じて文字列が解析されるときにすべての情報を収集し、必要なものに変換します。
オーバーヘッドが非常に低く、mqttブローカーのセットアップは非常に簡単です。