node-dmxというのを使った。
driversにあるようにArtNetやUSBタイプに対応している。
今回は ENTTEC DMX USB Pro を使った。
準備
node-dmx内でnode-serialportというライブラリを依存関係にもっているので、
npm i -S dmx
するとnode-serialportも入っていて、
$ npx serialport-list
/dev/tty.Bluetooth-Incoming-Port
/dev/tty.usbserial-EN224271 ENTTEC
上記のように実行してデバイスIDを得ることができる。
通信
node-dmxリポジトリ内にあるdemo_simpleを参考に、
const DMX = require('dmx')
const dmx = new DMX()
const universe = dmx.addUniverse('demo', 'enttec-usb-dmx-pro', '/dev/tty.usbserial-EN224271')
var on = false;
setInterval(function(){
if(on){
on = false;
universe.updateAll(0);
console.log("off");
}else{
on = true;
universe.updateAll(250);
console.log("on");
}
}, 1000);
というようにドライバ名とデバイスIDを指定してupdateAllするとすべてのチャンネルに値を出力できる。
特定のチャンネルのみに出力するときは
universe.update({1: 10, 2: 20});
のようにする。