IoTで使うPython入門Step2-MQTT (3) 可視化

 1回目でMQTTのBrokerになるmosquittoを、2回目でクライアント側で使うsubscriberとpublisherのPhthonライブラリpaho-mqttをインストールしました。
 ここでは、データの流れをみえるようにします。PCやスマホのアプリもありますが、ラズパイ・ゼロにインストールしたNode-REDを利用します。Node-REDのプログラミングはWebブラウザがあればよいので、Windows 10の動いているPCを利用しました。

Node-REDでデータを受け取る

  • ラズパイで温度データを収集して、MQTT Brokerに送信する
  • MQTT Brokerはラズパイ・ゼロで動いている。Node-REDも動いている
  • PCからラズパイ・ゼロのNode-REDにアクセスして、Brokerに届いている温度データを確認する

という3台のコンピュータを連携させた実験をしています。ここでは、3番目を説明します。
 Node-REDはGUIのプログラミング環境です。PCのWebブラウザのURLに、

<ラズパイ・ゼロのIPアドレス>:1880

でアクセスします。次の画面が見えます。

 左側のエリアにあるノード・パレットの入力にあるmqttサブクライバ・ノードをマウスで、中央のエディット・エリアにドラッグ&ドロップします。もう一つ、出力debugノードもドラッグ&ドロップします。右側のエリアにある i アイコンを押すとヘルプ情報が出ます。

 二つのノードの横についているぽっちをマウスでつなげます。プログラム作成を完了させるために、右上のデプロイをクリックします。

 画面の上部にエラーが表示されましたが、無視します。これは、mqttのノードの設定行われていなかったからです。エディット・エリアにあるmqttノードをマウスでダブルクリックします。サーバ名の入力は、右にある鉛筆のアイコンをクリックします。

 名前をラズパイ・ゼロと付け、サーバにraspberrypi.localを入れ、更新もしくは完了をクリックすると、前の画面に戻ります。

 トピックに購読するraspberrypi-2/lm75b-1/tempを入れ、完了をクリックします。

 最初の画面に戻ったら、デプロイをクリックすると、通信が始まります。raspberrypi-2.localのラズパイで、pulish.pyを動かすと、メッセージがBrokerに送られるので、Node-REDの右側にあるデバッグ・エリアにトピックが表示されます。

(※)フロー2で作業している画面がありますが、画面キャプチャの都合なので、フロー1で作業をしてください。

dashboardを用意してグラフを

 見やすくするため、GUI画面を追加します。右上の設定アイコンからをパレットの管理を選択します。

 ノードの追加タブを選び、検索欄にdashboardと入れると、node-red-dashboardが表示されるので、その項目にある「ノードを追加」をクリックしてインストールを行います。終わると、閉じるをクリックします。

 元の画面に戻ると、左のノード・パレットの下のほうにdashboardのノードがたくさん見えます。その中からgaugeをドラッグ&ドロップします。

 mqttノードから、gaugeへマウスで線で結びます。gaugeをダブルクリックします。編集画面のGroupの項目右にある鉛筆のアイコンをクリックします。

 例えば温度センサと入れます。その項目の下のタブを入れる項目の右にある鉛筆のアイコンをクリックします。

 たとえば、ラズパイ2と入れます。

 完了もしくは追加のボタンを押すと前の画面に戻ります。

 更新ボタンを押すと、前に最初の編集画面に戻ります。Unitsを℃に、maxを50に変更します。

 完了をクリックします。デプロイします。画面右のエリアにあるグラフのアイコンをクリックし、そのURLへ飛ぶアイコンをクリックします。

 gaugeが表示されました。

 publish.pyではTopicに「23度」という固定文字列を送っているだけなので、上記の表示は変化しません。次回、実際に測定した温度を繰り返し発行するので、gaugeはその値にあわせて動きます。

(※)paho-mqttのドキュメント paho.mqtt.pythonのソース