Node-REDからDMX対応の照明器具をコントロールするために、ENTTEC社のODE MK2を使うことを考えています。
今回、アカリセンターの鈴木さんからデモ機を貸していただき、前回はPCとODE MK2を接続するところまでできました。
PCからENTTEC ODE MK2に接続してDMX照明器具を制御してみた|デジタルライト(Digital-light.jp)
動画もあります。
sACNのNode-REDのライブラリを使用
Node-REDのライブラリでArt-Netのものがあったのですが、うまく動かなかったことと、ライブラリ自体が古かったこともあり、ODE MK2から対応したsACNでやることにしました。
sACNとは?
sACNとは、streaming ACNのことで、ACNは ANSI/ESTAの国際標準です。
Architecture for Control Networks – Wikipedia
ACN (Architecture for Control Networks) はプロトコル・スイートです。これは、現在 grandMA によってサポートされていない多くの要素を含んでいます。しかし、ACN プロトコルには、DMXデータを転送するための簡易バージョンもあります。これは、’Lightweight streaming protocol for transport of DMX512 using ACN’、より一般的には “streaming ACN” または “sACN” と呼ばれています(国際標準 E1.31)。
DMXネットワーク・プロトコルより引用。
ENTTEC ODE MK2をsACN用に設定する

ODE MK2のIPにブラウザからアクセスして、SettingからProtocolをsACNを選択。
Universeは1にしました。
node-red-contrib-sacn

Node-REDLibraryで、atleweeさんが、node-red-contrib-sacnを公開されています。

なんと!こちらの方は、KNX-Easyのライブラリを公開されている方でした。
こちらのライブラリでフローをつくっていきます。
sACNのNode-REDフロー

このようにフローを作成。
Injectノードは単なるスタートのきっかけです。

functionノードについて
msg.topic = "1/1"; msg.payload = 100;
topicには、Universe/Channelで、この場合はUniverse1のChannel1です。
payloadがそのChannelの値で100。

sACNノードにはODE MK2のIPアドレスでポートは5568。
UniverseとChannelを空欄にすることで、msg.topicで動的に送ることができます。

さらにTransitionも設定できるようなのですが、msg.payloadでもTransitionの指定ができるようです。
// Transition can be set in config. Overidden when sent as object. msg.topic = "1" // (string: Channel) msg.payload = { "value": 10, "transition": "rate", "transitionRate": 50, //50ms for each step. Value going from 0 to 10 will result in 10x50ms. Total transition = 500ms. } msg.payload = { "universe": 1, "channel": 1, "value": 10, "transition": "time", "transitionTime": 1000 //1000ms for total transition. } // It makes most sense to use "rate" because you probably don't want to // use 1 second going from value 50 to 49. // Default transition value is "instant"

実行したところ、このように赤で点灯しました。

一旦、赤に0を送ってから、さらに、functionノードでこのように表記すると、

今度はChannel2のGreenが点灯しました。
まとめ
これで、Node-REDからDMX照明器具を制御することができそうです。
ODE MK2はUniversは1つなので、現場で必要となるUniverse分デバイスは必要になりますが、送り先のIPアドレスを変更すれば複数Universeも同時制御できそうなので、やりたいことはこれでできそうです。