本記事はenebular Advent Calendar 2020の10番目の記事です。
サーバー側にあるenebularのNode-REDと、Localにある設備制御用のKNX-IoTゲートウェイで動くNode-REDを、MQTTで接続するための方法として、enebular blogで紹介されていた shiftr.ioのMQTTブローカーを使ってみようと思います。
enebularとNoodlをshiftr.io MQTTブローカー経由で連携しよう | enebular blog
shiftr.io
shiftr.ioのサイトへ行きます。
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03.jpg)
右上の”Try”をクリック
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-1.jpg)
接続情報が表示されるので、それをコピーしておきます。
mqtt://public:public@public.cloud.shiftr.io
ローカルNode-REDで確認
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-2.jpg)
まずは上のように、MQTT OutとInのノードをつかって、MQTTメッセージを送るのと受け取るフローを作成。
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-3.jpg)
MQTT Outノードをクリックし、サーバーで”新規にmqtt-brokerを追加”の横の鉛筆マークをクリック。
サーバーに先程のmqtt接続情報をペーストして更新。
mqtt://public:public@public.cloud.shiftr.io
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-4.jpg)
サーバーの名前を”SHiftr”にして、トピックは”test”とします。
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-5.jpg)
次に”mqtt-in”ノードをクリック。
サーバーを先程の”Shiftr”にして、トピックも”test”にします。
これでデプロイ。
ローカルNode-REDにて確認
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-6.jpg)
こちらがデプロイした画面。緑で”接続済”となっていれば正常です。
そうでなければ、何かが間違ってます。
Injectノードでタイムスタンプを送ります。
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-7.jpg)
このように表示されれば成功です。
enebularのNode-REDで確認
次はenebularのNode-REDでフローを作ってみましょう。
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-8.jpg)
先程と同じようにmqtt-inとoutを使ってフローを作成します。
ただ、Injectノードについては、ローカル側と区別するため、文字列で”enebular”と送るようにしました。
では、まずは、enebular側でInjectノードをクリック
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-9.jpg)
enebular側のデバッグに無事に表示されました。
enebularとローカルのNode-REDがつながってるか確認
次に、ローカルのNode-REDのデバッグを見てみます。
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-11.jpg)
無事に、”enebular”というメッセージがきていることを確認できました。
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-12.jpg)
ローカルのNode-REDにInjectノードを追加して、”ローカル”という文字列をmqtt-outノードに贈ります。
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-13.jpg)
では、LOCALをクリック。
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-14.jpg)
ローカル側では無事に”ローカル”とデバッグに表示されています。
![12-03.jpg 12 03](https://digital-light.jp/wp-content/uploads/2020/12/12-03-15.jpg)
enebular側でも”ローカル”と表示されました。
よって、無事にenebular側とローカル側のNode-REDが、shiftr.ioのmqttブローカーを通して繋げられることが確認できました。
まとめ
設備制御のサーバーはローカルで動かすので、外部から接続することで便利ですが、いろいろと手間がかかったりします。
でも、moqttノードを通して必要なメッセージを受信できたり送ることができれば、低コストでかなり柔軟につかうことができそうです。
今後は、enebularとローカルのKNX-IoTサーバーで動くNode-REDをつなげて、いろんな試みをしていきたいと思います。