Skip to content

Instantly share code, notes, and snippets.

@Linax2015
Created June 17, 2022 17:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Linax2015/a5ded27a32bd2aeae6024a7a3a9cd697 to your computer and use it in GitHub Desktop.
Save Linax2015/a5ded27a32bd2aeae6024a7a3a9cd697 to your computer and use it in GitHub Desktop.
[{"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