IoT何をいまさら(71) MQTTでダッシュボードにHello World!

Joseph Halfmoon

前回、Node-Redとダッシュボード、MQTTブローカーであるMosquittoをラズパイ上にインストールし、動作確認できました。今回は、Pythonスクリプトで書いたMQTTパブリッシャから、ダッシュボードにHello Worldしてみたいと思います。Pythonエディタは別シリーズ(MicroPython的午睡)で使用しているMu。

灯台下暗し、今回Node-Redのインストール作業を始めてから、「御馴染み」の動画の中に導きとなる1本があったことに気付きました。SeeedStudio社のYouTubeのWio Terminalに関するチュートリアル動画です。御馴染みのヒゲのお兄様(時々ヒゲが無くなることがあり、そのうち復活する)が易しく解説してくれているのです。

Wio Terminal Classroom with IoT #7 | Node-RED on Raspberry Pi

本題はWio Terminalですが、前半はNode-Redやmosquittoの設定などで、まさに私が知りたかったことが解説されていました。遅ればせながら視聴させていただきましたぜ。

ま、後でWioでMQTT接続もやってみる気ではおりますが、今回は普通にPythonスクリプトをクライアント(パブリッシャ)にして練習です。

ダッシュボードの設定

さてNode-REDのダッシュボードの設定は、下のようにNode-REDのエディタ画面の右肩付近にある下向き三角を選んで、Dashboardという項目を選べば行うことができます。

Node Red dash-board TAB/Group選択した画面で「配置」タブ、画面のLayoutを決めるところのようです、に「タブ」とその下の「グループ」などというものを定義していきます。表示の実体であるゲージとかグラフのようなノード(ウイジット)をGroupというもの(コンテナ的な?)にいれ、それをタブの中に並べることでレイアウトを決めるみたいです。とりあえずデフォルトのお名前のまま、1個だけ定義いたしました。Node Red dash board layout

次にエディタでフローを定義してみます。今回は極めてシンプル。ダッシュボードのノードからテキスト表示用のノードtextをドラッグ&ドロップ。そしてmqtt-inというノードも配置し、2つを結合します。まだ何も初期化していないので赤の三角印が付いていました。

Flow for Hello world.テキストノードのプロパティ画面はこんな感じ。当然、ここを操作すれば所望のものになっていくわけですが、今回はデフォのままで「とりあえず」動作しそうだったので、なにもせず「完了」。

text node次にmqtt-inノードの設定です。こちらの方はデフォのままとは行きません。赤枠で入力必須な欄が示されているので入力いたしました。トピック欄にはとりあえずベタに「TEST」と入力いたしました。

MQTT-inMQTTブローカについては、Node-REDと同じマシン(Raspberry Pi)で動作しているのでlocalhostとし、適当なお名前をつけて「追加」いたしました。

Broker connection設定を終え、デプロイ終わったところ。デプロイ忘れると動かないです(私はやってしまいました)

flow set-up finished以上で、Node-RED側の設定ができたので、まずはコマンドラインからテスト用にpublishしてみます。

publish hello world.上のコマンドを実行したあと、PC上のブラウザでNode-REDのダッシュボードを開いたところを最上位のアイキャッチ画像に掲げました。

Hello worldできたな。

Python3のクライアントからMQTTパブリッシュ

ようやく後半戦です。PythonのスクリプトからMQTTブローカにパブリッシュせねばなりません。Pythonのライブラリモジュールは、以下に説明のあるpaho-mqttというものを使わせていただきます。mosquitto同様Eclipseのプロジェクトのようです。

paho-mqtt

インストールは普通に pip3 で出来ました。こんな感じ。

install pahoさてライブラリがインストールできたので、publishです。上に引用したサイトを見ると、前半はsubscribeするための説明中心で長いのですが、「一発publish」するだけなら非常に簡単であります。上のサイトの下の方にあるサンプルコード(2行)をMuエディタに入力(別にMuでなくても良いです。別件でmicro:bit上のMicropythonするのでMu使っています。当然、micro:bitからNode-REDに接続する予定。)

publish sample code in Mu実行ボタンを押して、Node-REDのダッシュボードはとみると、

Hello from Python3ああ、PythonのコードからMosputto(MQTTブローカ)そしてNode-REDへとちゃんと伝わっておるようです。

次回はようやく、かっこいいIoTでは定番のゲージとかグラフとかだね。

IoT何をいまさら(70) Node-RED始めました へ戻る

IoT何をいまさら(72) micro:bit発ラズパイ経由Node-REDダッシュボード へ進む