連載では「MQTT」を利用して簡単なIoTデバイスを製作し、ネットサービスに接続できるまでを紹介しますが、デバイスの自作を考えるとMQTTのプロトコルやメッセージシーケンスへの理解は欠かせません。
この連載では軽量プロトコルとして注目を浴びているMQTT(Message Queue Telemetry Transport)を利用し、自作したIoTバイスをMQTTサービスに接続するまでを解説します。
MQTTの挙動を理解してもらうため、既存のプロトコルスタックやライブラリを使わず、直接TCPレイヤーをたたくことでメッセージのやりとりを行います。そのためには、MQTTのプロトコルやメッセージシーケンスに対する、しっかりとした理解が必要となります。
そこで今回は「wireshark」というプロトコル解析ツールを用いて、MQTTのメッセージのやりとりを見てみましょう。
MQTTプロトコルに関しては、「MQTT V3.1 プロトコル仕様1」として43ページのPDFにまとめられています(MQ Telemetry Transport (MQTT) V3.1 プロトコル仕様)。
仕様については「これを読んでください」で終わってしまうのですが、実際にブローカーとサブスクライバー、パブリッシャーの間でどのようなメッセージが交わされているか確認しないと、マイコンに実装できても身につきませんね。そこで、実際にメッセージのやりとりが観察できる環境を用意して、これらを見てみることにしましょう。ですが「MQTT V3.1 プロトコル仕様1」をいつでも参照できる準備はしておいてください。
以下が観測環境を示した図です。
前回mosquittoを導入したPCに、パケット解析ツールである「Wireshark」をインストールします。PC上でmosquittoのブローカーを起動しますが、前回のようにクライアントも同一PC上にあったのではWiresharkでパケットを観測できません。
そこで外部にスマートフォンを用意してそこにMQTTクライアントアプリをインストールします。スマホは無線LANルーター経由で、mosquittoブローカーのある同一セグメントに接続します。
Android端末(スマートフォン)をお持ちの方は、MQTTクライアントアプリ「IoT MQTT Dashbord」がお勧めです。こちら(Google Play)から無料で入手できます。
下図の左画面はこのアプリを利用して、Android端末をサブスクライバーとして動作させている画面です。連載の第5回で扱う予定ですが、部屋の明るさをパブリシュされたものをグラフ化したものです。
そして下図右はスマホをパブリッシャーとして動作させた画面です。サブスクライバーとして設定されたマイコンに接続されたLEDをON/OFFするメッセージをパブリッシュする画面です(この仕組みについては連載の第6回で紹介します)。
Copyright © ITmedia, Inc. All Rights Reserved.