次にやりとりされたMQTTメッセージの中身を見てみましょう。以下の説明に関しては、参考文献「MQTT V3.1 プロトコル仕様1」をあわせて参照してください。
connectメッセージ
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-------------------------------------------------------------------------
0000 10 1b 00 04 4d 51 54 54 04 02 00 3c 00 0f 70 63 ....MQTT...<..pc
0010 31 34 36 31 38 33 31 35 31 37 31 37 31 1461831517171
0x10がMQTTのコネクト要求であることを示し、次の0x1bはメッセージの長さ、“ MQTT”はプロトコル名を示します。0x04はプロトコルバージョン、0x02は接続フラグを示します。Clean Sessionフラグが立っていますが、これはブローカーが持っているこのクライアントのこれまでの情報を破棄することを意味します。
0x003cはキープアライブ・タイマーの値です。0x000fは次に続くユーザーネームの長さを示しています。“pc1461831517171”がユーザーネームです。
connectに対するAck
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-------------------------------------------------------------------------
0000 20 02 00 00 ...
これはブローカーからクライアントに送られるメッセージです。
0x20はMQTTのコネクト要求に対するAckであることを示しています。次の0x02はメッセージの長さを示します。
subscribe要求
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-------------------------------------------------------------------------
0000 82 06 00 03 00 01 23 00 ......#.
これはサブスクライバーがブローカーに送るリクエストメッセージです。
0x82はMQTTのsubscribe要求であることを示しています。次の0x06はメッセージの長さ、“ # ”はサブスクライブ要求したトピックを示します。この場合全てのトピックに対してサブスクライブ要求を行っています。
MQTTで始めるIoTデバイスの作り方 第1回:「MQTT」を知り「Mosquitto」を導入する
WebブラウザからHTTPサーバ経由でESP8266に接続されたセンサーの値を読み出す
ESP8266を使って、Webブラウザ経由でマイコンを制御する
ESP8266にmbedマイコンを接続してM2Mを実現する
ESP8266を宅内Wi-Fiにぶら下げるATコマンド実例
ESP8266を宅内Wi-Fiにぶら下げるATコマンド実例Copyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク
よく読まれている編集記者コラム