DALIは照明を制御することに特化したシンプルで仕様がオープンなプロトコルですが、お客様の要望に応じた制御の仕組みを作ろうとするとDALIとは別の仕組みが必要になります。
照明器具メーカーはDALIを補う為のシステムをもっていますが、IoTデバイス等、そのメーカー以外のものと照明のシステムを連携させようとすると、メーカー独自のシステムは仕様がオープンにされてない為、気軽に開発できないという問題がありました。
今回、私達は、照明制御のオープンなプロトコルであるDALIとnode.jsで動くオープンなツールのNode-REDを利用し、その間をDALI Gatewayを使うことによって、オープンなシステムを利用して照明を制御する実験を行い成功しました。
これにより、お客様の要望による細かい仕様はNode-RED側で設定し、DALIはNode-RED側から受けたDALIコマンドに従い該当する照明器具を制御するということができます。
この方法について紹介したいと思います。
言葉の説明
Node-REDとは?
下記は英語のNode-REDのWIKIの説明をGoogle翻訳と自分の解釈で修正しました。
Node-REDは、ハードウェア・デバイス、API、およびオンライン・サービスをインターネットの一部として結ぶためにIBMによって開発されたソフトウェア・ツールです。
Node-REDにはブラウザベースのフローエディタが用意されており、このエディタを使用してJavaScript関数を作成できます。作成したフローはJSONでエクスポートすることができ、自分で再利用したり他の人へ提供することができます。
Node-REDはNode.jsが利用できる環境で動きます。
2016年に、IBMはNode-REDをオープンソースのJS Foundationプロジェクトとして寄贈しました。
Node-RED is a software tool developed by IBM for wiring together hardware devices, APIs and online services as part of the Internet of Things.
Node-RED provides a browser-based flow editor, which can be used to create JavaScript functions. Elements of applications can be saved or shared for re-use. The runtime is built on Node.js. The flows created in Node-RED are stored using JSON.
In 2016, IBM contributed Node-RED as an open source JS Foundation project.
↓ Node-REDの画面。
DALIとは?
DALIとはDigital Addressable Lighting Interfaceの略で、そのまま訳すと「デジタルでアドレス設定可能な照明のインターフェース」ということになりますが、すごく簡単に説明すると照明に特化した仕様がオープンな制御のプロトコルのことです。
つまり、DALIに対応した照明を使えば、どんなコマンドを送れば点灯するのか消灯するのか、それとも調光させるのかなど、1台ごとにメーカーに依存することなくコントロールができます。
ただし、DALIは照明に特化したシンプルなプロトコルの為、細かい要望を満たすためにはDALIの照明をコントロールするためのシステムが必要になります。
DALI-Ethernet Gateway(ダリ・イーサーネット・ゲートウエイ)とは?
照明専用のプロトコルであるDALIとLAN(Local Area Netowrk)でデータを相互にやりとりするための製品です。
現在、iLumTech社のDeeBridgeという製品があり、TCP接続で命令することによって、DALIのネットワークにDALIコマンドを送ることができます。
Node-REDとDALI-Ethernet Gatewayをつなぐ仕組みについて
Node-REDからDALIの照明をコントロールするシステムは下記の様になります。
Raspberry PIはNode-REDを動かすためのサーバーとして設置。WiFiルータにLANケーブルで接続します。(IP 192.168.0.3)
DALI-Ethernet GatewayもLANケーブルでWiFiルーターと接続し反対側からはDALIのネットワークに接続します。(IP 192.168.0.22)
DALI Power Supplyは、DALIのネットワークをアクティブにするためのDC18Vの電源で、出力側をDALIのネットワークに接続します。
DALI LuminareはDALIに対応した照明器具のこと。点灯するための電源は別途必要ですが、DALIネットワークとは信号線で接続されます。すると、DALIのネットワーク上で個別にアドレスを持つことができます。
iPadはWiFiでLANに接続し、ブラウザからRaspberryPIのIPアドレス(とポート番号)を打ち込むことで、Node-REDのエディターを表示することができます。
Node-REDからDALI-Ethernet gatewayにコマンドを送信する方法
TCP出力ノードの設定
Node-REDにはTCP接続で出力を行うための「TCP出力ノード」があります。
「TCP出力ノード」フローに置き、Typeを”Connect to”、DALIゲートウエイであるDeeBridgeのポートは8421、IPアドレスは自分で設定したものを入力(今回は192.168.0.22)します。
これが結果
DALI-Ethernet gatewayへの設定はこれだけ。次は今回設定したゲートウェイにDALIコマンドを送る方法について説明します。
TCP出力ノードにDALIコマンドを送る方法
一番簡単な方法をご紹介。これが完成形です。
やりたいことは、全器具に対して最大で点灯しなさいというDALIコマンドを送ること。
対象: Broadcast all
コマンド: Recall Max Level
では、Node-REDでの作り方です。
入力からinjectノードをフローに入れます。
フローに置いたinjectノードをダブルクリックして下記の画面を表示。
Payloadからstringを選択。
今回はDALIのネットワーク全体(Broadcast All)に、全点灯(Recall Max Level)するコマンドを送るため、Payloadに#255,4と入力します。
先程作成したTCPノードと並べるとこんな感じ。
ノード同士を線でつないで完了。
実際には、これだと点灯しっぱなしになるので、Injectノードをもう一個追加。
DALIコマンドはこうなり、Payloadには”#255,0″をいれます。
対象: Broadcast all
コマンド: off
結果はこちら
これで、”Broadcast all: Recall Max Level”のボタンをおすと全点灯、”Off”を押すと前消灯のコマンドがDALIのゲートウェイに送られ、DALIネットワークにある照明器具が点灯・消灯します。
Node-RED側でおこなえること
以上、Node-RED側で全点灯・消灯させるフローの作り方を紹介しました。
実際に現場で照明を導入する場合は、センサーの情報、時間、その他の条件などによって、どこの照明器具を点灯し、どんなシーンを呼び出すかということが変わってきます。
DALIはとてもシンプルなプロトコルであるがゆえ、複数の条件が重なった時の判断をするような機能はないので、これまでは各メーカーが開発しているDALIのひとつ上のシステムが必要でした。
しかし、細かい条件の設定や判断はNode-RED側で行い、DALI側は単純に指定した照明器具のアドレスに点灯・消灯・調光などを指示するということに特化すれば、仕様が公開されているDALIの上もオープンソースであるNode-REDという組み合わせができるので、特定のメーカーに依存することなく、柔軟かつ自由に現場に合わせて照明のシーン呼び出しをすることができます。
今後の可能性
照明はあくまでも設備のひとつであり、エネルギー消費量であれば空調、より多くの情報を伝えるのであれば映像など、空間を作る上で存在するものは様々です。
これまでは、メーカーが違う、設備が違うといった場合のシステム統合には、コストと時間の両方に大きな負担がありましたが、今後はNode-REDを利用することで、ゲートウェイやAPIが公開されているメーカーの設備は自由に開発できるようになります。
実際にNode-REDのノードで、DMX、Modbus、KNXなどが公開されており、海外では設備系の制御にNode−REDを使おうとしている人が多いようです。
ということで、当サイトでは引き続きNode-REDと照明だけでなく、設備系の制御について調査をしていきます。