MQTT

読み:えむきゅーてぃーてぃー / 英語表記:Message Queuing Telemetry Transport

IoT機器向けの軽量なメッセージングプロトコル。TCPの上で動き、送信者(パブリッシャ)と受信者(サブスクライバ)が、ブローカーと呼ばれるサーバを介してメッセージをやり取りする(パブリッシュ/サブスクライブ型)。

イマシルちゃんの解説

MQTTは、掲示板みたいな仕組みなんだ。

温度センサーは、「部屋1の温度」っていう掲示板に、測った温度を貼り出すだけ。
その温度を知りたいスマホやサーバは、「部屋1の温度」の掲示板を見張っておくと、新しい情報が貼られるたびに届けてもらえる。
センサーは「誰が見ているか」を気にしなくていいから、とってもシンプルなんだよ!

より深い解説

定義

MQTT(Message Queuing Telemetry Transport)は、OASISで標準化された、パブリッシュ/サブスクライブ型のメッセージングプロトコルである。ヘッダーが最小2バイトと小さく、処理能力やバッテリーの限られたIoT機器や、不安定な回線での利用を想定して設計されている。通常はTCPの1883番ポート(TLSを使う場合は8883番)を使う。

パブリッシュ/サブスクライブ型

役割内容
パブリッシャメッセージをトピック(例:factory/line1/temperature)を付けてブローカーに送る
ブローカーメッセージを受け取り、そのトピックを購読しているサブスクライバに配る
サブスクライバ関心のあるトピックをブローカーに登録(購読)し、メッセージを受け取る

送信者と受信者が互いを直接知る必要がなく、1対多の配信や、機器の追加・削除がしやすい。

QoS(配信の保証レベル)

QoS意味内容
0At most once最大1回。届かないこともある(確認しない)
1At least once少なくとも1回。確認応答を待ち、届かなければ再送する(重複の可能性あり)
2Exactly onceちょうど1回。4回のやり取りで、重複なく届ける

CoAPとの比較

MQTTCoAP
トランスポートTCPUDP
通信モデルパブリッシュ/サブスクライブ(ブローカー経由)リクエスト/レスポンス(HTTPに似たRESTの方式)
メッセージの形式バイナリバイナリ(固定ヘッダー4バイト)
信頼性の確保TCPと、MQTTのQoS確認応答付きのメッセージ(CON)で再送
向いている場面多数の機器からデータを集める、通知を配る小電力の機器を直接操作する、制約の厳しいネットワーク

どちらもIoT向けの軽量なプロトコルだが、「パケット損失が起きやすい環境の、小電力の機器向けで、UDPの上で動くRESTのプロトコル」はCoAPである。

その他の機能

機能内容
Retainトピックの最後のメッセージをブローカーが保持し、新しいサブスクライバにすぐ送る
Will(遺言)機器が不意に切断されたとき、あらかじめ登録したメッセージをブローカーが配信する
Keep Alive定期的に通信して、接続が生きていることを確認する

実際の試験ではここに出る!

この用語が出てくる記事

↑