次のリストはTera TermでMQTTメッセージのやりとりを行ったログです。
AT+CIPSTART="TCP","192.168.1.16",1883
CONNECT
OK
AT+CIPSEND=25
OK
> MQIsdp<guest01
busy s...
Recv 25 bytes
SEND OK
 
+IPD,4: 
AT+CIPSEND=8
OK
>
Recv 8 bytes
SEND OK
 
+IPD,5:
+IPD,16:0
         arduino/d2/0
+IPD,16:0
         arduino/d2/1
 
AT+CIPSEND=16
OK
>
Recv 16 bytes
SEND OK
1行目でブローカーがあるPCのIPアドレスとポート番号を指定して接続します。一般的にMQTTプロトコルは1883番が使われます。
4行目でMQTTブローカーに対してコネクト要求を送るため、ESP8266に対してATコマンドで「これから25バイト送る」ことを通知します。その後、先ほどマクロをファイルとして用意しましたが、そのマクロを呼び出します。
Tera Termの「コントロール」から「マクロ」を選択し、connect.ttlを選択します。するとマクロに記載したバイナリデータが送出されます。11行目で4バイト受信していますが、これはconnect要求に対するAckが帰ってきたことを示しています。ただASCIIコードではないので画面には内容は表示されません。
12行目からsubscribe要求を送っています。方法は先ほどのconnect要求を送った時と同じです。18行でsubscribe要求に対するAckが帰ってきています。19行目と21行目でpublishメッセージを受信しています。
24行目でpublishメッセージを送っています。実際にメッセージが送られたかどうかは、moquittoを起動するときに-vオプションを付けておけば、ブローカーを起動したコマンドプロンプトの画面で確認できます。
以下プローカーのログ表示の内送ったpublishメッセージに関わる部分です。
1461890015: Received PUBLISH from guest01 (d0, q0, r0, m0, 'arduino/d2/', ... (1 bytes)) 1461890015: Sending PUBLISH to mosqsub/1288-hiro3 (d0, q0, r0, m0, 'arduino/d2/', ... (1 bytes))
このログからブローカーはguest01からpublishメッセージを送り、subscribe要求をしている他のクライアントにそのメッセージを送ったことが分かります。
今回はWi-FiモジュールからターミナルエミュレーターのオペレーションでMQTTメッセージのやりとりを行いました。次回はいよいよマイコン(Arduino)から行います。お楽しみに。
MQTTで始めるIoTデバイスの作り方 第2回:MQTTのプロトコルを解析して挙動を理解する
MQTTで始めるIoTデバイスの作り方 第1回:「MQTT」を知り「Mosquitto」を導入する
話題の技適Wi-Fiモジュール「ESP8266」でIoTを手作りする
ESP8266を宅内Wi-Fiにぶら下げるATコマンド実例Copyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク
よく読まれている編集記者コラム