MQTTとは? MQTTについてご紹介します。
ESP8266、ESP32、Raspberry Pi、Arduinoなどのエンドノードが、他のMQTTクライアントと通信することは、メーカー、フリーランサー、プロトタイプに最適なユースケースです。
IOT/IIOT/スマートホームシステム/ホームオートメーションシステムにおいて、MQTTはどのように重要な役割を果たしているのか?
MQTTプロトコルでは、メッセージブローカーと多数のクライアントという2種類のネットワークエンティティが定義されています。MQTTブローカーは、クライアントからすべてのメッセージを受信し、メッセージを適切な宛先クライアントにルーティングするサーバーです。
MQTTブローカーは、Raspberry Pi、ESP8266、ESP32、Arduinoなどの小型コントローラでもMQTTクライアントとして動作する。
MQTTクライアントとは、MQTTライブラリを実行し、ネットワーク経由でMQTTブローカーに接続するあらゆるデバイス(マイクロコントローラから本格的なサーバーまで)のことである。
パブリッシャーは、配信する新しいデータがあると、接続しているブローカーにそのデータを含むコントロールメッセージを送信します。MQTTブローカーは、そのトピックを購読しているMQTTクライアントに情報を配信します。
パブリッシャーはサブスクライバーの数や位置に関するデータを持つ必要はなく、逆にサブスクライバーはパブリッシャーに関するデータを設定する必要はありません。
ブローカーが現在のサブスクライバーがいないトピックのメッセージを受信した場合、メッセージのパブリッシャーがメッセージをリテインメッセージとして指定していない限り、ブローカーはそのメッセージを破棄します。保持されたメッセージとは、retained フラグが true に設定された通常の MQTT メッセージのことです。ブローカーは、最後に保持したメッセージと、選択したトピックに対応するQoSを保存します。
保持されたメッセージのトピックに一致するトピックパターンをサブスクライブした各クライアントは、サブスクライブ後すぐに保持されたメッセージを受け取ります。ブローカーは、リテインされたメッセージをトピックごとに1つだけ保存します。これにより、あるトピックの新しいサブスクライバーは、パブリッシャーからの次の更新を待たずに、最新の値を受け取ることができます。
パブリッシングクライアントが初めてブローカに接続したときに、ブローカが、パブリッシングクライアントがブローカから予期せず切断されたことを検出した場合に、サブスクライバに送信するデフォルトメッセージを設定することができます。
クライアントはブローカとしかやりとりしませんが、システムには、現在のサブスクライバのトピックに基づいてデータを交換する複数のブローカサーバが含まれている場合があります。
MQTTの最小制御メッセージは、わずか2バイトのデータである。
制御メッセージは、必要に応じて256メガバイト近くのデータを伝えることができます。クライアントとブローカーの接続や切断、データの公開、データの受信確認、クライアントとサーバー間の接続の監視などに使用されるメッセージタイプが定義されている。
MQTTは、データ転送にTCPプロトコルを使用しています。
標準TCPプロトコル:1883、暗号化:8883