My Z-Wave heating solution

Two years ago I bought a Devolo Home Control (DHC) with some heaters.
The DHC is really crap and i switched to an Everspring Z-Wave USB Dongle.

After Installing all the depencies and modifying the original Flow found somewhere, last Winter was the first winter with my heaters without stress.

So i want to share my Heating Project. Maybe it helps someone.

First things first. here you can see the most important part.

The heaters are polled from time to time and the data are processed to display different values on my Dashboard.

I have ...

  • for every group a slider to set a temperature
  • for every group a booster that sets temp to maximum for a time.
  • Automatic setting of temps based on time of day.
  • Links to dashboard pages (Kitchen, Living Room, Kids Room)

Some Pics to show what i´m talking about




As you can see nothing special.

Download:
flows.json (25,9 KB)

Finally the code: HF

[{"id":"87f2b6ed.42ff08","type":"subflow","name":"HZG 15 Min Boost timer","info":"","category":"","in":[{"x":20,"y":100,"wires":[{"id":"907c9d6b.099d6"}]}],"out":[{"x":700,"y":80,"wires":[{"id":"189ba1d.0a8155e","port":0}]},{"x":700,"y":120,"wires":[{"id":"874b6432.dc1ca8","port":0}]}],"env":[],"color":"#FFAAAA","icon":"font-awesome/fa-thermometer-4"},{"id":"907c9d6b.099d6","type":"trigger","z":"87f2b6ed.42ff08","op1":"","op2":"0","op1type":"nul","op2type":"flow","duration":"15","extend":false,"units":"min","reset":"","bytopic":"all","name":"15 minuten timer","x":190,"y":100,"wires":[["9ff3251e.0da0a8"]]},{"id":"9ff3251e.0da0a8","type":"time-range-switch","z":"87f2b6ed.42ff08","name":"Zeiteinstellung","lat":"52.31939","lon":"9.65544","startTime":"22:00","endTime":"06:00","startOffset":"","endOffset":"","x":400,"y":100,"wires":[["189ba1d.0a8155e"],["874b6432.dc1ca8"]]},{"id":"189ba1d.0a8155e","type":"change","z":"87f2b6ed.42ff08","name":"17","rules":[{"t":"set","p":"payload","pt":"msg","to":"17","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":80,"wires":[[]]},{"id":"874b6432.dc1ca8","type":"change","z":"87f2b6ed.42ff08","name":"20","rules":[{"t":"set","p":"payload","pt":"msg","to":"20","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":120,"wires":[[]]},{"id":"42de9a37.0c6184","type":"tab","label":"Heizungen","disabled":false,"info":""},{"id":"8e9ddfa2.6b086","type":"zwave-in","z":"42de9a37.0c6184","name":"read_zwave","controller":"e3505a4b.c72c38","x":190,"y":180,"wires":[["7b329f57.9189","4848397f.ae57c8","e4e19646.5680b8"]]},{"id":"7b329f57.9189","type":"switch","z":"42de9a37.0c6184","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"zwave: driver ready","vt":"str"},{"t":"eq","v":"zwave: node added","vt":"str"},{"t":"eq","v":"zwave: value added","vt":"str"},{"t":"eq","v":"zwave: notification","vt":"str"},{"t":"eq","v":"zwave: value changed","vt":"str"},{"t":"eq","v":"zwave: node ready","vt":"str"},{"t":"eq","v":"zwave: scan complete","vt":"str"}],"checkall":"true","repair":false,"outputs":7,"x":370,"y":120,"wires":[["90db28cb.574ab8"],["7439fb40.2c38e4"],["7aa0933d.09c4ac"],["593f62af.f2dc8c"],["cf5221d9.cc31"],["f41fdcc4.f1898"],["f733ef99.04ea4"]]},{"id":"90db28cb.574ab8","type":"function","z":"42de9a37.0c6184","name":"init nodes","func":"flow.set(\"nodes\", []);\nflow.set(\"scanComplete\", false);\n\n","outputs":"0","noerr":0,"x":640,"y":20,"wires":[]},{"id":"7439fb40.2c38e4","type":"function","z":"42de9a37.0c6184","name":"add node","func":"var nodes = flow.get(\"nodes\");\nmsg.payload.values = [];\nmsg.payload.ready = false;\n\nnodes.push(msg.payload);\n\n","outputs":"0","noerr":0,"x":639,"y":54,"wires":[]},{"id":"7aa0933d.09c4ac","type":"function","z":"42de9a37.0c6184","name":"add value to node","func":"var nodes = flow.get(\"nodes\");\n\nvar n = nodes.find(n => n.nodeid == msg.payload.nodeid);\n\nvar value = msg.payload.value;\n\nn.values.push(value);\n\n//optionally send enablepool \nif(value.label == \"Temperature\"){\n    node.send({topic: \"enablePool\", payload: {\"args\": [value.nodeid, value.cmdclass]}});\n}\n\n\n","outputs":"1","noerr":0,"x":669,"y":90,"wires":[[]]},{"id":"593f62af.f2dc8c","type":"function","z":"42de9a37.0c6184","name":"notification","func":"var nodes = flow.get(\"nodes\");\nvar nodeid = msg.payload.nodeid;\nvar n = nodes.find(n => n.nodeid == nodeid);\n\nswitch (msg.payload.notification) {\n    case 0:\n      console.log('node%d: message complete', nodeid);\n      break;\n    case 1:\n      console.log('node%d: timeout', nodeid);\n      break;\n    case 2:\n      console.log('node%d: nop', nodeid);\n      break;\n    case 3:\n      console.log('node%d: node awake', nodeid);\n      break;\n    case 4:\n      console.log('node%d: node sleep', nodeid);\n      break;\n    case 5:\n      console.log('node%d: node dead', nodeid);\n      n.ready = false;\n      node.send({topic: \"node_status\", nodeid: nodeid, payload: false});\n      break;\n    case 6:\n      console.log('node%d: node alive', nodeid);\n      n.ready = true;\n      node.send({topic: \"node_status\", nodeid: nodeid, payload: true});\n      break;\n }\n","outputs":1,"noerr":0,"x":647,"y":129,"wires":[[]]},{"id":"cf5221d9.cc31","type":"function","z":"42de9a37.0c6184","name":"value changed","func":"var nodes = flow.get(\"nodes\");\n\nvar node = nodes.find(n => n.nodeid == msg.payload.nodeid);\n\nvar value = node.values.find(v => v.value_id == msg.payload.value.value_id);\n\nvalue.value = msg.payload.value.value;\n\n\nmsg.payload = value;\nmsg.topic = \"value_changed\";\n\nreturn msg;","outputs":"1","noerr":0,"x":655,"y":170,"wires":[["7331f1b8.208a5"]]},{"id":"f41fdcc4.f1898","type":"function","z":"42de9a37.0c6184","name":"node ready","func":"var nodes = flow.get(\"nodes\");\n\nvar n = nodes.find(n => n.nodeid == msg.payload.nodeid);\n\nn.ready = true;\nn.type = msg.payload.nodeinfo.type;\n\n/* NODEINFO\n{\"manufacturer\":\"Qubino\",\"manufacturerid\":\"0x0159\",\"product\":\"ZMNHKDx Flush Heat and Cool thermostat\",\"producttype\":\"0x0005\",\"productid\":\"0x0052\",\"type\":\"Thermostat HVAC\",\"name\":\"\",\"loc\":\"\"}\n*/","outputs":"0","noerr":0,"x":647,"y":209,"wires":[]},{"id":"f733ef99.04ea4","type":"function","z":"42de9a37.0c6184","name":"scan complete","func":"var nodes = flow.get(\"nodes\");\n\nflow.set(\"scanComplete\", true);\n\nreturn [{payload:{}, topic: \"writeConfig\"}, {payload: nodes, topic: \"init\"}];","outputs":"2","noerr":0,"x":656,"y":247,"wires":[[],[]]},{"id":"ac48a95f.1ceea8","type":"link in","z":"42de9a37.0c6184","name":"zwaveWrite","links":["4dbaad49.881584","3a48b0d4.3739e","b94acfbb.4597a"],"x":1055,"y":540,"wires":[["2f33bee9.6277b2"]]},{"id":"2f33bee9.6277b2","type":"zwave-out","z":"42de9a37.0c6184","name":"write","controller":"e3505a4b.c72c38","x":1150,"y":580,"wires":[["7eb68b33.836034"]]},{"id":"6280afc4.9572d","type":"ui_dropdown","z":"42de9a37.0c6184","name":"","label":"Nodes","tooltip":"","place":"Select a node","group":"ff07a0.eeb6a86","order":1,"width":"6","height":1,"passthru":false,"options":[{"label":"","value":"","type":"str"}],"payload":"","topic":"","x":310,"y":440,"wires":[["ba6f7dd4.762e3"]]},{"id":"32f7b4ff.560e6c","type":"function","z":"42de9a37.0c6184","name":"parse options","func":"var nodes = msg.payload;\nvar options = [];\n\nfor(var i=0;i<nodes.length; i++){\n    var n = nodes[i];\n    var tmp = {};\n    var title = n.nodeid +\": \"+n.type;\n    tmp[title] = n.nodeid;\n    options.push(tmp);\n}\n\nmsg.options = options;\nmsg.payload = options;\n\nreturn msg;","outputs":1,"noerr":0,"x":130,"y":440,"wires":[["6280afc4.9572d"]]},{"id":"ba6f7dd4.762e3","type":"function","z":"42de9a37.0c6184","name":"","func":"var n = flow.get(\"nodes\").find(n => n.nodeid == msg.payload);\n\nmsg.payload = n.values;\n\nmsg.topic = \"init\";\n\nreturn msg;","outputs":1,"noerr":0,"x":455,"y":440,"wires":[["182abd22.4c3613"]]},{"id":"182abd22.4c3613","type":"ui_template","z":"42de9a37.0c6184","group":"ff07a0.eeb6a86","name":"config","order":2,"width":"6","height":9,"format":"<style>\nmd-tooltip .md-content {\n    height: auto !important;\n    max-width: 200px !important;\n    font-size: 13px !important;\n}\n\nmd-tooltip {\n    height: auto !important;\n    max-width: 200px !important;\n    font-size: 13px !important;\n    overflow: visible !important;\n    white-space: normal !important;\n}\n\nmd-tooltip ._md-content {\n    height: auto !important;\n    max-width: 200px !important;\n    font-size: 13px !important;\n}\n</style>\n\n<div ng-repeat=\"v in values\">\n    <label>\n        {{v.label}}\n    <md-tooltip ng-if=\"v.help\" md-direction=\"right\">{{v.help}}</md-tooltip>\n    <select ng-if=\"v.values\" id=\"{{v.value_id}}\" ng-model=\"v.value\" ng-change=\"updateValue(v)\" ng-options=\"value as value for (key , value) in v.values\">\n    </select>\n    <div ng-if=\"!v.values\">\n        <input type=\"text\" id=\"{{v.value_id}}\" ng-model=\"v.value\" ng-disabled=\"v.read_only\">\n        <button ng-if=\"!v.read_only\" ng-click=\"updateValue(v)\">Submit</button>\n    </div>\n    </label>\n</div>\n\n<script>\n(function(scope) {\n    \n scope.values = [];\n scope.send({topic:\"load\"});\n \n scope.updateValue = function(v){\n    var newValue = $('#'+v.value_id).val();\n    if(v.values) newValue = newValue.split(':')[1];\n    var cmd = {};\n    cmd.nodeid = v.node_id;\n    cmd.cmdclass = v.class_id;\n    cmd.instance = v.instance;\n    cmd.cmdidx = v.index;\n    cmd.value = newValue;\n    v.value = \"\"; //to check updating\n    scope.send({payload: cmd, topic: \"setValue\"});\n }\n    \n scope.$watch('msg', function (msg) { \n    if(msg){\n        switch(msg.topic){\n            case \"init\":\n                scope.values = msg.payload;\n            case \"value_changed\":\n                var value = scope.values.find(n => n.value_id == msg.payload.value_id);\n                if(value)\n                    value.value = msg.payload.value;\n                break;\n        }\n    }\n }); \n\n})(scope);\n\n\n</script>\n","storeOutMessages":false,"fwdInMessages":false,"templateScope":"local","x":595,"y":440,"wires":[["f1fa8ca7.8c405"]]},{"id":"f1fa8ca7.8c405","type":"switch","z":"42de9a37.0c6184","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"setValue","vt":"str"},{"t":"eq","v":"load","vt":"str"}],"checkall":"true","outputs":2,"x":737,"y":440,"wires":[["4dbaad49.881584"],["72053cb.7e2f1c4"]]},{"id":"4dbaad49.881584","type":"link out","z":"42de9a37.0c6184","name":"writeConfig","links":["ac48a95f.1ceea8"],"x":855,"y":440,"wires":[]},{"id":"afd82827.80d7c8","type":"link in","z":"42de9a37.0c6184","name":"configs","links":["7331f1b8.208a5"],"x":479,"y":400,"wires":[["182abd22.4c3613"]]},{"id":"72053cb.7e2f1c4","type":"change","z":"42de9a37.0c6184","name":"load","rules":[{"t":"set","p":"payload","pt":"msg","to":"nodes","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":90,"y":500,"wires":[["32f7b4ff.560e6c"]]},{"id":"7331f1b8.208a5","type":"link out","z":"42de9a37.0c6184","name":"value_changed","links":["afd82827.80d7c8"],"x":799,"y":170,"wires":[]},{"id":"b53e4582.aa7d88","type":"inject","z":"42de9a37.0c6184","name":"","topic":"","payload":"nodes","payloadType":"flow","repeat":"","crontab":"","once":false,"onceDelay":"","x":120,"y":280,"wires":[["1ac55bba.7a53e4"]]},{"id":"1ac55bba.7a53e4","type":"debug","z":"42de9a37.0c6184","name":"","active":false,"console":"false","complete":"false","x":310,"y":280,"wires":[]},{"id":"493503ce.535f0c","type":"inject","z":"42de9a37.0c6184","name":"healNetwork","topic":"healNetwork","payload":"{}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":"","x":130,"y":320,"wires":[["3a48b0d4.3739e"]]},{"id":"3a48b0d4.3739e","type":"link out","z":"42de9a37.0c6184","name":"healNetwork","links":["ac48a95f.1ceea8"],"x":255,"y":320,"wires":[]},{"id":"5e7d3c5a.a2f0a4","type":"inject","z":"42de9a37.0c6184","name":"softReset","topic":"soft_reset","payload":"{}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":"","x":120,"y":360,"wires":[["b94acfbb.4597a"]]},{"id":"b94acfbb.4597a","type":"link out","z":"42de9a37.0c6184","name":"softReset","links":["ac48a95f.1ceea8"],"x":255,"y":360,"wires":[]},{"id":"7eb68b33.836034","type":"debug","z":"42de9a37.0c6184","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1290,"y":580,"wires":[]},{"id":"e4e19646.5680b8","type":"switch","z":"42de9a37.0c6184","name":"","property":"payload.nodeid","propertyType":"msg","rules":[{"t":"cont","v":"3","vt":"num"},{"t":"cont","v":"4","vt":"num"},{"t":"cont","v":"5","vt":"num"},{"t":"cont","v":"6","vt":"num"}],"checkall":"true","repair":false,"outputs":4,"x":670,"y":300,"wires":[["1ccf410e.13538f","78c11048.9974f"],["e7d17c3b.67e7e"],["c5121547.bfd468"],["2653de60.da6f62","a351640a.78d008","92effca9.6f839"]]},{"id":"1ccf410e.13538f","type":"switch","z":"42de9a37.0c6184","name":"raumt 3","property":"payload.value.label","propertyType":"msg","rules":[{"t":"eq","v":"Air Temperature","vt":"str"},{"t":"eq","v":"Battery Level","vt":"str"},{"t":"eq","v":"Heating 1","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":1020,"y":80,"wires":[["489fcc2d.626594"],["af6a0873.b8d2b8"],["a08e732b.33054"]]},{"id":"2653de60.da6f62","type":"switch","z":"42de9a37.0c6184","name":"raumt 6","property":"payload.value.label","propertyType":"msg","rules":[{"t":"eq","v":"Air Temperature","vt":"str"},{"t":"eq","v":"Battery Level","vt":"str"},{"t":"eq","v":"Heating 1","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":1020,"y":420,"wires":[["25c50e6b.b35b22"],["657aeda6.1a37c4"],["80a03204.4c018"]]},{"id":"e7d17c3b.67e7e","type":"switch","z":"42de9a37.0c6184","name":"raumt 4","property":"payload.value.label","propertyType":"msg","rules":[{"t":"eq","v":"Air Temperature","vt":"str"},{"t":"eq","v":"Battery Level","vt":"str"},{"t":"eq","v":"Heating 1","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":1020,"y":180,"wires":[[],["b190b474.13cf38"],["521262e5.9d885c"]]},{"id":"c5121547.bfd468","type":"switch","z":"42de9a37.0c6184","name":"raumt 5","property":"payload.value.label","propertyType":"msg","rules":[{"t":"eq","v":"Air Temperature","vt":"str"},{"t":"eq","v":"Battery Level","vt":"str"},{"t":"eq","v":"Heating 1","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":1020,"y":300,"wires":[["58365a1c.d85494"],["785ebe4d.edff9"],["65760e71.7a4a8"]]},{"id":"9c123c1d.4cfa7","type":"ui_slider","z":"42de9a37.0c6184","name":"","label":"","tooltip":"payload.value.value","group":"14ec048c.72c31b","order":1,"width":5,"height":1,"passthru":true,"outs":"end","topic":"setValue","min":"4","max":"28","step":1,"x":670,"y":600,"wires":[["29866dc6.981e62","d4b694c2.708918","23b9d23d.07879e"]]},{"id":"29866dc6.981e62","type":"function","z":"42de9a37.0c6184","name":"wozi","func":"return {topic:\"setValue\", payload: {\"nodeid\":3, \"cmdclass\":67, \"cmdidx\":1, \"instance\":1, \"value\":msg.payload, \"label\":\"Heating 1\"}};","outputs":1,"noerr":0,"x":860,"y":620,"wires":[["2f33bee9.6277b2"]]},{"id":"d4b694c2.708918","type":"function","z":"42de9a37.0c6184","name":"eszi","func":"return {topic:\"setValue\", payload: {\"nodeid\":4, \"cmdclass\":67, \"cmdidx\":1, \"instance\":1, \"value\":msg.payload, \"label\":\"Heating 1\"}};","outputs":1,"noerr":0,"x":860,"y":660,"wires":[["2f33bee9.6277b2"]]},{"id":"e1663238.cc04f","type":"ui_slider","z":"42de9a37.0c6184","name":"","label":"","tooltip":"","group":"b236b66.64ab448","order":1,"width":5,"height":1,"passthru":true,"outs":"end","topic":"setValue","min":"4","max":"28","step":1,"x":670,"y":980,"wires":[["407b99b7.9d7d68"]]},{"id":"7a731a9f.ccda44","type":"ui_slider","z":"42de9a37.0c6184","name":"","label":"","tooltip":"payload.value.value","group":"20f8c8b8.8ac3a8","order":1,"width":5,"height":1,"passthru":true,"outs":"end","topic":"setValue","min":"4","max":"28","step":1,"x":670,"y":780,"wires":[["1eb1f84a.541ae8","c4889aaa.b5a238"]]},{"id":"407b99b7.9d7d68","type":"function","z":"42de9a37.0c6184","name":"küche","func":"return {topic:\"setValue\", payload: {\"nodeid\":5, \"cmdclass\":67, \"cmdidx\":1, \"instance\":1, \"value\":msg.payload, \"label\":\"Heating 1\"}};","outputs":1,"noerr":0,"x":860,"y":1000,"wires":[["2f33bee9.6277b2"]]},{"id":"1eb1f84a.541ae8","type":"function","z":"42de9a37.0c6184","name":"Kizi","func":"return {topic:\"setValue\", payload: {\"nodeid\":6, \"cmdclass\":67, \"cmdidx\":1, \"instance\":1, \"value\":msg.payload, \"label\":\"Heating 1\"}};","outputs":1,"noerr":0,"x":860,"y":800,"wires":[["2f33bee9.6277b2"]]},{"id":"489fcc2d.626594","type":"ui_text","z":"42de9a37.0c6184","group":"14ec048c.72c31b","order":4,"width":5,"height":1,"name":"","label":"Raumtemperatur","format":"{{payload.value.value}}","layout":"row-spread","x":1210,"y":40,"wires":[]},{"id":"58365a1c.d85494","type":"ui_text","z":"42de9a37.0c6184","group":"b236b66.64ab448","order":3,"width":5,"height":1,"name":"","label":"Raumtemperatur","format":"{{payload.value.value}}","layout":"row-spread","x":1210,"y":260,"wires":[]},{"id":"25c50e6b.b35b22","type":"ui_text","z":"42de9a37.0c6184","group":"20f8c8b8.8ac3a8","order":3,"width":5,"height":1,"name":"","label":"Raumtemperatur","format":"{{payload.value.value}}","layout":"row-spread","x":1210,"y":380,"wires":[]},{"id":"9f16d570.256778","type":"inject","z":"42de9a37.0c6184","name":"Ab 22 uhr 17°","topic":"","payload":"17","payloadType":"num","repeat":"","crontab":"00 22 * * *","once":false,"onceDelay":0.1,"x":320,"y":620,"wires":[["9c123c1d.4cfa7","23b9d23d.07879e"]]},{"id":"76bc1068.97da3","type":"inject","z":"42de9a37.0c6184","name":"Ab 6 uhr 20°","topic":"","payload":"20","payloadType":"num","repeat":"","crontab":"00 06 * * *","once":false,"onceDelay":0.1,"x":320,"y":680,"wires":[["9c123c1d.4cfa7","23b9d23d.07879e"]]},{"id":"a08e732b.33054","type":"ui_text","z":"42de9a37.0c6184","group":"14ec048c.72c31b","order":5,"width":5,"height":1,"name":"","label":"Hzg Terasse","format":"{{payload.value.value}}","layout":"row-spread","x":1194,"y":120,"wires":[]},{"id":"4848397f.ae57c8","type":"debug","z":"42de9a37.0c6184","name":"","active":false,"tosidebar":true,"console":false,"complete":"false","x":410,"y":20,"wires":[]},{"id":"521262e5.9d885c","type":"ui_text","z":"42de9a37.0c6184","group":"14ec048c.72c31b","order":6,"width":5,"height":1,"name":"","label":"Hzg Fenster","format":"{{payload.value.value}}","layout":"row-spread","x":1190,"y":200,"wires":[]},{"id":"65760e71.7a4a8","type":"ui_text","z":"42de9a37.0c6184","group":"b236b66.64ab448","order":4,"width":5,"height":1,"name":"","label":"Hzg","format":"{{payload.value.value}}","layout":"row-spread","x":1170,"y":340,"wires":[]},{"id":"80a03204.4c018","type":"ui_text","z":"42de9a37.0c6184","group":"20f8c8b8.8ac3a8","order":4,"width":5,"height":1,"name":"","label":"Hzg","format":"{{payload.value.value}}","layout":"row-spread","x":1174,"y":460,"wires":[]},{"id":"3091e024.ec11d","type":"link in","z":"42de9a37.0c6184","name":"","links":["7ced0492.c2126c"],"x":715,"y":680,"wires":[["29866dc6.981e62","d4b694c2.708918","9c123c1d.4cfa7"]]},{"id":"23b9d23d.07879e","type":"link out","z":"42de9a37.0c6184","name":"","links":["e251a9f1.e51598"],"x":635,"y":680,"wires":[]},{"id":"c4889aaa.b5a238","type":"link out","z":"42de9a37.0c6184","name":"","links":["af966054.ba408"],"x":635,"y":860,"wires":[]},{"id":"a4414c6.feaf3b","type":"link in","z":"42de9a37.0c6184","name":"","links":["a1c87d36.dc071"],"x":715,"y":860,"wires":[["1eb1f84a.541ae8","7a731a9f.ccda44"]]},{"id":"78c11048.9974f","type":"link out","z":"42de9a37.0c6184","name":"","links":["22e9a327.f3084c"],"x":975,"y":40,"wires":[]},{"id":"a351640a.78d008","type":"link out","z":"42de9a37.0c6184","name":"","links":["391e9d9e.bc4f52"],"x":975,"y":380,"wires":[]},{"id":"fbc58e92.9d2f9","type":"inject","z":"42de9a37.0c6184","name":"Ab 22 uhr 13°","topic":"","payload":"13","payloadType":"num","repeat":"","crontab":"00 22 * * *","once":false,"onceDelay":0.1,"x":320,"y":1000,"wires":[["e1663238.cc04f"]]},{"id":"9915ebe0.6ad388","type":"inject","z":"42de9a37.0c6184","name":"Ab 6 uhr 16°","topic":"","payload":"16","payloadType":"num","repeat":"","crontab":"00 06 * * *","once":false,"onceDelay":0.1,"x":320,"y":1040,"wires":[["e1663238.cc04f"]]},{"id":"7c6cf810.5db668","type":"inject","z":"42de9a37.0c6184","name":"Ab 19:30 uhr 17°","topic":"","payload":"17","payloadType":"num","repeat":"","crontab":"30 19 * * *","once":false,"onceDelay":0.1,"x":310,"y":800,"wires":[["7a731a9f.ccda44","c4889aaa.b5a238"]]},{"id":"b4c873df.feb1b","type":"ui_button","z":"42de9a37.0c6184","name":"","group":"357514b1.4ba00c","order":1,"width":5,"height":1,"passthru":false,"label":"Boost Kinderzimmer","tooltip":"","color":"","bgcolor":"","icon":"","payload":"28","payloadType":"num","topic":"","x":200,"y":760,"wires":[["7a731a9f.ccda44","3ba560.94b63aa"]]},{"id":"52388e63.90add","type":"ui_button","z":"42de9a37.0c6184","name":"","group":"357514b1.4ba00c","order":2,"width":5,"height":1,"passthru":false,"label":"Boost Küche","tooltip":"","color":"","bgcolor":"","icon":"","payload":"28","payloadType":"num","topic":"","x":230,"y":960,"wires":[["e1663238.cc04f","ab85f7b0.0868d8"]]},{"id":"49d8a55f.067e6c","type":"ui_button","z":"42de9a37.0c6184","name":"","group":"357514b1.4ba00c","order":3,"width":5,"height":1,"passthru":false,"label":"Boost Wohnzimmer","tooltip":"","color":"","bgcolor":"","icon":"","payload":"28","payloadType":"num","topic":"","x":210,"y":580,"wires":[["9c123c1d.4cfa7","b99eaf94.5c975"]]},{"id":"743d3d09.89b334","type":"ui_level","z":"42de9a37.0c6184","group":"14ec048c.72c31b","order":2,"width":"5","height":"1","name":"Batteriestatus","label":"Batterielevel {{payload.value.value}}","colorHi":"#00ff00","colorWarn":"#ffff00","colorNormal":"#ff0000","colorOff":"#555555","min":0,"max":100,"segWarn":"35","segHigh":"70","unit":"%","layout":"sh","channelA":"Terasse","channelB":"Fenster","decimals":0,"animations":"soft","shape":2,"colorschema":"rainbow","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"auto","peakmode":false,"peaktime":3000,"x":1500,"y":80,"wires":[]},{"id":"3469d703.686578","type":"ui_level","z":"42de9a37.0c6184","group":"14ec048c.72c31b","order":3,"width":"5","height":"1","name":"Batteriestatus","label":"Batterielevel {{payload.value.value}}","colorHi":"#00ff00","colorWarn":"#ffff00","colorNormal":"#ff0000","colorOff":"#555555","min":0,"max":100,"segWarn":"35","segHigh":"70","unit":"%","layout":"sh","channelA":"Terasse","channelB":"Fenster","decimals":0,"animations":"soft","shape":2,"colorschema":"rainbow","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"auto","peakmode":false,"peaktime":3000,"x":1500,"y":160,"wires":[]},{"id":"af6a0873.b8d2b8","type":"change","z":"42de9a37.0c6184","name":"","rules":[{"t":"move","p":"payload.currState","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1250,"y":80,"wires":[["743d3d09.89b334"]]},{"id":"b190b474.13cf38","type":"change","z":"42de9a37.0c6184","name":"","rules":[{"t":"move","p":"payload.currState","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1250,"y":160,"wires":[["3469d703.686578"]]},{"id":"785ebe4d.edff9","type":"change","z":"42de9a37.0c6184","name":"","rules":[{"t":"move","p":"payload.currState","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1250,"y":300,"wires":[["a5d03a0d.ab5d18"]]},{"id":"a5d03a0d.ab5d18","type":"ui_level","z":"42de9a37.0c6184","group":"b236b66.64ab448","order":2,"width":"5","height":"1","name":"Batteriestatus","label":"Batterielevel {{payload.value.value}}","colorHi":"#00ff00","colorWarn":"#ffff00","colorNormal":"#ff0000","colorOff":"#555555","min":0,"max":100,"segWarn":"35","segHigh":"70","unit":"%","layout":"sh","channelA":"Terasse","channelB":"Fenster","decimals":0,"animations":"soft","shape":2,"colorschema":"rainbow","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"auto","peakmode":false,"peaktime":3000,"x":1500,"y":300,"wires":[]},{"id":"657aeda6.1a37c4","type":"change","z":"42de9a37.0c6184","name":"","rules":[{"t":"move","p":"payload.currState","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1250,"y":420,"wires":[["164dd4f.7cdc92b"]]},{"id":"164dd4f.7cdc92b","type":"ui_level","z":"42de9a37.0c6184","group":"20f8c8b8.8ac3a8","order":2,"width":"5","height":"1","name":"Batteriestatus","label":"Batterielevel {{payload.value.value}}","colorHi":"#00ff00","colorWarn":"#ffff00","colorNormal":"#ff0000","colorOff":"#555555","min":0,"max":100,"segWarn":"35","segHigh":"70","unit":"%","layout":"sh","channelA":"Terasse","channelB":"Fenster","decimals":0,"animations":"soft","shape":2,"colorschema":"rainbow","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"auto","peakmode":false,"peaktime":3000,"x":1500,"y":420,"wires":[]},{"id":"c42c932d.c6101","type":"inject","z":"42de9a37.0c6184","name":"Ab 6 uhr 20°","topic":"","payload":"20","payloadType":"num","repeat":"","crontab":"00 06 * * *","once":false,"onceDelay":0.1,"x":320,"y":860,"wires":[["c4889aaa.b5a238","7a731a9f.ccda44"]]},{"id":"92effca9.6f839","type":"debug","z":"42de9a37.0c6184","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":730,"y":380,"wires":[]},{"id":"ab85f7b0.0868d8","type":"subflow:87f2b6ed.42ff08","z":"42de9a37.0c6184","name":"","env":[],"x":490,"y":940,"wires":[["e1663238.cc04f"],["e1663238.cc04f"]]},{"id":"3ba560.94b63aa","type":"subflow:87f2b6ed.42ff08","z":"42de9a37.0c6184","name":"","x":490,"y":740,"wires":[["7a731a9f.ccda44"],["7a731a9f.ccda44"]]},{"id":"b99eaf94.5c975","type":"subflow:87f2b6ed.42ff08","z":"42de9a37.0c6184","name":"","env":[],"x":490,"y":560,"wires":[["9c123c1d.4cfa7"],["9c123c1d.4cfa7"]]},{"id":"e3505a4b.c72c38","type":"zwave-controller","z":"","port":"/dev/serial/by-id/usb-0658_0200-if00","driverattempts":"3","pollinterval":"10000","allowunreadyupdates":false,"networkkey":"","logging":"full"},{"id":"ff07a0.eeb6a86","type":"ui_group","z":"","name":"Config","tab":"6cbf3948.0c0ae8","order":5,"disp":true,"width":"6","collapse":true},{"id":"14ec048c.72c31b","type":"ui_group","z":"","name":"Wohnzimmer id3 id4","tab":"6cbf3948.0c0ae8","order":1,"disp":true,"width":"5","collapse":false},{"id":"b236b66.64ab448","type":"ui_group","z":"","name":"Küche id5","tab":"6cbf3948.0c0ae8","order":2,"disp":true,"width":"5","collapse":false},{"id":"20f8c8b8.8ac3a8","type":"ui_group","z":"","name":"Kinderzimmer id6","tab":"6cbf3948.0c0ae8","order":3,"disp":true,"width":"5","collapse":false},{"id":"357514b1.4ba00c","type":"ui_group","z":"","name":"Temperatur Boost 15 Min.","tab":"6cbf3948.0c0ae8","order":4,"disp":true,"width":5,"collapse":false},{"id":"6cbf3948.0c0ae8","type":"ui_tab","z":"","name":"Heizungen","icon":"fa-thermometer-three-quarters","order":3,"disabled":false,"hidden":false}]```
4 Likes

Thanks a lot for sharing.

Can you share some info about the device that is controlling the heaters ?
Is this a radiator thermostat that can be remotely controlled via Z-wave ?

Thanks for sharing this, if you have time I would be interested to see a list of the nodes uses (with links if possible to look them up)

I tried something similar ages ago, and one big concern I always had about using z-wave for my heating (especially via a 3rd party solution/controller), is the reliability; what if a system reboot or shutdown occurred, could it adjust cope with something being changed via some other means (e.g someone in the room)

You mentioned polling which is good, , but do you do any other checks and balances, are there any fail-safes e.g. to stop someone setting something too high or too low etc. or overrides ?

The device controlling the thermostats ist the Everspring Z-Wave USB Dongle.


The thermostats are Devolo / Danfoss thermostats.

I do not need to configure them. They are talking my USB dongle out of the box.

2 Likes

The extra nodes i´m using are:

node-red-contrib-openzwave-am
node-red-contrib-ui-level
node-red-contrib-time-range-switch

Reboot or Powerloss isn´t a problem everything is found after some minutes and works normal after that.

  • If battery goes low the Batterybar on my Dashboard will show you as seen on screenshot 2.
  • On Screenshot 2 you can see a Config dropdown. there you can programm the thermostats manually - if needed. For me it was just for presence checking.
  • I have some Time Checks (6AM, 8PM) to set a specific temperature in time between.
  • you can manually set the Temp from 4°C to 28°C wich are changed automaticly at 6AM or 8PM
  • I have a Temp Booster wich sets the Temp to 28°C for 15 Minutes. It is usefull when my wife cries because 22°C is to cold. :wink: When time is up the Temp is set to time specific temps.

My ToDo is:

  • implementing my 433mhz door Sensors and setting temp to 4°C if door or window next to the heater is open for more than 4 minutes and set to previuos Temps when closed.
  • Lower thermostat temp to 20°C if Roomtemp is higher than 25°C for more than 60 minutes.
  • Generally set thermostat to 4°C if it`s summer and weather forecast tells me temp is in the next 24h above 18°C.
  • Set Temp on the Childs room higher when Humidity gets higher and start the exaust in the bath and Kitchen.

about security i can´t tell you. i wasn`t able to controll the thermostats with my DHC when they where connected to the Everspring Z-Wave USB Dongle.

2 Likes

This topic was automatically closed after 60 days. New replies are no longer allowed.