[{"id":"4619fb07.708ff4","type":"function","z":"9a2a85e1.2a0ae8","name":"eco","func":"\nif(msg.topic=='ECO'){\n if(msg.payload=='1'){\n flow.set('eco',true);\n flow.set('away',false);\n flow.set('boost',false);\n flow.set('off',false); \n node.status({text:'previous = '+flow.get('previous')});\n msg.payload='eco';\n return msg;\n }else{\n flow.set('eco',false); \n msg.payload=flow.get('previous');\n node.status({});\n return msg;\n }\n}\n","outputs":1,"noerr":0,"x":520,"y":590,"wires":[["a82b692b.fbeb58"]]},{"id":"6e708e20.d670b","type":"function","z":"9a2a85e1.2a0ae8","name":"away","func":"\nif(msg.topic=='AWAY'){\n if(msg.payload==1){\n flow.set('away',true);\n flow.set('eco',false); \n flow.set('boost',false); \n flow.set('off',false); \n node.status({text:'previous = '+flow.get('previous')});\n msg.payload='away';\n return msg;\n }else{\n flow.set('away',false); \n msg.payload=flow.get('previous');\n node.status({});\n return msg;\n }\n}\n","outputs":1,"noerr":0,"x":520,"y":640,"wires":[["a82b692b.fbeb58"]]},{"id":"5bb156e8.54be78","type":"ramp-thermostat","z":"9a2a85e1.2a0ae8","name":"","profile":"384b3abf.98aaf6","hysteresisplus":"0","hysteresisminus":".5","x":670,"y":1000,"wires":[["b086777b.fe72a8"],["10897ed6.5f9361"],["1c2e3a64.cd4206","8d25a8cb.b64258","10897ed6.5f9361"]]},{"id":"db24e3dd.ef1ef","type":"function","z":"9a2a85e1.2a0ae8","name":"Settings","func":"flow.set('current_temperature_c', flow.get('current_temperature_c')||0);\n\nflow.set('profile',flow.get('profile')||'Summer');\nflow.set('previous',flow.get('previous')||' ');\n\nflow.set('mode',flow.get('mode')||'auto');\nflow.set('current_temp',flow.get('current_temp')||10);\nflow.set('setTarget',flow.get('setTarget')||10);\n\nflow.set('manual_target',flow.get('manual_target')||0);\n\nflow.set('Summer_target',flow.get('Summer_target')||0);\nflow.set('Summer_target',19.5)\n\nflow.set('off',flow.get('off')||false);\nflow.set('off_target',flow.get('off_target')||0);\nflow.set('off_target',1);\nflow.set('eco',flow.get('eco')||false);\nflow.set('eco_target',flow.get('eco_target')||0);\nflow.set('eco_target',19);\nflow.set('away',flow.get('away')||false);\nflow.set('away_target',flow.get('away_target')||0);\nflow.set('away_target',18);\n\nflow.set('has_leaf',flow.get('has_leaf')||false);\n\nflow.set('boost',flow.get('boost')||false); // off/on\nflow.set('boost_period',flow.get('boost_period')||0);\nflow.set('boost_lock',flow.get('boost_lock')||false);\nflow.set('boost_end_time',flow.get('boost_end_time')||' ');\n\nflow.set('hvac',flow.get('hvac')||'off');\n\ncontext.set('count', context.get('count')||0);\nvar count = context.get('count');\nvar shaper;\n\nif (count===0){\n count=1;\n context.set('count',count);\n shaper=\"ring\";\n}else{\n count=0;\n context.set('count',count);\n shaper=\"dot\";\n} \n\nmsg.topic='setCurrent';\nif(flow.get('off')===true){\n msg.payload=flow.get('off_target'); \n flow.set('current_temp',flow.get('off_target'));\n}else{\n msg.payload=flow.get('current_temperature_c'); //FAKE current temperature\n flow.set('current_temp',msg.payload);\n}\n\nnode.status({fill:\"blue\",shape:shaper,text:'Current temperature : '+msg.payload+'°c'});\n\nreturn msg;","outputs":1,"noerr":0,"x":290,"y":1000,"wires":[["9175019f.b5ae","d675eead.e9c1e"]],"icon":"font-awesome/fa-wrench"},{"id":"d675eead.e9c1e","type":"throttle","z":"9a2a85e1.2a0ae8","name":"","throttleType":"time","timeLimit":"10","timeLimitType":"seconds","countLimit":0,"blockSize":0,"locked":false,"x":460,"y":1000,"wires":[["5bb156e8.54be78"]]},{"id":"b086777b.fe72a8","type":"function","z":"9a2a85e1.2a0ae8","name":"Actuate FAKE heating relay","func":"msg1={};\nmsg2={};\n\nif(msg.payload===true){\n node.status({fill:\"green\",shape:\"dot\",text:msg.topic+' : '+ msg.payload});\n msg.payload='On';\n}else{ \n node.status({fill:\"red\",shape:\"dot\",text:msg.topic+' : '+ msg.payload});\n msg.payload='Off';\n}\nreturn msg;","outputs":1,"noerr":0,"x":730,"y":820,"wires":[["7d51027d.8e185c"]]},{"id":"9d5ce3f7.c136","type":"function","z":"9a2a85e1.2a0ae8","name":"map","func":"msg1={};\nmsg2={};\ncontext.set('count', context.get('count')||0);\nvar count = context.get('count')||0;\nvar shaper;\n//if (msg.payload){\n if (count===0){\n count=1;\n context.set('count',count);\n shaper=\"ring\";\n }else{\n count=0;\n context.set('count',count);\n shaper=\"dot\";\n } \n//}\nif(msg.topic=='getProfile'){\n var p = msg.payload;\n var c = {};\n c.data = [];\n var data = [];\n \n p.points.forEach(function(point) {\n var key = Object.keys(point);\n data.push({\"x\": \"2018-11-21T\"+key+\":00\", \"y\":point[key]});\n });\n \n c.series = [\"Profile\"];\n c.data = [data];\n c.labels = [\"\"];\n \n msg1.topic='profile';\n msg1.label = p.name;\n msg1.payload = [c];\n flow.set('profile',p.name);\n node.status({fill:\"blue\",shape:shaper,text:msg.topic+' = '+msg1.label});\n return msg1;\n}","outputs":1,"noerr":0,"x":1090,"y":1140,"wires":[["4532e219.22ad6c"]]},{"id":"1c2e3a64.cd4206","type":"function","z":"9a2a85e1.2a0ae8","name":"","func":"context.set('count', context.get('count')||0);\nvar count = context.get('count')||0;\nvar shaper;\nif (msg.payload){\n if (count===0){\n count=1;\n context.set('count',count);\n shaper=\"ring\";\n }else{\n count=0;\n context.set('count',count);\n shaper=\"dot\";\n } \n} \nif(msg.topic=='getProfile'){\n\n if(msg.payload.name!='manual'){\n flow.set('mode','auto');\n }else{\n flow.set('mode','manual');\n }\n node.status({fill:\"green\",shape:shaper,text:msg.topic+' : '+ msg.payload.name}); \n}\nif(msg.topic=='target'){\n flow.set('setTarget', msg.payload);\n node.status({fill:\"blue\",shape:shaper,text:msg.topic +' : '+ msg.payload+'°c . '+'mode : '+flow.get('mode')});\n}\n","outputs":0,"noerr":0,"x":920,"y":1090,"wires":[]},{"id":"e01363ce.c6e6a","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"","payloadType":"str","repeat":"2","crontab":"","once":true,"onceDelay":0.1,"x":130,"y":950,"wires":[["db24e3dd.ef1ef","36f88373.648a3c"]]},{"id":"9175019f.b5ae","type":"rbe","z":"9a2a85e1.2a0ae8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":460,"y":970,"wires":[["5bb156e8.54be78"]]},{"id":"995a27d0.df9ff8","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"","payloadType":"str","repeat":"1","crontab":"","once":false,"onceDelay":0.1,"x":920,"y":80,"wires":[["dcf595a9.d87a08"]]},{"id":"dcf595a9.d87a08","type":"function","z":"9a2a85e1.2a0ae8","name":"profile / previous","func":"\n\nnode.status({text:flow.get('profile')+' : '+flow.get('previous')});\nreturn msg;","outputs":0,"noerr":0,"x":1080,"y":80,"wires":[]},{"id":"146d0ea4.70cf61","type":"function","z":"9a2a85e1.2a0ae8","name":"fast_startup","func":"msg1={};\nmsg2={};\nmsg3={};\nmsg4={};\nif(msg.tab==6){\n node.status({text:'yes'});\n\n//if(msg.payload=='yes'){\n msg1.payload='Refresh';\n msg2.topic='getProfile';\n msg2.payload='actual'; \n\n if(flow.get('mode')=='auto'){\n msg3.icon='/node-red-icons/Nill.png';\n msg3.topic='target';\n msg3.payload=flow.get('setTarget');\n }else{\n msg3.icon='/node-red-icons/sM.png'; \n msg3.topic='target';\n msg3.payload=flow.get('manual_target'); \n }\n msg4.topic='current';\n msg4.payload=flow.get('current_temp');\n return [msg1,msg2,[msg3,msg4]]; \n}else{\n node.status({text:'no'});\n}\n\n","outputs":3,"noerr":0,"x":590,"y":80,"wires":[["1f64a7b0.d94d28"],["6f20b828.8145a8"],["22eae010.b20e7"]],"outputLabels":["msg1","msg2","msg3&4"]},{"id":"1f64a7b0.d94d28","type":"link out","z":"9a2a85e1.2a0ae8","name":"stat_button_reset","links":["6ca05d5.a48e8a4","89eb268c.f6b7c8","c7b69e59.1205d","b831c4eb.bde518","949f2b5.4ade7d8"],"x":735,"y":40,"wires":[]},{"id":"b31bdd70.71c81","type":"function","z":"9a2a85e1.2a0ae8","name":"Button reset","func":"msg1={};msg2={};msg3={};msg4={};\n\nnode.status({text:'eco = '+flow.get('eco')+' : away = '+flow.get('away')+' : off = '+flow.get('off')+' : boost = '+flow.get('boost')});\nif(flow.get('boost')===false){ \n msg1.topic='boost';\n msg1.payload='Off';\n}else{\n msg1.topic='boost'; \n msg1.payload='1';\n}\n\nif(flow.get('eco')===false){ \n msg2.topic='eco'; \n msg2.payload='0';\n}else{\n msg2.topic='eco'; \n msg2.payload='1';\n}\n\nif(flow.get('away')===false){\n msg3.topic='away'; \n msg3.payload='0';\n}else{\n msg3.topic='away'; \n msg3.payload='1';\n}\n\nif(flow.get('off')===false){\n msg4.topic='off'; \n msg4.payload='0';\n}else{\n msg4.topic='off'; \n msg4.payload='1';\n}\nreturn [msg1,msg2,msg3,msg4];","outputs":4,"noerr":0,"x":150,"y":680,"wires":[["bc6a1996.7a2e18"],["eda6a6ea.12c0c8"],["724d4295.bcf03c"],["fc48b21.4e7cd5"]],"outputLabels":["msg1~Boost","msg2~eco","msg3~away","msg4~off"]},{"id":"55e4d53.3d64e2c","type":"function","z":"9a2a85e1.2a0ae8","name":"off ","func":"\nvar CONFIG=flow.get('config');\ncontext.set('count', context.get('count')||0);\nvar count = context.get('count');\nvar shaper;\n\nif (msg.payload){\n if (count===0){\n count=1;\n context.set('count',count);\n shaper=\"ring\";\n }else{\n count=0;\n context.set('count',count);\n shaper=\"dot\";\n } \n}\n\n\nif(msg.topic=='OFF'){\n if(msg.payload==1){\n flow.set('off',true);\n flow.set('away',false);\n flow.set('eco',false); \n flow.set('boost',false); \n node.status({text:'previous = '+flow.get('previous')});\n msg.payload='off';\n return msg;\n }else{\n flow.set('off',false); \n msg.payload=flow.get('previous');\n node.status({});\n return msg;\n }\n}\n \n\n","outputs":"1","noerr":0,"x":520,"y":690,"wires":[["a82b692b.fbeb58"]]},{"id":"e9c192bf.1ef1e","type":"link out","z":"9a2a85e1.2a0ae8","name":"stat_button_reset","links":["6ca05d5.a48e8a4"],"x":1245,"y":1021,"wires":[]},{"id":"6ca05d5.a48e8a4","type":"link in","z":"9a2a85e1.2a0ae8","name":"stat_button_reset","links":["1f64a7b0.d94d28","fc2fa226.19ceb","e9c192bf.1ef1e"],"x":45,"y":680,"wires":[["b31bdd70.71c81"]]},{"id":"c0deee5f.e93e7","type":"link out","z":"9a2a85e1.2a0ae8","name":"ramp_link","links":["2b04dbda.f5a1f4"],"x":815,"y":610,"wires":[]},{"id":"2b04dbda.f5a1f4","type":"link in","z":"9a2a85e1.2a0ae8","name":"ramp_link","links":["c0deee5f.e93e7","9d01a04f.6310b","6f20b828.8145a8"],"x":495,"y":1030,"wires":[["5bb156e8.54be78"]]},{"id":"c7b69e59.1205d","type":"link in","z":"9a2a85e1.2a0ae8","name":"profile_input","links":["6951c70a.3a61e8","1f64a7b0.d94d28","57cd5c34.b67884"],"x":555,"y":540,"wires":[["a82b692b.fbeb58"]]},{"id":"156017f4.8ee818","type":"link out","z":"9a2a85e1.2a0ae8","name":"profile_input","links":["cef85d5f.f4ae8"],"x":1245,"y":961,"wires":[]},{"id":"7479a94d.ea1968","type":"function","z":"9a2a85e1.2a0ae8","name":"Calculate has_leaf","func":"\nvar A=0;\nvar B=0;\nvar C=0;\n\nA=parseInt(flow.get('current_temp')-flow.get('setTarget'));\nB=parseInt(flow.get('setTarget')-flow.get('manual_target'));\nC=parseInt(flow.get('current_temp')-flow.get('manual_target'));\n\nif((A>3 && flow.get('mode')=='auto')||((B>3||C>3) && flow.get('mode')=='manual')){ \n flow.set('has_leaf',true);\n}else{\n flow.set('has_leaf',false); \n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","outputs":0,"noerr":0,"x":430,"y":270,"wires":[]},{"id":"cef85d5f.f4ae8","type":"link in","z":"9a2a85e1.2a0ae8","name":"stat_link","links":["7afb0c8a.ce2264","156017f4.8ee818","4a20361f.3a4008","22eae010.b20e7","dea5ccc3.0f85"],"x":775,"y":900,"wires":[["10897ed6.5f9361"]]},{"id":"9d01a04f.6310b","type":"link out","z":"9a2a85e1.2a0ae8","name":"ramp_link","links":["2b04dbda.f5a1f4"],"x":1245,"y":991,"wires":[]},{"id":"7081c847.7fb748","type":"function","z":"9a2a85e1.2a0ae8","name":"up/down/am","func":"msg1={};msg2={};msg3={};msg4={};msg5={};msg6={};\n\ncontext.set('count', context.get('count')||0);\nvar count = context.get('count')||0;\nvar shaper;\nif (msg.payload=='refresh'){\n if (count===0){\n count=1;\n context.set('count',count);\n shaper=\"ring\";\n }else{\n count=0;\n context.set('count',count);\n shaper=\"dot\";\n } \n} \n\n// MAMUAL set temp up / down\nif(msg.payload=='up'||msg.payload=='down'){\n if(flow.get('setTarget')<10){flow.set('setTarget',15);}\n if(msg.payload=='up'){\n flow.set('setTarget',flow.get('setTarget')+0.5);\n if(flow.get('setTarget')>30){flow.set('setTarget',30);}\n flow.set('boost',false); \n flow.set('eco',false);\n flow.set('away',false); \n flow.set('off',false); \n }else if(msg.payload=='down'){\n flow.set('setTarget',flow.get('setTarget')-0.5);\n if(flow.get('setTarget')<10){flow.set('setTarget',10);} \n flow.set('boost',false); \n flow.set('eco',false);\n flow.set('away',false);\n flow.set('off',false); \n }\n \n flow.set('manual_target',flow.get('setTarget'));\n \n msg1.icon='/node-red-icons/sM.png';\n msg2.topic='setTarget';\n msg2.payload=flow.get('manual_target');\n msg3.topic='getProfile';\n msg3.payload='actual';\n msg4.topic='setCurrent';\n msg4.payload=flow.get('current_temp');\n return [msg1,[msg2,msg3,msg4]]; \n \n// Reset to AUTO \n\n}else if((msg.payload=='am' && flow.get('mode')=='manual')||msg.payload=='auto'||msg.payload=='actuator'){ //actuator is from 65\n \n flow.set('manual_target',0);\n flow.set('mode','Auto');\n msg1.icon='/node-red-icons/Nill.png';\n msg3.topic='getProfile';\n msg3.payload='actual';\n msg4.topic='setCurrent';\n msg4.payload=flow.get('current_temp');\n \n msg5.payload='stat_button_reset';\n msg6.payload=flow.get('previous'); \n \n return [msg1,[null,null,null],msg5,msg6]; \n}\n\n\n\n\n\n\n","outputs":4,"noerr":0,"x":1110,"y":1005,"wires":[["156017f4.8ee818"],["9d01a04f.6310b"],["e9c192bf.1ef1e"],["6951c70a.3a61e8"]],"outputLabels":["msg1","msg2&3&4","msg5","msg6"]},{"id":"6951c70a.3a61e8","type":"link out","z":"9a2a85e1.2a0ae8","name":"profile_input","links":["c7b69e59.1205d"],"x":1245,"y":1051,"wires":[]},{"id":"fc2fa226.19ceb","type":"link out","z":"9a2a85e1.2a0ae8","name":"5sec_Refresh","links":["739aa7f1.52c278","6ca05d5.a48e8a4"],"x":355,"y":390,"wires":[]},{"id":"739aa7f1.52c278","type":"link in","z":"9a2a85e1.2a0ae8","name":"5sec_Refresh","links":["fc2fa226.19ceb"],"x":605,"y":390,"wires":[["9be8d411.dd5748"]]},{"id":"36f88373.648a3c","type":"function","z":"9a2a85e1.2a0ae8","name":"refresh stat","func":"msg1={};msg2={};msg3={};msg4={};msg5={};msg6={};msg7={};msg8={};msg9={};msg10={};\n\nnode.status({text:'eco = '+flow.get('eco')+' : away = '+flow.get('away')+' : off = '+flow.get('off')+' : boost = '+flow.get('boost')+' : leaf = '+flow.get('has_leaf')});\nif(msg.payload=='Refresh'){\n msg1.reset=true;\n}\nif(flow.get('eco')===true){\n msg4.topic=\"eco\";\n msg4.payload=true;\n msg5.topic='info2';\n msg5.payload=flow.get('setTarget'); \n msg5.info2=flow.get('setTarget');\n }else{\n msg4.topic=\"eco\"; \n msg4.payload=false;\n msg5.topic='info2'; \n msg5=null;\n} \nif(flow.get('away')===true){\n msg1.topic=\"away\"; \n msg1.payload=true;\n }else{\n msg1.topic=\"away\"; \n msg1.payload=false;\n}\nif(flow.get('off')===true){\n msg2.topic=\"off\"; \n msg2.payload=true;\n }else{\n msg2.topic=\"off\"; \n msg2.payload=false;\n}\nif(flow.get('has_leaf')===true){\n msg3.topic=\"has_leaf\";\n msg3.payload=true;\n }else{\n msg3.topic=\"has_leaf\"; \n msg3.payload=false;\n}\nif(flow.get('boost')===true){\n \n msg6.topic='info3';\n msg6.payload=flow.get('boost_end_time');\n msg6.info3='Until '+flow.get('boost_end_time'); \n}else{\n msg6.topic='info2'; \n msg6=null;\n}\n\nif(msg.payload=='Refresh'){\n node.status({text:'Refresh'});\n if(msg1.payload===true){\n msg7.topic=\"away\";\n msg7.payload=true;\n msg7.icon='/node-red-icons/Nill.png'; \n }else{\n msg7=null;\n }\n if(msg2.payload===true){\n msg8.topic=\"off\";\n msg8.payload=true;\n msg8.icon='/node-red-icons/Nill.png'; \n }else{\n msg8=null;\n }\n if(msg3.payload===true){\n msg9.topic=\"has_leaf\";\n msg9.payload=true;\n msg9.icon='/node-red-icons/Nill.png'; \n }else{\n msg9=null;\n }\n if(msg4.payload===true){\n msg10.topic=\"eco\";\n msg10.payload=true;\n msg10.icon='/node-red-icons/Nill.png'; \n }else{\n msg10=null;\n }\n return [null,null,[msg7,msg8,msg9,msg10]]; \n}\n\nreturn [[msg1,msg2,msg3,msg4],[msg5,msg6]];","outputs":3,"noerr":0,"x":300,"y":894,"wires":[["40af01b8.882a8"],["4a20361f.3a4008"],["4a20361f.3a4008"]],"outputLabels":["msg1&2&3&4","msg5&6","msg7&8&9&10"]},{"id":"4a20361f.3a4008","type":"link out","z":"9a2a85e1.2a0ae8","name":"stat_link","links":["cef85d5f.f4ae8"],"x":605,"y":900,"wires":[]},{"id":"6f20b828.8145a8","type":"link out","z":"9a2a85e1.2a0ae8","name":"ramp_link","links":["2b04dbda.f5a1f4"],"x":735,"y":80,"wires":[]},{"id":"22eae010.b20e7","type":"link out","z":"9a2a85e1.2a0ae8","name":"stat_link","links":["cef85d5f.f4ae8"],"x":735,"y":120,"wires":[]},{"id":"57cd5c34.b67884","type":"link out","z":"9a2a85e1.2a0ae8","name":"stat_button_reset","links":["89eb268c.f6b7c8","c7b69e59.1205d"],"x":935,"y":390,"wires":[]},{"id":"7b805c1d.d434e4","type":"function","z":"9a2a85e1.2a0ae8","name":"-1?","func":"\nif(msg.payload==-1){\n return msg;\n}","outputs":1,"noerr":0,"x":390,"y":430,"wires":[["e8d46189.4a1ad"]]},{"id":"e8d46189.4a1ad","type":"function","z":"9a2a85e1.2a0ae8","name":"msg input","func":"\n\n//Increment count \n\ncontext.set('count', context.get('count')||0);\nvar count = context.get('count');\n\nif(msg.payload=='Off'){\n count=0;\n context.set('count',count);\n}\n\n\n\nif(msg.payload==-1 && flow.get('off')===false){\n if(count>6 || (flow.get('boost_lock')===true && context.get('count') > 0)){\n count=0;\n context.set('count',count);\n }else{\n count += 1;\n context.set('count',count);\n } \n}\n\n//Process message\n\nif(count==0||msg.payload=='Off'){\n msg.payload='Boost';\n msg.cb=0;\n}\nif(count==1){\n msg.payload='1 hr';\n msg.cb=1; \n}\nif(count==2){\n msg.payload='2 hr';\n msg.cb=2; \n}\nif(count==3){\n msg.payload='3 hr';\n msg.cb=3; \n}\nif(count==4){\n msg.payload='4 hr';\n msg.cb=4; \n}\nif(count==5){\n msg.payload='5 hr';\n msg.cb=5; \n}\nif(count==6){\n msg.payload='6 hr';\n msg.cb=6; \n}\n\nnode.status({text:\"count : \"+count+\" = \"+msg.payload});\n\nmsg.topic = msg.payload;\nreturn msg;\n\n","outputs":"1","noerr":0,"x":390,"y":461,"wires":[["d57c66e9.83dd78"]]},{"id":"9be8d411.dd5748","type":"function","z":"9a2a85e1.2a0ae8","name":"boost process","func":"msg1={};\nmsg2={};\nmsg3={};\ncontext.set('boost_state',context.get('boost_state')||false);\ncontext.set('bt',context.get('bt')||false);\ncontext.set('count', context.get('count')||0);\n\nvar count = context.get('count')||0;\nvar shaper;\nif(msg.payload != -1){\n if (count===0){\n count=1;\n context.set('count',count);\n shaper=\"ring\";\n }else{\n count=0;\n context.set('count',count);\n shaper=\"dot\";\n } \n}\n\nif(msg.payload!='Refresh'){\n if(msg.cb>0 && flow.get('boost_lock')===false){\n flow.set('boost',true); //its set in profile\n flow.set('boost_period',parseInt(msg.cb));\n flow.set('bt',msg.cb*3600);\n node.status({text:'boost on : cb='+flow.get('boost_period')+' >> previous = '+flow.get('previous')});\n msg1.topic=null;\n msg1.payload='Boost';\n msg2.topic=null;\n msg2.payload='Boost'; \n msg3.payload=null;\n return [msg1,msg2];\n }else if(msg.cb===0){\n flow.set('boost',false)\n flow.set('boost_period',0);\n node.status({text:'boost off'});\n }\n \n}\n\nif(flow.get('boost_lock')===true && flow.get('setTarget')==18){\n //end boost\n flow.set('boost',false)\n flow.set('boost_period',0);\n node.status({text:'boost off'});\n}\n\nif(flow.get('boost')===false){\n if(flow.get('boost_lock')===true){\n msg1.payload=flow.get('previous');\n msg2.payload='Off';\n msg3.payload='Off'; //button off\n }else{\n msg1=null;\n msg2=null;\n msg3=null;\n }\n flow.set('boost_lock',false);\n node.status({text:'boosty off'});\n return [msg1,msg2,msg3]; \n}","outputs":3,"noerr":0,"x":760,"y":460,"wires":[["57cd5c34.b67884"],["336049d7.f0cc46","bc6a1996.7a2e18"],["e8d46189.4a1ad"]],"outputLabels":["msg1","msg2","msg3"]},{"id":"fa280912.2ee258","type":"inject","z":"9a2a85e1.2a0ae8","name":"Refresh","topic":"","payload":"Refresh","payloadType":"str","repeat":"5","crontab":"","once":true,"onceDelay":"","x":210,"y":340,"wires":[["fc2fa226.19ceb","7479a94d.ea1968","88cfe095.d29c3"]]},{"id":"384a3eb3.dd5c92","type":"function","z":"9a2a85e1.2a0ae8","name":"-1?","func":"if(msg.payload==-1){\n return msg;\n}","outputs":1,"noerr":0,"x":400,"y":309,"wires":[["88cfe095.d29c3"]]},{"id":"88cfe095.d29c3","type":"function","z":"9a2a85e1.2a0ae8","name":"msg input","func":"\n\n//Increment count \n\ncontext.set('count', context.get('count')||0);\nvar count = context.get('count');\n\nif(msg.payload==-1){\n if (count>1){\n count=0;\n context.set('count',count);\n }else{\n count += 1;\n context.set('count',count);\n } \n}\n\n//Process message\n/*\nif (count==3){\n count=1;\n context.set('count',count); \n}\n*/\nif(count==0){\n msg.payload='Summer';\n}\nif(count==1){\n msg.payload=global.get('dow');\n}\n\nif(count==3){\n msg.payload='eco';//'alt 2';\n}\nif(count==4){\n msg.payload='away';//'alt 3';\n}\nif(count==5){\n msg.payload='alt 4';\n}\n\n\n\nflow.set('heat',false); \n\nnode.status({text:\"count : \"+count+\" = \"+msg.payload});\n\nmsg.topic = msg.payload;\nreturn msg;\n\n","outputs":"1","noerr":0,"x":400,"y":340,"wires":[["4ddabfdc.9132a"]]},{"id":"ffbe8e9e.76532","type":"function","z":"9a2a85e1.2a0ae8","name":"rbme","func":"context.set('rbme',context.get('rbme')||'Summer');\nif(msg.payload != -1){\n if(msg.topic!=context.get('rbme')){\n context.set('rbme',msg.topic);\n return msg; \n }\n}","outputs":1,"noerr":0,"x":790,"y":340,"wires":[["57cd5c34.b67884"]],"icon":"node-red-node-rbe/rbe.png"},{"id":"bc6a1996.7a2e18","type":"function","z":"9a2a85e1.2a0ae8","name":"rbme","func":"context.set('rbme',context.get('rbme')||' ');\nif(msg.payload!=context.get('rbme')){\n context.set('rbme',msg.payload);\n node.status({text:context.get('rbme')}); \n if(msg.payload=='Off'){\n return msg; \n }\n \n}else{\n context.set('rbme',msg.payload);\n node.status({}); \n}\n","outputs":1,"noerr":0,"x":210,"y":480,"wires":[["e8d46189.4a1ad"]],"icon":"node-red-node-rbe/rbe.png"},{"id":"7d51027d.8e185c","type":"function","z":"9a2a85e1.2a0ae8","name":"FAKE relay state","func":"if(msg.payload=='On'){\n msg.topic=\"hvac_state\";\n msg.payload='heating';\n}else{\n msg.topic=\"hvac_state\";\n msg.payload='off';\n}\nreturn msg;","outputs":1,"noerr":0,"x":1180,"y":820,"wires":[["10897ed6.5f9361"]]},{"id":"3dab39f9.e2d9e6","type":"inject","z":"9a2a85e1.2a0ae8","name":"Fake relay On","topic":"","payload":"On","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":960,"y":805,"wires":[["7d51027d.8e185c"]]},{"id":"fdaa377a.a2aed8","type":"inject","z":"9a2a85e1.2a0ae8","name":"Fake relay Off","topic":"","payload":"Off","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":960,"y":835,"wires":[["7d51027d.8e185c"]]},{"id":"6c282958.e66798","type":"ui_ui_control","z":"9a2a85e1.2a0ae8","name":"","x":180,"y":80,"wires":[["d66b068f.fc35d8"]]},{"id":"d66b068f.fc35d8","type":"function","z":"9a2a85e1.2a0ae8","name":"Dashboard connection ?","func":"\nif(msg.payload==\"lost\"){\n msg.payload=0;\n node.status({fill : \"red\",shape : \"dot\",text:\"Dashboard Closed\"});\n flow.set('Dashboard_Active',0);\n return msg;\n}\nif(msg.payload!=11){\n flow.set('Dashboard_Active',0);\n}\nif(msg.tab===0){\n node.status({fill : \"green\",shape : \"dot\",text:\"Setup\"});\n}\nif(msg.tab==1){\n node.status({fill : \"green\",shape : \"dot\",text:\"Control\"});\n}\nif(msg.tab==2){\n node.status({fill : \"green\",shape : \"dot\",text:\"Loading\"});\n}\nif(msg.tab==3){\n node.status({fill : \"green\",shape : \"dot\",text:\"Drive cam\"});\n}\nif(msg.tab==4){\n node.status({fill : \"green\",shape : \"dot\",text:\"Front cam\"});\n}\nif(msg.tab==5){\n node.status({fill : \"green\",shape : \"dot\",text:\"Back ip cam\"});\n}\nif(msg.tab==6){\n node.status({fill : \"green\",shape : \"dot\",text:\"Stat\"});\n flow.set('Dashboard_Active',1); \n}\nif(msg.tab==7){\n node.status({fill : \"green\",shape : \"dot\",text:\"Desk ip cam\"});\n}\nif(msg.tab==8){\n node.status({fill : \"green\",shape : \"dot\",text:\"Cam1\"});\n}\nif(msg.tab==9){\n node.status({fill : \"green\",shape : \"dot\",text:\"sm video screens\"});\n}\nif(msg.tab==10){\n node.status({fill : \"green\",shape : \"dot\",text:\"Green house watering\"});\n}\nif(msg.tab==11){\n node.status({fill : \"green\",shape : \"dot\",text:\"stat\"});\n}\nreturn msg;","outputs":1,"noerr":0,"x":380,"y":80,"wires":[["146d0ea4.70cf61"]]},{"id":"e99356a.a5f61a8","type":"function","z":"9a2a85e1.2a0ae8","name":"boost_lock","func":"if(msg.payload=='Boost'){\n flow.set('boost_lock',true);\n}\nnode.status({text:'boost_lock = '+flow.get('boost_lock')});\n\n\n","outputs":0,"noerr":0,"x":1110,"y":440,"wires":[]},{"id":"336049d7.f0cc46","type":"timed-counter","z":"9a2a85e1.2a0ae8","name":"5s","timelimit":"5","timeunit":"1000","withhold":true,"fixedtimeout":false,"pertopic":false,"x":970,"y":440,"wires":[["e99356a.a5f61a8"]]},{"id":"a82b692b.fbeb58","type":"function","z":"9a2a85e1.2a0ae8","name":"profile","func":"msg1={};\nmsg2={};\n\nif(msg.payload=='Refresh'){\n msg.payload=flow.get('profile');\n}\nif(msg.payload=='Saturday'){\n flow.set('profile','Saturday');\n flow.set('previous','Saturday'); \n flow.set('eco',false); \n flow.set('away',false); \n flow.set('boost',false); \n flow.set('off',false); \n msg1.payload={\"name\":flow.get('profile'),\"points\":[{\"00:00\":18},{\"03:00\":18},{\"06:00\":18.5},{\"08:00\":20},{\"10:00\":20},{\"11:00\":20.5},{\"12:30\":20.5},{\"12:30\":19.5},{\"15:00\":19.5},{\"17:00\":20.5},{\"19:00\":20.5},{\"19:00\":20},{\"21:30\":20},{\"21:30\":18},{\"23:59\":18}]};\n}else\nif(msg.payload=='Sunday'){\n flow.set('profile','Sunday');\n flow.set('previous','Sunday'); \n flow.set('eco',false); \n flow.set('away',false); \n flow.set('boost',false); \n flow.set('off',false); \n msg1.payload={\"name\":flow.get('profile'),\"points\":[{\"00:00\":18},{\"03:00\":18},{\"06:00\":18.5},{\"08:00\":20},{\"10:00\":20},{\"11:00\":20.5},{\"12:30\":20.5},{\"12:30\":19.5},{\"15:00\":19.5},{\"17:00\":20.5},{\"19:00\":20.5},{\"19:00\":20},{\"21:30\":20},{\"21:30\":18},{\"23:59\":18}]};\n}else\nif(msg.payload=='Monday'){\n flow.set('profile','Monday');\n flow.set('previous','Monday');\n flow.set('eco',false); \n flow.set('away',false); \n flow.set('boost',false);\n flow.set('off',false); \n msg1.payload={\"name\":flow.get('profile'),\"points\":[{\"00:00\":19},{\"03:00\":19},{\"07:45\":19},{\"07:45\":21.5},{\"09:00\":21.5},{\"09:00\":20},{\"17:00\":20},{\"17:25\":23.5},{\"22:00\":23.5},{\"22:00\":19},{\"23:59\":19}]};\n}else\nif(msg.payload=='Tuesday'){\n flow.set('profile','Tuesday');\n flow.set('previous','Tuesday'); \n flow.set('eco',false); \n flow.set('away',false); \n flow.set('boost',false); \n flow.set('off',false); \n msg1.payload={\"name\":flow.get('profile'),\"points\":[{\"00:00\":19},{\"03:00\":19},{\"07:45\":19},{\"07:45\":21.5},{\"09:00\":21.5},{\"09:00\":20},{\"17:00\":20},{\"17:25\":23.5},{\"22:00\":23.5},{\"22:00\":19},{\"23:59\":19}]};\n}else\nif(msg.payload=='Wednesday'){\n flow.set('profile','Wednesday');\n flow.set('previous','Wednesday'); \n flow.set('eco',false); \n flow.set('away',false); \n flow.set('boost',false); \n flow.set('off',false); \n msg1.payload={\"name\":flow.get('profile'),\"points\":[{\"00:00\":19},{\"03:00\":19},{\"07:45\":19},{\"07:45\":21.5},{\"09:00\":21.5},{\"09:00\":20},{\"17:00\":20},{\"17:25\":23.5},{\"22:00\":23.5},{\"22:00\":19},{\"23:59\":19}]};\n}else\nif(msg.payload=='Thursday'){\n flow.set('profile','Thursday');\n flow.set('previous','Thursday'); \n flow.set('eco',false); \n flow.set('away',false); \n flow.set('boost',false);\n flow.set('off',false);\n //msg1.payload={\"name\":flow.get('profile'),\"points\":[{\"00:00\":19},{\"03:00\":19},{\"07:45\":19},{\"07:45\":21.5},{\"09:00\":21.5},{\"09:00\":20},{\"17:00\":20},{\"17:25\":23.5},{\"22:00\":23.5},{\"22:00\":19},{\"23:59\":19}]};\n}else\nif(msg.payload=='Friday'){\n flow.set('profile','Friday');\n flow.set('previous','Friday'); \n flow.set('eco',false); \n flow.set('away',false); \n flow.set('boost',false); \n flow.set('off',false); \n msg1.payload={\"name\":flow.get('profile'),\"points\":[{\"00:00\":19},{\"03:00\":19},{\"07:45\":19},{\"07:45\":21.5},{\"09:00\":21.5},{\"09:00\":20},{\"17:00\":20},{\"17:25\":23.5},{\"22:00\":23.5},{\"22:00\":19},{\"23:59\":19}]};\n}else \nif(msg.payload=='Summer'){\n flow.set('profile','Summer');\n flow.set('previous','Summer');\n flow.set('eco',false); \n flow.set('away',false); \n flow.set('boost',false); \n flow.set('off',false); \n msg1.payload={\"name\":flow.get('profile'),\"points\":[{\"00:00\":flow.get('Summer_target')},{\"23:59\":flow.get('Summer_target')}]};\n}else \nif(msg.payload=='eco'){\n flow.set('away',false);\n flow.set('boost',false);\n flow.set('off',false); \n if(flow.get('mode')=='manual'){\n flow.set('mode','auto');\n } \n msg1.topic='setProfile'; \n msg1.payload={\"name\":'eco',\"points\":[{\"00:00\":flow.get('eco_target')},{\"23:59\":flow.get('eco_target')}]};\n}else\nif(msg.payload=='away'){\n flow.set('eco',false); \n flow.set('boost',false); \n flow.set('off',false); \n if(flow.get('mode')=='manual'){\n flow.set('mode','auto');\n } \n msg1.topic='setProfile'; \n msg1.payload={\"name\":'away',\"points\":[{\"00:00\":flow.get('away_target')},{\"23:59\":flow.get('away_target')}]};\n}else \nif(msg.payload=='off'){\n flow.set('eco',false);\n flow.set('away',false); \n flow.set('boost',false); \n if(flow.get('mode')=='manual'){\n flow.set('mode','auto');\n } \n msg1.topic='setProfile'; \n msg1.payload={\"name\":'off',\"points\":[{\"00:00\":flow.get('off_target')},{\"23:59\":flow.get('off_target')}]};\n}else \n\nif(msg.payload=='Boost' && flow.get('boost_lock')===false){\n flow.set('eco',false);\n flow.set('away',false); \n flow.set('off',false); \n var start_time=global.get('h')+':'+global.get('m');\n var end_time=(parseInt(global.get('h'))+flow.get('boost_period'))+':'+global.get('m');\n if(global.get('h')>12){if(end_time>23.59){end_time=23.59;}} // limit end time to max 23.59\n flow.set('boost_end_time',end_time);\n msg1.topic='setProfile'; \n msg1.payload={\"name\":'Boost',\"points\":[{\"00:00\":18},{[start_time]:18},{[start_time]:(flow.get('current_temp')+1)},{[end_time]:(flow.get('current_temp')+1)},{[end_time]:18},{\"23:59\":18}]};\n}\n\nmsg1.topic='setProfile'; \n\nif(flow.get('mode')=='manual'){\n msg1.topic='setTarget';\n msg1.payload=flow.get('manual_target');\n}else{\n msg2.icon='/node-red-icons/Nill.png';\n}\n\nmsg2.topic='getProfile';\nmsg2.payload='actual';\n\nreturn [[msg1,msg2]];\n","outputs":1,"noerr":0,"x":730,"y":610,"wires":[["c0deee5f.e93e7"]],"outputLabels":["msg1&2"]},{"id":"40af01b8.882a8","type":"rbe","z":"9a2a85e1.2a0ae8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":470,"y":880,"wires":[["4a20361f.3a4008"]]},{"id":"8d25a8cb.b64258","type":"delay","z":"9a2a85e1.2a0ae8","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":940,"y":1140,"wires":[["9d5ce3f7.c136"]]},{"id":"b831c4eb.bde518","type":"link in","z":"9a2a85e1.2a0ae8","name":"stat_button_reset","links":["1f64a7b0.d94d28"],"x":245,"y":440,"wires":[["e8d46189.4a1ad"]]},{"id":"4ddabfdc.9132a","type":"ui_template","z":"9a2a85e1.2a0ae8","group":"3ef92ad0.c28ff6","name":"multi profile","order":5,"width":"2","height":"1","format":"\n\n\n\n\n \n\n\n","storeOutMessages":false,"fwdInMessages":true,"templateScope":"local","x":550,"y":340,"wires":[["ffbe8e9e.76532","384a3eb3.dd5c92"]],"icon":"node-red-dashboard/ui_button.png"},{"id":"d57c66e9.83dd78","type":"ui_template","z":"9a2a85e1.2a0ae8","group":"3ef92ad0.c28ff6","name":"multi boost","order":4,"width":"1","height":"1","format":"\n\n\n\n\n\n \n\n\n","storeOutMessages":false,"fwdInMessages":true,"templateScope":"local","x":550,"y":460,"wires":[["9be8d411.dd5748","7b805c1d.d434e4"]],"icon":"node-red-dashboard/ui_button.png"},{"id":"eda6a6ea.12c0c8","type":"ui_template","z":"9a2a85e1.2a0ae8","group":"3ef92ad0.c28ff6","name":"ECO","order":6,"width":"1","height":"1","format":"\n\n

\n\n\n{{(msg.payload == '3' ? 'noip' : (msg.payload == '2' ? 'n/c' : (msg.payload==1 ?'Eco' : 'Eco')))}}\n\n\n\n\n","storeOutMessages":false,"fwdInMessages":false,"templateScope":"local","x":380,"y":590,"wires":[["4619fb07.708ff4"]],"icon":"node-red-dashboard/ui_button.png"},{"id":"724d4295.bcf03c","type":"ui_template","z":"9a2a85e1.2a0ae8","group":"3ef92ad0.c28ff6","name":"AWAY","order":7,"width":"1","height":"1","format":"\n\n

\n\n\n{{(msg.payload == '3' ? 'noip' : (msg.payload == '2' ? 'n/c' : (msg.payload==1 ?'Away' : 'Away')))}}\n\n\n\n\n","storeOutMessages":false,"fwdInMessages":false,"templateScope":"local","x":383,"y":640,"wires":[["6e708e20.d670b"]],"icon":"node-red-dashboard/ui_button.png"},{"id":"fc48b21.4e7cd5","type":"ui_template","z":"9a2a85e1.2a0ae8","group":"3ef92ad0.c28ff6","name":"OFF","order":2,"width":"1","height":"1","format":"\n\n\n

\n\n\n{{(msg.payload == '3' ? 'noip' : (msg.payload == '2' ? 'n/c' : (msg.payload==1 ?'Off' : 'On')))}}\n\n\n","storeOutMessages":false,"fwdInMessages":false,"templateScope":"local","x":383,"y":690,"wires":[["55e4d53.3d64e2c"]],"icon":"node-red-dashboard/ui_button.png"},{"id":"4532e219.22ad6c","type":"ui_chart","z":"9a2a85e1.2a0ae8","name":"profile","group":"88dc1b.594c03e8","order":3,"width":"6","height":"3","label":"Profile : {{msg.label}}","chartType":"line","legend":"false","xformat":"HH","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"outputs":1,"x":1220,"y":1140,"wires":[[]]},{"id":"676122a7.83287c","type":"function","z":"9a2a85e1.2a0ae8","name":"Global date / time","func":"var d = new Date();\n date = d.toDateString();\n dow = [\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"][d.getDay()]; \n h = d.getHours();\n m = d.getMinutes();\n s = d.getSeconds();\n if (h<10){h=\"0\"+h;}\n if (m<10){m=\"0\"+m;}\n if (s<10){s=\"0\"+s;}\n \n da= d.getDate();\n mo= d.getMonth()+1;\n yr= d.getYear()-100; \n if (da<10){da=\"0\"+da;}\n if (mo<10){mo=\"0\"+mo;}\n \nglobal.set('h',h);\nglobal.set('m',m);\nglobal.set('s',s);\nglobal.set('date',date); \nglobal.set('dates',da+\".\"+mo+\".\"+yr);\nglobal.set('time',global.get('h')+\":\"+global.get('m'));\nglobal.set('times',global.get('h')+\":\"+global.get('m')+\":\"+global.get('s'));\nglobal.set('dow',dow);\nnode.status({\n\ttext : global.get('date')+\"...\"+global.get('times')+'...'+global.get('dates')+'...'+dow\n});","outputs":0,"noerr":0,"x":450,"y":170,"wires":[],"icon":"node-red/timer.png"},{"id":"913717aa.4706d8","type":"inject","z":"9a2a85e1.2a0ae8","name":"inject each 1sec","topic":"","payload":"1","payloadType":"num","repeat":"1","crontab":"","once":true,"x":246.7499008178711,"y":169.42077827453613,"wires":[["676122a7.83287c"]]},{"id":"949f2b5.4ade7d8","type":"link in","z":"9a2a85e1.2a0ae8","name":"stat_button_reset","links":["1f64a7b0.d94d28"],"x":45,"y":840,"wires":[["7c85c5a2.0417dc"]]},{"id":"7c85c5a2.0417dc","type":"delay","z":"9a2a85e1.2a0ae8","name":"50ms","pauseType":"delay","timeout":"50","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":130,"y":840,"wires":[["36f88373.648a3c"]]},{"id":"10897ed6.5f9361","type":"ui_template","z":"9a2a85e1.2a0ae8","group":"3ef92ad0.c28ff6","name":"Stat 6x6","order":1,"width":"6","height":"6","format":"\n\n
\n\n

{{msg.info1}}

\n

{{msg.info2}}

\n

{{msg.info3}}

\n\n\n \n\n\n\n \n\n\n\n \n\n\n\n\n\n","storeOutMessages":false,"fwdInMessages":false,"templateScope":"local","x":920,"y":1005,"wires":[["7081c847.7fb748"]]},{"id":"7667f1.36ff281","type":"ui_template","z":"9a2a85e1.2a0ae8","group":"3ef92ad0.c28ff6","name":"Load Stat css","order":3,"width":0,"height":0,"format":"","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":920,"y":1035,"wires":[[]]},{"id":"c41a34b1.5a53c8","type":"function","z":"9a2a85e1.2a0ae8","name":"flow.set('current_temperature > FAKE","func":"flow.set('current_temperature_c',msg.payload)\n","outputs":0,"noerr":0,"x":430,"y":1230,"wires":[]},{"id":"ff3cc542.800c68","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"23","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1290,"wires":[["c41a34b1.5a53c8"]]},{"id":"7726f098.89129","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"20","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1170,"wires":[["c41a34b1.5a53c8"]]},{"id":"1a722525.b637ab","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"14","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1080,"wires":[["c41a34b1.5a53c8"]]},{"id":"a4766b92.a09a98","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"19","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1140,"wires":[["c41a34b1.5a53c8"]]},{"id":"4feea7e4.857e48","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"18","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1110,"wires":[["c41a34b1.5a53c8"]]},{"id":"fa48b823.a5ba58","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"21","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1200,"wires":[["c41a34b1.5a53c8"]]},{"id":"e0252eab.26b1d","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"22","payloadType":"num","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":130,"y":1230,"wires":[["c41a34b1.5a53c8"]]},{"id":"fa0d75c0.c7cf08","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"24","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1350,"wires":[["c41a34b1.5a53c8"]]},{"id":"ab4d6d63.1f28d","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"24.5","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1380,"wires":[["c41a34b1.5a53c8"]]},{"id":"399302d2.6cd2ee","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"25.5","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1410,"wires":[["c41a34b1.5a53c8"]]},{"id":"ec2e5ca5.72f42","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"22.5","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1260,"wires":[["c41a34b1.5a53c8"]]},{"id":"d78b7a42.5a96d8","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"23.5","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":1320,"wires":[["c41a34b1.5a53c8"]]},{"id":"1237ebe6.a26614","type":"inject","z":"9a2a85e1.2a0ae8","name":"","topic":"","payload":"","payloadType":"str","repeat":"1","crontab":"","once":false,"onceDelay":0.1,"x":960,"y":610,"wires":[["51a5ca35.7171e4"]]},{"id":"51a5ca35.7171e4","type":"function","z":"9a2a85e1.2a0ae8","name":"flow.get('setTarget')","func":"\n\nnode.status({text:flow.get('setTarget')});\nreturn msg;","outputs":0,"noerr":0,"x":1130,"y":610,"wires":[]},{"id":"384b3abf.98aaf6","type":"profile","z":"","name":"test","time1":"00:00","temp1":"16.1","time2":"07:00","temp2":"17","time3":"19:00","temp3":"20.5","time4":"20:00","temp4":"17","time5":"23:59","temp5":"17","time6":"","temp6":"","time7":"","temp7":"","time8":"","temp8":"","time9":"","temp9":"","time10":"","temp10":""},{"id":"3ef92ad0.c28ff6","type":"ui_group","z":"","name":"Stat control","tab":"4c3f4c75.498664","order":1,"disp":false,"width":"6","collapse":false},{"id":"88dc1b.594c03e8","type":"ui_group","z":"","name":"Stat_charts","tab":"4c3f4c75.498664","order":2,"disp":false,"width":"6","collapse":false},{"id":"4c3f4c75.498664","type":"ui_tab","z":"","name":"Stat","icon":"dashboard","order":16,"disabled":false,"hidden":false}]