現在我が家には複数台のRaspberry Pi (Pi Zero w, wh)があり、node-red-dashboardを利用してWiFi接続したスマホからブラウザ経由で操作しています。しかし台数が増えるにつれてdashboardを複数管理するのは煩雑になりました。そこでdashboardを起動するのは1台にして、それ以外はこの1台とのメッセージ連携で操作することにしました。メッセージ連携の設定はNode-RED上の操作だけで可能ですので、自宅に複数台のラズパイをお持ちで統合的に管理したい方は是非試してみてください。
MQTTブローカの導入
dashboardを起動する1台にはMQTTブローカを導入します(1台のみです)。導入手順はこちらに分かりやすくまとまっています。ありがたく参照させていただくことにして、ここでは割愛します。
MQTTブローカノードの配置
まずMQTTブローカノードを配置します。
以下のような設定です。
MQTT OUTノードの配置
以下ではMQTTブローカノードを配置しているラズパイのIPアドレスを192.168.1.10として記載します。適宜ご自身のIPアドレスに読み替えてください。メッセージを受信する側は同一のプライベートネットワーク上(例えばIPアドレス:192.168.1.20等)にあれば良く、受信側のIPアドレスは本件の設定には不要です。
まずメッセージ送信側のラズパイ(192.168.1.10)にはMQTT OUTノードを配置します(下の上から3つ目の「mqtt」と書かれたノード)。
「新規にmqtt-brokerを追加」の右側のボタンをクリック、以下の画面が表示されます。
サーバとポートの設定をして、クリックします。(設定するIPアドレスはMQTTブローカを起動しているサーバのIPアドレスなので、後ほど設定するMQTT INノードでも同じ設定をします。)
- サーバ:192.168.1.10
- ポート:1883
前の画面に戻り、トピックには以下を設定しておきます。
- トピック:test
※ 後ほど設定するMQTT INノードでも同じトピックを設定することで、このMQTT OUTノードから送信されるメッセージをINノードで受信することができます。
MQTT INノードの配置
MQTT OUTノードのサーバ設定が済みであれば、サーバ欄には「192.168.1.10:1883」が選択できると思いますので、こちらを選択し、トピックには以下を設定します。
- トピック:test
※ MQTT OUTノードの説明に記載した通り、メッセージ連携したいINノードとOUTノードのトピックが一致していれば良いため、トピックとして設定したtestは適宜置き換えてください。
以上でノードの準備は終了です。
メッセージ連携
MQTT OUTノードにメッセージを入力すると、MQTT INノードで受信することができます。受信したメッセージはmsg.payloadに格納されてますので、後続の処理で利用可能です。今回はMQTT OUTノードをMQTTブローカが起動しているラズパイに配置しましたが、同一プライベートネットワーク上にあればどの端末間でもメッセージ連携が可能で、その時に設定するサーバも先ほどと同様です。なので一度サーバの設定をしてしまえば、以降はトピックの一致するOUTとINを用意すればOUTからINにメッセージを連携することが可能です。
まとめ
長々と書きましたが、ポイントは以下の通りです。
- MQTT INノードにもMQTT OUTノードにも、MQTTブローカが起動しているラズパイのIPアドレスを指定。
- トピックを一致させることで必要なメッセージのみ受信可能。