ConfortClick社のKNX Visualサーバー bOSに、MQTTの機能が追加されました。
IoT機器やクラウドとの連携にMQTTはデータ量も少なくてとても便利です。
bOS ConfiguratorでbOS側でMQTTを受信できる設定をおこない、Node-REDからMQTTで送信したデータをで受信する方法を検証します。
DeviceからMQTTを追加
まずはDeviceから”Add”を選択するとMQTTが選べるようになっているのでこれを追加します。
MQTTブローカーの選択&設定
bOSでは内部にブローカー機能もあるので、内部ブローカーを使うときは”User Internal Broker”を”Enable”にします。また、外部ブローカーを使うときは”External Broker”に必要なパラメーターを記載します。
Internal Brokerを”Enable”にすると、bOS serverのIPアドレスが表示され、認証をどうするかを選択します。
MQTT Clientの設定
DeviceのMQTTで再度Addを押すと”Devices”に”Client”が表示されるので、これを追加。
Clientには”Subscriptions”と”Publish Messages”があります。
Client IDは”MQTT-TEST”にしました。
DriverのEnabledを”True”にすると、
このようにClient IDで表示されるようになります。
Client Subscriptionsに追加
外部からMQTTでメッセージを受ける場合には、Subscliptionsで”Add”を押すと”Subscription”を追加することができます。
Topicはここで設定します。今回は”test”にしました。
Node-RED側でMQTTを送る設定
InjectionノードとMQTT Outを組み合わせたフローを作成しました。
Injectionノードは、JSONでデータをおくります。
MQTT Outノードは、トピックは”test”。
プロパティはこのとおり。
Node-REDからMQTTでbOSにデータを送る
Injectionノードを押してデータを贈ります。
bOS Configuratorで確認すると、Client IDはNode-RED側で自動的に生成され、送ったメッセージが受信されました。
Node-RED MQTT BrokerノードにClient ID
Node=RED MQTT Brokerノードのプロパティに、クライアントIDを”MQTT-TEST”にしておくってみます。
すると、MQTT Brokerへの接続が切断されてしまいました。
ここらへん、認証系がうまくいっていないようです。
まとめ
これまでbOS側でMQTTの機能がなかったので、ローカルにNode-REDサーバーを用意して、KNXからローカルNode-REDサーバーにデータ送信しMQTTでデータを送っていましたが、今回のbOSアップデートでbOSからMQTTで直接データを送受信できるようになりました。
もうしばらく検証が必要ですが、スマートオフィスもスマートハウスも、MQTTでのやりとりができると他デバイスとの連携が非常に楽になるので、このアップデートはとても便利です。
引き続き検証しながら、方法をご紹介していきます。