MQTTプロトコルを使用するタイミングと理由


34

温度、湿度、質量を測定するデバイスを開発しています。現在、HTTPSを使用してデータをリモートサーバーにアップロードしています。「モノのインターネットのプロトコル」であると主張されているMQTTと呼ばれるプロトコルがあることを私は知っています。

どのような場合、なぜHTTPSからMQTTに切り替える必要がありますか?

回答:


32

MQTTは、デバイス間の「メッセンジャー」です。

  • デバイスは時間TでX度の温度を測定します
  • (自身またはzwaveハブを介して)MQTTブローカーに接続します
  • トピックを含むメッセージを作成します /domotics/myplace/mydevice/temperature
  • X(「ペイロード」として)置くメッセージ内

あなたの家の他の場所:

  • Raspberry PiはMQTTブローカーに接続されています(MQTTインスタンス自体でもかまいません)
  • トピック/domotics/+/+/temperatureにサブスクライブして、このトピック形式を使用するすべてのデバイスからすべての温度情報を受信します。MQTTトピックのワイルドカード(および)の詳細については、MQTT仕様を参照してください。+#
  • ペイロードを含むメッセージを受信し、X必要な処理を実行します。

あなたの家の他の場所:

  • コンピューターはMQTTブローカーに接続され、トピック/domotics/myplace/mydevice/#にサブスクライブして、デバイスからすべての情報を取得してログに記録します
  • ペイロードを含むメッセージを受信し、X必要な処理を実行します。

MQTTは、サーバー全体にWebサービスとソケットを配置しないようにするのに非常に便利です。Node-REDはMQTTを使用し、Domoticzはシグナルを取得inおよび設定outするように構成できます。

私は個人的に自宅でMQTTを使用してコンピューターの電源を切ります:/house/computers/mycomputerペイロード:0


ソケットやその他のWebサービスに煩わされる必要がないというのは良い点です。
ベンスカウリック16

セキュリティ面についてコメントできますか?トラフィックは平文ですか?
Mawg 16

1
別の回答では、MQTTはTLSをサポートしています。iot.stackexchange.com/a/69/39
グーファライト16

20

MQTTとして知られるMQ Telemetry Transport Protocolは、低電力および低帯域幅で動作するデバイス向けに設計されています。これは、他のデバイスが特定のトピックをサブスクライブできることを意味する、軽量のパブリッシュ/サブスクライブメッセージングプロトコルです。

HTTP / HTTPSは、クライアントサーバーコンピューティング用の要求/応答プロトコルとして設計されており、電力の使用を気にすることはなく、多くのデータオーバーヘッドがあります。

次の場合にMQTTを使用します。

  • 使用しているデバイスはバッテリーセルで実行されており、x日ごとに交換する必要はありません(MQTTはバッテリー使用に対して最適化されていますが、HTTP / Sはそうではありません)
  • より迅速な対応が必要
  • pub / subメカニズムが必要(多くのクライアントにメッセージをプッシュしたい場合)
  • 異なるレベルのQoSでデータを確実に送信する必要がある

MQTTはHTTPSと同等のセキュリティを提供しますか?

MQTTはトランスポートプロトコルとしてTCPに依存しています。つまり、デフォルトでは、接続は暗号化された通信を使用しません。MQTT通信全体を暗号化するために、HiveMQなどのほとんどのMQTTブローカーは、プレーンTCPの代わりにTLSを使用できます。

参照:HiveMQ


1
MQTTはHTTPSと同等のセキュリティを提供しますか?
ベンスカウリック16

2
SSL / TLSを使用できるため、HTTPSと同じくらい安全である必要があります。
ガニマ16

1
@Ghanimaがまさに言ったように、MQTTの保護についての話を確認するために、参照記事で回答を更新しました。
bravokeyl

11

MQTT(Message Queue Telemetry Transport)は、提案されたアプリケーションに適しているようです。

帯域幅(わずか2バイトのヘッダーを持つ最小のパケットサイズ)とクライアントコードのフットプリント(ESP8266などのシンクライアント、典型的なIoTクライアントで実行可能)の両方に関して軽量です。送信データの削減は、センサーなどのオフグリッドバッテリ駆動クライアントのバッテリ寿命を延ばすのに役立ちます。

MQTTは、予期しないクライアントの切断後に接続を回復する永続サブスクリプションなど、IoTタスクに適した単純なメソッド(動詞)も提供します。HTTP / HTTPSと比較して、パッケージからデータを抽出する方が簡単です(パーサーは不要です)。


5

ここで、プロジェクトで使用した通信システムの進化と進化を示す記事書きました。これはマイクロサービスに関するものですが、あらゆるセンサーがあらゆる種類のテレメトリデータを収集して公開するという仕事を持つマイクロサービスであると考えることができます。

したがって、最も重要な結論は、イベントをどこかに送信する必要があり、受信者について何も知らない場合にMQTTを使用する方が良いということです。また、受信者について何かを知っていて、何らかの応答が必要な場合は、HTTP(通常はREST)を使用することをお勧めします。

トラフィック、CPU、メモリ、エネルギー消費の観点から、MQTTとHTTPは基本的に同じです。


2

引用に関して、MQTTは「モノのインターネットのプロトコル」です。

はい、このプロトコルを使用する開発者は多数います(IoT Developer Survey 2018を参照)が、CoAP(UDPに基づいてIoT用に調整されたHTTP)は、あなたの申請。

一方、MQTTは組み込みのパブリッシュ/サブスクライブロジックを提供し、スケーリングに最適です(より多くのデバイスに対してより多くのゲートウェイを使用できます)。また、MQTT-SN(センサーネットワークのMQTT)と呼ばれるUDP代替(CoAPからHTTPなど)もあります。これにより、CoAPよりも小さなオーバーヘッドが提供されますが、R / Rは使用されません。

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