mqtt
IoT

MQTTの基礎知識

概要

MQTTを使った開発をやる前にざっくりエッセンシャルな所を調べてみたよ、なメモ

MQTT?

TCP/IPのアプリケーション層に該当する軽量プロトコルで特徴としては

  • 軽量(ヘッダー最小2byte)
  • 双方向通信
  • TLS/SSL対応 (mqtts)
  • Pub/Sub型通信
  • Qos指定ができる(0~2)
  • BrokerがPublisherとSubscriberの中間に配置されてメッセージ配信を行う(中央集権型)
  • Retain(再接続時に接続が切れていた分を送信)/Will(切断時に切断されたメッセージを送る)

などがあり、上記の軽量・双方向通信可能な所から通信のオーバーヘッドが少ない、
消費電力が少なくても済む等、IoTの用途にあった通信方式と言われている。

商用利用の事例としてはFacebookMessagerなどがあげられる。

MQTT Essentials

MQTTはコマンドとペイロードで構成される。
代表的なコマンドを書いてみる。

コマンド

  • CONNECT

接続確立

  • SUBSCRIBE

トピックのサブスクライブすることを送信

  • UNSUBSCRIBE

トピックのサブスクライブを解除

  • PUBLISH

トピックにPUBLISHメッセージを配信
ブローカーを介して各サブスクライバに転送が行われる。

ペイロード

  • ペイロードについては特に細かい取り決め・フォーマットがない。(アプリケーション側の解釈に委ねる)
  • 256MBまで

Retain

トピックごとにメッセージを保持しておくことで
クライアントの接続が切れていた場合に再接続時に送信を行う。

Will

事前に接続しておいたトピックに切断時にメッセージを送る機構。
異常終了の検知・フォローのトリガーが主なユースケース。

参考資料

IBM社資料