DALI

【動画あり】世界初!Node-REDを使ってPepperとDALIとKNXを連携させてみた!

2018年4月5日、ソフトバンク株式会社の北崎さん、松下さん、ワンフットシーバス 田中さんと私の4人で、Pepperと照明制御のプロトコルDALI、設備制御プロトコルKNXをNode-REDを使って連携させるという実験を行い成功しました。

On April 5, 2018, Mr.Kitazaki, Mr.Matsushita from Softbank, Mr.Tanaka from 1-foot-seabass and I tested to connect Pepper(Robot), DALI and KNX by using Node-RED, and we succeeded in the experiment.

DALIは照明制御のオープンなプロトコル、KNXは照明、空調、ブラインド、セキリティなど設備全般を制御するためのオープンなプロトコルです。今回はNode-REDを使って、DALIとKNXはゲートウェイにコマンドを、PepperにはMQTTメッセージを送り連動する仕組みをつくってます。

DALI is a protocol for Lighting, KNX is also a protocol for facilities like lighting, HVAC, blind, security and etc. We made a system to send commands to a gateway (DALI, KNX) and send MQTT message to Pepper. ( following image )

NewImage

↑ ソフトバンク株式会社 北崎さんに書いてもらったシステム概要図です。

↓ 動画です。

動画は10分と長いので、一番最初と7分30秒ぐらいに実際連携する様子が紹介されているのでこちらをみてみてください。
あと、ぜひともチャンネル登録おねがいします。

I’m sorry this video is in Japanese. ( I will make english subtitles!)
The video is 10 minutes long, so please check around 7:30, you can see how to work the system.
I’m very happy if you subscribe my YouTube channel.

背景 / BACKGROUND

IoT時代の恩恵は、メーカー独自形式でなくオープンなプロトコルであれば容易にそれらをつなぎ連携することができること。

The benefit of the IoT era is that if it is an open protocol rather than the manufacturer’s proprietary format, it can easily connect them and cooperate.

私の専門は照明設備の制御ですが、IoTによってこれまで明るい・暗いといった機能的な照明のあり方から、状況によって光をコントロールして人の視線を集めるといったマーケティング的な使い方ができるようになりました。

My specialty is a control of lighting equipment, before lighting is one of a functional facility, but IoT has made it possible to use lighting as one of marketing tool.

そんな中、オープン設備制御研究会メンバーのワンフットシーバス 田中さんと、BLEで通信できる電源&信号線不要の発電床スイッチが便利だという話で盛り上がり、田中さんの友人でソフトバンク株式会社の北崎さんという方が、DALIを使った照明制御に興味を持っていて紹介したいという話しがつながり、「じゃあ、発電床とペッパーとDALIを同時につなげてみよう、せっかくだからKNXも一緒にね!」 ということになり、2018年4月5日にソフトバンク株式会社にお邪魔して来ました。

One day, we talked about a power generation floor(PGF) with BLE module, and My.Tanaka already tested to connect the PGF to Node-red, then we just came up with a try to connect the PGF, DALI, KNX and Pepper(robot)

Since Mr. Kitazaki is working for Softbank and he can prepare Pepper, so we visited Softbank and tested to connect PGF, DALI, KNX and Pepper last week.

参考記事 : Related posts ( in Japanese)

自己発電+BLE Beacon 床スイッチ Smart Mat SwitchのデータをNode-REDで読み取ったメモ – 1ft-seabass.jp.MEMO

Choregraphe入っているPCにNode-REDを入れてPepperとMQTT連携するメモ – 1ft-seabass.jp.MEMO

機器制御ネットワーク通信プロトコルKNXとHoloLensをつなげる実験をしてきました – 1ft-seabass.jp.MEMO

オープン設備制御研究会

仕組みについて / System

NewImage

仕組みとしては、床においた発電床を踏むと、BLEをNode-REDが受信し、DALIのゲートウェイにはTCP OUTノードでDALIコマンドを送信、KNXゲートウェイにはKnxEasyというライブラリのKnxEasyOutノードでKNXのデータを送信、同時にMQTT BrokerからPepperにMQTTメッセージを送るといった流れになったいます。

