前回の記事を受けて実践編です。
ComfortClickをつかってMQTTブローカー設置とデバイスデータを受ける方法
今回は、ReTerminalにEnOceanのUSBドングルを差し、EnOceanのスイッチデータを受信してそれによってComfortClickの照明シーンを切り替える方法をご紹介します。
ReTerminalのEnOcean Node-REDのフロー
[{"id":"2fa8b98e84f83d2c","type":"serial in","z":"abac3c1268fa03e7","name":"","serial":"941751e5dc8f2ce8","x":150,"y":100,"wires":[["180715535edd2ba7"]]},{"id":"f6a6388e742f5128","type":"debug","z":"abac3c1268fa03e7","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":540,"y":420,"wires":[]},{"id":"0d87404a6c1a56bb","type":"switch","z":"abac3c1268fa03e7","name":"","property":"payload.OriginatorID","propertyType":"msg","rules":[{"t":"eq","v":"002e5871","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":330,"y":260,"wires":[["e17d7c7453c652a1"],[]]},{"id":"180715535edd2ba7","type":"function","z":"abac3c1268fa03e7","name":"EnOceanDecorder","func":"//EnOcean telegram decoder\n//2017.10.8 created\n//\nvar date = new Date();\n//\nvar ESP3_Packet = msg.payload;\n//\nvar Header = ESP3_Packet.slice(1, 5);\nvar DataLength = 256 * ESP3_Packet[1] + ESP3_Packet[2];\n//\nvar RawData = ESP3_Packet.slice(6, 6 + DataLength);\nvar ERP2_Header = RawData.slice(0, 1).toString(\"hex\");\nvar EEP = \"RPS\";\nvar OriginatorID = \"00000000\";\nvar Data1 = \"00\";\nvar Data4 = \"00000000\";\n//\nvar OptionalData = ESP3_Packet.slice(6 + DataLength, 8 + DataLength);\nvar SubTelNum = OptionalData.slice(0, 1);\nvar dBm = OptionalData.slice(1, 2);\n//\nswitch (ERP2_Header) {\n //normal telegram\n case \"20\"://RPS telegram\n EEP = \"RPS\";\n OriginatorID = RawData.slice(1, 5).toString(\"hex\");\n Data1 = RawData.slice(5, 6).toString(\"hex\");\n break;\n case \"21\"://1BS normal telegram\n EEP = \"1BS\";\n OriginatorID = RawData.slice(1, 5).toString(\"hex\");\n Data1 = RawData.slice(5, 6).toString(\"hex\");\n break;\n case \"22\"://4BS normal telegram\n EEP = \"4BS\";\n OriginatorID = RawData.slice(1, 5).toString(\"hex\");\n Data4 = RawData.slice(5, 9).toString(\"hex\");\n break;\n //teach-in telegram\n case \"61\"://1BS teach-in telegram\n EEP = \"1BS teach-in\";\n OriginatorID = RawData.slice(3, 7).toString(\"hex\");\n Data1 = RawData.slice(7, 8).toString(\"hex\");\n break;\n case \"62\"://4BS teach-in telegram\n EEP = \"4BS teach-in\";\n OriginatorID = RawData.slice(3, 7).toString(\"hex\");\n Data4 = RawData.slice(7, 11).toString(\"hex\");\n break;\n default:\n break;\n}\n\nmsg.payload = {\n Time: date.toString(),\n OriginatorID: OriginatorID,\n EEP: EEP,\n Data1: Data1,\n Data4: Data4,\n SubTelNum: SubTelNum,\n dBm: dBm\n};\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":250,"y":180,"wires":[["0d87404a6c1a56bb"]]},{"id":"e17d7c7453c652a1","type":"function","z":"abac3c1268fa03e7","name":"スイッチデータの送信","func":"var data = msg.payload.Data1;\nvar value;\n\nif ( data == 84 ) {\n value = true;\n msg.payload = value;\n return msg;\n\n} else if (data == 88) {\n value = false;\n msg.payload = value;\n return msg;\n}\n\n//node.warn(data);\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":340,"wires":[["f6a6388e742f5128"]]},{"id":"941751e5dc8f2ce8","type":"serial-port","serialport":"/dev/ttyUSB0","serialbaud":"57600","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"100","bin":"bin","out":"time","addchar":"","responsetimeout":"10000"}]
このようなフローを作成し、EnOceanスイッチからのデータをtrue/falseで送るようにします。
ReTerminalのEnOcean Node-REDのフローの修正
ComfortClickのMQTTブローカーにつなげるためにフローを修正します。
こちらの詳細は前回の記事をご覧ください。
ComfortClickをつかってMQTTブローカー設置とデバイスデータを受ける方法
ComfortClick側で確認
EnOceanスイッチを押すとvalueが変化すればOKです。
ComfortClcikで照明シーンを作成
次はEnOceanスイッチを押すと照明シーンが呼び出されるようにしたいので、ComfortClickで照明シーンを作成します。
DevicesからSceneを追加。
シーンが発動するためのTriggersからAddをクリック
EnOceanボタンのOnが押された時のトリガーを選択。
このままだと押しても正しくSceneが実行されたかわからないので、PhilipsHueを使います。
ComfortClcikにHueを追加
DevicesにHueを追加します。
これでSceneにHueをいれて正しく動いているのが確認する準備ができました。
sceneにHue Lapmを入れる
SceneのデバイスにHue Lamp1を追加しPowerがTrueになるようにします。
これでEnOceanのTrue側のボタンを押して点灯することを確認。
では、On用のシーンとOff用のシーンを作ります。
Sceneをコピー&ペーストして、Scene-OnとScene-Offを作成しました。
Scene-OffのTriggersでEditを押します。
Valueをfalseにします。
Hue Lamp1のValueもfalseにします。
EnOceanスイッチを押すと、Hue Lamp1がOn/Offすれば完了です。
まとめ
以上、ReTerminalでEnOceanスイッチの信号を受けてMQTTでComfortClickに送り照明シーンを変更する方法をご紹介しました。
今回はsceneの動作確認にHueLampを使いましたが、もちろん、KNXやDALIのデバイスもsceneの中に組み込んであげれば、同様にsceneの呼び出しが可能です。