DALIで照明を制御する場合、スイッチという形式のマスターからDALIコマンドを送り照明をコントロールすることができますが、IoT機器やDALI以外のネットワークからの情報を元にNode-REDを使ってコントロールを行う場合は、DALIではないデバイスからオン・オフの情報を送る必要があります。
Node-REDには標準で、mqtt,http,websocket,tcp,udpなどのノードがあり、それらを使っても良いのですが、無線接続、別途電源供給がいらないなどのメリットを考えると、EnOceanのスイッチを使うととても便利です。

以前、ワンフットシーバスの田中さんがEnOceanとDALIを連携させる記事を書かれておりますが、私の方でも検証するべく、まずはEnOceanの入力をNode-REDで受信する方法を試してみました。
電源不要で動くEnOceanスイッチをRaspberry PiのEnOcean USBゲートウェイ経由でNode-REDをつなげるメモ – 1ft-seabass.jp.MEMO
Node-REDでのEnOceanのデータ読み取りをもう少し踏み込んだメモ – 1ft-seabass.jp.MEMO
EnOceanの通信はUSBドングルで受信をする

EnOceanのレシーバーはUSBドングルを利用します。

Node-REDには標準で入力ノードがありますが、EnOceanのUSBドングルはシリアルポートでの入力になるので、「node-red-node-serialport」をインストールします。
node-red-node-serialport – Node-RED
インストール方法は上記URLに書いてあるとおり、私のNode-REDはV0.17.5だったので、これだけでOKでした。
npm i node-red-node-serialport

無事に「node-red-node-serialport」がインストールされると、入力のところに「serial」というノードが現れます。これをドラッグしてフローにいれましょう。

そうそう、USBドングルをMac(もしくはPC)に差し込んでください。

しっかりPCにUSBドングルを差し込んだら、Node-REDのフローにある「serial」ノードをマウスでダブルクリックします。

初めての方は、Serial Portのところがブランクになっていると思うので、矢印で示す鉛筆のマークをマウスでクリックします。

つぎに、矢印の指す虫眼鏡のアイコンをクリックします。

この中に「usbserial」と書かれたそれらしきものがあるので、こちらをクリック。

あとは電源不要で動くEnOceanスイッチをRaspberry PiのEnOcean USBゲートウェイ経由でNode-REDをつなげるメモ – 1ft-seabass.jp.MEMOの通りに入力します。
ここまでできたら、デプロイしちゃいましょう。

無事にUSBドングルのserialport設定ができると、ノードの下に緑色で「接続済」と表示されます。
EnOceanを受信してみる
早速、データが飛んでくるか試してみます。
先程のserialノードにdebugノードをつなげました。

デプロイしたら、EnOceanのスイッチをおしてみます。

無事に受信できたようです。

ただし、このデータもよくわからないですよね。

Node-REDでEnOceanの電文をデコードするノード
さて、EnOceanで受信したデータをデコードするノードを、アーミン株式会社の服部さんが下記の記事にて公開されています。
Node-REDでEnOceanの電文をデコードするノードを試作しました | ERMINE Corporation
<
これを使ってみましょう。
アーミンの服部さんが作られたノードはfunctionノードの中にこの電文をデコードするJavaScriptが書いてあります。
先程のserialノードとdebugノードの間にこれを入れます。

これで準備完了。
スイッチをおしてみる
先程のスイッチをおしてみましょう。

先程の意味不明なデータが、json形式でみれるようになりました。
OriginatorIDにて、どのスイッチなのかの判別ができます。また、dBmは、USBドングル(レシーバー)からスイッチまでの距離によって変化する値のようです。
ちなみに、EnOceanのスイッチは、押した時と離した時の2回データがおくられます。

スイッチをおした時にData1が82、離した時にData1が00となりました。
これで、EnOceanのスイッチをNode-REDに受信さえて、どのEnOceanデバイスからどんなスイッチが押されたのかの情報が入手できる様になりました。
あとは、この値を元にDALI接続された照明器具の制御を結びつければEnOceanデバイスからDALI機器のコントロールもできそうです。
まとめ
以上、EnOceanのスイッチとUSBドングルを使い、EnOceanのデータをNode-REDで受信させる方法を試しました。
EnOceanは信号を無線で送れるだけでなく、ソーラーパネルがついていて電池不要だったりするので、センサーを設置する時に頭を悩ます信号線と電源の問題を簡単に解決してしまいます。
他にも人感センサーや照度センサーなど、EnOceanにはいろんなセンサーがあるので、これらを組み合わせて照明をコントロールすると、もっともっと自動で必要な時に必要な照明を利用するといったことが可能になります。
EnOceanとDALIの連携については、また近いうちに記事を書きます。