Node-REDでMQTT通信(Node-RED MCU、M5Stack)
はじめに
今回はNode-REDでMQTT通信を使ってみました。MQTT通信はIoT機器の通信にも使われていて、軽量かつ低消費電力だそうです。
Node-RED MCUでプログラムを書き込んだ、M5Stackでも使うことができました。データをMQTT通信でRaspberry Piに送信して、Node-REDで処理することもできました。マイコンとサーバー間での通信が簡単になりそうです。
▼私はRaspberry Pi 400を使っています。
▼MQTTに関するページはこちら
https://www.ibm.com/docs/ja/ibm-mq/7.5?topic=mobile-messaging-m2m
▼Node-RED MCUに関する以前の記事
▼Node-REDとNode-RED MCUの簡単な紹介はこちら
Aedes MQTT brokerでMQTTブローカーを起動する
Raspberry Pi上のNode-REDで、MQTTブローカーを起動してみました。MQTT通信の中継局みたいな感じです。今回はAedes MQTT brokerを使っています。
パレットの管理→ノードを追加から、node-red-contrib-aedesを検索してノードを追加することができます。
▼ノードはこんな感じ
▼設定はこちら。ポートは1883番です。
mqtt in/outノードの設定をする
mqtt inノードで受信して、mqtt outノードで送信します。それぞれのノードには、MQTTブローカーが置かれているサーバーと、トピックを設定します。同じトピックのノード間で通信します。
▼mqtt outノードの設定はこちら。mqtt inノードも同じです。
▼サーバーの選択肢の横にあるアイコンから、詳しく設定することができます。今回はローカルです。
MQTT通信を実行する
injectノードのデータをmqtt outノードに送って、mqtt inノードで受信します。トピックは/testで揃えています。
▼ノードを配置するとこんな感じ。
▼injectノードの中身はこちら。msg.payloadが送られるので、debugノードにはmqtt testと表示されるはずです。
▼injectノードのボタンを押したときの様子。デバッグ欄に、mqtt testと表示されています。
Shiftr.ioのサーバーをMQTTブローカーにする
Shiftr.ioという、外部サービスのMQTTサーバーを使うことができます。こちらも簡単に使えて便利です。
無料で使える代わりに全世界に公開されているお試し用のサーバーと、アカウント登録で無料で使える代わりに6時間の制限があるサーバーがあります。
▼Shiftr.ioのページはこちら
▼こちらのTryのページで、公開されているサーバーのURLを取得できます。
▼Shiftr.ioを使って、M5StackとNode-REDでMQTT通信したときの様子はこんな感じです。データの流れが分かりやすいですね。
最後に
Node-REDを使って、簡単にMQTT通信を試すことができました。Node-RED MCUと一緒に使って、マイコンとサーバーの通信に活用していきたいところです。
MQTTSというものも見たので、HTTPSのように、よりセキュアな通信ができるかもしれません。Moddable SDKがHTTPSに対応できるようになったのが最近なので、そちらも試してみたいところです。
▼Shiftr.ioのTryのページで見ることができる、データの流れ。なんだか神経みたいですね。