2017-05-19 13 views
2

温度、湿度などの環境情報を検知して収集するデバイスに取り組んでいます。IoT:MQTTまたはHTTPを使用する必要がありますか?

デバイスは電源に接続されていませんが、バッテリーとソーラーパネルがありますそれを充電。

ほとんどの場合、深いスリープ状態にあり、データを検出して転送する必要があるときにのみ目を覚まします。この操作には約1〜2分かかり、その後再びスリープ状態になります。

私はこの分野の専門家ではありませんが、常にトピックからメッセージを受信できるようにデバイスにアクセスする必要がある場合はMQTTを使用することをお勧めします。定期的にサーバーにデータを送信します。

現在、私はHTTPでデータを送信していますが、MQTTを実装するのが理にかなっているのでしょうか?このシナリオでは、HTTPよりも利点がありますか?

+1

読んで興味のあるIoTサイトで[この質問](https://iot.stackexchange.com/questions/44/when-and-why-to-use-mqtt-protocol)を見つけることができます。また、スタックオーバフローに関する回答が得られない場合は、IoTサイトが興味のあるビットにもっと集中するかもしれないかどうかを尋ねることもできます。 – Aurora0001

答えて

2

詳細については、MQTT対HTTPに関する豊富な文献がありますが、ここではアプリケーションの重要な点についていくつかご説明します。

MQTT

  • MQTTは、HTTP上で重要なリソースを節約することができ、永続的な接続が可能になります。これは、SSLを使用している場合に最も適切です。
  • いくつかのメトリックしか送信しない場合は、MQTTは一般にHTTPよりも帯域幅が効率的です。
  • MQTTはデータ(ページ全体ではない)を配信するように設計されているため、pub/subモデルは、保持や最終意思などの多くの便利な組み込み機能を提供します。
  • また、MQTTは、暗号化、認証、およびアクセス制御を実装する簡単な方法を提供します。
  • MQTTは、接続が断続的であるか、そうでなければ信頼できない状況に適しています。さまざまなサービス品質(Quality-of-Service)レベルは、データが確実に確実に送信されるようにするための重要な方法を提供します。
  • 大規模なアプリケーションでは、MQTTブローカーは私の経験を簡単に管理します。私は特に、パフォーマンスを測定するための標準化された一連の測定基準があるのが好きです。
  • MQTTのトピック/サブトピック値構造は、データを整理するのに役立ち、複数のプロジェクト間で物事を拡大し、リソースを共有するのを容易にします。
  • これは個人的な好みかもしれませんが、私はMQTTプロトコルがHTTPを扱うよりも理解しやすく、トラブルシューティングし、プログラミングするのが簡単だと分かります。特に、Python Paho MQTTライブラリはシンプルであり、うまく機能します。

要約すると、MQTTには多くの機能があり、アプリケーションにとって完璧なように見えます。つまり、HTTPを使用してそれらの多くを複製する可能性がありますが、より多くの作業が必要になります。

HTTP

  • ほとんどのファイアウォールとの容易な互換性を保証するどこでもサポート。これは、制御していないネットワーク上に展開している場合は重要です。

  • これはもっと一般的なプロトコルなので、あなた(そしてあなたのエンドユーザ)は既にそれに慣れているかもしれません。同様に、セキュリティモデルを理解していると、セキュリティを確保しやすくなります。

  • MQTTの実装にはいくつかの違いがありますが、問題が発生する可能性があります(つまり、私がMosquittoを使用し、HiveMQセットアップについて人々が混乱していることがあります)。 HTTPは私をより普遍的なものにしてくれるし、あなたを助けるために利用できる人々のコミュニティがはるかに大きい。

ので、HTTPはMQTTに対して、いくつかの固有の欠点を持っていますが、それは仕事を得るだろうとMQTTの特定の機能があなたにアピールしていない場合は、より実用的かもしれません。

しかし、これが大規模なプロジェクトであれば、特定のアプリケーションと環境で両方のベンチマークとテストを実行する価値があります。テスト環境をセットアップし、いくつかの指標を得ることは難しいことではありません。これが趣味/一度限りのプロジェクトのほうが多ければ、私はあなたがより快適であるか、より興味深いものを使用します。

ソース/参考資料:

http://stephendnicholas.com/posts/power-profiling-mqtt-vs-https https://www.ibm.com/developerworks/community/blogs/sowhatfordevs/entry/using_mqtt_protocol_advantages_over_http_in_mobile_application_development5?lang=en https://medium.com/@shubhanshusingh/http-vs-mqtt-9008d448bf88 https://www.slideshare.net/paolopat/mqtt-iot-protocols-comparison https://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

1

私はゲームに新しいですが、私はデータを収集し、デバイスに情報を送信するためのMQTTが大好きです。

私はシナプスrf200チップ(自己治癒メッシュネットワーク)を使用していますが、rf200のいずれかをesp8266無線チップにシリアル接続してブリッジを構築しました。

私は基本的にトピックとしてmqtt_inとmqtt_outを持っています。私のC#xamarin iOs/androidアプリケーションは、mqtt_in(rf200メッシュネットワークに)を使ってrf200の情報をmqttブローカーに要求し、ノードはmqtt_outを使って応答しますrf200メッシュネットワーク)私は、必要に応じて文字列解析のすべての情報を収集し、必要なものに変換します。

非常にオーバーヘッドが少なく、mqttブローカーはセットアップが非常に簡単です。

0

正常なサーバーとラズベリーパイボードの両方からSSLを介してMQTT vs HTTP(REST)をテストしました。これはパフォーマンスの観点とエネルギー消費の両方からです。結果は、プロセスが実行されているユースケースとデバイスに依存します。

ユースケースに関しては、HTTP、HTTP-batch、MQTTを使用して多数のメッセージ(複数のプローブ)を配信する特別なテストもあります。 1つのHTTPリクエストでデータを送信する可能性がある場合は、結果は非常に簡単です。これが最適なオプションです。 MQTTは第2位であり、メッセージごとの配信によるHTTPの電力効率ははるかに低く、MQTTは遅いです。

関連する問題