記事

MQTTを利用して電子工作でIOTを実現する(1)準備と動作確認

 IoT(Internet of Things)実現のためには、いろいろな場所に設置されたマイコンからのデータを受信して取りまとめたり、いろいろな場所に設置された機器のON/OFF、設定値の変更などをリモートで行う必要があります。

 このようなIoTのため、ネットワークを介してデータのやり取りを行うために、IBMがMQTT(Message Queue Telemetry Transport)というデータの交信方法を開発しました。

 この交信方法は、次に示す構成になっています。

 サーバの役割をもったブローカが、データを必要とするクライアント(サブスクライバ)からの要求を受け付け、発信元のクライアント(パブリッシャ)からデータが送られてきたら、ブローカがデータを要求したサブスクライバにデータを送信する

① クライアントのサブスクライバがブローカにデータの受信要求(サブスクライブ)を出し、待つ

② サブスクライバから受信要求で示されたクライアントのパブリッシャは、topic と送信データをブローカに送信する

③ ブローカはパブリッシャからのtopicとデータを受信すると、受信要求を出したサブスクライバに対して、パブリッシャからのデータをtopicでフィルタリングし送信する

④ 受信要求(サブスクライブ)を送出し待っていたサブスクライバは、ブローカから送られてくるデータを受信して完了

⑤ MQTTは、IBM Developerの次のページに「MQTTの基本知識」という解説記事があります。詳しくはそちらを参考にしてください。


  https://www.ibm.com/developerworks/jp/iot/library/iot-mqtt-why-good-for-iot/index.html

Mosquittoを導入

 MosquittoはMQTTプロトコル・バージョン3.11を実装したオープン・ソースのブローカ・ソフトウェアです。併せて、スクライバとパブリッシャのコマンドラインのMQTTクライアントも実装しています。Mosquittoをインストールすると、MQTTの実際の動作を確認できます。

Mosquittoのダウンロード

 Mosquittoは、次のアドレスのMosquittoのWebページで必要な情報やインストーラなどを入手できます。英文のページですが、Chromeブラウザの翻訳で十分対応できます。最初のページを示します。
 
  https://mosquitto.org/

 このページにあるDownloadの説明中のdownload pageをクリックすると、次のダウンロード・ページが表示されます。

  https://mosquitto.org/download/


 今回は、Windows10の64-bit版であるmosquitto-1.6.8-install-windows-x64.exeをダウンロードします。ダウンロード・フォルダにこのインストーラがダウンロードされるので、ダブルクリックして起動します。

 起動すると、Mosquittoのセットアップ画面が表示されます。Nextボタンをクリックして開始します。インストールするモジュールの選択画面が表示されます。次のデフォルトの設定で、次に進むためNextのボタンをクリックします。

 次は、Mosquittoのインストール先のフォルダの設定画面となります。デフォルトではMosquittoのインストール先のフォルダはC:\Program Files\mosquittoとなります。そのままの設定で次に進みます。

 インストールが完了すると、次の終了画面となります。Finishボタンをクリックして一連のインストール作業を完了します。


動作確認

 MosquittoはMQTT3.11のブローカを実現します。Windowsのコマンドプロンプトから起動します。MosquittoはC:\Program Files\mosquittoのフォルダにインストールされました。そのため、カレント・フォルダをCD C:\ Program Files\mosquittoのコマンドでmosquittoが格納されているフォルダに移動します。これでパスの問題が避けられます。

Mosquittoの起動

 Mosquittoの起動のためのコマンドはmosquittoとなります。mosquitto -vとオプションを追加すると、次に示されるようにログが表示されます。


クライアントの起動

 クライアントは、受信側のサブスクライバと送信側のパブリッシャが必要となります。パブリッシャは、前回作成したESP32のマイコン・ボードを使用しました。このページは次に示すアドレスで開けます。

ESP32活用① ESP32とブラウザでお話しする(7)MQTTで通信

https://www.denshi.club/cookbook/arduino/esp32/esp321-esp327mqtt.html

コマンドラインでサブスクライバを起動

 Windowsのコマンドプロンプトで、サブスクライバを起動するコマンドを入力します。コマンドとパラメータは、次のようになります。

  mosquitto_sub -hlocalhost -t ESP32/01/temp -v

    コマンド: mosquitto_sub
    パラメータ -


 このコマンドを入力した結果を次に示します。 

  

パブリッシャのコマンドを実行

 新しいコマンド入力画面を表示し、カレント・フォルダをC:\Program Files\mosquittoに変更し、次に示すパブリッシャのコマンドを入力します。

>mosquitto_pub -h localhost -t ESP32/01/temp -m "pub01test message"

コマンド : mosquitto_pub
パラメータ
 -h    :  接続するホスト名またはIPアドレス localhostは自身を示す(デフォルト)
 -t    : topic。ここでは階層化された ESP32/01/temp がtopicとなる
 -m   : 送信するメッセージを設定する。文字列でメッセージを作成している

 次のようにコマンドを入力しました。


 サブスクライバには次に示すように、ESP32のマイコンからのメッセージに挟まれて「ESP32/01/temp pubtest01message」が表示されています。


 今回、Mosquittoの具体的にインストールの様子を示し、ブローカを起動しクライアント間のデータの通信を確認しました。
 次回は、サブスクライバの処理をPythonで作ってみます。

Mosquittoのマニュアル

 Mosquittoのマニュアルは、https://mosquitto.org/man/ のページでマニュアルのインデックス・ページが表示されます。

 英文の表示ですが、chromeの翻訳機能を利用して和文のマニュアルを得ることもできます。最近の翻訳機能は良くなって、それほどおかしな文章はでてきません。おかしな場合は原文を参照して確認できます。


(2020/3/6 V1.0)

<神崎康宏>

-