NODE-RED to FIBARO HC2
Simple bridge node-red to Fibaro HC2
please. do not forget setup:
- NODE-RED MQTT Server
- login / password /IP Address HC2
now support only: true / false => HC2 ON / OFF
0..99 int value => dimmer level
#123456 => RGB led strip color
[{"id":"8b08f8c5.13a508","type":"mqtt in","z":"dae260f4.2feda","name":"to HC2","topic":"home/command/#","qos":"2","broker":"50ba17cb.2fbd18","x":90,"y":280,"wires":[["5ea83225.7cb4ec"]]},{"id":"dd514a06.0e6008","type":"debug","z":"dae260f4.2feda","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":550,"y":200,"wires":[]},{"id":"5ea83225.7cb4ec","type":"function","z":"dae260f4.2feda","name":"transform to HC2","func":"function hexToRgb(hex) {\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, function(m, r, g, b) {\n return r + r + g + g + b + b;\n });\n\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null;\n}\n\nvar topic = msg.topic\nvar paths = topic.split(\"/\")\nvar value = msg.payload\nmsg.deviceID=paths[2]\n\nif (value == \"true\") {\n msg.name=\"turnOn\";\n} else\nif (value == \"false\") {\n msg.name=\"turnOff\";\n} else\nif (value.startsWith(\"$\")) {\n var w = value.substr(1);\n msg.args=\"&arg1=0&arg2=0&arg3=0&arg4=\" + w;\n} else\nif (value.startsWith(\"#\")) {\n msg.name=\"setColor\";\n var r = hexToRgb(value).r;\n var g = hexToRgb(value).g;\n var b = hexToRgb(value).b;\n var w = 0;\n msg.args=\"&arg1=\" + r + \"&arg2=\" + g + \"&arg3=\" + b + \"&arg4=\" + w;\n} else\nif (!isNaN(value)) {\n msg.name=\"setValue\";\n msg.args=\"&arg1=\" + value;\n} else {\n // Ooops!!\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":310,"y":280,"wires":[["d2e73b32.cf9f48","dd514a06.0e6008"]]},{"id":"d2e73b32.cf9f48","type":"http request","z":"dae260f4.2feda","name":"HC2 call","method":"GET","ret":"txt","url":"http://192.168.1.36/api/callAction?deviceID={{{deviceID}}}&name={{{name}}}{{{args}}}","tls":"","x":560,"y":280,"wires":[["95733273.7052f"]]},{"id":"95733273.7052f","type":"debug","z":"dae260f4.2feda","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":750,"y":280,"wires":[]},{"id":"50ba17cb.2fbd18","type":"mqtt-broker","z":"dae260f4.2feda","broker":"192.168.1.29","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":null,"birthPayload":"","willTopic":"","willQos":"0","willRetain":null,"willPayload":""}]