MQTT - IoTメッセージング・プロトコル
MQTTは、低帯域幅に制約のあるデバイスに使用されるシンプルで小規模なメッセージングプロトコルです。 IoTデバイスが接続先のアプリケーションと通信するための最適な方法です。 MQTTを使用すると、デバイスはコマンドを送信して出力を制御し、他のデバイスからデータを読み取って公開できます。
Main Concepts
下記は、MQTTプロトコルのコア要素です。 こちらの概念は、MQTTプロトコルがデバイスとブローカー間の通信を容易にする方法のフローを理解するのに役立ちます。
メッセージ

デバイス間で交換(送信/受信)される情報。 コマンドまたはデータにすることができます。
例:24C
トピック

トピックは、デバイスが相互に情報を共有できるようにするアドレス指定の形式です。 MQTTトピック構造は、スラッシュ(/)を使用したファイルシステム内のフォルダーと同様の階層にあります。
例: home/room/thermometer
パブ・サブ

パブリッシャーは、トピックに関するメッセージを公開します。(パブ)
サブスクライバーはトピックをサブスクライブし、メッセージを受信します。(サブ)
例:
- パブリッシャーはトピックに公開します。
- サブスクライバーは、パブリッシャーが公開しているのと同じトピックにサブスクライブされます。
- サブスクラバーはメッセージを受信します。
ブローカー

メッセージを特定し、トピックに基づいて正しいパブリッシャー/サブスクライバーに送信します。
例: AWS IoT Core
MQTTと室温データ

部屋の温度計は、トピックに温度(24C)のメッセージを公開します。 トピックとメッセージはブローカーによって受信されます。

ブローカーは、公開されたメッセージを促進し、関連するトピックにサブスクライブしているデバイスに公開します。 サブスクライブされたデバイスは、適切なトピックにサブスクライブされているため、24Cの温度データを受信します。
なぜMQTTを使用するのですか?
軽量であるため、高遅延、帯域幅が制限されているシナリオで使用できます。
柔軟性があり、その用途の広いプロトコルは業界標準として使用されており、多くのIoTハードウェアデバイスと組み合わせることができます。
双方向通信は、一方向であるHTTPとは異なり、MQTTはデバイス間の双方向通信を可能にします。 MQTTを使用するIoTデバイスは、情報をアクティブに送信したり、パッシブに受信したりできます。これは、HTTPを使用して行うことはできません。