ニュース
» 2016年06月01日 07時00分 UPDATE

MQTTで始めるIoTデバイスづくり(2):MQTTで始めるIoTデバイスの作り方 第2回:MQTTのプロトコルを解析して挙動を理解する (1/5)

連載では「MQTT」を利用して簡単なIoTデバイスを製作し、ネットサービスに接続できるまでを紹介しますが、デバイスの自作を考えるとMQTTのプロトコルやメッセージシーケンスへの理解は欠かせません。

[今岡通博,MONOist]

はじめに

 この連載では軽量プロトコルとして注目を浴びているMQTT(Message Queue Telemetry Transport)を利用し、自作したIoTバイスをMQTTサービスに接続するまでを解説します。

 MQTTの挙動を理解してもらうため、既存のプロトコルスタックやライブラリを使わず、直接TCPレイヤーをたたくことでメッセージのやりとりを行います。そのためには、MQTTのプロトコルやメッセージシーケンスに対する、しっかりとした理解が必要となります。

 そこで今回は「wireshark」というプロトコル解析ツールを用いて、MQTTのメッセージのやりとりを見てみましょう。

目次

・第1回 MQTTの概要とMosquittoの導入

  • 第2回 MQTTプロトコル解析
  • 第3回 ESP8266でMQTT
  • 第4回 ArduinoをMQTTブローカーに接続
  • 第5回 Arduinoで部屋の明るさをPublish
  • 第6回 スマホからLEDをON/OFF

MQTTのプロトコル

 MQTTプロトコルに関しては、「MQTT V3.1 プロトコル仕様1」として43ページのPDFにまとめられています(MQ Telemetry Transport (MQTT) V3.1 プロトコル仕様)

 仕様については「これを読んでください」で終わってしまうのですが、実際にブローカーとサブスクライバー、パブリッシャーの間でどのようなメッセージが交わされているか確認しないと、マイコンに実装できても身につきませんね。そこで、実際にメッセージのやりとりが観察できる環境を用意して、これらを見てみることにしましょう。ですが「MQTT V3.1 プロトコル仕様1」をいつでも参照できる準備はしておいてください。

観測環境

 以下が観測環境を示した図です。

MQTTメッセージの測定環境 MQTTメッセージの測定環境

 前回mosquittoを導入したPCに、パケット解析ツールである「Wireshark」をインストールします。PC上でmosquittoのブローカーを起動しますが、前回のようにクライアントも同一PC上にあったのではWiresharkでパケットを観測できません。

 そこで外部にスマートフォンを用意してそこにMQTTクライアントアプリをインストールします。スマホは無線LANルーター経由で、mosquittoブローカーのある同一セグメントに接続します。

MQTTクライアントアプリの導入

 Android端末(スマートフォン)をお持ちの方は、MQTTクライアントアプリ「IoT MQTT Dashbord」がお勧めです。こちら(Google Play)から無料で入手できます。

 下図の左画面はこのアプリを利用して、Android端末をサブスクライバーとして動作させている画面です。連載の第5回で扱う予定ですが、部屋の明るさをパブリシュされたものをグラフ化したものです。

 そして下図右はスマホをパブリッシャーとして動作させた画面です。サブスクライバーとして設定されたマイコンに接続されたLEDをON/OFFするメッセージをパブリッシュする画面です(この仕組みについては連載の第6回で紹介します)。

IoT MQTT DashBoard IoT MQTT DashBoardの動作例
       1|2|3|4|5 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.