As a mechanism, when stepping on the PGF, Node-RED receives BLE signal, then Node-RED send DALI and KNX command to the DALI and KNX gateway. We used TCP-out-node for the DALI gateway and , and used KnxEasyOut-node for KNX gateway. the KnxEasy is installed from library , we send MQTT message to Pepper by using MQTT broker.

Node-REDのフロー / Node-RED Flow

NewImage

こちらがNode-REDのフローです。

This is the Node-RED flow.

0 yuka

写真は発電床

発電床のBLEをNode-REDで読み込むところは、田中さんのフローをそのままいただきましたので、解説はこちらの記事をご覧ください。

I used the flow of scanning a GPF (Generation Power Floor) by BLE from Mr.Tanaka’s post as following URL (in Japanese).

自己発電+BLE Beacon 床スイッチ Smart Mat SwitchのデータをNode-REDで読み取ったメモ – 1ft-seabass.jp.MEMO

DALI

0 DALI

写真はDALI機器。

DALIは照明制御に特化したオープンなプロトコルです。DALIゲートウェイに対してDALIコマンドを表す文字列を送信すると、DALIネットワークに接続された照明器具をコントロールできます。

DALI is an open protocol specialized for lighting. When we send a string representing DALI command to DALI gateway, then lighting fixture on DALI network are controlled by DALI.

NewImage

発電床が踏まれ、CHANGEノードの「ON DALI」はDALIコマンドで全点灯を意味する”#255,5″をTriggerノードにおくり、Triggerノードは2秒後に前消灯を意味する”#255,0″をDALIゲートウェイを表すTCP Outノードに送ります。

The PGF(power generation floor) is stepped on, the “ON DALI”-node sends a string”#255,5″ meaning all fixtures light, and 2 second later, the trigger-node send a string “#255,0” meaning “all fixture turn off”. These command are send to the DALI gateway.

DALI Command 内容 / Meaning
#255,5 全照明器具(all fixtures)、点灯(On)
#255,0 全照明器具(all fixtures)、消灯(Off)

TCP Outノードには、DALIゲートウェイのIPアドレスとポートが入力されています。

We inputed IP address of DALI gateway and the port number to the TCP-Out-node.

NewImage

↓ 参考記事 (Related posts)
DALIのGatewayとNode-REDを使った照明制御について

Control DALI luminaire from Node-RED by using DALI gateway

KNXについて

0 KNX

写真はKNXの機器

KNXは照明、空調、セキリティなど様々な設備制御の為のオープンなプロトコルです。

KNX is an open protocol for facilities, like lighting, HVAC, security and etc.

グループアドレスと呼ばれる制御される機器をまとめたアドレスに対して、Datapointと呼ばれる設備ごとにKNXとして定められたデータ形式のデータを送り、設備の制御を行います。

You can control facilities by setting group address and datapoint.

照明のOn/OffのDatapointは “DTP1.001″となり、1が点灯、0が消灯の1bitのデータ形式となります。

The datapoint of lighting On and off is “DTP1.001”. “DTP1.001” is 1 byte data. you send “1” then light on and send “0” then light off.

NewImage

発電床が踏まれ、CHANGEノードの「ON KNX」は点灯を意味する”1″をTriggerノードにおくり、Triggerノードは2秒後に消灯を意味する”0″をKNXゲートウェイ(knxEasy)に送ります。

When you step on the PGF(power generation floor), the CHANGE node send “1” to TRIGGER node and the TRIGGER node send “1” to KNX gateway (knxEasy node), 2 second later, the TRIGGER node send “0” to KNX gateway.

KNXデータ 内容
1 点灯
0 消灯

DALIとの違いは、グループアドレスごとにKnxEasyのOutノードをつくること。

A difference between DALI and KNX is that you need KnxEasy node for each group address.

NewImage

上の図は、赤いLEDをOn/OffするためのKnxEasy Outノードです。

The figure above is KnxEasy Out node, the group address is to light on/off RED led.

