KNX

KNXとSoundweb London BLU-50をNode-REDで連携する方法

Node-REDが動くInterra社のKNX-IoTサーバー ITR-230を納入したお客様から、Harman Professional Solutions社のシグナルプロセッサー BSS Soundweb London BLU-50のボリュームを、KNXのスイッチから操作したいとの相談があり、無事に連動したのでその方法の紹介です。

ちなみに、 BSS Soundweb Londonの各製品はヒビノ株式会社さんが販売されています。

ご要望いただいたこと

Thum soundweb

KNXのグループアドレスを8つ用意し、それぞれにBLU-50のmain volumeの値を割り当て、KNX側からBLU-50のmain volumeをコントロールさせるというもの。

BSS Soundweb London “BLU-50の制御方法

02 03

BSS Soundweb London BLU-50を制御する方法は2つあり、ひとつはRS232を使ったシリアル通信、もうひとつはEthernetを使ったTCP通信で、今回はTCP通信を使いました。

02 03

この表のように決められたデータの組み合わせをBLU-50のIPアドレスのポート番号1023に送ることで、main volumeをコントロールすることができます。

例えば、+10dbにするときは、”02,8C,00,00,00,1B,86,8A,03″という電文を送るという意味です。

Node-REDのフロー

KNX-IoTサーバーで動くNode-REDでtcp requestノードに必要な電文を送り操作します。

02 03

フローのイメージはこんな感じ。

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ノードに送ります。

↓ こちらのサイトでやり方が紹介されていました。

Zachman Portfolio

最終的に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の連携の部分を書いています。

ABOUT ME
中畑 隆拓
スマートライト㈱ 代表取締役。DALIやKNX導入のコンサルティング・コンフィグレーション・機器の販売、AI-IoTを組み合わせたシステムの提案を行っています。