本記事は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のサイトへ行きます。

右上の”Try”をクリック

接続情報が表示されるので、それをコピーしておきます。
mqtt://public:public@public.cloud.shiftr.io
ローカルNode-REDで確認

まずは上のように、MQTT OutとInのノードをつかって、MQTTメッセージを送るのと受け取るフローを作成。

MQTT Outノードをクリックし、サーバーで”新規にmqtt-brokerを追加”の横の鉛筆マークをクリック。
サーバーに先程のmqtt接続情報をペーストして更新。
mqtt://public:public@public.cloud.shiftr.io

サーバーの名前を”SHiftr”にして、トピックは”test”とします。

次に”mqtt-in”ノードをクリック。
サーバーを先程の”Shiftr”にして、トピックも”test”にします。
これでデプロイ。
ローカルNode-REDにて確認

こちらがデプロイした画面。緑で”接続済”となっていれば正常です。
そうでなければ、何かが間違ってます。
Injectノードでタイムスタンプを送ります。

このように表示されれば成功です。
enebularのNode-REDで確認
次はenebularのNode-REDでフローを作ってみましょう。

先程と同じようにmqtt-inとoutを使ってフローを作成します。
ただ、Injectノードについては、ローカル側と区別するため、文字列で”enebular”と送るようにしました。
では、まずは、enebular側でInjectノードをクリック

enebular側のデバッグに無事に表示されました。
enebularとローカルのNode-REDがつながってるか確認
次に、ローカルのNode-REDのデバッグを見てみます。

無事に、”enebular”というメッセージがきていることを確認できました。

ローカルのNode-REDにInjectノードを追加して、”ローカル”という文字列をmqtt-outノードに贈ります。

では、LOCALをクリック。

ローカル側では無事に”ローカル”とデバッグに表示されています。

enebular側でも”ローカル”と表示されました。
よって、無事にenebular側とローカル側のNode-REDが、shiftr.ioのmqttブローカーを通して繋げられることが確認できました。
まとめ
設備制御のサーバーはローカルで動かすので、外部から接続することで便利ですが、いろいろと手間がかかったりします。
でも、moqttノードを通して必要なメッセージを受信できたり送ることができれば、低コストでかなり柔軟につかうことができそうです。
今後は、enebularとローカルのKNX-IoTサーバーで動くNode-REDをつなげて、いろんな試みをしていきたいと思います。