Server部分にKNXゲートウェイのIPアドレスとポート番号を指定、Topicはグループアドレス”0/0/3″を、Datapointは”DTP1.001″を入力します。

Fill the ip address of KNX gateway into “Server”, fill the group address into “Topic”, fill the datapoint into “Datapoint”.

グループアドレスもDatapointもKNXの機器側の事前設定が必要で、ETSというKNX専用のソフトウェアをつかって機器側の設定が既に行われています。

A group address and a datapoint have to be set by using ETS. ETS is the configuration software for KNX.

このKnxEasyOutノードに1がくれば点灯、0がくれば消灯するといった流れです。

When KnxEasy out node receive “1”, a light on, receive “0”, a light off.

NewImage

同じように、4000K(白いLED)のKnxEasy Outノードです。こちらはグループアドレスを表すTopicが”0/0/1″になってます。

The figure above is KnxEasy out node of 4000K LED. The topic is filled “0/0/1” stands for a group address.

NewImage

こちらはGREEN(緑)のLEDのKnxEasy Outノードです。Topicは”0/0/4″です。

The figure above is KnxEasy out node of Green led.

Pepper(Node-RED側)

ペッパーにはMQTT brokerを使ってMQTTメッセージを送っています。

こちらもワンフットシーバスの田中さんに下記記事の内容でフローをつくってもらいました。

Choregraphe入っているPCにNode-REDを入れてPepperとMQTT連携するメモ – 1ft-seabass.jp.MEMO

NewImage

まずは、MQTT brokerの設定。

NewImage

Mosca inノードの設定は上図のとおり。

NewImage

ON KNXノードとMQTT Outノードがフローでつながってます。

NewImage

MQTT Outノードのトピックには”test/talk”です。

Pepper(Choregraphe側)

↓ 下記、ソフトバンク株式会社 松下さんからの説明です。

Pepper側ではMQTTアダプターボックスでトピック”test/talk”からメッセージを受け取り、「ハロー」の発声と「バンザイ」のモーションをさせています。

まとめ

以上のような仕組みで、発電床を踏むとBLEをNode-REDが受け取り、KNXとDALIのゲートウェイに照明を点灯させるコマンドが送られ、同時にMQTTメッセージがPepperに送られてPepperが”ハロー”という連携ができました。

IoTをビジネス化するためには照明のように設備とデジタル機器を様々なものとつないで、マーケティング的に利用したり付加価値をつけたりすることが必須です。

今回の実験はPepperという商業ベースで使われているロボットと設備をつなげる第一歩でした。

今後は他の機器とつなげたりもっと複雑なことをできるようにして、新しい価値を仲間と一緒に作っていきたいとおもいます。

ということで、ソフトバンク株式会社の北崎さん、松下さん、ワンフットシーバスの田中さん、ありがとうございました!

もっともっと面白いことをやっていきましょう!

よろしくおねがいします。

Node-REDのコードはこちら

