-
-
Save Linax2015/a5ded27a32bd2aeae6024a7a3a9cd697 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[{"id":"49cc204773663dad","type":"tab","label":"Rakesh1","disabled":false,"info":"","env":[]},{"id":"4e4a368ee95a3149","type":"function","z":"49cc204773663dad","name":"Dimmer or Relay Answer","func":"if (msg.payload.success == true) \n {\n msg.topic = \"hdl/sc/\" + msg.sender + \"/\" + msg.payload.channel;\n return msg;\n}\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":100,"wires":[["c59b72d45b288284"]]},{"id":"a37be4eaf0a724e1","type":"function","z":"49cc204773663dad","name":"Dimmer or Relay Read","func":"var outputMsgs = [];\nif (msg.code == 52) {\n for (i = 0; i < msg.payload.channels.length; i++) {\n outputMsgs.push({\n topic:\"hdl/sc/\" + msg.sender + \"/\" + msg.payload.channels[i].number,\n payload:{\n level:msg.payload.channels[i].level\n \n }\n });\n }\n return [ outputMsgs ];\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":520,"y":140,"wires":[["c59b72d45b288284"]]},{"id":"95636077ee302f47","type":"mqtt out","z":"49cc204773663dad","name":"Status updates to MQTT","topic":"","qos":"0","retain":"true","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"","x":1090,"y":480,"wires":[]},{"id":"c59b72d45b288284","type":"range","z":"49cc204773663dad","minin":"0","maxin":"100","minout":"0","maxout":"255","action":"scale","round":true,"property":"payload.level","name":"","x":730,"y":100,"wires":[["95636077ee302f47"]]},{"id":"e45664cc8c229dae","type":"function","z":"49cc204773663dad","name":"Sensor Status Broadcasts","func":"var outputMsgs = [];\nif (msg.code == 5703) \n{\n {\n outputMsgs.push\n ({\n topic:\"hdl/temp/\" + msg.sender + \"/1\",\n payload : msg.payload.temperature\n });\n\n outputMsgs.push\n ({\n topic:\"hdl/lux/\" + msg.sender + \"/lux\",\n payload : msg.payload.brightness\n });\n }\n return [ outputMsgs ];\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":380,"wires":[["95636077ee302f47"]]},{"id":"145f53a3f0e93684","type":"hdl-raw-in","z":"49cc204773663dad","controller":"e8b05aeff1e68dd7","name":"From HDL 1.X","x":90,"y":440,"wires":[["bbc2ba8e28137bf7","b4e85b02aab60cc1"]]},{"id":"4f0d0a006a4b79c9","type":"comment","z":"49cc204773663dad","name":"Feedback from HDL to MQTT","info":"","x":160,"y":40,"wires":[]},{"id":"90db656379ada45a","type":"comment","z":"49cc204773663dad","name":"Single Channel Status","info":"","x":500,"y":60,"wires":[]},{"id":"0ca81a76bc358825","type":"comment","z":"49cc204773663dad","name":"Sensor Status Broadcasts Lux and Temp","info":"","x":560,"y":340,"wires":[]},{"id":"19633efb9acec1f0","type":"mqtt in","z":"49cc204773663dad","name":"From MQTT","topic":"hdl/+/+/+/set","qos":"0","datatype":"auto","broker":"","nl":false,"rap":false,"inputs":0,"x":110,"y":1360,"wires":[["da9e36bcb77262b3"]]},{"id":"c302498f70d903c6","type":"json","z":"49cc204773663dad","name":"","property":"payload","action":"obj","pretty":true,"x":470,"y":1180,"wires":[["a37e015f2c43ce07"]]},{"id":"a37e015f2c43ce07","type":"range","z":"49cc204773663dad","minin":"0","maxin":"255","minout":"0","maxout":"100","action":"scale","round":true,"property":"payload.level","name":"","x":590,"y":1180,"wires":[["1eb4db5a9aa0d2a1"]]},{"id":"1eb4db5a9aa0d2a1","type":"function","z":"49cc204773663dad","name":"Light or Relay","func":"msg.code = 49;\n\nmsg.target = msg.topic.split(\"/\")[2];\nvar time = msg.payload.time;\nvar level = Math.min(Math.max(parseInt(msg.payload.level), 0), 100);\n\nmsg.payload = {\n channel: msg.topic.split(\"/\")[3],\n time: time,\n level: level,\n};\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":760,"y":1180,"wires":[["3eced500338bbfdb"]]},{"id":"64c59199d37a0cf4","type":"comment","z":"49cc204773663dad","name":"Commands from MQTT to HDL","info":"","x":170,"y":1100,"wires":[]},{"id":"da9e36bcb77262b3","type":"switch","z":"49cc204773663dad","name":"","property":"topic","propertyType":"msg","rules":[{"t":"cont","v":"hdl/sc/","vt":"str"},{"t":"cont","v":"hdl/us/","vt":"str"},{"t":"cont","v":"hdl/fh/","vt":"str"},{"t":"cont","v":"hdl/hm/","vt":"str"},{"t":"cont","v":"hdl/ac/","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":250,"y":1360,"wires":[["c302498f70d903c6"],["81132bef99576d9e"],["c82c8da581b58054"],["abcb2c4f12d6d7b7"],["46a8714782cd40ba"]]},{"id":"9338faec585689f0","type":"function","z":"49cc204773663dad","name":"Universal Switch Answer","func":"msg.topic = \"hdl/us/\" + msg.sender + \"/\" + msg.payload.switch;\nvar status = msg.payload.status\nif (status === true) \n {\n msg.payload = \"ON\";\n } \n else \n {\n msg.payload = \"OFF\";\n }\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":240,"wires":[["95636077ee302f47"]]},{"id":"d6149f58862ab41c","type":"comment","z":"49cc204773663dad","name":"Universal Switch","info":"","x":480,"y":200,"wires":[]},{"id":"81132bef99576d9e","type":"function","z":"49cc204773663dad","name":"Universal Switch","func":"var usswitch = msg.topic.split(\"/\")[3];\nvar command = msg.payload;\nif (command === \"ON\") \n {\n hdlcommand = true;\n } \n else \n {\n hdlcommand = false;\n }\nmsg.code = 57372;\nmsg.target = msg.topic.split(\"/\")[2];\nmsg.payload = {\n switch: usswitch,\n status: hdlcommand,\n};\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":1280,"wires":[["3eced500338bbfdb"]],"info":"msg.topic = \"hdl/us/\" + msg.sender + \"/\" + msg.payload.switch;\nvar status = msg.payload.status\nif (status === true) \n {\n msg.payload = \"ON\";\n } \n else \n {\n msg.payload = \"OFF\";\n }\nreturn msg;"},{"id":"bbc2ba8e28137bf7","type":"switch","z":"49cc204773663dad","name":"","property":"code","propertyType":"msg","rules":[{"t":"eq","v":"50","vt":"str"},{"t":"eq","v":"52","vt":"str"},{"t":"eq","v":"57373","vt":"str"},{"t":"eq","v":"57369","vt":"str"},{"t":"eq","v":"5703","vt":"str"},{"t":"eq","v":"5637","vt":"str"},{"t":"eq","v":"58341","vt":"str"},{"t":"eq","v":"6471","vt":"str"},{"t":"eq","v":"6469","vt":"str"},{"t":"eq","v":"7263","vt":"str"},{"t":"eq","v":"7261","vt":"str"},{"t":"eq","v":"6457","vt":"str"},{"t":"eq","v":"6459","vt":"str"}],"checkall":"false","repair":false,"outputs":13,"x":230,"y":480,"wires":[["4e4a368ee95a3149"],["a37be4eaf0a724e1"],["9338faec585689f0"],["585faf2944e12352"],["e45664cc8c229dae"],["954f29852972a378"],["0afea8e1d5311616"],["2a648e83a6679afb","44ae3c66f7953708"],["44ae3c66f7953708","2a648e83a6679afb"],["ee7ed70ffa477c64","cc00103f05ecc87b"],["cc00103f05ecc87b","ee7ed70ffa477c64"],["2164ae74c14e118d","ddded119e2a8dbbf"],["ddded119e2a8dbbf","2164ae74c14e118d"]]},{"id":"5c68c03f21ca06ee","type":"comment","z":"49cc204773663dad","name":"Temprature Sensors","info":"","x":490,"y":540,"wires":[]},{"id":"0afea8e1d5311616","type":"function","z":"49cc204773663dad","name":"Temprature Broadcasts","func":"msg.topic = \"hdl/temp/\" + msg.sender + \"/\" + msg.payload.channel;\nvar temp = msg.payload.temperature\nmsg.payload = temp\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":580,"wires":[["95636077ee302f47"]]},{"id":"585faf2944e12352","type":"function","z":"49cc204773663dad","name":"Universal Switch Read","func":"msg.topic = \"hdl/us/\" + msg.sender + \"/\" + msg.payload.switch;\nvar status = msg.payload.status\nif (status === true) \n {\n msg.payload = \"ON\";\n } \n else \n {\n msg.payload = \"OFF\";\n }\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":520,"y":280,"wires":[["95636077ee302f47"]]},{"id":"70066d7b0a99382c","type":"comment","z":"49cc204773663dad","name":"AC / Heatpump","info":"","x":480,"y":920,"wires":[]},{"id":"743e69a171158fa1","type":"comment","z":"49cc204773663dad","name":"Floorheat Thermostat DLP","info":"","x":510,"y":640,"wires":[]},{"id":"2164ae74c14e118d","type":"function","z":"49cc204773663dad","name":"Air condition Unit Command from DLP ","func":"//Insert MQTT Topic\nmsg.topic = \"hdl/ac/\" + msg.sender + \"/0\" + msg.payload.acno;\n\n//Mode - Change nr to Mode and set current set temprature\nvar amode= msg.payload.setupmode \nif (amode === 0){var Mode = \"cool\"; var Thismodetempset = msg.payload.temperature.cooling}\nif (amode === 1){var Mode = \"heat\"; var Thismodetempset = msg.payload.temperature.heating}\nif (amode === 2){var Mode = \"fan_only\"}\nif (amode === 3){var Mode = \"auto\"; var Thismodetempset = msg.payload.temperature.auto}\nif (amode === 4){var Mode = \"dry\"; var Thismodetempset = msg.payload.temperature.dry}\nmsg.payload.currentmode = Thismodetempset\n\n//Power - Change true to ON and mode to off if off\nvar power = msg.payload.acstatus;\nif (power === false){newpower = \"OFF\"; var Mode = \"off\"}\nmsg.payload.setupmode= Mode\n\n//Change nr to fanspeed\nvar aspeed= msg.payload.setupspeed \nif (aspeed === 0){var Speed = \"auto\"}\nif (aspeed === 1){var Speed = \"high\"}\nif (aspeed === 2){var Speed = \"medium\"}\nif (aspeed === 3){var Speed = \"low\"}\nmsg.payload.setupspeed= Speed\n\n//Change nr to sweep state\nvar sweep = msg.payload.sweep;\nif (sweep === 0){newsweep = \"OFF\"}\nif (sweep === 1){newsweep = \"ON\"}\nmsg.payload.sweep = newsweep\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":570,"y":1000,"wires":[["95636077ee302f47"]]},{"id":"8c28368791915ac8","type":"switch","z":"49cc204773663dad","name":"","property":"topic","propertyType":"msg","rules":[{"t":"cont","v":"/mode/set","vt":"str"},{"t":"cont","v":"/temperature/set","vt":"str"},{"t":"cont","v":"/fan/set","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":530,"y":1800,"wires":[["9a5c2f9161eaf163"],["58410a4758c297f4"],["8c67f236b5c898c7"]]},{"id":"2a648e83a6679afb","type":"function","z":"49cc204773663dad","name":"Floorheat Update/Answer from DLP","func":"//Insert MQTT Topic\nmsg.topic = \"hdl/fh/\" + msg.sender + \"/01\";\n\n//Power Change true/false to ON/OFF\nvar power = msg.payload.status;\nif (power === true){newpower = \"heat\"}\nif (power === false){newpower = \"off\"}\nmsg.payload.status = newpower\n\n//Mode Change from nr to mode 1:Normal 2:Day 3:Night 4:Away 5:Timer. And add current temprature\nvar fhmode= msg.payload.mode \nif (fhmode === 1){var textmode = \"Normal\"; var tempnow = msg.payload.temperature.normal}\nif (fhmode === 2){var textmode = \"Day\"; var tempnow = msg.payload.temperature.day}\nif (fhmode === 3){var textmode = \"Night\"; var tempnow = msg.payload.temperature.night}\nif (fhmode === 4){var textmode = \"Away\"; var tempnow = msg.payload.temperature.away}\nif (fhmode === 5){var textmode = \"Timer\"}\nmsg.payload.textmode= textmode\nmsg.payload.temperature.now = tempnow\n\n//Awaymode\n//if (textmode ==\"Away\"){msg.payload.awaymode = \"On\"}\n// else{msg.payload.awaymode = \"Off\"}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":560,"y":720,"wires":[["95636077ee302f47"]]},{"id":"93c448f65586d888","type":"switch","z":"49cc204773663dad","name":"","property":"topic","propertyType":"msg","rules":[{"t":"cont","v":"/mode/set","vt":"str"},{"t":"cont","v":"/textmode/set","vt":"str"},{"t":"cont","v":"/temperature/set","vt":"str"}],"checkall":"false","repair":false,"outputs":3,"x":570,"y":1420,"wires":[["af4e8b4668432321"],["c3160820269635d1"],["6d2d9bed21022d55"]]},{"id":"44ae3c66f7953708","type":"function","z":"49cc204773663dad","name":"Save msg to flow variable","func":"//Save to flow variable for later use\nflow.set(\"hdl/fh/\" + msg.sender + \"/hdlstate\", msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":680,"wires":[[]]},{"id":"c82c8da581b58054","type":"function","z":"49cc204773663dad","name":"Flow get","func":"//Get Old status from flow variable for complete message\nmsg.oldhdlstate =flow.get(\"hdl/fh/\" + msg.topic.split(\"/\")[2] + \"/hdlstate\");\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":440,"y":1420,"wires":[["93c448f65586d888"]]},{"id":"5635e4eb17fe623c","type":"comment","z":"49cc204773663dad","name":"Single Channel Status","info":"","x":560,"y":1140,"wires":[]},{"id":"7c051fc99bb60936","type":"comment","z":"49cc204773663dad","name":"Universal Switch","info":"","x":540,"y":1240,"wires":[]},{"id":"7ce2bb3ef3bc4f5a","type":"comment","z":"49cc204773663dad","name":"Floorheat Thermostat DLP","info":"","x":570,"y":1340,"wires":[]},{"id":"c3160820269635d1","type":"function","z":"49cc204773663dad","name":"New Preset Mode","func":"// Change from MQTT textmode to HDL nrmode \nvar fhmode = msg.payload\nif (fhmode === \"Normal\"){msg.oldhdlstate.mode = 1}\nif (fhmode === \"Day\"){msg.oldhdlstate.mode = 2}\nif (fhmode === \"Night\"){msg.oldhdlstate.mode = 3}\nif (fhmode === \"Away\"){msg.oldhdlstate.mode = 4}\nif (fhmode === \"Timer\"){msg.oldhdlstate.mode = 5}\n\n//Build new HDL message\nmsg.target = msg.topic.split(\"/\")[2]\nmsg.code = 6470\nmsg.payload = msg.oldhdlstate\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":1420,"wires":[["3eced500338bbfdb"]]},{"id":"af4e8b4668432321","type":"function","z":"49cc204773663dad","name":"New Mode","func":"// Change from Off or heat to true/false\nif (msg.payload === \"off\") {msg.oldhdlstate.status = false}\nif (msg.payload === \"heat\") {msg.oldhdlstate.status = true}\n//Build new HDL message\nmsg.target = msg.topic.split(\"/\")[2]\nmsg.code = 6470\nmsg.payload = msg.oldhdlstate\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":1380,"wires":[["3eced500338bbfdb"]]},{"id":"6d2d9bed21022d55","type":"function","z":"49cc204773663dad","name":"New Temp","func":"// Check witch mode active and save new temperature to that mode\nnormal = msg.oldhdlstate.temperature.normal \nday = msg.oldhdlstate.temperature.day\nnight = msg.oldhdlstate.temperature.night\naway = msg.oldhdlstate.temperature.away\n\nif (msg.oldhdlstate.mode === 1){normal = msg.payload}\nif (msg.oldhdlstate.mode === 2){day = msg.payload}\nif (msg.oldhdlstate.mode === 3){night = msg.payload}\nif (msg.oldhdlstate.mode === 4){away = msg.payload}\n\nmsg.oldhdlstate.temperature.normal = Number(normal)\nmsg.oldhdlstate.temperature.day = Number(day)\nmsg.oldhdlstate.temperature.night = Number(night)\nmsg.oldhdlstate.temperature.away = Number(away)\n\n//Build new HDL message\nmsg.target = msg.topic.split(\"/\")[2]\nmsg.code = 6470\nmsg.payload = msg.oldhdlstate\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":1460,"wires":[["3eced500338bbfdb"]]},{"id":"abb7130424948e40","type":"comment","z":"49cc204773663dad","name":"Air condition","info":"","x":530,"y":1700,"wires":[]},{"id":"ddded119e2a8dbbf","type":"function","z":"49cc204773663dad","name":"Save msg to flow variable","func":"//Save to flow variable for later use\nflow.set(\"hdl/ac/\" + msg.sender + \"/hdlstate\", msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":960,"wires":[[]]},{"id":"46a8714782cd40ba","type":"function","z":"49cc204773663dad","name":"Flow get","func":"//Get Old status from flow variable for complete message\nmsg.oldhdlstate =flow.get(\"hdl/ac/\" + msg.topic.split(\"/\")[2] + \"/hdlstate\");\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":400,"y":1800,"wires":[["8c28368791915ac8"]]},{"id":"9a5c2f9161eaf163","type":"function","z":"49cc204773663dad","name":"New Mode","func":"//Set current temperature from oldstate and change mode to nr and not text\nvar acmode = msg.payload\nif (acmode === \"cool\"){var acstatus = true; var accurrenttemp = msg.oldhdlstate.temperature.cooling; var newacmode = 0}\nif (acmode === \"heat\"){var acstatus = true; var accurrenttemp = msg.oldhdlstate.temperature.heating; var newacmode = 1}\nif (acmode === \"fan_only\"){var acstatus = true; var accurrenttemp = 0; var newacmode = 2}\nif (acmode === \"auto\"){var acstatus = true; var accurrenttemp = msg.oldhdlstate.temperature.auto; var newacmode = 3}\nif (acmode === \"dry\"){var acstatus = true; var accurrenttemp = msg.oldhdlstate.temperature.dry; var newacmode = 4}\n\n//If off change acstatus and old mode\nif (acmode === \"off\")\n{\n var acstatus = false; \n if (msg.oldhdlstate.setupmode === 0){var accurrenttemp = msg.oldhdlstate.temperature.cooling; var newacmode = 0}\n if (msg.oldhdlstate.setupmode === 1){var accurrenttemp = msg.oldhdlstate.temperature.heating; var newacmode = 1}\n if (msg.oldhdlstate.setupmode === 2){var accurrenttemp = 0; var newacmode = 2}\n if (msg.oldhdlstate.setupmode === 3){var accurrenttemp = msg.oldhdlstate.temperature.auto; var newacmode = 3}\n if (msg.oldhdlstate.setupmode === 4){var accurrenttemp = msg.oldhdlstate.temperature.dry; var newacmode = 4}\n}\n\n// - Insert to msg object\nmsg.oldhdlstate.currentmode = accurrenttemp\nmsg.oldhdlstate.setupmode = newacmode\nmsg.oldhdlstate.acstatus = acstatus\n\n//Build new HDL message\nmsg.target = msg.topic.split(\"/\")[2]\nmsg.code = 6458\nmsg.payload = msg.oldhdlstate\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":690,"y":1740,"wires":[["3eced500338bbfdb"]],"info":"msg.topic = \"hdl/us/\" + msg.sender + \"/\" + msg.payload.switch;\nvar status = msg.payload.status\nif (status === true) \n {\n msg.payload = \"ON\";\n } \n else \n {\n msg.payload = \"OFF\";\n }\nreturn msg;"},{"id":"e9777b93c016659c","type":"function","z":"49cc204773663dad","name":"Temp","func":"//Set new temperature to HDL message\nvar acurrtemp = msg.payload\nif (msg.oldhdlstate.setupmode === 0){msg.oldhdlstate.temperature.cooling = acurrtemp}\nif (msg.oldhdlstate.setupmode === 1){msg.oldhdlstate.temperature.heating = acurrtemp}\n//if (msg.oldhdlstate.setupmode === 2){var accurrtemp = 0}\nif (msg.oldhdlstate.setupmode === 3){msg.oldhdlstate.temperature.auto = acurrtemp}\nif (msg.oldhdlstate.setupmode === 4){msg.oldhdlstate.temperature.dry = acurrtemp}\n\n// Build AC broadcast\nmsg.target = msg.topic.split(\"/\")[2]\nmsg.code = 6458,\nmsg.payload = msg.oldhdlstate\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":770,"y":1800,"wires":[["3eced500338bbfdb"]],"info":"msg.topic = \"hdl/us/\" + msg.sender + \"/\" + msg.payload.switch;\nvar status = msg.payload.status\nif (status === true) \n {\n msg.payload = \"ON\";\n } \n else \n {\n msg.payload = \"OFF\";\n }\nreturn msg;"},{"id":"58410a4758c297f4","type":"range","z":"49cc204773663dad","minin":"0","maxin":"100","minout":"0","maxout":"100","action":"scale","round":true,"property":"payload","name":"Round","x":650,"y":1800,"wires":[["e9777b93c016659c"]]},{"id":"8c67f236b5c898c7","type":"function","z":"49cc204773663dad","name":"New Fan Mode","func":"//AC fan speed text to speed\nvar acspeed = msg.payload\nif (acspeed === \"auto\"){msg.oldhdlstate.setupspeed = 0}\nif (acspeed === \"high\"){msg.oldhdlstate.setupspeed = 1}\nif (acspeed === \"medium\"){msg.oldhdlstate.setupspeed = 2}\nif (acspeed === \"low\"){msg.oldhdlstate.setupspeed = 3}\n\n// Build AC broadcast\nmsg.target = msg.topic.split(\"/\")[2]\nmsg.code = 6458,\nmsg.payload = msg.oldhdlstate\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":700,"y":1860,"wires":[["3eced500338bbfdb"]],"info":"msg.topic = \"hdl/us/\" + msg.sender + \"/\" + msg.payload.switch;\nvar status = msg.payload.status\nif (status === true) \n {\n msg.payload = \"ON\";\n } \n else \n {\n msg.payload = \"OFF\";\n }\nreturn msg;"},{"id":"3ed7223f334c2c78","type":"hdl-raw-out","z":"49cc204773663dad","controller":"e8b05aeff1e68dd7","name":"TO HDL 1.X","x":1330,"y":1480,"wires":[]},{"id":"a31d755c4a9d9743","type":"switch","z":"49cc204773663dad","name":"","property":"topic","propertyType":"msg","rules":[{"t":"cont","v":"/mode/set","vt":"str"},{"t":"cont","v":"/textmode/set","vt":"str"},{"t":"cont","v":"/temperature/set","vt":"str"}],"checkall":"false","repair":false,"outputs":3,"x":570,"y":1600,"wires":[["1adffb27dd682afa"],["db8478552cdbb310"],["e36f320a1812de3f"]]},{"id":"abcb2c4f12d6d7b7","type":"function","z":"49cc204773663dad","name":"Flow get","func":"//Get Old status from flow variable for complete message\naddressandchannel = msg.topic.split(\"/\")[2]\nmsg.channel = addressandchannel.split(\".\")[2]\nmsg.target = addressandchannel.split(\".\")[0] + \".\" + addressandchannel.split(\".\")[1]\nmsg.oldhdlstate =flow.get(\"hdl/hm/\" + msg.target + \"/\" + msg.channel + \"/hdlstate\");\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":440,"y":1600,"wires":[["a31d755c4a9d9743"]]},{"id":"9cc441c0c303e5ef","type":"comment","z":"49cc204773663dad","name":"Floorheat Thermostat Heatmodule MFH06","info":"","x":620,"y":1520,"wires":[]},{"id":"db8478552cdbb310","type":"function","z":"49cc204773663dad","name":"New Preset Mode","func":"// Change from MQTT textmode to HDL nrmode \nvar fhmode = msg.payload\nif (fhmode === \"Normal\"){msg.oldhdlstate.mode = 1}\nif (fhmode === \"Day\"){msg.oldhdlstate.mode = 2}\nif (fhmode === \"Night\"){msg.oldhdlstate.mode = 3}\nif (fhmode === \"Away\"){msg.oldhdlstate.mode = 4}\nif (fhmode === \"Timer\"){msg.oldhdlstate.mode = 5}\n\n//Build new HDL message\nmsg.code = 7260\nmsg.payload = msg.oldhdlstate\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":1600,"wires":[["3eced500338bbfdb"]]},{"id":"1adffb27dd682afa","type":"function","z":"49cc204773663dad","name":"New Mode","func":"// Change from Off or heat to true/false\nif (msg.payload === \"off\") {msg.oldhdlstate.work.status = false}\nif (msg.payload === \"heat\") {msg.oldhdlstate.work.status = true}\n//Build new HDL message\nmsg.code = 7260\nmsg.payload = msg.oldhdlstate\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":1560,"wires":[["3eced500338bbfdb"]]},{"id":"e36f320a1812de3f","type":"function","z":"49cc204773663dad","name":"New Temp","func":"// Check witch mode active and save new temperature to that mode\nnormal = msg.oldhdlstate.temperature.normal \nday = msg.oldhdlstate.temperature.day\nnight = msg.oldhdlstate.temperature.night\naway = msg.oldhdlstate.temperature.away\n\nif (msg.oldhdlstate.mode === 1){normal = msg.payload}\nif (msg.oldhdlstate.mode === 2){day = msg.payload}\nif (msg.oldhdlstate.mode === 3){night = msg.payload}\nif (msg.oldhdlstate.mode === 4){away = msg.payload}\n\nmsg.oldhdlstate.temperature.normal = Number(normal)\nmsg.oldhdlstate.temperature.day = Number(day)\nmsg.oldhdlstate.temperature.night = Number(night)\nmsg.oldhdlstate.temperature.away = Number(away)\n\n//Build new HDL message\nmsg.code = 7260\nmsg.payload = msg.oldhdlstate\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":1640,"wires":[["3eced500338bbfdb"]]},{"id":"dde6b57a2de147c0","type":"comment","z":"49cc204773663dad","name":"Floorheat Thermostat Heatmodule MFH06","info":"","x":560,"y":780,"wires":[]},{"id":"cc00103f05ecc87b","type":"function","z":"49cc204773663dad","name":"Floorheat Update/Answer from Heatmodule","func":"//Insert MQTT Topic\nmsg.topic = \"hdl/hm/\" + msg.sender + \".\" + msg.payload.channel;\n\n//Power Change true/false to ON/OFF\nvar power = msg.payload.work.status;\nif (power === true){newpower = \"heat\"}\nif (power === false){newpower = \"off\"}\nmsg.payload.status = newpower\n\n//Mode Change from nr to mode 1:Normal 2:Day 3:Night 4:Away 5:Timer. And add current temprature\nvar fhmode= msg.payload.mode \nif (fhmode === 1){var textmode = \"Normal\"; var tempnow = msg.payload.temperature.normal}\nif (fhmode === 2){var textmode = \"Day\"; var tempnow = msg.payload.temperature.day}\nif (fhmode === 3){var textmode = \"Night\"; var tempnow = msg.payload.temperature.night}\nif (fhmode === 4){var textmode = \"Away\"; var tempnow = msg.payload.temperature.away}\nif (fhmode === 5){var textmode = \"Timer\"}\nmsg.payload.textmode= textmode\nmsg.payload.temperature.now = tempnow\n\n//Awaymode\n//if (textmode ==\"Away\"){msg.payload.awaymode = \"On\"}\n// else{msg.payload.awaymode = \"Off\"}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":590,"y":860,"wires":[["95636077ee302f47"]]},{"id":"ee7ed70ffa477c64","type":"function","z":"49cc204773663dad","name":"Save msg to flow variable","func":"//Save to flow variable for later use\nflow.set(\"hdl/hm/\" + msg.sender + \"/\" + msg.payload.channel +\"/hdlstate\", msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":820,"wires":[[]]},{"id":"56063287c9d38058","type":"comment","z":"49cc204773663dad","name":"New Sensor Status Broadcasts Lux,Temp and Humid","info":"","x":590,"y":440,"wires":[]},{"id":"954f29852972a378","type":"function","z":"49cc204773663dad","name":"Sensor Status Broadcasts","func":"var outputMsgs = [];\nif (msg.code == 5637) \n{\n {\n outputMsgs.push\n ({\n topic:\"hdl/temp/\" + msg.sender + \"/1\",\n payload : msg.payload.temperature\n });\n\n outputMsgs.push\n ({\n topic:\"hdl/lux/\" + msg.sender + \"/Lux\",\n payload : msg.payload.brightness\n });\n \n outputMsgs.push\n ({\n topic:\"hdl/Humidity/\" + msg.sender + \"/Humidity\",\n payload : msg.payload.humidity\n });\n \n }\n return [ outputMsgs ];\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":480,"wires":[["95636077ee302f47"]]},{"id":"5f040e0a869fa95b","type":"hdl-raw-in","z":"49cc204773663dad","controller":"378772bb0998e3fe","name":"From HDL 2.X","x":90,"y":520,"wires":[["bbc2ba8e28137bf7","d34b104eb6f6ff0d"]]},{"id":"3eced500338bbfdb","type":"switch","z":"49cc204773663dad","name":"Target Switch","property":"target","propertyType":"msg","rules":[{"t":"cont","v":"1.","vt":"str"},{"t":"cont","v":"2.","vt":"str"}],"checkall":"false","repair":false,"outputs":2,"x":1080,"y":1520,"wires":[["3ed7223f334c2c78","f220b3affb5c4722"],["572e55a7706af505","322a7720112063cd"]]},{"id":"572e55a7706af505","type":"hdl-raw-out","z":"49cc204773663dad","controller":"378772bb0998e3fe","name":"TO HDL 2.X","x":1330,"y":1540,"wires":[]},{"id":"43362c22f55bedff","type":"inject","z":"49cc204773663dad","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"","payload":"Started!","payloadType":"str","x":140,"y":2060,"wires":[["f7abc577435f8c70","bee524998eb1155a"]]},{"id":"abfd748f43c4a299","type":"comment","z":"49cc204773663dad","name":"Read startup Status from HDL","info":"","x":160,"y":1980,"wires":[]},{"id":"bee524998eb1155a","type":"function","z":"49cc204773663dad","name":"Read status Multimodule","func":"msg.target = \"2.1\"\nmsg.code = 0x0033;\n \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":710,"y":2060,"wires":[["3eced500338bbfdb"]]},{"id":"c29713beb3ba29a0","type":"function","z":"49cc204773663dad","name":"Read status 12ch relay module","func":"msg.target = \"1.1\"\nmsg.code = 0x0033;\n \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":2120,"wires":[["3eced500338bbfdb"]]},{"id":"f7abc577435f8c70","type":"delay","z":"49cc204773663dad","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":460,"y":2120,"wires":[["c29713beb3ba29a0"]]},{"id":"91281a808ea0870d","type":"comment","z":"49cc204773663dad","name":"Dimmers And Relays","info":"Only one message per dimmer or relay module. Module will answer with all channels in one message.","x":480,"y":2020,"wires":[]},{"id":"f220b3affb5c4722","type":"debug","z":"49cc204773663dad","name":"To 1.x","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1310,"y":1440,"wires":[]},{"id":"322a7720112063cd","type":"debug","z":"49cc204773663dad","name":"To 2.x","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1310,"y":1580,"wires":[]},{"id":"d34b104eb6f6ff0d","type":"debug","z":"49cc204773663dad","name":"from 2.x","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":240,"y":620,"wires":[]},{"id":"b4e85b02aab60cc1","type":"debug","z":"49cc204773663dad","name":"from 1.x","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":240,"y":360,"wires":[]},{"id":"e8b05aeff1e68dd7","type":"hdl-controller","host":"192.168.3.142","port":"6000","subnetid":"1","deviceid":"77","broadcast":false,"daliId":"67"},{"id":"378772bb0998e3fe","type":"hdl-controller","host":"192.168.3.143","port":"6000","subnetid":"2","deviceid":"78","broadcast":false,"daliId":"68"}] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment