Node-REDが動くInterra社のKNX-IoTサーバー ITR-230を納入したお客様から、Harman Professional Solutions社のシグナルプロセッサー BSS Soundweb London BLU-50のボリュームを、KNXのスイッチから操作したいとの相談があり、無事に連動したのでその方法の紹介です。
ちなみに、 BSS Soundweb Londonの各製品はヒビノ株式会社さんが販売されています。
ご要望いただいたこと
KNXのグループアドレスを8つ用意し、それぞれにBLU-50のmain volumeの値を割り当て、KNX側からBLU-50のmain volumeをコントロールさせるというもの。
BSS Soundweb London “BLU-50の制御方法
BSS Soundweb London BLU-50を制御する方法は2つあり、ひとつはRS232を使ったシリアル通信、もうひとつはEthernetを使ったTCP通信で、今回はTCP通信を使いました。
この表のように決められたデータの組み合わせをBLU-50のIPアドレスのポート番号1023に送ることで、main volumeをコントロールすることができます。
例えば、+10dbにするときは、”02,8C,00,00,00,1B,86,8A,03″という電文を送るという意味です。
Node-REDのフロー
KNX-IoTサーバーで動くNode-REDでtcp requestノードに必要な電文を送り操作します。
フローのイメージはこんな感じ。
KNXノードからは、main volumeの内容を”+10db”や”+5db”をtopicに入れて、functionノードに渡し、functionノードでtopicの値をif分で判断して、BLU-50に送る電文を切り替えています。
今回、苦労したのは、”02,8C,00,00,00,1B,86,8A,03″という電文をtcp requestノードに送る方法。
msg.payload = new Buffer([0x02, 0x8C, 0x00, 0x00,0x00, 0x1B, 0x86, 0x8A, 0x03]); return msg;
結論から言うと、上のようにBufferを使って電文をバイナリデータに変換し、msg.payloadに入れてtcp requestノードに送ります。
↓ こちらのサイトでやり方が紹介されていました。
最終的にfunctionノードの内容は以下の通り。
var value = msg.topic; if (msg.topic == "+10db"){ msg.payload = new Buffer([0x02, 0x8C, 0x00, 0x00,0x00, 0x1B, 0x86, 0x8A, 0x03]); } else if (msg.topic == "+5db"){ msg.payload = new Buffer([0x02, 0x8C, 0x00, 0x00,0x00, 0x07, 0x8B, 0x03]); } else if (msg.topic == "±0db"){ msg.payload = new Buffer([0x02, 0x8C, 0x00, 0x00,0x00, 0x08, 0x84, 0x03]); } else if (msg.topic == "-5db"){ msg.payload = new Buffer([0x02, 0x8C, 0x00, 0x00,0x00, 0x09, 0x85, 0x03]); } else if (msg.topic == "-10db"){ msg.payload = new Buffer([0x02, 0x8C, 0x00, 0x00,0x00, 0x0A, 0x86, 0x03]); } else if (msg.topic == "-15db"){ msg.payload = new Buffer([0x02, 0x8C, 0x00, 0x00,0x00, 0x0B, 0x87, 0x03]); } else if (msg.topic == "-20db"){ msg.payload = new Buffer([0x02, 0x8C, 0x00, 0x00,0x00, 0x1B, 0x95, 0x99, 0x03]); } else if (msg.topic =="off"){ msg.payload = new Buffer([0x02,0x8C,0x00, 0x00,0x00,0x16,0x9A,0x03]); } return msg;
結果、無事にKNXからBLU-50のmain volumeをコントロールすることができました。
まとめ
KNXは照明のDALIやブラインドなどといった機器はKNXのゲートウェイやアクチュエーターで直接制御できますが、AV機器との連携には、RS-232C、RS-485といったシリアル通信やTCP/UDPなどで信号を送る必要があります。
その際、KNXから各プロトコルへのゲートウェイデバイスを使う方法もありますが、Node-REDを使うことでJavaScriptで条件分岐やデータの整形などが手軽に行えるので、ロジックモジュールなどを使うのに比べて大きく自由度があがり、手間と頭の疲労度を軽減することができます。
そういった意味で、設備制御とAV連携にNode-REDを使えることはとても便利で、かつ、KNXのインターフェースがついたNode-REDが動くKNX-IoTサーバーのInterra社のITR230はとてもおすすめのデバイスです。
なので、AV連携、設備連携、そのたIoT家電やデバイスとの連携を検討される場合は、ぜひ、Interra社のKNX-IoTサーバーをご検討ください。
詳細については、スマートライトの中畑まで気軽に連絡を!
あと、Node-REDの使い方についてはこちらの本もおすすめです。私もNode-REDユーザーグループの一人としてEnOceanとDALIの連携の部分を書いています。