[{"id":"5c948c83.7f8324","type":"trigger","z":"4faeed60.f3fc34","op1":"1","op2":"0","op1type":"num","op2type":"num","duration":"250","extend":false,"units":"ms","reset":"","bytopic":"all","name":"連続受信をほどよく整理 trigger","x":869,"y":130,"wires":[["8eba534c.f4bb"]]},{"id":"9ddea9b6.d2fc68","type":"change","z":"4faeed60.f3fc34","name":"ON DALI","rules":[{"t":"set","p":"payload","pt":"msg","to":"#255,5","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":580,"y":419,"wires":[["4be4760b.206428"]]},{"id":"8eba534c.f4bb","type":"switch","z":"4faeed60.f3fc34","name":"1/0判定","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"0","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":396,"y":495,"wires":[["9ddea9b6.d2fc68","bcc1520e.5a3b9"],[]]},{"id":"77f81a82.75bad4","type":"debug","z":"4faeed60.f3fc34","name":"","active":false,"console":"false","complete":"false","x":816,"y":184,"wires":[]},{"id":"b377f24a.25dfd","type":"inject","z":"4faeed60.f3fc34","name":"","topic":"","payload":"on","payloadType":"str","repeat":"","crontab":"","once":true,"x":119,"y":122,"wires":[["5eb015ba.a4804c"]]},{"id":"856d6c52.ddc74","type":"inject","z":"4faeed60.f3fc34","name":"","topic":"","payload":"off","payloadType":"string","repeat":"","crontab":"","once":false,"x":119,"y":202,"wires":[["5eb015ba.a4804c"]]},{"id":"3bf040e7.2da53","type":"json","z":"4faeed60.f3fc34","name":"","pretty":false,"x":439,"y":162,"wires":[["7a048bd8.e935a4"]]},{"id":"5eb015ba.a4804c","type":"scanBeacon","z":"4faeed60.f3fc34","name":"","beacon_uuid":"","beacon_major":"","beacon_minor":"","x":279,"y":162,"wires":[["3bf040e7.2da53"]]},{"id":"7a048bd8.e935a4","type":"switch","z":"4faeed60.f3fc34","name":"該当のuuid絞り込み","property":"payload.uuid","propertyType":"msg","rules":[{"t":"eq","v":"f583f8b680864644a41dcf1b015828ea","vt":"str"},{"t":"else"}],"checkall":"true","outputs":2,"x":614,"y":163,"wires":[["5c948c83.7f8324","77f81a82.75bad4"],[]]},{"id":"186f7e06.6e2ec2","type":"tcp out","z":"4faeed60.f3fc34","host":"192.168.1.22","port":"8421","beserver":"client","base64":false,"end":false,"name":"","x":989,"y":418,"wires":[]},{"id":"4be4760b.206428","type":"trigger","z":"4faeed60.f3fc34","op1":"","op2":"#255,0","op1type":"pay","op2type":"str","duration":"2","extend":false,"units":"s","reset":"","bytopic":"all","name":"2秒後に消灯","x":760,"y":419,"wires":[["186f7e06.6e2ec2"]]},{"id":"13c8973d.f6acf9","type":"knxEasy-out","z":"4faeed60.f3fc34","server":"9b00ab6a.dd7f38","topic":"0/0/3","dpt":"DTP1.001","name":"RED ON/OFF","x":976,"y":484,"wires":[]},{"id":"bcc1520e.5a3b9","type":"change","z":"4faeed60.f3fc34","name":"ON KNX","rules":[{"t":"set","p":"payload","pt":"msg","to":"01","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":580,"y":479,"wires":[["2633148.d19e3ec"]]},{"id":"2633148.d19e3ec","type":"trigger","z":"4faeed60.f3fc34","op1":"","op2":"00","op1type":"pay","op2type":"str","duration":"2","extend":false,"units":"s","reset":"","bytopic":"all","name":"2秒後に消灯","x":760,"y":479,"wires":[["13c8973d.f6acf9","4993b67f.654608","13016a0d.6b2726","b228d650.f8a028"]]},{"id":"4993b67f.654608","type":"knxEasy-out","z":"4faeed60.f3fc34","server":"9b00ab6a.dd7f38","topic":"0/0/1","dpt":"DTP1.001","name":"4000K ON/OFF","x":974,"y":553,"wires":[]},{"id":"13016a0d.6b2726","type":"knxEasy-out","z":"4faeed60.f3fc34","server":"9b00ab6a.dd7f38","topic":"0/0/4","dpt":"DTP1.001","name":"GREEN ON/OFF","x":977,"y":622,"wires":[]},{"id":"b228d650.f8a028","type":"mqtt out","z":"4faeed60.f3fc34","name":"","topic":"test/talk","qos":"","retain":"","broker":"c7fe820e.e9e3e","x":960,"y":734,"wires":[]},{"id":"9b00ab6a.dd7f38","type":"knxEasy-config","z":"","host":"192.168.1.7","port":"3671"},{"id":"c7fe820e.e9e3e","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]

ABOUT ME
中畑 隆拓
スマートライト㈱ 代表取締役。IoTソリューションの開発、スマートホーム&オフィスのコンサルティング、DALI,KNX,EnOceanなどのインテグレーションを行っています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です