Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [{"id":"9b4dbc77.3dc54","type":"tab","label":"Brewfather","disabled":false,"info":""},{"id":"6dc4c6ac.83d2b8","type":"tab","label":"BC","disabled":false,"info":""},{"id":"3b1a376d.f3e658","type":"tab","label":"Hus","disabled":false,"info":""},{"id":"88bbcf05.96d65","type":"tab","label":"Ventilasjon","disabled":false,"info":""},{"id":"bfb81e59.ff7c6","type":"tab","label":"Garasje","disabled":false,"info":""},{"id":"97d46aa8.590d48","type":"tab","label":"whois","disabled":false,"info":""},{"id":"426fc302.e8964c","type":"tab","label":"Logging","disabled":false,"info":""},{"id":"fab5435eda80d36d","type":"tab","label":"F1","disabled":false,"info":""},{"id":"2dd18e3fe6f50d24","type":"tab","label":"F2","disabled":false,"info":""},{"id":"eb1127af.550128","type":"key-value-store","filepath":"store1.json","namespace":"","name":""},{"id":"6b19cfc5.22db6","type":"modbus-client","name":"bryggeri","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":true,"tcpHost":"192.168.88.43","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"","unit_id":"","commandDelay":"1","clientTimeout":"2000","reconnectOnTimeout":true,"reconnectTimeout":"5000","parallelUnitIdsAllowed":true},{"id":"445c05cf.41736c","type":"blynk-ws-client","name":"Roomtemp","path":"ws://blynk-cloud.com/websockets","key":"d-6jb2u_ohwit0qU0PxxwN0npAYwa0KT","dbg_all":false,"dbg_read":false,"dbg_write":false,"dbg_notify":false,"dbg_mail":false,"dbg_prop":false,"dbg_sync":false,"dbg_bridge":false,"dbg_low":false,"dbg_pins":"","multi_cmd":false,"proxy_type":"no","proxy_url":"","enabled":true},{"id":"8b11c11a.85e2a","type":"brewfather-config","name":"Credentials 1"},{"id":"46ccfe10.13ec3","type":"modbus-client","name":"ventilasjon","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.88.53","tcpPort":"503","tcpType":"TPC-RTU-BUFFERED","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"","unit_id":"","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true},{"id":"8208eb36.6153d8","type":"influxdb","hostname":"192.168.88.94","port":"8086","protocol":"http","database":"mybucket","name":"","usetls":false,"tls":"","influxdbVersion":"2.0","url":"http://10.0.0.1:8086","rejectUnauthorized":true},{"id":"130d0c09fb6d48df","type":"mikrotik-device","host":"192.168.88.1","port":"8728","username":null,"password":null},{"id":"ab8b853c1beb57d4","type":"tibber-api-endpoint","feedUrl":"wss://api.tibber.com/v1-beta/gql/subscriptions","queryUrl":"https://api.tibber.com/v1-beta/gql","name":""},{"id":"14c133fe4a8ea5cb","type":"blynk-iot-client","name":"","path":"blynk.cloud","key":"KiWH75tZY1ZO9E4DGnnXorxIh5ZoKqVm","tmpl":"TMPLDfxjoLyh","dbg_all":false,"dbg_read":false,"dbg_prop":false,"dbg_sync":false,"dbg_low":false,"dbg_pins":"","multi_cmd":false,"enabled":false},{"id":"f894fc8468d121cf","type":"modbus-client","name":"ferment","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"192.168.88.69","tcpPort":"504","tcpType":"TPC-RTU-BUFFERED","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true},{"id":"1f9f077d.fcb709","type":"blynk-ws-client","name":"F1NR","path":"ws://blynk-cloud.com/websockets","key":"vXLDfmQeRPRc5QzhcbCWW1J4bL4SFjro","dbg_all":false,"dbg_read":false,"dbg_write":false,"dbg_notify":false,"dbg_mail":false,"dbg_prop":false,"dbg_sync":false,"dbg_bridge":false,"dbg_low":false,"dbg_pins":"","multi_cmd":false,"proxy_type":"no","proxy_url":"","enabled":true},{"id":"04e16cbce69539b1","type":"blynk-ws-client","name":"F2NR","path":"ws://blynk-cloud.com/websockets","key":"T3Gi4tby-_EkoyjC36kSNWRk-6BKGgF4","dbg_all":false,"dbg_read":false,"dbg_write":false,"dbg_notify":false,"dbg_mail":false,"dbg_prop":false,"dbg_sync":false,"dbg_bridge":false,"dbg_low":false,"dbg_pins":"","multi_cmd":false,"proxy_type":"no","proxy_url":"","enabled":true},{"id":"049e1b3e4be39fc2","type":"mqtt-broker","name":"","broker":"192.168.88.94","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""},{"id":"e54e7367.6f767","type":"http in","z":"9b4dbc77.3dc54","name":"","url":"/brewfather","method":"post","upload":false,"swaggerDoc":"","x":80,"y":60,"wires":[["4f5df3fb.e58f6c","50c06659.71b498","4ac47708.2b8e38"]]},{"id":"733a50b8.48292","type":"function","z":"9b4dbc77.3dc54","name":"BF to BC","func":"//flow.set('recipe' , msg.payload.recipe.fermentation)\n//flow.set('fbeername' , msg.payload.recipe.name)\n\nfunction numberDes(a,b) {\n return b-a;\n }\n \nfunction stringsort(b,a) {\n return (Number(a.match(/(\\d+)/g)[0]) - Number((b.match(/(\\d+)/g)[0])));\n}\n \nfunction time_convert(num)\n { \n var hours = Math.floor(num / 60); \n var minutes = num % 60;\n return + hours + \":\" + minutes + \":00\"; \n}\nvar hopstandhoptime=[];\nvar hopstandhopname=[];\nvar hopstandhopamount=[];\nvar hopstand\nvar hopstandtemp\nif (msg.payload.recipe.hops.length > 0){\n if (msg.payload.recipe.hopStandMinutes > 0) {\n hopstand = true\n hopstandtemp = msg.payload.recipe.avgWeightedHopstandTemp\n for(var x=0; x<msg.payload.recipe.hops.length; x++){\n if (msg.payload.recipe.hops[x].use == \"Aroma\") {\n hopstandhoptime.push(msg.payload.recipe.hops[x].time)\n hopstandhopname.push(msg.payload.recipe.hops[x].name)\n hopstandhopamount.push(msg.payload.recipe.hops[x].amount)\n }\n }\n \n }\n else {\n hopstandtemp = 0\n hopstand = false\n }\n}\n\nconst {\n dupstand\n} = hopstandhoptime.reduce(\n (acc, curr) => {\n acc.items[curr] = acc.items[curr] ? acc.items[curr] += 1 : 1\n if (acc.items[curr] === 2) acc.dupstand.push(curr)\n return acc\n }, {\n items: {},\n dupstand: []\n }\n)\n\nfor (x= 0; x<hopstandhoptime.length;x++){\n hopstandhopname[x] = hopstandhopamount[x]+\"g \"+hopstandhopname[x]\n}\n\n\nif (dupstand.length > 0) {\nfor (var i = 0; i<dupstand.length; i++) {\n for (x = (hopstandhoptime.indexOf(dupstand[i])); x < hopstandhoptime.lastIndexOf(dupstand[i]); x++) {\n hopstandhopname[hopstandhoptime.indexOf(dupstand[i])] += \" and \"+ hopstandhopname[x+1] \n delete hopstandhopname[x+1]\n delete hopstandhoptime[x+1]\n }\n} \n \n}\n\nfor (i=0; i<hopstandhoptime.length; i++) {\n if (hopstandhoptime[i] == null) {\n hopstandhoptime.splice(i,1);\n hopstandhopname.splice(i,1);\n i -= 1;\n }\n}\nfor (i=0; i<hopstandhoptime.length; i++) {\n hopstandhopname[i] = hopstandhoptime[i]+\"min \"+ hopstandhopname[i]\n}\n\nhopstandhoptime.sort(numberDes);\nhopstandhopname.sort(stringsort);\n\n\nhopstandhoptime.push(0,0,0,0,0,0,0,0,0,0)\nhopstandhoptime.length = 5\nhopstandhopname.push(\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\")\nhopstandhopname.length = 5\n\nvar firstwort\nvar firstworthopname=[];\nvar firstworthopamount=[];\nif (msg.payload.recipe.hops.length > 0){\n if (msg.payload.recipe.hops[0].use == \"First Wort\") {\n firstwort = true\n for( x=0; x<msg.payload.recipe.hops.length; x++){\n if (msg.payload.recipe.hops[x].use == \"First Wort\") {\n firstworthopname.push(msg.payload.recipe.hops[x].name)\n firstworthopamount.push(msg.payload.recipe.hops[x].amount)\n }\n }\n for (x= 0; x<firstworthopname.length;x++){\n firstworthopname[x] = firstworthopamount[x]+\"g \"+firstworthopname[x]\n } \n if (firstworthopname.length > 1) {\n for (x = 1; x <firstworthopname.length; x++) {\n firstworthopname[0] += \" and \"+ firstworthopname[x] \n //delete firstworthopname[x+1]\n }\n //for (i=0; i<firstworthopname.length; i++) {\n // if (firstworthopname[i] === null) {\n // firstworthopname.splice(i,1);\n // i -= 1;\n // } \n //}\n \n }\n }\n else {\n firstwort = false\n}\n //else {\n //firstwort = false\n }\n\n\nvar boilhoptime=[];\nvar boilhopname=[];\nvar boilhopamount=[];\nif (msg.payload.recipe.hops.length > 0){\nfor( x=0;x<msg.payload.recipe.hops.length;x++){\n if (msg.payload.recipe.hops[x].use == \"Boil\") {\n boilhoptime.push(msg.payload.recipe.hops[x].time);\n boilhopname.push(msg.payload.recipe.hops[x].name);\n boilhopamount.push(msg.payload.recipe.hops[x].amount);\n }\n} \n}\nif (msg.payload.batchMiscs.length > 0) {\n for ( x=0;x<msg.payload.batchMiscs.length;x++){\n if (msg.payload.batchMiscs[x].use == \"Boil\") {\n boilhoptime.push(msg.payload.batchMiscs[x].time)\n boilhopname.push(msg.payload.batchMiscs[x].name)\n boilhopamount.push(msg.payload.batchMiscs[x].amount)\n }\n }\n}\n\nconst {\n dup\n} = boilhoptime.reduce(\n (acc, curr) => {\n acc.items[curr] = acc.items[curr] ? acc.items[curr] += 1 : 1\n if (acc.items[curr] === 2) acc.dup.push(curr)\n return acc\n }, {\n items: {},\n dup: []\n }\n)\n\nfor (x= 0; x<boilhoptime.length;x++){\n boilhopname[x] = boilhopamount[x]+\"g \"+boilhopname[x]\n}\n\nif (dup.length > 0) {\nfor (var i = 0; i<dup.length; i++) {\n for (x = (boilhoptime.indexOf(dup[i])); x < boilhoptime.lastIndexOf(dup[i]); x++) {\n boilhopname[boilhoptime.indexOf(dup[i])] += \" and \"+ boilhopname[x+1] \n delete boilhopname[x+1]\n delete boilhoptime[x+1]\n }\n} \n}\n\nfor (i=0; i<boilhoptime.length; i++) {\n if (boilhoptime[i] == null) {\n boilhoptime.splice(i,1);\n boilhopname.splice(i,1);\n i -= 1;\n }\n}\nfor (i=0; i<boilhoptime.length; i++) {\n boilhopname[i] = boilhoptime[i]+\"min \"+ boilhopname[i]\n}\n\nboilhoptime.sort(numberDes);\nboilhopname.sort(stringsort);\n\n\nboilhoptime.push(0,0,0,0,0,0,0,0,0,0)\nboilhoptime.length = 10\nboilhopname.push(\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\")\nboilhopname.length = 10\n\nvar mashtime=[];\nfor(var y=0;y<msg.payload.mashStepsCount;y++){\n mashtime[y]= msg.payload.recipe.mash.steps[y].stepTime;\n }\nmashtime.push(0,0,0,0,0);\nmashtime.length = 5\n\nvar mashsteps = msg.payload.mashStepsCount - 1;\nvar mashtemp=[];\nfor(var z=0;z<msg.payload.mashStepsCount;z++){\n mashtemp[z]= msg.payload.recipe.mash.steps[z].stepTemp;\n }\nmashtemp.push(mashtemp[mashsteps], mashtemp[mashsteps], mashtemp[mashsteps], mashtemp[mashsteps], mashtemp[mashsteps], mashtemp[mashsteps])\nmashtemp.length = 6\n\nmsg.payload = [ \n\n{ \"Name\": \"Preboil volume\", \"Value\": msg.payload.recipe.boilSize } , \n{ \"Name\": \"HLT fillvolume\" , \"Value\": msg.payload.recipe.data.hltWaterAmount } , \n{ \"Name\": \"Sparge volume\" , \"Value\": msg.payload.recipe.data.spargeWaterAmount } , \n{ \"Name\": \"Strike temp\" , \"Value\": msg.payload.recipe.data.strikeTemp } , \n{ \"Name\": \"Mash volume\" , \"Value\": msg.payload.recipe.data.mashWaterAmount } , \n{ \"Name\": \"Mash temp1\" , \"Value\": mashtemp[0] } ,\n{ \"Name\": \"Mash temp2\" , \"Value\": mashtemp[1] } , \n{ \"Name\": \"Mash temp3\" , \"Value\": mashtemp[2] } ,\n{ \"Name\": \"Mash temp4\" , \"Value\": mashtemp[3] } ,\n{ \"Name\": \"Mash temp5\" , \"Value\": mashtemp[4] } ,\n{ \"Name\": \"Mash temp6\" , \"Value\": mashtemp[5] } ,\n{ \"Name\": \"Mash time1\" , \"Value\": time_convert(mashtime[0]) } ,\n{ \"Name\": \"Mash time2\" , \"Value\": time_convert(mashtime[1]) } ,\n{ \"Name\": \"Mash time3\" , \"Value\": time_convert(mashtime[2]) } ,\n{ \"Name\": \"Mash time4\" , \"Value\": time_convert(mashtime[3]) } ,\n{ \"Name\": \"Mash time5\" , \"Value\": time_convert(mashtime[4]) } ,\n{ \"Name\": \"Hop time0\" , \"Value\": time_convert(boilhoptime[0]) } ,\n{ \"Name\": \"Hop time1\" , \"Value\": time_convert(boilhoptime[1]) } ,\n{ \"Name\": \"Hop time2\" , \"Value\": time_convert(boilhoptime[2]) } ,\n{ \"Name\": \"Hop time3\" , \"Value\": time_convert(boilhoptime[3]) } ,\n{ \"Name\": \"Hop time4\" , \"Value\": time_convert(boilhoptime[4]) } ,\n{ \"Name\": \"Hop time5\" , \"Value\": time_convert(boilhoptime[5]) } ,\n{ \"Name\": \"Hop time6\" , \"Value\": time_convert(boilhoptime[6]) } ,\n{ \"Name\": \"Hop time7\" , \"Value\": time_convert(boilhoptime[7]) } ,\n{ \"Name\": \"Hop time8\" , \"Value\": time_convert(boilhoptime[8]) } ,\n{ \"Name\": \"Hop time9\" , \"Value\": time_convert(boilhoptime[9]) } ,\n{ \"Name\": \"Boilhopname0\" , \"Value\": boilhopname[0] } ,\n{ \"Name\": \"Boilhopname1\" , \"Value\": boilhopname[1] } ,\n{ \"Name\": \"Boilhopname2\" , \"Value\": boilhopname[2] } ,\n{ \"Name\": \"Boilhopname3\" , \"Value\": boilhopname[3] } ,\n{ \"Name\": \"Boilhopname4\" , \"Value\": boilhopname[4] } ,\n{ \"Name\": \"Boilhopname5\" , \"Value\": boilhopname[5] } ,\n{ \"Name\": \"Boilhopname6\" , \"Value\": boilhopname[6] } ,\n{ \"Name\": \"Boilhopname7\" , \"Value\": boilhopname[7] } ,\n{ \"Name\": \"Boilhopname8\" , \"Value\": boilhopname[8] } ,\n{ \"Name\": \"Boilhopname9\" , \"Value\": boilhopname[9] } ,\n{ \"Name\": \"Boilsteps\" , \"Value\": msg.payload.boilSteps.length } ,\n{ \"Name\": \"Hopstandtime0\" , \"Value\": time_convert(hopstandhoptime[0])},\n//{ \"Name\": \"Hopstandtime1\" , \"Value\": time_convert(hopstandhoptime[1])},\n//{ \"Name\": \"Hopstandtime2\" , \"Value\": time_convert(hopstandhoptime[2])},\n//{ \"Name\": \"Hopstandtime3\" , \"Value\": time_convert(hopstandhoptime[3])},\n//{ \"Name\": \"Hopstandtime4\" , \"Value\": time_convert(hopstandhoptime[4])},\n{ \"Name\": \"Hopstandhopname0\" , \"Value\": hopstandhopname[0]},//String(hopstandhopamount[0]) +\"g\" +\" \" +String(hopstandhopname[0]) } ,\n//{ \"Name\": \"Hopstandhopname2\" , \"Value\": hopstandhopname[1]},//String(hopstandhopamount[1]) +\"g\" +\" \" +String(hopstandhopname[1]) } ,\n//{ \"Name\": \"Hopstandhopname3\" , \"Value\": hopstandhopname[2]},//String(hopstandhopamount[2]) +\"g\" +\" \" +String(hopstandhopname[2]) } ,\n//{ \"Name\": \"Hopstandhopname4\" , \"Value\": hopstandhopname[3]},//String(hopstandhopamount[3]) +\"g\" +\" \" +String(hopstandhopname[3]) } ,\n//{ \"Name\": \"Hopstandhopname5\" , \"Value\": hopstandhopname[4]},//String(hopstandhopamount[4]) +\"g\" +\" \" +String(hopstandhopname[4]) } ,\n{ \"Name\": \"Hopstand\" , \"Value\": hopstand } ,\n{ \"Name\": \"Boil time\" , \"Value\": time_convert(msg. payload.recipe.boilTime) } ,\n{ \"Name\": \"Hopstand temp\" , \"Value\": hopstandtemp } ,\n{ \"Name\": \"First wort\" , \"Value\": firstwort } ,\n{ \"Name\": \"Firstwortname\" , \"Value\": firstworthopname[0] } ,\n{ \"Name\": \"Status\" , \"Value\": new Date().toDateString()+\" \"+new Date().getHours()+\":\"+new Date().getMinutes()+\" \" +\"#\"+msg.topic+\" \"+msg.payload.recipe.name }\n\n];\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":660,"y":60,"wires":[["c1fd8caf.51cb2"]]},{"id":"c1fd8caf.51cb2","type":"http request","z":"9b4dbc77.3dc54","name":"","method":"PUT","ret":"txt","paytoqs":"ignore","url":"http://192.168.88.51:8000/globals","tls":"","persist":false,"proxy":"","authType":"","x":870,"y":60,"wires":[[]]},{"id":"4f5df3fb.e58f6c","type":"http response","z":"9b4dbc77.3dc54","name":"","statusCode":"200","headers":{},"x":300,"y":100,"wires":[]},{"id":"33fc917b.85563e","type":"key-value-write","z":"9b4dbc77.3dc54","store":"eb1127af.550128","action":"set","key":"","keyvalue":"","name":"","x":510,"y":60,"wires":[["733a50b8.48292","36feaf79.b1c76"]]},{"id":"50c06659.71b498","type":"change","z":"9b4dbc77.3dc54","name":"set batchnumber","rules":[{"t":"set","p":"topic","pt":"msg","to":"$string(payload.batchNo)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":60,"wires":[["33fc917b.85563e"]]},{"id":"4ac47708.2b8e38","type":"debug","z":"9b4dbc77.3dc54","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":310,"y":140,"wires":[]},{"id":"36feaf79.b1c76","type":"function","z":"9b4dbc77.3dc54","name":"recipe","func":"var mash=[];\nvar mashtime=[];\n\nfor( i=0;i<msg.payload.recipe.mash.steps.length;i++){\nmash.push(msg.payload.recipe.mash.steps[i].type+\" - \"+msg.payload.recipe.mash.steps[i].stepTemp+\" °C\"+\" - \"+msg.payload.recipe.mash.steps[i].stepTime+\" min\")\nmashtime.push(msg.payload.recipe.mash.steps[i].stepTime)\n//mashtime += msg.payload.recipe.mash.steps[i].stepTime\n}\n\nvar mashtime2=0;\nfor( i=0;i<mashtime.length;i++){\nmashtime2 = mashtime2+ parseInt(mashtime[i])\n}\n\n\nmash.unshift(\"Strike temp - \"+msg.payload.recipe.data.strikeTemp+\" °C\")\nmash.unshift(\"Mash total time \"+mashtime2+\" min\"+\"\\n\")\nmash = mash.join(\"\\n\")\n\n\n\nvar hops=[];\n\nhops.push(\"Hops (\"+msg.payload.recipe.hopsTotalAmount+\"g)\"+\"\\n\")\n\nfor( i=0;i<msg.payload.recipe.hops.length;i++){\nhops.push(msg.payload.recipe.hops[i].amount+\n\"g \"+\"(\"+msg.payload.recipe.hops[i].ibu\n+\" IBU) \"+\"- \"+msg.payload.recipe.hops[i].name+\" \"+\nmsg.payload.recipe.hops[i].alpha+\" % \"+\" - \"+\nmsg.payload.recipe.hops[i].use+\" - \"+\nmsg.payload.recipe.hops[i].time+\" min\")\n} \nhops = hops.join(\"\\n\")\n\n\nvar malt=[];\n\nmalt.push(\"Malts (\"+msg.payload.recipe.fermentablesTotalAmount+\"kg)\"+\"\\n\")\n\nfor( i=0;i<msg.payload.recipe.fermentables.length;i++){\nmalt.push(msg.payload.recipe.fermentables[i].amount+\n\"kg \"+\"(\"+msg.payload.recipe.fermentables[i].percentage\n+\"%) \"+\"- \"+msg.payload.recipe.fermentables[i].name+\" \"+\n\" - \"+\nmsg.payload.recipe.fermentables[i].type+\" - \"+\nMath.round(msg.payload.recipe.fermentables[i].color*2)+\" EBC\")\n} \n\nmalt = malt.join(\"\\n\")\n\n\n\nmsg.payload = {\"Name\":\"Recipe\", \"Value\":mash + \"\\n\" + \"\\n\" +\"\\n\"+ malt +\"\\n\"+ \"\\n\" + \"\\n\" + hops}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":650,"y":100,"wires":[["94e3ff33.ef4df"]]},{"id":"94e3ff33.ef4df","type":"http request","z":"9b4dbc77.3dc54","name":"","method":"PUT","ret":"txt","paytoqs":"ignore","url":"http://192.168.88.51:8000/global/Recipe","tls":"","persist":false,"proxy":"","authType":"","x":870,"y":100,"wires":[[]]},{"id":"ee907d.30e8bf8","type":"function","z":"6dc4c6ac.83d2b8","name":"heat/cool","func":"\n/* A function designed to be used with node-red-contrib-pid in applications where both\n * heating and cooling are available to control the system.\n * The node is given a power value in msg.payload in the range 0 to 1, such as is produced by \n * node-red-contrib-pid and splits this into a heat power (o/p 1) and cool power (o/p 2) where\n * each is in the range 0 to 1. These can then be fed directly into an output device, if this\n * is continuously variable, or they may be passed to node-red-contrib-timeprop nodes to generate\n * time proportioned on/off outputs.\n * There are two particular issues to be dealt with in a heat/cool application. Firstly is the fact\n * that the cooling device may be more or less powerful than the heating device. It is necessary\n * therefore to be able to adjust the gain of the system separately for heating and cooling. Secondly\n * is the highly non-linear response of some devices, notably refrigerant systems, that can have a\n * large effect initially, then this tails off. To compensate for this it is useful to have an \n * overlap range where both heat and cool are slightly on.\n *\n * To allow for these requirements two variables can be set below. The value of the power input value\n * where the heating starts to come on is determined by the variable heatMin. Above this value the\n * heating will rise till it is fully on with an input of 1.\n * The cooling is fully on when value of the power input is 0, and falls till the cooling is fully\n * off at an input of coolMin.\n *\n * If the heating and cooling systems are of similar power then set heatMin and coolMin both to 0.5\n * in which case input values of 0.5 to 1.0 will map to heating outputs of 0.0 to 1.0,\n * and 0.5 down to 0.0 will map to cooling 0.0 to 1.0.\n * If, for example, the cooling system is more powerful than heating then they can both be set\n * to something like 0.7 which increases the gain in the heating region and reduces it\n * in the cooling region, to compensate for the different powers in the heating/cooling systems.\n * If some overlap is desired (so that both heat and cool are on slightly near the crossover\n * point) then overlap the two settings so that, for example, heatMin might be 0.45 and coolMin\n * might be 0.55\n */\n\nflow.set(String(msg.topic), Math. round(msg.payload*100))\n \n// set these as described above\nvar heatMin = 0.5; // the value of input corresponding to 0 heat o/p\nvar coolMin = 0.5; // the value of input corresponding to 0 cool o/p\n \nvar power = msg.payload;\nvar heat = (power - heatMin)/(1 - heatMin);\n// limit to range 0 to 1\nheat = Math.min(Math.max(heat, 0), 1);\nvar cool = (coolMin - power) / coolMin;\n// limit to range 0 to 1\ncool = Math.min(Math.max(cool, 0), 1);\n\nmsg.payload = [{payload: heat}, {payload: cool}];\nreturn msg;\n","outputs":2,"noerr":0,"x":2440,"y":20,"wires":[[],[]]},{"id":"c64ede7c.d3a6a","type":"link in","z":"6dc4c6ac.83d2b8","name":"","links":["54c14458.59eedc"],"x":1195,"y":60,"wires":[["f3cf8f49.ca6148"]]},{"id":"f3cf8f49.ca6148","type":"switch","z":"6dc4c6ac.83d2b8","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"201","vt":"str"},{"t":"eq","v":"400","vt":"str"},{"t":"eq","v":"403","vt":"str"},{"t":"eq","v":"401","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":1290,"y":60,"wires":[[],["5f910074.b2cd5"],["c40106fe.e9f4f8"],["f693c4ca.614538"]]},{"id":"9ea49dd0.d8d0f","type":"modbus-flex-write","z":"6dc4c6ac.83d2b8","name":"Digtal Out","showStatusActivities":false,"showErrors":false,"server":"6b19cfc5.22db6","emptyMsgOnFail":false,"keepMsgProperties":false,"x":420,"y":100,"wires":[[],["19d7aed0.bf3471"]]},{"id":"19d7aed0.bf3471","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":610,"y":120,"wires":[]},{"id":"3252e5ba.b8baaa","type":"function","z":"6dc4c6ac.83d2b8","name":"Send DO","func":"\nvar outp =[];\nvar portrange = 500\nvar totaloutputs = 16\n\nfor (var i = 0; i < totaloutputs; i++) {\n if (flow.get(String(i+portrange)+\"output\")=== 1) {\n outp.push(true)\n }\n else {\n outp.push(false)\n }\n}\n\n\nmsg.payload = {value: outp,\n'fc': 15, 'unitid': 5, 'address':0, 'quantity':totaloutputs}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":100,"wires":[[]]},{"id":"8b0d17c5.4c89e8","type":"inject","z":"6dc4c6ac.83d2b8","name":"","repeat":"1800","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":100,"wires":[["3252e5ba.b8baaa"]]},{"id":"d1577588.219748","type":"modbus-read","z":"6dc4c6ac.83d2b8","name":"Analog in 200","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"2","dataType":"HoldingRegister","adr":"0","quantity":"8","rate":"550","rateUnit":"ms","delayOnStart":false,"startDelayTime":"","server":"6b19cfc5.22db6","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":110,"y":420,"wires":[["c7df38bb.734a58"],["94c5e696.973048"]]},{"id":"94c5e696.973048","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":310,"y":460,"wires":[]},{"id":"c7df38bb.734a58","type":"function","z":"6dc4c6ac.83d2b8","name":"Split input","func":"var inp = msg.payload\nvar portrange = 200\n\nfor (i = 0; i < inp.length; i++) {\n msg.payload = inp[i]\n msg.topic = i + portrange\n node.send(msg)\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":420,"wires":[["d4b673dd.9ea8f"]]},{"id":"1576aecb.071c91","type":"modbus-read","z":"6dc4c6ac.83d2b8","name":"PT100 400","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"4","dataType":"HoldingRegister","adr":"32","quantity":"8","rate":"500","rateUnit":"ms","delayOnStart":true,"startDelayTime":"2","server":"6b19cfc5.22db6","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":100,"y":340,"wires":[["5b45ed60.785ca4"],["d39ee7c3.e24438"]]},{"id":"d39ee7c3.e24438","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":310,"y":360,"wires":[]},{"id":"5b45ed60.785ca4","type":"function","z":"6dc4c6ac.83d2b8","name":"Split input","func":"var inp = msg.payload\nvar portrange = 400\n\nfor (i = 0; i < inp.length; i++) {\n msg.payload = inp[i]\n msg.topic = i + portrange\n node.send(msg)\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":320,"wires":[["aca07636.8cbe28"]]},{"id":"d8d01682.693928","type":"link out","z":"6dc4c6ac.83d2b8","name":"","links":["cc96708e.f3e01"],"x":535,"y":420,"wires":[]},{"id":"aca07636.8cbe28","type":"link out","z":"6dc4c6ac.83d2b8","name":"","links":["cc96708e.f3e01"],"x":395,"y":320,"wires":[]},{"id":"e7f85caf.89fd3","type":"modbus-read","z":"6dc4c6ac.83d2b8","name":"Analog out 300","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"3","dataType":"HoldingRegister","adr":"48","quantity":"8","rate":"600","rateUnit":"ms","delayOnStart":false,"startDelayTime":"","server":"6b19cfc5.22db6","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":120,"y":180,"wires":[["63e8643.e2cbe9c"],["3024065a.219fea"]]},{"id":"3024065a.219fea","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":310,"y":220,"wires":[]},{"id":"87e63099.e5e5f","type":"inject","z":"6dc4c6ac.83d2b8","name":"","repeat":"0.8","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":260,"wires":[["66f9125d.86c96c"]]},{"id":"fd22355f.c4de68","type":"modbus-flex-write","z":"6dc4c6ac.83d2b8","name":"Analog output","showStatusActivities":false,"showErrors":false,"server":"6b19cfc5.22db6","emptyMsgOnFail":false,"keepMsgProperties":false,"x":440,"y":280,"wires":[[],["bf86632f.4356b"]]},{"id":"bf86632f.4356b","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":630,"y":300,"wires":[]},{"id":"63e8643.e2cbe9c","type":"function","z":"6dc4c6ac.83d2b8","name":"Split input","func":"var inp = msg.payload\nvar portrange = 300\n\nfor (i = 0; i < inp.length; i++) {\n msg.payload = inp[i]\n msg.payload = (msg.payload / 4095) * 255\n msg.payload = Math.round(msg.payload)\n msg.topic = i + portrange\n //flow.set(String(msg.topic), msg.payload) //måtte fjerne for den overskrev med gammel verdi\n node.send(msg)\n}\n","outputs":1,"noerr":0,"x":280,"y":180,"wires":[[]]},{"id":"66f9125d.86c96c","type":"function","z":"6dc4c6ac.83d2b8","name":"Send AO","func":"\nvar outp =[];\nvar portrange = 300\nvar totaloutputs = 8\n\nfor (var i = 0; i < totaloutputs; i++) {\n if (isNaN(flow.get(String(i+portrange)+\"output\")) === false) {\n var a = (flow.get(String(i+portrange)+\"output\")/255)*4095\n a= Math.round(a)\n outp.push(a)\n }\n else {\n outp.push(0)\n }\n}\n\n\nmsg.payload = {value: outp,\n'fc': 16, 'unitid': 3, 'address':48, 'quantity':totaloutputs}\n\nreturn msg;","outputs":1,"noerr":0,"x":280,"y":280,"wires":[["fd22355f.c4de68"]]},{"id":"c6839720.edfc38","type":"function","z":"6dc4c6ac.83d2b8","name":"parse","func":"node.status({fill:\"green\",shape:\"dot\",text:\"connected\"});\n\nvar inp = msg.payload\nvar s =[];\nvar u = [];\nvar r = [];\nvar d = [];\nvar out = {};\n\nconst numberSorter = (([a, b], [c, d]) => a - c || d - b);\n\nif (inp.indexOf('!') != -1 || inp.indexOf('?') != -1 || inp.indexOf('/') != -1 ) {\n inp = inp.split(/(?=[?!;/])/g)\n\n for (var i = 0; i < inp.length; i++) {\n if (inp[i].indexOf('!') != -1) {\n inp[i] = inp[i].slice(inp[i].indexOf('!')+1)\n u.push (inp[i])\n }\n if (inp[i].indexOf('?') != -1) {\n inp[i] = inp[i].slice(inp[i].indexOf('?')+1)\n s.push (inp[i])\n }\n if (inp[i].indexOf('/') != -1) {\n inp[i] = inp[i].slice(inp[i].indexOf('/')+1)\n r.push (inp[i]+\",\"+\"99\")\n d.push (inp[i])\n }\n } \n\n for (i = 0; i < u.length; i++) {\n u[i] = u[i].split(\",\").map(Number);\n }\n for (i = 0; i < r.length; i++) {\n r[i] = r[i].split(\",\").map(Number);\n \n }\n for (i = 0; i < s.length; i++) {\n s[i] = s[i].split(\",\").map(Number);\n }\nu.sort(numberSorter)\n if (u.length > 0 ) {\n node.send([{payload:u}, null])\n }\nr.sort(numberSorter)\n if (r.length > 0 ) {\n //for (i = 0; i < r.length; i++) {\n \n out = r\n node.send([{payload:out}, null])\n }\ns.sort(numberSorter)\nsetTimeout(reply, 200);\n\n} else {\n if (inp.indexOf('*') != -1) {\n out = \"*;\"\n node.send([null, {payload: out}])\n }\n}\n\nfunction reply() {\n for (i = 0; i < s.length; i++) {\n if (isNaN(flow.get(String(s[i]))) === false) {\n s[i] = \"?\" + s[i] + \"=\" + flow.get(String(s[i]))\n }\n else {\n s[i] = \"?\" + s[i]\n }\n }\n\n for ( i = 0; i < u.length; i++) {\n u[i] = \"!\" + u[i]\n }\n for ( i = 0; i < d.length; i++) {\n d[i] = \"/\" + d[i]\n }\n\n u = u.join('')\n s = s.join('')\n out = s+u+d+\";\"\n node.send([null, {payload: out}])\n}\n\n\nmsg.topic = \"tick\"\nmsg.payload = Date.now()\nreturn [ msg, null];\n \n \n\n","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":190,"y":720,"wires":[["197116ed.5a3f49"],["bea6c539.232428"]]},{"id":"197116ed.5a3f49","type":"function","z":"6dc4c6ac.83d2b8","name":"config","func":"\nvar u = msg.payload || []\nvar dcpins = flow.get(\"dcpins\") || []\nvar deadTime = 400; // number of milliseconds the valve (or whatever) takes to actuate, 30 seconds\nvar invert = false; \n\ndcpins = Array.from(new Set(dcpins))\ndcpins.sort(function(a, b){return a-b});\n\nfor (var i = 0; i < u.length; i++) {\n var config = u[i][1]\n var pin = u[i][0]\n \n if (config === 1) { //digital out\n flow.set(String(pin)+\"config\", config)\n msg.topic = pin\n msg.payload = u[i][2]\n flow.set(String(msg.topic), msg.payload) //store digital input to pick it up by modbus\n node.send(msg);\n }\n\n if (config === 4) { //dutycycle\n flow.set(String(pin)+\"config\", config)\n flow.set(String(pin)+\"dcpower\", u[i][2]/100)\n flow.set(String(pin)+\"dctime\", u[i][3])\n dcpins.push(u[i][0]);\n }\n \n if (config === 5) { //hysteresis\n flow.set(String(pin)+\"config\", config)\n flow.set(String(u[i][2])+\"config\", config)\n flow.set(String(pin)+\"pin\", u[i][2])\n flow.set(String(pin)+\"setpoint\", u[i][3])\n flow.set(String(pin)+\"setpoint2\", u[i][4])\n flow.set(String(u[i][2])+\"pin\", pin)\n var cooling\n if (u[i][3] < u[i][4]) {\n cooling = true\n } else {\n cooling = false\n }\n flow.set(String(pin)+\"cooling\", cooling)\n flow.set(String(pin)+\"delay\", u[i][5]*1000)\n }\n\n if (config == 6 ) { //PID\n flow.set(String(pin)+\"config\", config)\n flow.set(String(u[i][2])+\"config\", config)\n flow.set(String(u[i][2])+\"pin\", pin)\n flow.set(String(pin)+\"pin\", u[i][2])\n flow.set(String(pin)+\"pid\", u[i][2])\n flow.set(String(pin)+\"setpoint\", u[i][3])\n flow.set(String(pin)+\"prop_band\", u[i][4])// /100) //deler ikke på 100 siden temp ikke deles på 100\n flow.set(String(pin)+\"t_integral\", u[i][5]/100) //deler ikke på 100 siden temp ikke deles på 100\n flow.set(String(pin)+\"t_derivative\", u[i][6]/100) //deler ikke på 100 siden temp ikke deles på 100\n flow.set(String(pin)+\"direction\", u[i][7])\n flow.set(String(pin)+\"calctime\", u[i][8]*1000)\n flow.set(String(pin)+\"outtime\", u[i][9])\n flow.set(String(pin)+\"maxout\", u[i][11])\n msg.payload = [u[i][0],u[i][1],u[i][2],u[i][3],u[i][4],u[i][5],u[i][6],u[i][7],u[i][8],u[i][9],u[i][10],u[i][11]]//flow.get(String(u[i][2]))\n msg.topic = u[i][0]\n msg.enable = 1\n node.send(msg)\n }\n \n if (config === 7) { //pwm\n flow.set(String(pin)+\"config\", config)\n flow.set(String(pin), u[i][2])\n msg.topic = pin\n //msg.payload = flow.get(String(pin))\n msg.payload = u[i][2]\n flow.set(String(msg.topic)+\"output\", msg.payload)\n //flow.set(String(msg.topic), msg.payload)\n node.send(msg);\n }\n if (config === 8) { //analoginput\n flow.set(String(pin)+\"pollrate\", u[i][2])\n flow.set(String(pin)+\"awgweight\", u[i][3])\n msg.topic = pin\n msg.payload = [pin, 8, u[i][2], u[i][3]]\n node.send(msg);\n }\n if (config === 99) { //disabled\n previousconfig = flow.get(String(pin)+\"config\") || 0\n flow.set(String(pin)+\"config\", config)\n \n if (previousconfig === 1) {\n msg.topic = pin\n msg.payload = 0\n flow.set(String(msg.topic)+\"output\", msg.payload)\n node.send(msg)\n }\n if (previousconfig === 4) {\n for (i = 0; i < flow.get(\"dcpins\").length; i++) {\n \n if (pin === dcpins[i]) {\n dcpins.splice([i], 1)\n flow.set(String(pin)+\"dcdisabled\", true)\n msg.topic = pin\n msg.payload = 0\n node.send(msg)\n }\n }\n flow.set(String(pin)+\"config\", 99)\n flow.set(String(pin)+\"dcpower\", 0)\n flow.set(String(pin)+\"dctime\", 0)\n }\n \n if (previousconfig === 5) { //hysteresis\n flow.set(String(pin)+\"config\", config)\n //flow.set(String(pin)+\"pin\", 0)\n flow.set(String(pin)+\"setpoint\", 0)\n flow.set(String(pin)+\"setpoint2\", 0)\n flow.set(String(pin)+\"ondelay\", 0)\n msg.topic = pin\n msg.payload = 0\n node.send(msg);\n }\n \n \n if (previousconfig === 6) {\n flow.set(String(pin)+\"config\", 99)\n flow.set(String(u[i][2])+\"config\", 0)\n flow.set(String(u[i][2])+\"pin\", 0)\n flow.set(String(pin)+\"pin\", 0)\n flow.set(String(pin)+\"pid\", 0)\n flow.set(String(pin)+\"setpoint\", 0)\n flow.set(String(pin)+\"prop_band\", 0)\n flow.set(String(pin)+\"t_integral\", 0)\n flow.set(String(pin)+\"t_derivative\",0)\n flow.set(String(pin)+\"direction\", 0)\n flow.set(String(pin)+\"calctime\", 0)\n flow.set(String(pin)+\"outtime\", 0)\n flow.set(String(pin)+\"maxout\", 0)\n msg.topic = pin\n msg.enable = 0\n msg.payload = [msg.payload[0][0], msg.payload[0][1]]\n node.send(msg)\n }\n if (previousconfig === 7) { //pwm\n flow.set(String(pin)+\"config\", 99)\n flow.set(String(pin)+\"output\", 0)\n msg.topic = pin\n msg.payload = flow.get(String(pin))\n node.send(msg);\n }\n if (previousconfig === 8) { //analoginput\n flow.set(String(pin)+\"pollrate\", 0)\n flow.set(String(pin)+\"awgweight\", 0)\n }\n }\n}\n\ndcpins = Array.from(new Set(dcpins))\ndcpins.sort(function(a, b){return a-b});\n\nif (dcpins !== flow.get(\"dcpins\")) {\n flow.set(\"dcpins\", dcpins)\n}\n\nif (msg.topic === \"tick\") {\n for (i = 0; i < dcpins.length; i++) {\n msg.topic = dcpins[i]\n var power = flow.get(String(dcpins[i])+\"dcpower\");\n var dctime = flow.get(String(dcpins[i])+\"dctime\");\n var inn = msg.payload\n // yes, payload is timestamp, calc current wave value between 0 and 1\n var wave = inn % dctime/dctime; // fraction of way through cycle\n var direction;\n // determine direction of travel and convert to triangular wave\n if (wave < 0.5) {\n direction = 1; // on the way up\n wave = wave*2;\n } else {\n direction = -1; // on the way down\n wave = (1 - wave)*2;\n }\n var requestedPower = power || 0;\n // if a dead_time has been supplied for this o/p then adjust power accordingly\n if (deadTime > 0 && requestedPower > 0.0 && requestedPower < 1.0) {\n var dtop = deadTime/dctime;\n power = (1.0-2.0*dtop)*requestedPower + dtop;\n } else {\n power = requestedPower;\n }\n // cope with end cases in case values outside 0..1\n var opState;\n if (power <= 0.0) {\n opState = 0; // no heat\n } else if (power >= 1.0) {\n opState = 1; // full heat\n } else {\n // only allow power to come on on the way down and off on the way up, to reduce short pulses\n if (power >= wave && direction === -1) {\n opState = 1;\n } else if (power <= wave && direction === 1) {\n opState = 0;\n } else {\n // otherwise leave it as it is\n opState = flow.get(String(dcpins[i])+'opState') || 0;\n } \n }\n flow.set(String(dcpins[i])+'opState', opState);\n \n var out = invert ? (1-opState) : opState;\n if ((out !== flow.get(String(dcpins[i])+\"previousout\")) || (flow.get(String(dcpins[i])+\"dcdisabled\") === true)) {\n flow.set(String(dcpins[i])+\"previousout\", out)\n flow.set(String(dcpins[i])+\"dcdisabled\", false)\n flow.set(String(dcpins[i]), out)\n msg.payload = out\n msg.topic = dcpins[i]\n node.send(msg)\n }\n}\n}\n\n \n\n\n\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":700,"wires":[["71ed0fc1.2674d"]]},{"id":"3ba727c9.6fecc8","type":"tcp in","z":"6dc4c6ac.83d2b8","name":"","server":"server","host":"","port":"5000","datamode":"stream","datatype":"utf8","newline":"","topic":"","base64":false,"x":60,"y":680,"wires":[["c6839720.edfc38"]]},{"id":"bea6c539.232428","type":"tcp out","z":"6dc4c6ac.83d2b8","host":"","port":"","beserver":"reply","base64":false,"end":false,"name":"","x":330,"y":740,"wires":[]},{"id":"60db6701.40c848","type":"switch","z":"6dc4c6ac.83d2b8","name":"out","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":110,"y":900,"wires":[["5f2d18d0.00d1e8"],["757e1e02.3305"],["121642e847bfd7dd"],["f47dd964c8710c04"],["b66b8299098497d9"],["126ae6133c285ca6"]]},{"id":"645492c.c0dd96c","type":"function","z":"6dc4c6ac.83d2b8","name":"input","func":"if (typeof(msg.payload) !== \"undefined\") {\n\n var pin = msg.topic;\n var value = msg.payload;\n flow.set(String(pin),value)\n\n if (flow.get(String(pin)+\"config\") === 5 && pin >= 100 ){ //hysteresis\n var outpin = flow.get(String(pin)+\"pin\") || 0\n var setpoint = flow.get(String(outpin)+\"setpoint\") || 0\n var setpoint2 = flow.get(String(outpin)+\"setpoint2\") || 0\n var config = flow.get(String(outpin)+\"config\") || 99\n var cooling = flow.get(String(outpin)+\"cooling\") || false\n var delay = flow.get(String(outpin)+\"delay\")\n var out = flow.get(String(outpin)+\"out\")\n \n \n if (value < setpoint) {\n if (cooling === true) {\n out = false\n } else {\n out = true\n }\n }\n if (value > setpoint2) {\n if (cooling === true) {\n out = true\n } else {\n out = false\n }\n }\n \n if (value === -12700) {\n out = false\n }\n \n if (config == 99) {\n out = false\n }\n if (out !== flow.get(String(outpin)+\"out\")) {\n flow.set(String(outpin)+\"out\", out)\n if (out === false) {\n context.set(String(outpin)+\"status\", Number(out))\n msg.topic = outpin\n msg.payload = Number(flow.get(String(outpin)+\"out\"))\n node.send(msg);\n }\n \n if (out === true && config !== 99 && value !== -12700) {\n setTimeout(start, delay)\n }\n }\n setTimeout(mismatch, 2000)\n}\n//PID\n if (flow.get(String(pin)+\"config\") === 6) {\n outpin = flow.get(String(pin)+\"pin\") || 0\n //var config = flow.get(String(outpin)+\"config\") || 99\n var pidsetpoint = flow.get(String(outpin)+\"setpoint\");\n var prop_band = flow.get(String(outpin)+\"prop_band\");\n var t_integral = flow.get(String(outpin)+\"t_integral\");\n var t_derivative = flow.get(String(outpin)+\"t_derivative\");\n \n if (flow.get(String(outpin)+\"config\") === 99 || flow.get(String(pin)) === -12700) {\n msg.topic = pin\n var maxout = flow.get(String(pin)+\"maxout\");\n flow.set(String(pin)+\"oldmaxout\", maxout)\n flow.set(String(pin)+\"maxout\", 0)\n msg.enable = 0\n msg.disabled_op = 0\n node.send(msg)\n }\n \n else {\n var oldmaxout = flow.get(String(pin)+\"oldmaxout\");\n flow.set(String(pin)+\"maxout\", oldmaxout)\n msg.enable = 1\n msg.topic = pin\n msg.payload = flow.get(String(pin))\n msg.setpoint = pidsetpoint\n msg.prop_band = prop_band\n msg.t_integral = t_integral\n msg.t_derivative = t_derivative\n node.send(msg)\n }\n }\n}\n\nfunction start() {\n if (config !== 99 && value !== -12700) {\n context.set(String(outpin)+\"status\", Number(flow.get(String(outpin)+\"out\")))\n msg.topic = outpin\n msg.payload = Number(flow.get(String(outpin)+\"out\"))\n node.send(msg);\n }\n \n}\n\nfunction mismatch() {\n if (context.get(String(outpin)+\"status\") !== flow.get(String(outpin)) ) {\n context.set(String(outpin)+\"status\", Number(flow.get(String(outpin)+\"out\")))\n if (Number(flow.get(String(outpin)+\"out\")) === 1 && config !== 99 && value !== -12700) {\n setTimeout(start, delay)\n }\n if (Number(flow.get(String(outpin)+\"out\")) === 0) {\n msg.payload = Number(flow.get(String(outpin)+\"out\"))\n msg.topic = outpin\n node.send(msg)\n }\n }\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":660,"wires":[["54c14458.59eedc"]]},{"id":"54c14458.59eedc","type":"link out","z":"6dc4c6ac.83d2b8","name":"input","links":["89ef5759.fc2d28","c64ede7c.d3a6a"],"x":435,"y":660,"wires":[]},{"id":"71ed0fc1.2674d","type":"link out","z":"6dc4c6ac.83d2b8","name":"config","links":["89ef5759.fc2d28"],"x":435,"y":700,"wires":[]},{"id":"89ef5759.fc2d28","type":"link in","z":"6dc4c6ac.83d2b8","name":"outputs","links":["71ed0fc1.2674d","54c14458.59eedc","58d6778.cbf3088","bdc1e45b.bcdfc8"],"x":15,"y":900,"wires":[["60db6701.40c848"]]},{"id":"cc96708e.f3e01","type":"link in","z":"6dc4c6ac.83d2b8","name":"","links":["aca07636.8cbe28","d8d01682.693928","058a5be682d14133"],"x":235,"y":660,"wires":[["645492c.c0dd96c"]]},{"id":"d4b673dd.9ea8f","type":"smooth","z":"6dc4c6ac.83d2b8","name":"","property":"payload","action":"mean","count":"3","round":"0","mult":"multi","reduce":false,"x":420,"y":420,"wires":[["d8d01682.693928"]]},{"id":"7df076f4.d43e18","type":"mqtt out","z":"6dc4c6ac.83d2b8","name":"pump","topic":"shellies/shelly1pm-F26E20/relay/0/command","qos":"0","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":390,"y":860,"wires":[]},{"id":"5f2d18d0.00d1e8","type":"change","z":"6dc4c6ac.83d2b8","name":"pump","rules":[{"t":"set","p":"1","pt":"flow","to":"payload","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"num","to":"on","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"num","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":250,"y":860,"wires":[["7df076f4.d43e18"]]},{"id":"5e629a15.dda714","type":"modbus-read","z":"6dc4c6ac.83d2b8","name":"","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"3","dataType":"HoldingRegister","adr":"73","quantity":"8","rate":"12","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"6b19cfc5.22db6","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":110,"y":480,"wires":[[],["6cfc1ef5.0de64"]]},{"id":"6cfc1ef5.0de64","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":310,"y":520,"wires":[]},{"id":"5f910074.b2cd5","type":"PID","z":"6dc4c6ac.83d2b8","name":"HLT PID","setpoint":21,"pb":"30","ti":9999,"td":0,"integral_default":0.5,"smooth_factor":3,"max_interval":600,"enable":1,"disabled_op":"1","x":1440,"y":40,"wires":[["1149662c.a7120a","16848bdc.516d04"]]},{"id":"1149662c.a7120a","type":"range","z":"6dc4c6ac.83d2b8","minin":"0","maxin":"1","minout":"0","maxout":"255","action":"clamp","round":true,"property":"payload","name":"","x":1600,"y":40,"wires":[["c61a32dd.74e8f"]]},{"id":"5f05482b.317fe8","type":"change","z":"6dc4c6ac.83d2b8","name":"HLT","rules":[{"t":"set","p":"topic","pt":"msg","to":"900","tot":"str"},{"t":"set","p":"900","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1950,"y":40,"wires":[[]]},{"id":"c40106fe.e9f4f8","type":"PID","z":"6dc4c6ac.83d2b8","name":"HEX PID","setpoint":21,"pb":"30","ti":9999,"td":0,"integral_default":0.5,"smooth_factor":3,"max_interval":600,"enable":1,"disabled_op":"1","x":1440,"y":80,"wires":[["4d3e166d.94f338"]]},{"id":"4d3e166d.94f338","type":"range","z":"6dc4c6ac.83d2b8","minin":"0","maxin":"1","minout":"80","maxout":"255","action":"clamp","round":true,"property":"payload","name":"","x":1600,"y":120,"wires":[["e01e72d2.622f2"]]},{"id":"e01e72d2.622f2","type":"change","z":"6dc4c6ac.83d2b8","name":"HEX","rules":[{"t":"set","p":"topic","pt":"msg","to":"903","tot":"str"},{"t":"set","p":"903","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1770,"y":120,"wires":[[]]},{"id":"9bacad6a.05f94","type":"tibber-feed","z":"6dc4c6ac.83d2b8","name":"","active":true,"apiEndpointRef":"ab8b853c1beb57d4","homeId":"990d8d6c-38d9-4cf5-970c-98f1c241685c","timestamp":"1","power":"1","lastMeterConsumption":"1","accumulatedConsumption":"1","accumulatedProduction":"1","accumulatedConsumptionLastHour":false,"accumulatedProductionLastHour":false,"accumulatedCost":"1","accumulatedReward":"1","currency":"1","minPower":"1","averagePower":"1","maxPower":"1","powerProduction":"1","minPowerProduction":"1","maxPowerProduction":"1","lastMeterProduction":"1","powerFactor":"1","voltagePhase1":"1","voltagePhase2":"1","voltagePhase3":"1","currentL1":"1","currentL2":"1","currentL3":"1","signalStrength":"1","x":1180,"y":220,"wires":[["b0af1da6.9339f","fa6b8706.2b6a98","9bac8398.3689c","050a1185dcffd1aa"]]},{"id":"411423a9.bcbcfc","type":"modbus-read","z":"6dc4c6ac.83d2b8","name":"HLT pwr","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"6","dataType":"HoldingRegister","adr":"0","quantity":"7","rate":"2000","rateUnit":"ms","delayOnStart":false,"startDelayTime":"","server":"6b19cfc5.22db6","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":1300,"y":480,"wires":[["7195be0f.67783"],["dcf9e8c3.3572d8"]]},{"id":"dcf9e8c3.3572d8","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":1510,"y":540,"wires":[]},{"id":"e6bd1472.5cdf18","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":1510,"y":640,"wires":[]},{"id":"1a0c95d7.23173a","type":"modbus-read","z":"6dc4c6ac.83d2b8","name":"BKL pwr","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"7","dataType":"HoldingRegister","adr":"0","quantity":"7","rate":"2000","rateUnit":"ms","delayOnStart":false,"startDelayTime":"","server":"6b19cfc5.22db6","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":1300,"y":580,"wires":[["c6abc6b6.0660a8"],["e6bd1472.5cdf18"]]},{"id":"f693c4ca.614538","type":"PID","z":"6dc4c6ac.83d2b8","name":"BKL PID","setpoint":21,"pb":"30","ti":9999,"td":0,"integral_default":0.5,"smooth_factor":3,"max_interval":600,"enable":1,"disabled_op":"1","x":1440,"y":160,"wires":[["beed8af.3ef1578","5f54025e.93f64c"]]},{"id":"beed8af.3ef1578","type":"range","z":"6dc4c6ac.83d2b8","minin":"0","maxin":"1","minout":"0","maxout":"255","action":"clamp","round":true,"property":"payload","name":"","x":1600,"y":160,"wires":[["6b3ccf44.6622c"]]},{"id":"14d2b00.609a25","type":"change","z":"6dc4c6ac.83d2b8","name":"BKL","rules":[{"t":"set","p":"topic","pt":"msg","to":"902","tot":"str"},{"t":"set","p":"902","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1930,"y":160,"wires":[[]]},{"id":"5f54025e.93f64c","type":"change","z":"6dc4c6ac.83d2b8","name":"BKL heater","rules":[{"t":"set","p":"payload","pt":"msg","to":"305","tot":"flow"},{"t":"set","p":"topic","pt":"msg","to":"305","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1610,"y":200,"wires":[["a9847231.8d22e"]]},{"id":"db709550.290338","type":"inject","z":"6dc4c6ac.83d2b8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","x":1750,"y":700,"wires":[["a69176f2.053fd8","51b8b91c.faa9b8"]]},{"id":"a69176f2.053fd8","type":"modbus-write","z":"6dc4c6ac.83d2b8","name":"start HLT","showStatusActivities":false,"showErrors":false,"unitid":"6","dataType":"HoldingRegister","adr":"50","quantity":"1","server":"6b19cfc5.22db6","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1940,"y":680,"wires":[[],["9554f39f.4a2a6"]]},{"id":"9554f39f.4a2a6","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":2110,"y":680,"wires":[]},{"id":"54643960.d6a648","type":"modbus-write","z":"6dc4c6ac.83d2b8","name":"HLT ceiling","showStatusActivities":false,"showErrors":false,"unitid":"6","dataType":"HoldingRegister","adr":"17","quantity":"1","server":"6b19cfc5.22db6","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1870,"y":280,"wires":[[],["c3b3396a.47f1b8"]]},{"id":"c3b3396a.47f1b8","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":2070,"y":280,"wires":[]},{"id":"16848bdc.516d04","type":"change","z":"6dc4c6ac.83d2b8","name":"HLT heater","rules":[{"t":"set","p":"payload","pt":"msg","to":"304","tot":"flow"},{"t":"set","p":"topic","pt":"msg","to":"304","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1610,"y":80,"wires":[["c76db491.a14df8"]]},{"id":"2a3fb412.eced7c","type":"modbus-write","z":"6dc4c6ac.83d2b8","name":"HLT heater","showStatusActivities":false,"showErrors":false,"unitid":"6","dataType":"HoldingRegister","adr":"11","quantity":"1","server":"6b19cfc5.22db6","emptyMsgOnFail":false,"keepMsgProperties":false,"x":2110,"y":80,"wires":[[],[]]},{"id":"20b123de.89e38c","type":"modbus-write","z":"6dc4c6ac.83d2b8","name":"BKL heater","showStatusActivities":false,"showErrors":false,"unitid":"7","dataType":"HoldingRegister","adr":"11","quantity":"1","server":"6b19cfc5.22db6","emptyMsgOnFail":false,"keepMsgProperties":false,"x":2110,"y":200,"wires":[[],[]]},{"id":"a9847231.8d22e","type":"range","z":"6dc4c6ac.83d2b8","minin":"0","maxin":"255","minout":"0","maxout":"1000","action":"clamp","round":true,"property":"payload","name":"","x":1780,"y":200,"wires":[["bb2afcc0.98bf4"]]},{"id":"c76db491.a14df8","type":"range","z":"6dc4c6ac.83d2b8","minin":"0","maxin":"255","minout":"0","maxout":"1000","action":"clamp","round":true,"property":"payload","name":"","x":1780,"y":80,"wires":[["1cf9463a.dec0aa"]]},{"id":"b0af1da6.9339f","type":"function","z":"6dc4c6ac.83d2b8","name":"power","func":"var consumption = msg.payload.power\nvar BKLceiling\nvar HLTelementsize = 6000\nvar BKLelementsize = 4800\nvar maxlimit = 15000\nvar HLTelementusage = (flow.get(\"HLTpower\")/1000)*HLTelementsize\n//var BKLelementusage = (flow.get(\"BKLpower\")/1000)*BKLelementsize\nvar maxusage = consumption + HLTelementsize //+ BKLelementsize\n\nceiling = 100 - (((maxusage - maxlimit - HLTelementusage)/(HLTelementsize))*100)\nceiling\n\nif (ceiling > 100) {\n ceiling = 100\n}\n\nif (ceiling < 0) {\n BKLceiling = Math.round((ceiling*4.5/6) + 100)\n ceiling = 0\n}\nelse {\n BKLceiling = 100\n}\n\nmsg.payload = Math.round(ceiling)\nflow.set(\"HLTceiling\", msg.payload)\nflow.set(\"BKLceiling\", BKLceiling)\nnode.send([null,msg,{payload: BKLceiling}])","outputs":3,"noerr":0,"initialize":"","finalize":"","x":1450,"y":280,"wires":[[],["dc446cea.3d423"],["47bc4111.46caf"]]},{"id":"bb2afcc0.98bf4","type":"rbe","z":"6dc4c6ac.83d2b8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1930,"y":200,"wires":[["20b123de.89e38c"]]},{"id":"1cf9463a.dec0aa","type":"rbe","z":"6dc4c6ac.83d2b8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1950,"y":80,"wires":[["2a3fb412.eced7c"]]},{"id":"7195be0f.67783","type":"function","z":"6dc4c6ac.83d2b8","name":"Store input","func":"flow.set(\"HLTpower\" , msg.payload[1])\nflow.set(\"HLTon\", msg.payload[6])\n//flow.set(\"8\", msg.payload[6])\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1490,"y":500,"wires":[[]]},{"id":"c61a32dd.74e8f","type":"function","z":"6dc4c6ac.83d2b8","name":"","func":"var output = Math.round((msg.payload/255)*100)\n\nif (output > flow.get(\"HLTceiling\")) {\n msg.payload = Math.round((flow.get(\"HLTceiling\")/100)*255) \n}\nreturn msg;","outputs":1,"noerr":0,"x":1770,"y":40,"wires":[["5f05482b.317fe8"]]},{"id":"dc446cea.3d423","type":"delay","z":"6dc4c6ac.83d2b8","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"2","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"outputs":1,"x":1660,"y":280,"wires":[["54643960.d6a648"]]},{"id":"51b8b91c.faa9b8","type":"modbus-write","z":"6dc4c6ac.83d2b8","name":"start BKL","showStatusActivities":false,"showErrors":false,"unitid":"7","dataType":"HoldingRegister","adr":"50","quantity":"1","server":"6b19cfc5.22db6","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1940,"y":740,"wires":[[],["69a7b8c4.1c1418"]]},{"id":"5e5d7b18.bbe0a4","type":"inject","z":"6dc4c6ac.83d2b8","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":1750,"y":740,"wires":[["a69176f2.053fd8","51b8b91c.faa9b8"]]},{"id":"69a7b8c4.1c1418","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":2110,"y":740,"wires":[]},{"id":"47bc4111.46caf","type":"delay","z":"6dc4c6ac.83d2b8","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"2","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"outputs":1,"x":1660,"y":320,"wires":[["379abe16.082212"]]},{"id":"379abe16.082212","type":"modbus-write","z":"6dc4c6ac.83d2b8","name":"BKL ceiling","showStatusActivities":false,"showErrors":false,"unitid":"7","dataType":"HoldingRegister","adr":"17","quantity":"1","server":"6b19cfc5.22db6","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1870,"y":320,"wires":[[],["67432bee.510e04"]]},{"id":"c6abc6b6.0660a8","type":"function","z":"6dc4c6ac.83d2b8","name":"Store input","func":"flow.set(\"BKLpower\" , msg.payload[1])\nflow.set(\"BKLon\", msg.payload[6])\n//flow.set(\"7\", msg.payload[6])\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1490,"y":600,"wires":[[]]},{"id":"6b3ccf44.6622c","type":"function","z":"6dc4c6ac.83d2b8","name":"","func":"var output = Math.round((msg.payload/255)*100)\n\nif (output > flow.get(\"BKLceiling\")) {\n msg.payload = Math.round((flow.get(\"BKLceiling\")/100)*255) \n}\nreturn msg;","outputs":1,"noerr":0,"x":1770,"y":160,"wires":[["14d2b00.609a25"]]},{"id":"67432bee.510e04","type":"modbus-response","z":"6dc4c6ac.83d2b8","name":"","registerShowMax":20,"x":2070,"y":340,"wires":[]},{"id":"6d0a5311.749b7c","type":"delay","z":"6dc4c6ac.83d2b8","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":400,"y":900,"wires":[["2a4b2761.626b68"]]},{"id":"757e1e02.3305","type":"switch","z":"6dc4c6ac.83d2b8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":250,"y":900,"wires":[["6d0a5311.749b7c"]]},{"id":"2a4b2761.626b68","type":"change","z":"6dc4c6ac.83d2b8","name":"Hop alarm","rules":[{"t":"set","p":"2","pt":"flow","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":900,"wires":[[]]},{"id":"f84eaca1.d73d1","type":"influxdb out","z":"6dc4c6ac.83d2b8","influxdb":"8208eb36.6153d8","name":"strømforbruk","measurement":"powerusage","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":1650,"y":360,"wires":[]},{"id":"fa6b8706.2b6a98","type":"change","z":"6dc4c6ac.83d2b8","name":"power","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.power","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1450,"y":320,"wires":[["f84eaca1.d73d1"]]},{"id":"9bac8398.3689c","type":"change","z":"6dc4c6ac.83d2b8","name":"power","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.accumulatedConsumption","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1450,"y":360,"wires":[["631219a4.7fbc18","18df2c66.dd8ee4"]]},{"id":"f2d1d6c8.7c7e68","type":"influxdb out","z":"6dc4c6ac.83d2b8","influxdb":"8208eb36.6153d8","name":"acc strømforbruk","measurement":"accpwr","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":1870,"y":440,"wires":[]},{"id":"e6695e8a.2503f","type":"function","z":"6dc4c6ac.83d2b8","name":"yesterday","func":"\n\ntoday = flow.get(\"today\")\n\nif (msg.payload < today) {\n flow.set(\"yesterday\",today)\n}\n\nflow.set(\"today\", msg.payload)\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1900,"y":400,"wires":[[]]},{"id":"788e2f36.23977","type":"influxdb out","z":"6dc4c6ac.83d2b8","influxdb":"8208eb36.6153d8","name":"yesterday","measurement":"yesterday","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":2420,"y":540,"wires":[]},{"id":"f5643882.7c4cc8","type":"inject","z":"6dc4c6ac.83d2b8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"3600","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":2050,"y":540,"wires":[["ed224531.7299a8"]]},{"id":"ed224531.7299a8","type":"change","z":"6dc4c6ac.83d2b8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"yesterday","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":2240,"y":540,"wires":[["788e2f36.23977"]]},{"id":"631219a4.7fbc18","type":"delay","z":"6dc4c6ac.83d2b8","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"outputs":1,"x":1660,"y":400,"wires":[["e6695e8a.2503f"]]},{"id":"18df2c66.dd8ee4","type":"delay","z":"6dc4c6ac.83d2b8","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"allowrate":false,"outputs":1,"x":1660,"y":440,"wires":[["f2d1d6c8.7c7e68"]]},{"id":"2bb6b95105b32d78","type":"mqtt in","z":"6dc4c6ac.83d2b8","name":"","topic":"tele/+/SENSOR","qos":"0","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":true,"rh":0,"inputs":0,"x":80,"y":1180,"wires":[["4c26b18575b32804","fd97206046b76da6"]]},{"id":"4c26b18575b32804","type":"switch","z":"6dc4c6ac.83d2b8","name":"","property":"topic","propertyType":"msg","rules":[{"t":"regex","v":"cooler","vt":"str","case":false}],"checkall":"true","repair":false,"outputs":1,"x":230,"y":1180,"wires":[["a9bba979a1457b99"]]},{"id":"a9bba979a1457b99","type":"change","z":"6dc4c6ac.83d2b8","name":"600","rules":[{"t":"set","p":"payload","pt":"msg","to":"$floor(msg.payload.DS18B20.Temperature*100)","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"600","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":1180,"wires":[["058a5be682d14133"]]},{"id":"058a5be682d14133","type":"link out","z":"6dc4c6ac.83d2b8","name":"","links":["cc96708e.f3e01"],"x":455,"y":1180,"wires":[]},{"id":"121642e847bfd7dd","type":"mqtt out","z":"6dc4c6ac.83d2b8","name":"Cooler","topic":"cmnd/cooler/POWER","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":390,"y":940,"wires":[]},{"id":"7a041aeaac9cf74c","type":"mqtt in","z":"6dc4c6ac.83d2b8","name":"Result","topic":"stat/+/RESULT","qos":"2","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":true,"rh":0,"inputs":0,"x":50,"y":1300,"wires":[["c1848f4038826216"]]},{"id":"ecbfc43a4152cb17","type":"mqtt in","z":"6dc4c6ac.83d2b8","name":"Stat","topic":"tele/+/STATE","qos":"0","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":true,"rh":0,"inputs":0,"x":50,"y":1360,"wires":[["c1848f4038826216"]]},{"id":"c1848f4038826216","type":"switch","z":"6dc4c6ac.83d2b8","name":"","property":"topic","propertyType":"msg","rules":[{"t":"regex","v":"cooler","vt":"str","case":false},{"t":"regex","v":"steam","vt":"str","case":false}],"checkall":"true","repair":false,"outputs":2,"x":210,"y":1360,"wires":[["dd0c028d2a47d9b1"],[]]},{"id":"dd0c028d2a47d9b1","type":"change","z":"6dc4c6ac.83d2b8","name":"3","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.POWER","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"ON","fromt":"str","to":"1","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"OFF","fromt":"str","to":"0","tot":"num"},{"t":"set","p":"topic","pt":"msg","to":"3","tot":"str"},{"t":"set","p":"3","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":1340,"wires":[[]]},{"id":"ad8fc392a6e86974","type":"mqtt out","z":"6dc4c6ac.83d2b8","name":"Steam","topic":"shellies/shelly1-E098068D9D60/relay/0/command","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":390,"y":1000,"wires":[]},{"id":"c646f2d9cf0a8741","type":"change","z":"6dc4c6ac.83d2b8","name":"4","rules":[{"t":"change","p":"payload","pt":"msg","from":"on","fromt":"str","to":"1","tot":"num"},{"t":"change","p":"payload","pt":"msg","from":"off","fromt":"str","to":"0","tot":"num"},{"t":"set","p":"topic","pt":"msg","to":"4","tot":"str"},{"t":"set","p":"4","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":1380,"wires":[[]]},{"id":"b66b8299098497d9","type":"link out","z":"6dc4c6ac.83d2b8","name":"","links":["a21e7d8181964324"],"x":135,"y":1040,"wires":[]},{"id":"a21e7d8181964324","type":"link in","z":"6dc4c6ac.83d2b8","name":"","links":["b66b8299098497d9"],"x":1715,"y":800,"wires":[["a69176f2.053fd8"]]},{"id":"126ae6133c285ca6","type":"link out","z":"6dc4c6ac.83d2b8","name":"","links":["8348ed51aca62612"],"x":115,"y":1080,"wires":[]},{"id":"8348ed51aca62612","type":"link in","z":"6dc4c6ac.83d2b8","name":"","links":["126ae6133c285ca6"],"x":1715,"y":840,"wires":[["51b8b91c.faa9b8"]]},{"id":"21d172d072e586ea","type":"inject","z":"6dc4c6ac.83d2b8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"02 00 * * *","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":2050,"y":500,"wires":[["ed224531.7299a8"]]},{"id":"cdf2f57491ea8d22","type":"mqtt in","z":"6dc4c6ac.83d2b8","name":"steam","topic":"shellies/shelly1-E098068D9D60/relay/0","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":true,"rh":0,"inputs":0,"x":50,"y":1440,"wires":[["c646f2d9cf0a8741"]]},{"id":"f47dd964c8710c04","type":"change","z":"6dc4c6ac.83d2b8","name":"steam","rules":[{"t":"set","p":"1","pt":"flow","to":"payload","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"num","to":"on","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"num","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":250,"y":1000,"wires":[["ad8fc392a6e86974"]]},{"id":"46cfd1c722b1653c","type":"inject","z":"6dc4c6ac.83d2b8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"58 23 * * *","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":2050,"y":460,"wires":[["ed224531.7299a8"]]},{"id":"050a1185dcffd1aa","type":"change","z":"6dc4c6ac.83d2b8","name":"power","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.accumulatedCost","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1450,"y":400,"wires":[["451831627110223b"]]},{"id":"451831627110223b","type":"delay","z":"6dc4c6ac.83d2b8","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"allowrate":false,"outputs":1,"x":1660,"y":480,"wires":[["118a1f71f9926685"]]},{"id":"118a1f71f9926685","type":"influxdb out","z":"6dc4c6ac.83d2b8","influxdb":"8208eb36.6153d8","name":"acc cost","measurement":"acc-cost","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":1840,"y":480,"wires":[]},{"id":"fd97206046b76da6","type":"change","z":"6dc4c6ac.83d2b8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.DS18B20.Temperature","tot":"msg"},{"t":"set","p":"coolertemp","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":260,"y":1120,"wires":[["9a03d2d36989ad8e"]]},{"id":"9a03d2d36989ad8e","type":"influxdb out","z":"6dc4c6ac.83d2b8","influxdb":"8208eb36.6153d8","name":"coolertemp","measurement":"coolertemp","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":430,"y":1120,"wires":[]},{"id":"bab7dba8.926928","type":"mqtt out","z":"3b1a376d.f3e658","name":" lock/unlock grovkjøkken","topic":"zwave/2/98/1/0/set","qos":"","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":810,"y":300,"wires":[]},{"id":"a8f4a572.232418","type":"inject","z":"3b1a376d.f3e658","name":"lock","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"str","x":110,"y":300,"wires":[["bab7dba8.926928","0e14af4ed6f95c79"]]},{"id":"9e4a4b18.742f48","type":"inject","z":"3b1a376d.f3e658","name":"unlock","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"str","x":110,"y":340,"wires":[["bab7dba8.926928","0e14af4ed6f95c79"]]},{"id":"989188dc.2d0988","type":"inject","z":"3b1a376d.f3e658","name":"lock at night","props":[{"p":"payload"}],"repeat":"","crontab":"00 23 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"str","x":130,"y":260,"wires":[["bab7dba8.926928","b4eaf5a5.4267e8","ab1207242d5207df"]]},{"id":"ea3710e8.4ee2e","type":"mqtt in","z":"3b1a376d.f3e658","name":"","topic":"zwave/#","qos":"0","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":100,"y":200,"wires":[["050497e88475aebe","b502c97b2d433a2c"]]},{"id":"6be7368c.6f2938","type":"mqtt out","z":"3b1a376d.f3e658","name":"lock/unlock hoveddør","topic":"zwave/3/98/1/0/set","qos":"","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":800,"y":500,"wires":[]},{"id":"b4eaf5a5.4267e8","type":"delay","z":"3b1a376d.f3e658","name":"","pauseType":"delay","timeout":"8","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":400,"y":380,"wires":[["6be7368c.6f2938"]]},{"id":"fa947830.66f7b8","type":"mqtt out","z":"3b1a376d.f3e658","name":"varmtvannpumpe","topic":"shellies/shellyplug-s-0414A5/relay/0/command","qos":"","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":1390,"y":40,"wires":[]},{"id":"a90dec5b.6a6ab","type":"mqtt in","z":"3b1a376d.f3e658","name":"Viftekonvektor","topic":"shellies/shelly1-E098068CD22F/input/0","qos":"0","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":110,"y":100,"wires":[[]]},{"id":"5ae578b3.7b1968","type":"mqtt out","z":"3b1a376d.f3e658","name":"kvpumpe","topic":"shellies/shellyplug-s-B86677/relay/0/command","qos":"","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":660,"y":100,"wires":[]},{"id":"ab45c401.c24858","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"str","to":"on","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"str","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":300,"y":100,"wires":[["5ae578b3.7b1968"]]},{"id":"9d9f52c2.07464","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"on","payloadType":"str","x":490,"y":80,"wires":[["5ae578b3.7b1968"]]},{"id":"1a977e13.7e16d2","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"off","payloadType":"str","x":490,"y":120,"wires":[["5ae578b3.7b1968"]]},{"id":"97302dbe23bf0b75","type":"mqtt in","z":"3b1a376d.f3e658","name":"","topic":"tele/tasmota_8CAE5C/#","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":true,"rh":0,"inputs":0,"x":120,"y":720,"wires":[["530f631d3532ee27","a81d288470acd083"]]},{"id":"530f631d3532ee27","type":"debug","z":"3b1a376d.f3e658","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":350,"y":720,"wires":[]},{"id":"47087e11b76595fe","type":"link in","z":"3b1a376d.f3e658","name":"","links":["8e94614975d0b834"],"x":35,"y":400,"wires":[["22b09da82f1ab463"]]},{"id":"22b09da82f1ab463","type":"trigger","z":"3b1a376d.f3e658","name":"","op1":"","op2":"1","op1type":"nul","op2type":"str","duration":"15","extend":false,"overrideDelay":false,"units":"min","reset":"true","bytopic":"all","topic":"topic","outputs":1,"x":150,"y":400,"wires":[["b4eaf5a5.4267e8","ab1207242d5207df","3688736f521a810a"]]},{"id":"ab1207242d5207df","type":"link out","z":"3b1a376d.f3e658","name":"","links":["4e2cec0836c4ad79"],"x":435,"y":300,"wires":[]},{"id":"ab1253428eb7fa19","type":"blynk-ws-in-write","z":"3b1a376d.f3e658","name":"open","pin":"18","pin_all":0,"client":"445c05cf.41736c","x":90,"y":460,"wires":[["303fcebe371e56dc"]]},{"id":"38c79b45c201bb75","type":"blynk-ws-in-write","z":"3b1a376d.f3e658","name":"close","pin":"19","pin_all":0,"client":"445c05cf.41736c","x":90,"y":520,"wires":[["62afb7119840be22"]]},{"id":"303fcebe371e56dc","type":"switch","z":"3b1a376d.f3e658","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":230,"y":460,"wires":[["3688736f521a810a","6be7368c.6f2938"]]},{"id":"62afb7119840be22","type":"switch","z":"3b1a376d.f3e658","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":230,"y":520,"wires":[["3688736f521a810a","6be7368c.6f2938"]]},{"id":"3688736f521a810a","type":"delay","z":"3b1a376d.f3e658","name":"","pauseType":"delay","timeout":"3","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":400,"y":420,"wires":[["bab7dba8.926928"]]},{"id":"050497e88475aebe","type":"switch","z":"3b1a376d.f3e658","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"zwave/2/98/1/1","vt":"str"},{"t":"eq","v":"zwave/3/98/1/1","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":250,"y":200,"wires":[["74ef99f4e37c554e"],["ae4bc261ac0b5649"]]},{"id":"ae4bc261ac0b5649","type":"rbe","z":"3b1a376d.f3e658","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":390,"y":220,"wires":[["15856fd2b08c9a54"]]},{"id":"74ef99f4e37c554e","type":"rbe","z":"3b1a376d.f3e658","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":390,"y":180,"wires":[["4f8e8faad7d3407c"]]},{"id":"4f8e8faad7d3407c","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"\"Secured\"","fromt":"str","to":"true","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"\"Unsecure\"","fromt":"str","to":"false","tot":"bool"},{"t":"set","p":"lockedgd","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":540,"y":180,"wires":[["3e210c426d96238b"]]},{"id":"15856fd2b08c9a54","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"\"Secured\"","fromt":"str","to":"true","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"\"Unsecure\"","fromt":"str","to":"false","tot":"bool"},{"t":"set","p":"lockedhd","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":540,"y":220,"wires":[["3e210c426d96238b"]]},{"id":"1a4b9fa70d2e9b2e","type":"blynk-ws-out-write","z":"3b1a376d.f3e658","name":"status","pin":"20","pinmode":0,"client":"445c05cf.41736c","x":1010,"y":200,"wires":[]},{"id":"3e210c426d96238b","type":"function","z":"3b1a376d.f3e658","name":"","func":"if (flow.get(\"lockedhd\") === true && flow.get(\"lockedgd\") === true) {\n\nmsg.payload = \"both doors locked\"\nflow.set(\"lastpos\", msg.payload)\n}\nelse {\n if (flow.get(\"lockedhd\") === true) {\n msg.payload = \"Hoveddør locked\" \n \n }\n if (flow.get(\"lockedgd\") === true) {\n msg.payload = \"GKdør locked\" \n \n }\n if (flow.get(\"lockedhd\") === false && flow.get(\"lockedgd\") === false) {\n msg.payload = \"both doors unlocked\"\n flow.set(\"lastpos\", msg.payload)\n}\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":200,"wires":[["1a4b9fa70d2e9b2e","3a6bbd24c3e5e2d4","4156e6ce92d0b27a"]]},{"id":"0e14af4ed6f95c79","type":"delay","z":"3b1a376d.f3e658","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":400,"y":340,"wires":[["6be7368c.6f2938"]]},{"id":"d122ff2dc386ff80","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"30 21 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"off","payloadType":"str","x":1010,"y":20,"wires":[["fa947830.66f7b8"]]},{"id":"6d09b3ddc96fc66c","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 06 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"on","payloadType":"str","x":1010,"y":80,"wires":[["4d4fab15b05e2afa"]]},{"id":"4d4fab15b05e2afa","type":"function","z":"3b1a376d.f3e658","name":"","func":"if (global.get(\"home\")===true){\n node.send({payload: \"on\"})\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1140,"y":80,"wires":[["fa947830.66f7b8"]]},{"id":"b544e55b8d05a3c0","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"1800","crontab":"","once":true,"onceDelay":"5","topic":"","payload":"166","payloadType":"str","x":650,"y":720,"wires":[["62763cb03da3a90e"]]},{"id":"62763cb03da3a90e","type":"mqtt out","z":"3b1a376d.f3e658","name":"","topic":"cmnd/tasmota_8CAE5C/RfRaw","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":910,"y":680,"wires":[]},{"id":"a81d288470acd083","type":"switch","z":"3b1a376d.f3e658","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"Online","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":330,"y":680,"wires":[["4a9cc1e4df079dfe"]]},{"id":"4a9cc1e4df079dfe","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"166","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":680,"wires":[["ecd87e729543b4e4"]]},{"id":"ecd87e729543b4e4","type":"delay","z":"3b1a376d.f3e658","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":640,"y":680,"wires":[["62763cb03da3a90e"]]},{"id":"07be0f3805b693a6","type":"mqtt in","z":"3b1a376d.f3e658","name":"433mhz","topic":"tele/tasmota_8CAE5C/RESULT","qos":"2","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":true,"rh":0,"inputs":0,"x":70,"y":800,"wires":[["77a4d4b1c797bff9"]]},{"id":"dbe0dde2ceb275a6","type":"debug","z":"3b1a376d.f3e658","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1090,"y":800,"wires":[]},{"id":"77a4d4b1c797bff9","type":"switch","z":"3b1a376d.f3e658","name":"","property":"payload.RfRaw.Data","propertyType":"msg","rules":[{"t":"eq","v":"AAA6050D8C7E214F55","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":210,"y":800,"wires":[["5ccd4a1260cbb170"]]},{"id":"5ccd4a1260cbb170","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"on","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":800,"wires":[["cc9566bf09b66c0b"]]},{"id":"cc9566bf09b66c0b","type":"delay","z":"3b1a376d.f3e658","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"allowrate":false,"outputs":1,"x":530,"y":800,"wires":[["dbe0dde2ceb275a6","cbf4e6af8727a3bc"]]},{"id":"cbf4e6af8727a3bc","type":"trigger","z":"3b1a376d.f3e658","name":"","op1":"","op2":"off","op1type":"nul","op2type":"str","duration":"5","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":740,"y":840,"wires":[["dbe0dde2ceb275a6"]]},{"id":"4260c81a3e8d8286","type":"mqtt out","z":"3b1a376d.f3e658","name":"vv-bypassventil","topic":"shellies/shelly1pm-C4A940/relay/0/command","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":820,"y":1040,"wires":[]},{"id":"f223712b268a4e82","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"on","payloadType":"str","x":610,"y":960,"wires":[["4260c81a3e8d8286"]]},{"id":"994797cd5f4420fb","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"off","payloadType":"str","x":610,"y":1000,"wires":[["4260c81a3e8d8286"]]},{"id":"8f24b4648fe36f6a","type":"mqtt in","z":"3b1a376d.f3e658","name":"vv temp","topic":"shellies/shelly1pm-C4A940/ext_temperature/0","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":true,"rh":0,"inputs":0,"x":70,"y":1040,"wires":[["93700f4d7cb744aa"]]},{"id":"ed7af445b95aa4ab","type":"mqtt in","z":"3b1a376d.f3e658","name":"","topic":"nibe-uplink/#","qos":"2","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":true,"rh":0,"inputs":0,"x":90,"y":1120,"wires":[["ed61bc4be4342751","002bbef655a6f399"]]},{"id":"c56a50e585c1af94","type":"function","z":"3b1a376d.f3e658","name":"","func":"\nif (msg.payload < 44) {\n msg.payload = \"off\"\n}\n\nif (msg.payload > 47) {\n msg.payload = \"on\"\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":600,"y":1040,"wires":[["4260c81a3e8d8286","55b8301ce9059fa3"]]},{"id":"ed61bc4be4342751","type":"split","z":"3b1a376d.f3e658","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":250,"y":1120,"wires":[["fd97eebf820d7512"]]},{"id":"fd97eebf820d7512","type":"switch","z":"3b1a376d.f3e658","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"40013","vt":"str"},{"t":"eq","v":"40014","vt":"str"},{"t":"eq","v":"40015","vt":"str"},{"t":"eq","v":"40016","vt":"str"},{"t":"eq","v":"40008","vt":"str"},{"t":"eq","v":"40012","vt":"str"},{"t":"eq","v":"43136","vt":"str"},{"t":"eq","v":"43009","vt":"str"},{"t":"eq","v":"43439","vt":"str"},{"t":"eq","v":"40071","vt":"str"},{"t":"eq","v":"43005","vt":"str"},{"t":"eq","v":"40004","vt":"str"},{"t":"eq","v":"43084","vt":"str"}],"checkall":"true","repair":false,"outputs":13,"x":390,"y":1160,"wires":[["c56a50e585c1af94","6b83b2d39471e022"],["d0ac7c71bc307c2b"],["d5ab8ab293c958a1"],["3ef336318a97e7d5"],["12f59023874ff3d0"],["ce0a582f58ccdf4b"],["04e79843ce18cfa4"],["d799644793de541c"],["a79ffa9c0edc5a6d"],["d5a89969c024d8c8"],["b65541e835f28f60"],["2cfd844fa8e0d658"],["e74331ee58438575"]]},{"id":"002bbef655a6f399","type":"debug","z":"3b1a376d.f3e658","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":210,"y":1200,"wires":[]},{"id":"6b83b2d39471e022","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"varmtvann nibe","measurement":"hotwatertop","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":620,"y":1080,"wires":[]},{"id":"d5ab8ab293c958a1","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"brine in","measurement":"brinein","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":600,"y":1160,"wires":[]},{"id":"3ef336318a97e7d5","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"brine out","measurement":"brineout","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":600,"y":1200,"wires":[]},{"id":"12f59023874ff3d0","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"turtemp","measurement":"turtemp","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":600,"y":1240,"wires":[]},{"id":"ce0a582f58ccdf4b","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"returtemp","measurement":"returtemp","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":600,"y":1280,"wires":[]},{"id":"04e79843ce18cfa4","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"compr freq","measurement":"comprfreq","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":610,"y":1320,"wires":[]},{"id":"d799644793de541c","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"calculated flow temp","measurement":"calctemp","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":640,"y":1360,"wires":[]},{"id":"a79ffa9c0edc5a6d","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"brine pump speed","measurement":"brinepumpspeed","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":630,"y":1400,"wires":[]},{"id":"a3370306d4b4f556","type":"mqtt in","z":"3b1a376d.f3e658","name":"vv temp nede","topic":"shellies/shelly1pm-C4A940/ext_temperature/1","qos":"2","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":true,"rh":0,"inputs":0,"x":70,"y":1520,"wires":[["95c3bd6bf85a65b3","2a2258a68950981c","53ec2db4accec59e"]]},{"id":"93700f4d7cb744aa","type":"debug","z":"3b1a376d.f3e658","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":250,"y":1040,"wires":[]},{"id":"55b8301ce9059fa3","type":"debug","z":"3b1a376d.f3e658","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":860,"y":940,"wires":[]},{"id":"24328761c5fc33c5","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"120","crontab":"","once":true,"onceDelay":0.1,"topic":"","payloadType":"date","x":90,"y":1280,"wires":[["d0cd6be59acc0b12"]]},{"id":"d0cd6be59acc0b12","type":"tibber-data","z":"3b1a376d.f3e658","name":"","active":true,"apiEndpointRef":"ab8b853c1beb57d4","queryName":"getCurrentEnergyPrice","homeId":"990d8d6c-38d9-4cf5-970c-98f1c241685c","energyResolution":"HOURLY","lastCount":10,"x":130,"y":1380,"wires":[["50a0998afc7d8eaf","37e735026f3dc07c"]]},{"id":"50a0998afc7d8eaf","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.total","tot":"msg"},{"t":"set","p":"elprice","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":1380,"wires":[["eb9462150eaa2aa9"]]},{"id":"eb9462150eaa2aa9","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"strømpris","measurement":"elprice","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":600,"y":1480,"wires":[]},{"id":"d0ac7c71bc307c2b","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"varmtvann nibe","measurement":"hotwatercharging","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":620,"y":1120,"wires":[]},{"id":"d5a89969c024d8c8","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"turtemp målt BT25","measurement":"turtempacctank","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":630,"y":1440,"wires":[]},{"id":"37e735026f3dc07c","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"set","p":"price","pt":"flow","to":"payload.level","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"payload.level","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"CHEAP","fromt":"str","to":"true","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"EXPENSIVE","fromt":"str","to":"false","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"NORMAL","fromt":"str","to":"false","tot":"bool"},{"t":"set","p":"cheap","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":180,"y":1440,"wires":[["f14e195eacd9d289"]]},{"id":"245cfb857a305bf3","type":"mqtt out","z":"3b1a376d.f3e658","name":"vvbereder","topic":"zwavekjeller/2/37/0/targetValue/set","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":600,"y":1560,"wires":[]},{"id":"8c6023ce2ffa0588","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":370,"y":1660,"wires":[["245cfb857a305bf3"]]},{"id":"b554a290ae465c53","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":370,"y":1700,"wires":[["245cfb857a305bf3"]]},{"id":"95c3bd6bf85a65b3","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"elbereder temp","measurement":"elberedertempnede","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":620,"y":1520,"wires":[]},{"id":"d8c1ad4b5a6f8c64","type":"function","z":"3b1a376d.f3e658","name":"termostat","func":"if (flow.get(\"lowestelprice\") === flow.get(\"elprice\")) {\n flow.set(\"cheap\", true)\n \n}\nelse {\n flow.set(\"cheap\", false)\n}\n\nif (flow.get(\"elprice\") < (flow.get(\"highestestelprice\") *0.4)) {\n flow.set(\"cheap\", true)\n}\n\n\nif (msg.payload < 45) {\n msg.payload = true\n node.send(msg);\n}\n\nif (msg.payload > 53 && flow.get(\"cheap\") === false) {\n msg.payload = false\n node.send(msg);\n}\n\nif (flow.get(\"cheap\") === true) {\n msg.payload = true\n node.send(msg);\n}\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":260,"y":1620,"wires":[["55412ca390e4040e"]]},{"id":"f14e195eacd9d289","type":"rbe","z":"3b1a376d.f3e658","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":350,"y":1440,"wires":[[]]},{"id":"55412ca390e4040e","type":"rbe","z":"3b1a376d.f3e658","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":390,"y":1620,"wires":[["245cfb857a305bf3"]]},{"id":"b65541e835f28f60","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"gradminutter","measurement":"DM","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":610,"y":1620,"wires":[]},{"id":"1fa71cfd396ed359","type":"tibber-data","z":"3b1a376d.f3e658","name":"","active":true,"apiEndpointRef":"ab8b853c1beb57d4","queryName":"getTodaysEnergyPrices","homeId":"990d8d6c-38d9-4cf5-970c-98f1c241685c","energyResolution":"HOURLY","lastCount":"1","x":250,"y":1760,"wires":[["95aa4f51d8b4e86d","25f71b0f07413600"]]},{"id":"b1def9df756ee6f7","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"01 00 * * *","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":90,"y":1760,"wires":[["1fa71cfd396ed359"]]},{"id":"7e947160c120805e","type":"debug","z":"3b1a376d.f3e658","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":770,"y":1760,"wires":[]},{"id":"b09b6ca2e634c613","type":"mqtt out","z":"3b1a376d.f3e658","name":"utelys","topic":"shellies/shelly1pm-40F52000BE3D/relay/0/command","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":910,"y":620,"wires":[]},{"id":"1f253b5bdd0323d7","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"on","payloadType":"str","x":790,"y":600,"wires":[["b09b6ca2e634c613"]]},{"id":"f5f82a109181729a","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"off","payloadType":"str","x":790,"y":640,"wires":[["b09b6ca2e634c613"]]},{"id":"4c1e06ce204c4cbb","type":"mqtt in","z":"3b1a376d.f3e658","name":"Sensor ute","topic":"shellies/shellymotionsensor-60A423D9188E/#","qos":"0","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":80,"y":620,"wires":[["55b326bbd9efdaee"]]},{"id":"370a3f1f73fbdf18","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.motion","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"on","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":620,"wires":[["2602b85c9baf9ac0"]]},{"id":"2602b85c9baf9ac0","type":"trigger","z":"3b1a376d.f3e658","name":"","op1":"on","op2":"off","op1type":"str","op2type":"str","duration":"3","extend":true,"overrideDelay":false,"units":"min","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":550,"y":620,"wires":[["b09b6ca2e634c613"]]},{"id":"55b326bbd9efdaee","type":"switch","z":"3b1a376d.f3e658","name":"","property":"payload.lux","propertyType":"msg","rules":[{"t":"lte","v":"110","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":210,"y":620,"wires":[["370a3f1f73fbdf18"]]},{"id":"3a6bbd24c3e5e2d4","type":"function","z":"3b1a376d.f3e658","name":"","func":"if (msg.payload == \"both doors locked\") {\n msg.payload = 255\n node.send(msg);\n}\nelse {\n msg.payload = 0\n node.send(msg);\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":870,"y":260,"wires":[["dd569fcbaff58450"]]},{"id":"dd569fcbaff58450","type":"mqtt out","z":"3b1a376d.f3e658","name":" lock/unlock kjellerdør","topic":"zwavekjeller/10/98/0/targetMode/set","qos":"","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":1240,"y":260,"wires":[]},{"id":"e17ca0b125432301","type":"inject","z":"3b1a376d.f3e658","name":"åpne","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":1010,"y":300,"wires":[["dd569fcbaff58450"]]},{"id":"9031695899e78bcc","type":"inject","z":"3b1a376d.f3e658","name":"lås","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"255","payloadType":"num","x":1010,"y":340,"wires":[["dd569fcbaff58450"]]},{"id":"2cfd844fa8e0d658","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"utetempvvp","measurement":"utetempvvp","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":610,"y":1660,"wires":[]},{"id":"95aa4f51d8b4e86d","type":"function","z":"3b1a376d.f3e658","name":"","func":"//length = msg.payload = msg.payload.length\nvar ut =[];\nfor (var i = 0; i < msg.payload.length; i++) {\nut.push (msg.payload[i].total)\n}\n\narr = ut;\nvar index = arr.indexOf(Math.min(...arr));\nmsg.payload = msg.payload[index].total\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":400,"y":1760,"wires":[["b8409fd50cf47d79"]]},{"id":"b8409fd50cf47d79","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"set","p":"lowestelprice","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":580,"y":1760,"wires":[["7e947160c120805e"]]},{"id":"b502c97b2d433a2c","type":"debug","z":"3b1a376d.f3e658","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":250,"y":140,"wires":[]},{"id":"4156e6ce92d0b27a","type":"function","z":"3b1a376d.f3e658","name":"","func":"if (msg.payload === \"GKdør locked\" || msg.payload === \"Hoveddør locked\") {\n if (flow.get(\"lastpos\") === \"both doors locked\") {\n msg.payload = 0\n node.send (msg);\n flow.set(\"lastpos\", \"opening\")\n}\n}\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":260,"wires":[["bab7dba8.926928","3688736f521a810a","b4eaf5a5.4267e8"]]},{"id":"25f71b0f07413600","type":"function","z":"3b1a376d.f3e658","name":"","func":"//length = msg.payload = msg.payload.length\nvar ut =[];\nfor (var i = 0; i < msg.payload.length; i++) {\nut.push (msg.payload[i].total)\n}\n\narr = ut;\nvar index = arr.indexOf(Math.max(...arr));\nmsg.payload = msg.payload[index].total\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":400,"y":1800,"wires":[["04d18fadd3d9031f"]]},{"id":"04d18fadd3d9031f","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"set","p":"highestelprice","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":580,"y":1800,"wires":[["f29ca41d9ea8af65"]]},{"id":"f29ca41d9ea8af65","type":"debug","z":"3b1a376d.f3e658","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":770,"y":1800,"wires":[]},{"id":"2971e22895cf7a19","type":"moment","z":"3b1a376d.f3e658","name":"","topic":"","input":"payload","inputType":"msg","inTz":"Europe/Oslo","adjAmount":0,"adjType":"days","adjDir":"add","format":"day","locale":"en-US","output":"","outputType":"msg","outTz":"Europe/Oslo","x":460,"y":1880,"wires":[["647e7c4eaa85665e"]]},{"id":"9fcaa2b948f2d24c","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":90,"y":1840,"wires":[["04b03b46cec90895"]]},{"id":"647e7c4eaa85665e","type":"debug","z":"3b1a376d.f3e658","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":670,"y":1880,"wires":[]},{"id":"04b03b46cec90895","type":"moment","z":"3b1a376d.f3e658","name":"","topic":"","input":"payload","inputType":"msg","inTz":"Europe/Oslo","adjAmount":0,"adjType":"days","adjDir":"add","format":"","locale":"en-US","output":"","outputType":"msg","outTz":"Europe/Oslo","x":220,"y":1940,"wires":[["2971e22895cf7a19"]]},{"id":"2a2258a68950981c","type":"weekday","z":"3b1a376d.f3e658","name":"","sun":true,"mon":false,"tue":false,"wed":false,"thu":false,"fri":false,"sat":false,"x":100,"y":1600,"wires":[["c8ba48388099495b"],["d8c1ad4b5a6f8c64"]]},{"id":"c8ba48388099495b","type":"function","z":"3b1a376d.f3e658","name":"legionella","func":"\n\n\n\nif (msg.payload < 65) {\n msg.payload = true\n node.send(msg);\n}\n\nif (msg.payload > 85) {\n msg.payload = false\n node.send(msg);\n}\n\n\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":260,"y":1580,"wires":[["36402e08d2264e77"]]},{"id":"36402e08d2264e77","type":"rbe","z":"3b1a376d.f3e658","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":390,"y":1580,"wires":[["245cfb857a305bf3"]]},{"id":"e71e70888d45ea3e","type":"inject","z":"3b1a376d.f3e658","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":2000,"wires":[["fa0fe7f0d82049ea"]]},{"id":"fa0fe7f0d82049ea","type":"weekday","z":"3b1a376d.f3e658","name":"","sun":true,"mon":false,"tue":false,"wed":false,"thu":false,"fri":false,"sat":false,"x":380,"y":2000,"wires":[["2f78a8f6b29758b6"],["47b9fe4de7b87154"]]},{"id":"2f78a8f6b29758b6","type":"debug","z":"3b1a376d.f3e658","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":560,"y":1980,"wires":[]},{"id":"47b9fe4de7b87154","type":"debug","z":"3b1a376d.f3e658","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":550,"y":2020,"wires":[]},{"id":"e74331ee58438575","type":"string","z":"3b1a376d.f3e658","name":"","methods":[{"name":"delRightMost","params":[{"type":"str","value":"kW"}]}],"prop":"payload","propout":"payload","object":"msg","objectout":"msg","x":590,"y":1700,"wires":[["944d3684913d7cb3"]]},{"id":"944d3684913d7cb3","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":1700,"wires":[["c3b51f9541f1abbd","3d1685bad0e5e688","911c725384f2457c"]]},{"id":"c3b51f9541f1abbd","type":"debug","z":"3b1a376d.f3e658","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":950,"y":1700,"wires":[]},{"id":"3d1685bad0e5e688","type":"influxdb out","z":"3b1a376d.f3e658","influxdb":"8208eb36.6153d8","name":"addpower","measurement":"addpower","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":940,"y":1660,"wires":[]},{"id":"173da14695272c96","type":"switch","z":"3b1a376d.f3e658","name":"","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1050,"y":1620,"wires":[["866220254e308c45"]]},{"id":"866220254e308c45","type":"change","z":"3b1a376d.f3e658","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"tilleggsvarme aktiv","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1200,"y":1620,"wires":[["ddbe7c0d32599e07"]]},{"id":"ddbe7c0d32599e07","type":"blynk-ws-out-notify","z":"3b1a376d.f3e658","name":"","client":"445c05cf.41736c","queue":false,"rate":5,"x":1370,"y":1620,"wires":[]},{"id":"911c725384f2457c","type":"rbe","z":"3b1a376d.f3e658","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":910,"y":1620,"wires":[["173da14695272c96"]]},{"id":"53ec2db4accec59e","type":"debug","z":"3b1a376d.f3e658","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1040,"y":1480,"wires":[]},{"id":"6112931c.edc41c","type":"modbus-read","z":"88bbcf05.96d65","name":"","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"12101","quantity":"1","rate":"10000","rateUnit":"ms","delayOnStart":false,"startDelayTime":"","server":"46ccfe10.13ec3","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":90,"y":60,"wires":[["b4c151d3.fb0ad"],["4c111b32.6e6544"]]},{"id":"4c111b32.6e6544","type":"modbus-response","z":"88bbcf05.96d65","name":"","registerShowMax":20,"x":290,"y":80,"wires":[]},{"id":"11078278.f731fe","type":"blynk-ws-out-write","z":"88bbcf05.96d65","name":"Utetemperatur","pin":"13","pinmode":0,"client":"445c05cf.41736c","x":800,"y":80,"wires":[]},{"id":"b4c151d3.fb0ad","type":"change","z":"88bbcf05.96d65","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.0","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"msg.payload/10","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":40,"wires":[["eebc93f6.c212e"]]},{"id":"d9ed88f8.7c25a8","type":"modbus-read","z":"88bbcf05.96d65","name":"Extract temperature","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"12543","quantity":"1","rate":"20","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"46ccfe10.13ec3","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":150,"y":240,"wires":[["bb4cb81b741a61c4"],["9dbf53e1.89b98"]]},{"id":"9dbf53e1.89b98","type":"modbus-response","z":"88bbcf05.96d65","name":"","registerShowMax":20,"x":370,"y":260,"wires":[]},{"id":"e61ea344.b296","type":"modbus-read","z":"88bbcf05.96d65","name":"Extract Humidity","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"12135","quantity":"1","rate":"10","rateUnit":"m","delayOnStart":false,"startDelayTime":"","server":"46ccfe10.13ec3","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":140,"y":360,"wires":[[],["6ecb2c2b.66f794"]]},{"id":"6ecb2c2b.66f794","type":"modbus-response","z":"88bbcf05.96d65","name":"","registerShowMax":20,"x":370,"y":380,"wires":[]},{"id":"bc4b1269.8167d","type":"modbus-read","z":"88bbcf05.96d65","name":"Supply temperature","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"12102","quantity":"1","rate":"60","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"46ccfe10.13ec3","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":150,"y":300,"wires":[[],["f0490645.a259c8"]]},{"id":"f0490645.a259c8","type":"modbus-response","z":"88bbcf05.96d65","name":"","registerShowMax":20,"x":370,"y":320,"wires":[]},{"id":"1bb01eb0.48a951","type":"modbus-read","z":"88bbcf05.96d65","name":"Mode","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"1160","quantity":"1","rate":"60","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"46ccfe10.13ec3","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":110,"y":420,"wires":[[],["7716573a.675df8"]]},{"id":"7716573a.675df8","type":"modbus-response","z":"88bbcf05.96d65","name":"","registerShowMax":20,"x":370,"y":440,"wires":[]},{"id":"b0c815b9.2c0ca8","type":"modbus-write","z":"88bbcf05.96d65","name":"","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"HoldingRegister","adr":"1161","quantity":"1","server":"46ccfe10.13ec3","emptyMsgOnFail":false,"keepMsgProperties":false,"x":300,"y":540,"wires":[[],["6f1ee505.562b5c"]]},{"id":"5db42335.7650bc","type":"inject","z":"88bbcf05.96d65","name":"Refresh 4","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"4","payloadType":"num","x":100,"y":560,"wires":[["b0c815b9.2c0ca8"]]},{"id":"6f1ee505.562b5c","type":"modbus-response","z":"88bbcf05.96d65","name":"","registerShowMax":20,"x":510,"y":560,"wires":[]},{"id":"a1297b27.661f38","type":"inject","z":"88bbcf05.96d65","name":"Crowded 3","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"3","payloadType":"num","x":100,"y":520,"wires":[["b0c815b9.2c0ca8"]]},{"id":"46f81312.58dbec","type":"inject","z":"88bbcf05.96d65","name":"Normal 2","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"2","payloadType":"num","x":100,"y":480,"wires":[["b0c815b9.2c0ca8"]]},{"id":"e858241f.2a2778","type":"inject","z":"88bbcf05.96d65","name":"Away 6","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"6","payloadType":"num","x":90,"y":600,"wires":[["b0c815b9.2c0ca8"]]},{"id":"4c218f89.bd536","type":"inject","z":"88bbcf05.96d65","name":"Holiday 7","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"7","payloadType":"num","x":100,"y":640,"wires":[["b0c815b9.2c0ca8"]]},{"id":"73a77557.6b856c","type":"smooth","z":"88bbcf05.96d65","name":"","property":"payload","action":"mean","count":"25","round":"1","mult":"single","reduce":false,"x":600,"y":40,"wires":[["11078278.f731fe","d0be7feb.28e11"]]},{"id":"6ab26ac8.80c614","type":"influxdb out","z":"88bbcf05.96d65","influxdb":"8208eb36.6153d8","name":"utetemp","measurement":"utetemperatur","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":940,"y":40,"wires":[]},{"id":"d0be7feb.28e11","type":"delay","z":"88bbcf05.96d65","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"outputs":1,"x":780,"y":40,"wires":[["6ab26ac8.80c614"]]},{"id":"eebc93f6.c212e","type":"rbe","z":"88bbcf05.96d65","name":"","func":"narrowbandEq","gap":"3","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":450,"y":40,"wires":[["73a77557.6b856c"]]},{"id":"bb4cb81b741a61c4","type":"change","z":"88bbcf05.96d65","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.0","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"msg.payload/10","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":220,"wires":[["c0a101a41dae0d0f"]]},{"id":"c0a101a41dae0d0f","type":"rbe","z":"88bbcf05.96d65","name":"","func":"narrowbandEq","gap":"3","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":530,"y":220,"wires":[["d4b6749e0cb3c9bd"]]},{"id":"d4b6749e0cb3c9bd","type":"smooth","z":"88bbcf05.96d65","name":"","property":"payload","action":"mean","count":"25","round":"1","mult":"single","reduce":false,"x":680,"y":220,"wires":[["66c5d9ad0809478d"]]},{"id":"aeddf9b1dcd92d63","type":"influxdb out","z":"88bbcf05.96d65","influxdb":"8208eb36.6153d8","name":"innetemp","measurement":"avtrekktemperatur","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":1000,"y":220,"wires":[]},{"id":"66c5d9ad0809478d","type":"delay","z":"88bbcf05.96d65","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"outputs":1,"x":840,"y":220,"wires":[["aeddf9b1dcd92d63"]]},{"id":"1d2c21f6c83954ab","type":"modbus-read","z":"88bbcf05.96d65","name":"Alarm","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"InputRegister","adr":"14002","quantity":"1","rate":"20","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"46ccfe10.13ec3","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":330,"y":700,"wires":[["b4d47deaca170be7"],["b84efe97db8cb32f"]]},{"id":"b84efe97db8cb32f","type":"modbus-response","z":"88bbcf05.96d65","name":"","registerShowMax":20,"x":510,"y":720,"wires":[]},{"id":"b4d47deaca170be7","type":"rbe","z":"88bbcf05.96d65","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":470,"y":680,"wires":[["fdf82d077af5b4bf"]]},{"id":"fdf82d077af5b4bf","type":"change","z":"88bbcf05.96d65","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[0]","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"num","to":"ventilation alarm","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"num","to":"ventilation ok","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":640,"y":680,"wires":[["6a8d0be500f0432b","27684d14f960cfa0"]]},{"id":"af34e3778290d9d5","type":"blynk-ws-out-notify","z":"88bbcf05.96d65","name":"","client":"445c05cf.41736c","queue":false,"rate":5,"x":930,"y":680,"wires":[]},{"id":"6a8d0be500f0432b","type":"blynk-ws-out-write","z":"88bbcf05.96d65","name":"","pin":"22","pinmode":0,"client":"445c05cf.41736c","x":840,"y":720,"wires":[]},{"id":"27684d14f960cfa0","type":"switch","z":"88bbcf05.96d65","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"ventilation alarm","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":810,"y":680,"wires":[["af34e3778290d9d5"]]},{"id":"60b278c6.b6e098","type":"mqtt in","z":"bfb81e59.ff7c6","name":"","topic":"shellies/#","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":80,"y":40,"wires":[["ce0efd22.525fa"]]},{"id":"ce0efd22.525fa","type":"debug","z":"bfb81e59.ff7c6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":270,"y":40,"wires":[]},{"id":"b3538198.767e3","type":"mqtt in","z":"bfb81e59.ff7c6","name":"garage closed","topic":"shellies/shellyuni-483FDA82C328/input/1","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":90,"y":100,"wires":[["cdfcb02a.22f6f"]]},{"id":"910cccb5.38d94","type":"mqtt in","z":"bfb81e59.ff7c6","name":"garage open","topic":"shellies/shellyuni-483FDA82C328/input/0","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":90,"y":160,"wires":[["718a74bb.f6710c","45e79755.2d9828"]]},{"id":"49bc7c32.889304","type":"mqtt out","z":"bfb81e59.ff7c6","name":"open","topic":"shellies/shellyuni-483FDA6F317E/relay/0/command","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":510,"y":620,"wires":[]},{"id":"d7fad0e1.d4a84","type":"mqtt out","z":"bfb81e59.ff7c6","name":"close","topic":"shellies/shellyuni-483FDA6F317E/relay/1/command","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":510,"y":680,"wires":[]},{"id":"f8964a5d.6eb948","type":"inject","z":"bfb81e59.ff7c6","name":"open","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":620,"wires":[["81c46e20.51a87"]]},{"id":"81c46e20.51a87","type":"trigger","z":"bfb81e59.ff7c6","name":"","op1":"on","op2":"off","op1type":"str","op2type":"str","duration":"500","extend":false,"units":"ms","reset":"","bytopic":"all","outputs":1,"x":360,"y":620,"wires":[["49bc7c32.889304"]]},{"id":"16a4b443.11001c","type":"trigger","z":"bfb81e59.ff7c6","name":"","op1":"on","op2":"off","op1type":"str","op2type":"str","duration":"500","extend":false,"overrideDelay":false,"units":"ms","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":360,"y":680,"wires":[["d7fad0e1.d4a84"]]},{"id":"f6f753f1.e2316","type":"inject","z":"bfb81e59.ff7c6","name":"close","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":130,"y":680,"wires":[["16a4b443.11001c"]]},{"id":"f833fcd8.93e3","type":"inject","z":"bfb81e59.ff7c6","name":"","repeat":"1","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":90,"y":380,"wires":[["84d58917.e824b8","6cc4005e.31f1f8"]]},{"id":"cdfcb02a.22f6f","type":"change","z":"bfb81e59.ff7c6","name":"closed","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"str","to":"true","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"str","to":"false","tot":"bool"},{"t":"set","p":"garageclosed","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":310,"y":100,"wires":[[]]},{"id":"718a74bb.f6710c","type":"change","z":"bfb81e59.ff7c6","name":"open","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"str","to":"true","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"0","fromt":"str","to":"false","tot":"bool"},{"t":"set","p":"garageopen","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":310,"y":160,"wires":[["45e79755.2d9828"]]},{"id":"84d58917.e824b8","type":"function","z":"bfb81e59.ff7c6","name":"limitswitch","func":"var open = global.get(\"garageopen\")\nvar closed = global.get(\"garageclosed\")\n\nif (open === true) {\nmsg.payload = \"open\"\nflow.set(\"lastpos\", \"open\")\nnode.send(msg)\n}\n\nif (closed === true) {\nmsg.payload = \"closed\"\nflow.set(\"lastpos\", \"closed\")\nnode.send(msg)\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":270,"y":380,"wires":[["fe5c12ab.76ec4"]]},{"id":"fe5c12ab.76ec4","type":"timeouttrigger","z":"bfb81e59.ff7c6","ontimeouttype":"str","ontimeoutval":"stuck","duration":"60","units":"s","name":"","x":410,"y":380,"wires":[["b9e1c24d.f956e"]]},{"id":"5637f495.d03fec","type":"switch","z":"bfb81e59.ff7c6","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"stuck","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":710,"y":420,"wires":[["5518287e.9324b"]]},{"id":"b9e1c24d.f956e","type":"rbe","z":"bfb81e59.ff7c6","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":550,"y":380,"wires":[["5637f495.d03fec","5f47bb89.6a343c"]]},{"id":"6cc4005e.31f1f8","type":"function","z":"bfb81e59.ff7c6","name":"moving","func":"var open = global.get(\"garageopen\")\nvar closed = global.get(\"garageclosed\")\n\nif (open !== true && closed !== true) {\n//msg.payload = \"moving from \" + flow.get(\"lastpos\")\n\nif (flow.get(\"lastpos\") == \"closed\") {\n msg.payload = \"opening\"\n}\nif (flow.get(\"lastpos\") == \"open\") {\n msg.payload = \"closing\"\n}\nnode.send(msg)\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":260,"y":340,"wires":[["16534a54.37eb56","c6eda2e17f12fbfe"]]},{"id":"16534a54.37eb56","type":"rbe","z":"bfb81e59.ff7c6","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":550,"y":340,"wires":[["1780a68f.d5ff01"]]},{"id":"fe5e9def.6e611","type":"blynk-ws-in-write","z":"bfb81e59.ff7c6","name":"open","pin":"10","pin_all":0,"client":"445c05cf.41736c","x":90,"y":500,"wires":[["81c46e20.51a87"]]},{"id":"c3ff5ba0.f5661","type":"blynk-ws-in-write","z":"bfb81e59.ff7c6","name":"close","pin":"11","pin_all":0,"client":"445c05cf.41736c","x":90,"y":560,"wires":[["16a4b443.11001c"]]},{"id":"1780a68f.d5ff01","type":"blynk-ws-out-write","z":"bfb81e59.ff7c6","name":"status","pin":"12","pinmode":0,"client":"445c05cf.41736c","x":850,"y":340,"wires":[]},{"id":"69152922.662ee","type":"blynk-ws-out-notify","z":"bfb81e59.ff7c6","name":"","client":"445c05cf.41736c","queue":false,"rate":5,"x":1010,"y":420,"wires":[]},{"id":"5518287e.9324b","type":"change","z":"bfb81e59.ff7c6","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"garasjeporten er stuck","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":420,"wires":[["69152922.662ee"]]},{"id":"5f47bb89.6a343c","type":"function","z":"bfb81e59.ff7c6","name":"","func":"if (msg.payload == \"stuck\") {\nmsg.payload = msg.payload + \" from \" + flow.get(\"lastpos\")\n}\nelse {\n msg.payload = msg.payload\n}\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":690,"y":360,"wires":[["1780a68f.d5ff01"]]},{"id":"45e79755.2d9828","type":"debug","z":"bfb81e59.ff7c6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":330,"y":200,"wires":[]},{"id":"4e2cec0836c4ad79","type":"link in","z":"bfb81e59.ff7c6","name":"","links":["ab1207242d5207df"],"x":155,"y":720,"wires":[["28a6c93888207980"]]},{"id":"28a6c93888207980","type":"switch","z":"bfb81e59.ff7c6","name":"check if open","property":"garageopen","propertyType":"global","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":150,"y":780,"wires":[["16a4b443.11001c"]]},{"id":"c6eda2e17f12fbfe","type":"debug","z":"bfb81e59.ff7c6","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":470,"y":280,"wires":[]},{"id":"1855c00f.80d9e","type":"json","z":"97d46aa8.590d48","name":"","x":2050,"y":600,"wires":[["8e0522ae.106e38"]]},{"id":"8e0522ae.106e38","type":"file","z":"97d46aa8.590d48","name":"writeFile","filename":"","appendNewline":false,"overwriteFile":true,"x":2178.0001220703125,"y":600,"wires":[[]]},{"id":"8d3ad658.9e0058","type":"file in","z":"97d46aa8.590d48","name":"readFile","filename":"","format":"utf8","x":603.2505073547363,"y":573.0000762939453,"wires":[["c170604f.bbdaa"]]},{"id":"a6529dac.a17928","type":"inject","z":"97d46aa8.590d48","name":"","repeat":"240","crontab":"","once":true,"onceDelay":"","topic":"filename","payload":"rs69","payloadType":"str","x":160,"y":640,"wires":[["b699983f.6129e8"]]},{"id":"b699983f.6129e8","type":"change","z":"97d46aa8.590d48","name":"filename","action":"replace","property":"filename","from":"","to":"msg.payload","reg":false,"x":179.00015258789062,"y":578.999641418457,"wires":[["4c22dd3a.8ffb6c"]]},{"id":"30ccf4e.318cc0c","type":"change","z":"97d46aa8.590d48","name":"myPublicIp.json","action":"replace","property":"filename","from":"","to":"myPublicIp.json","reg":false,"x":447.0001678466797,"y":612.9998245239258,"wires":[["8d3ad658.9e0058"]]},{"id":"4c22dd3a.8ffb6c","type":"switch","z":"97d46aa8.590d48","name":"","property":"filename.length","rules":[{"t":"gt","v":0,"v2":0},{"t":"else"}],"checkall":"false","outputs":2,"x":302.0001678466797,"y":579.9996109008789,"wires":[["8d3ad658.9e0058"],["30ccf4e.318cc0c"]]},{"id":"c170604f.bbdaa","type":"switch","z":"97d46aa8.590d48","name":"","property":"payload.length","rules":[{"t":"gt","v":0,"v2":0},{"t":"else"}],"checkall":"true","outputs":2,"x":724.0001525878906,"y":572.9997634887695,"wires":[["bb58560a.a69138"],["e1d46089.0c4e2"]]},{"id":"629f442.b044dbc","type":"change","z":"97d46aa8.590d48","name":"last ip from file","action":"replace","property":"lastip","from":"","to":"msg.payload","reg":false,"x":1009.0001831054688,"y":539.999641418457,"wires":[["5294426b.6081fc"]]},{"id":"6acc0be8.7f5754","type":"debug","z":"97d46aa8.590d48","name":"Stable IP","active":false,"console":"false","complete":"false","x":1940,"y":540,"wires":[]},{"id":"1ba01446.2b255c","type":"function","z":"97d46aa8.590d48","name":"Compare IP","func":"var lastip = msg.lastip.ip;\nvar currentip = msg.payload.ip;\nmsg.currentip = currentip;\nmsg.topic = \"stable\";\nif (lastip !== currentip) {\nmsg.payload.ip = currentip;\nmsg.topic = \"new\";\n}\n\nreturn msg;\n","outputs":"1","noerr":0,"x":1430,"y":700,"wires":[["d8a7f329.2f955","b7b4e50.c01bd98"]]},{"id":"bb58560a.a69138","type":"json","z":"97d46aa8.590d48","name":"","x":866.0001983642578,"y":539.999641418457,"wires":[["629f442.b044dbc"]]},{"id":"d8a7f329.2f955","type":"template","z":"97d46aa8.590d48","name":"Description","field":"payload","fieldType":"msg","syntax":"mustache","template":"Your {{topic}} Public IP: http://{{payload.ip}}","x":1630,"y":560,"wires":[["19717e68.89302a"]]},{"id":"19717e68.89302a","type":"switch","z":"97d46aa8.590d48","name":"","property":"topic","rules":[{"t":"eq","v":"stable"},{"t":"else"}],"checkall":"false","outputs":2,"x":1771.0000610351562,"y":596.9996032714844,"wires":[["6acc0be8.7f5754"],["b4e6d397.28aa18","706307c1.fece5"]]},{"id":"b4e6d397.28aa18","type":"function","z":"97d46aa8.590d48","name":"prepare","func":"var newFile = {};\nnewFile.filename = msg.filename;\nnewFile.payload = {ip: msg.currentip};\n\nreturn newFile;","outputs":"1","x":1929.000244140625,"y":600.9996032714844,"wires":[["1855c00f.80d9e"]]},{"id":"e1d46089.0c4e2","type":"change","z":"97d46aa8.590d48","name":"null","action":"replace","property":"lastip","from":"","to":"null","reg":false,"x":868.0002059936523,"y":601.2496490478516,"wires":[["5294426b.6081fc"]]},{"id":"706307c1.fece5","type":"debug","z":"97d46aa8.590d48","name":"New IP","active":true,"console":"false","complete":"false","x":1920,"y":640,"wires":[]},{"id":"5294426b.6081fc","type":"http request","z":"97d46aa8.590d48","name":"Server","method":"GET","url":"http://ipecho.net/plain","x":1190.0001831054688,"y":599.999641418457,"wires":[["4227092b.cd95d8"]]},{"id":"4227092b.cd95d8","type":"function","z":"97d46aa8.590d48","name":"payload.ip","func":"var regObj = new RegExp(\"(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9]).){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\");\nvar str = msg.payload;\nvar myIp = {};\nmyIp = str.match(regObj);\nmsg.payload = {ip : myIp[0]};\nreturn msg;","outputs":1,"noerr":0,"x":1330,"y":600,"wires":[["1ba01446.2b255c"]]},{"id":"aa88ab39.414a2","type":"comment","z":"97d46aa8.590d48","name":"Filename","info":"use the \"payload\" property to define a custom file name to hold\nthe public Ip address.\nThis flow uses the json format and will create a file when\nit is not found or when the public ip address changes.","x":58.27288055419922,"y":528.2723617553711,"wires":[]},{"id":"91d1d111.28e81","type":"comment","z":"97d46aa8.590d48","name":"Is there a filename defined?","info":"If it is blank, inject the default file name into the flow.","x":360.77296447753906,"y":538.2723922729492,"wires":[]},{"id":"42a28d47.bc7604","type":"comment","z":"97d46aa8.590d48","name":"Valid file?","info":"By checking the length of the payload we can determine if\nthe file exists or not.","x":722.0229072570801,"y":528.2723531723022,"wires":[]},{"id":"46d4b380.85036c","type":"comment","z":"97d46aa8.590d48","name":"New file check","info":"If the file does not exist, set the lastip property\nto something that will not match when we check a service for\nour public ip.","x":882.0229072570801,"y":645.7723560333252,"wires":[]},{"id":"bcc46803.2a6528","type":"comment","z":"97d46aa8.590d48","name":"good file","info":"convert the string to json and move it to the\nmsg.lastip property","x":1000,"y":580,"wires":[]},{"id":"a6b81bf8.f15cc","type":"comment","z":"97d46aa8.590d48","name":"Check IP","info":"Use a web service to check your ip address.\nThen use a function to extract the ip from the result.\nTested with these Services:\nhttp://checkip.dyndns.org/\nhttp://echoip.com/\nhttp://ipecho.net/plain\nhttp://bot.whatismyipaddress.com/\n","x":1202.022850036621,"y":549.0223617553711,"wires":[]},{"id":"77d394c.90d166c","type":"comment","z":"97d46aa8.590d48","name":"Compare","info":"compare the results from the WEB with file","x":1494.5229110717773,"y":647.0223617553711,"wires":[]},{"id":"6c5da0ab.67b8d","type":"comment","z":"97d46aa8.590d48","name":"Text Description","info":"Add some words around the result to tell you whats going on.","x":1400,"y":180,"wires":[]},{"id":"5f3b0214.fd53bc","type":"comment","z":"97d46aa8.590d48","name":"Results","info":"The results will flow out the top if they are unchanged\nor flow out the bottom when they have changed.\nwe also write that to our file for next time.\nThis would be the ideal place to email or tweet on change.","x":1768.2728691101074,"y":647.0223627090454,"wires":[]},{"id":"a7827a39.8403e","type":"comment","z":"97d46aa8.590d48","name":"No?","info":"Then use the default defined here.","x":433.2728805541992,"y":654.5223388671875,"wires":[]},{"id":"47849ab.88549e4","type":"comment","z":"97d46aa8.590d48","name":"Save if different","info":"This ensures we remember the ip thru power cycles ;-)","x":2145.7728729248047,"y":655.7723627090454,"wires":[]},{"id":"4b839521.176adc","type":"blynk-ws-out-notify","z":"97d46aa8.590d48","name":"","client":"445c05cf.41736c","queue":false,"rate":5,"x":2130,"y":800,"wires":[]},{"id":"b020842f.9afc68","type":"ipwhois","z":"97d46aa8.590d48","name":"","x":1840,"y":800,"wires":[["857d45c0.8c1158"]]},{"id":"857d45c0.8c1158","type":"function","z":"97d46aa8.590d48","name":"ISP","func":"msg.payload = \"ISP: \" +msg.payload.descr\nreturn msg;","outputs":1,"noerr":0,"x":1990,"y":800,"wires":[["c1d86cff.e67c2"]]},{"id":"bf341134.86aff8","type":"change","z":"97d46aa8.590d48","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.ip","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1660,"y":800,"wires":[["b020842f.9afc68","592972e2.abef34"]]},{"id":"b7b4e50.c01bd98","type":"switch","z":"97d46aa8.590d48","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"new","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1590,"y":700,"wires":[["bf341134.86aff8"]]},{"id":"c1d86cff.e67c2","type":"blynk-ws-out-write","z":"97d46aa8.590d48","name":"isp","pin":"8","pinmode":0,"client":"445c05cf.41736c","x":2130,"y":840,"wires":[]},{"id":"592972e2.abef34","type":"blynk-ws-out-write","z":"97d46aa8.590d48","name":"ip","pin":"9","pinmode":0,"client":"445c05cf.41736c","x":1830,"y":740,"wires":[]},{"id":"913274f89d5d3324","type":"ping","z":"97d46aa8.590d48","protocol":"Automatic","mode":"timed","name":"Sagi","host":"192.168.0.4","timer":"60","inputs":0,"x":630,"y":720,"wires":[["6b7af210c3f7df4a"]]},{"id":"36286b89816ad26c","type":"ping","z":"97d46aa8.590d48","protocol":"Automatic","mode":"timed","name":"Vestre","host":"192.168.10.184","timer":"60","inputs":0,"x":630,"y":800,"wires":[["e86c2105f8e18c29"]]},{"id":"0c13c1088b55070f","type":"change","z":"97d46aa8.590d48","name":"Sagi","rules":[{"t":"set","p":"payload","pt":"msg","to":"Sagi is down","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":910,"y":700,"wires":[["7b16d5643fe13927"]]},{"id":"66832f573f4fb9aa","type":"ping","z":"97d46aa8.590d48","protocol":"Automatic","mode":"timed","name":"4G","host":"192.168.77.1","timer":"180","inputs":0,"x":630,"y":880,"wires":[["87f973450a2e5035"]]},{"id":"3cf6f87ae4aabcad","type":"blynk-ws-out-write","z":"97d46aa8.590d48","name":"4G","pin":"16","pinmode":0,"client":"445c05cf.41736c","x":1090,"y":60,"wires":[]},{"id":"7b16d5643fe13927","type":"rbe","z":"97d46aa8.590d48","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":1050,"y":720,"wires":[[]]},{"id":"6b7af210c3f7df4a","type":"switch","z":"97d46aa8.590d48","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"},{"t":"istype","v":"number","vt":"number"}],"checkall":"true","repair":false,"outputs":2,"x":770,"y":720,"wires":[["0c13c1088b55070f"],["1a6dcfc9c16f8f66"]]},{"id":"1a6dcfc9c16f8f66","type":"change","z":"97d46aa8.590d48","name":"Sagi","rules":[{"t":"set","p":"payload","pt":"msg","to":"Sagi is up","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":910,"y":740,"wires":[["7b16d5643fe13927"]]},{"id":"e86c2105f8e18c29","type":"switch","z":"97d46aa8.590d48","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"},{"t":"istype","v":"number","vt":"number"}],"checkall":"true","repair":false,"outputs":2,"x":770,"y":800,"wires":[["9284f3f16a3cc549"],["7175cf7256536c9f"]]},{"id":"9284f3f16a3cc549","type":"change","z":"97d46aa8.590d48","name":"Vestre","rules":[{"t":"set","p":"payload","pt":"msg","to":"Vestre is down","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":910,"y":780,"wires":[["a1ce14e754e99069"]]},{"id":"7175cf7256536c9f","type":"change","z":"97d46aa8.590d48","name":"Vestre","rules":[{"t":"set","p":"payload","pt":"msg","to":"Vestre is up","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":910,"y":820,"wires":[["a1ce14e754e99069"]]},{"id":"a1ce14e754e99069","type":"rbe","z":"97d46aa8.590d48","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":1050,"y":800,"wires":[[]]},{"id":"87f973450a2e5035","type":"switch","z":"97d46aa8.590d48","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"},{"t":"istype","v":"number","vt":"number"}],"checkall":"true","repair":false,"outputs":2,"x":770,"y":880,"wires":[["9da78571ecc6090a"],["e261265170113d58"]]},{"id":"9da78571ecc6090a","type":"change","z":"97d46aa8.590d48","name":"4G","rules":[{"t":"set","p":"payload","pt":"msg","to":"4G is down","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":910,"y":860,"wires":[["e0e6e546896e0970"]]},{"id":"e261265170113d58","type":"change","z":"97d46aa8.590d48","name":"4G","rules":[{"t":"set","p":"payload","pt":"msg","to":"4G is up","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":910,"y":900,"wires":[["e0e6e546896e0970"]]},{"id":"e0e6e546896e0970","type":"rbe","z":"97d46aa8.590d48","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":1050,"y":880,"wires":[[]]},{"id":"900826348f55b45a","type":"mikrotik","z":"97d46aa8.590d48","device":"130d0c09fb6d48df","name":"","action":"9","command":"","command-type":"str","x":400,"y":60,"wires":[["31a1c2a41a4d2e56","e3316f5276867e39","568b8d96ccda8fb8"]]},{"id":"62882461d8e0b893","type":"inject","z":"97d46aa8.590d48","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":true,"onceDelay":"5","topic":"","payload":"/ip/dhcp-client/print","payloadType":"str","x":200,"y":60,"wires":[["900826348f55b45a"]]},{"id":"31a1c2a41a4d2e56","type":"switch","z":"97d46aa8.590d48","name":"4G","property":"payload[1].status","propertyType":"msg","rules":[{"t":"neq","v":"bound","vt":"str"},{"t":"eq","v":"bound","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":570,"y":60,"wires":[["9257ae225d54e047"],["a39850f21e042090"]]},{"id":"9257ae225d54e047","type":"change","z":"97d46aa8.590d48","name":"4G","rules":[{"t":"set","p":"payload","pt":"msg","to":"4G is down","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":40,"wires":[["9f171d2313f9f102"]]},{"id":"a39850f21e042090","type":"change","z":"97d46aa8.590d48","name":"4G","rules":[{"t":"set","p":"payload","pt":"msg","to":"4G is up","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":80,"wires":[["9f171d2313f9f102"]]},{"id":"dcede2ebb70dd93d","type":"blynk-ws-out-notify","z":"97d46aa8.590d48","name":"","client":"445c05cf.41736c","queue":false,"rate":5,"x":1090,"y":280,"wires":[]},{"id":"1f85f49d370cce7b","type":"switch","z":"97d46aa8.590d48","name":"Vestre","property":"payload[3].status","propertyType":"msg","rules":[{"t":"neq","v":"bound","vt":"str"},{"t":"eq","v":"bound","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":570,"y":140,"wires":[["75035d952bf1a864"],["239412a481c209cb"]]},{"id":"75035d952bf1a864","type":"change","z":"97d46aa8.590d48","name":"Vestre","rules":[{"t":"set","p":"payload","pt":"msg","to":"Vestre is down","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":120,"wires":[["c72f91db93014436"]]},{"id":"239412a481c209cb","type":"change","z":"97d46aa8.590d48","name":"Vestre","rules":[{"t":"set","p":"payload","pt":"msg","to":"Vestre is up","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":160,"wires":[["c72f91db93014436"]]},{"id":"0b175bc94d063eae","type":"blynk-ws-out-write","z":"97d46aa8.590d48","name":"Vestre","pin":"15","pinmode":0,"client":"445c05cf.41736c","x":1090,"y":140,"wires":[]},{"id":"701f4e844f05a65a","type":"switch","z":"97d46aa8.590d48","name":"Sagi","property":"payload[0].status","propertyType":"msg","rules":[{"t":"neq","v":"bound","vt":"str"},{"t":"eq","v":"bound","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":570,"y":220,"wires":[["16b1d4e22c44a06b"],["10fb3c8c6280f7ab"]]},{"id":"16b1d4e22c44a06b","type":"change","z":"97d46aa8.590d48","name":"Sagi","rules":[{"t":"set","p":"payload","pt":"msg","to":"Sagi is down","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":200,"wires":[["29d052841cf51b22"]]},{"id":"10fb3c8c6280f7ab","type":"change","z":"97d46aa8.590d48","name":"Sagi","rules":[{"t":"set","p":"payload","pt":"msg","to":"Sagi is up","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":240,"wires":[["29d052841cf51b22"]]},{"id":"3209fe9258deeaed","type":"blynk-ws-out-write","z":"97d46aa8.590d48","name":"Sagi","pin":"14","pinmode":0,"client":"445c05cf.41736c","x":1090,"y":220,"wires":[]},{"id":"70e74ec39ffc78ad","type":"Unifi","z":"97d46aa8.590d48","name":"","ip":"192.168.88.94","port":8443,"site":"default","command":"20","unifios":false,"x":290,"y":380,"wires":[["a732b037bac8a6a4"]]},{"id":"807523754ddaeff7","type":"inject","z":"97d46aa8.590d48","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":true,"onceDelay":"5","topic":"","payloadType":"date","x":130,"y":380,"wires":[["70e74ec39ffc78ad","652b279ea7cd0ee1"]]},{"id":"a732b037bac8a6a4","type":"function","z":"97d46aa8.590d48","name":"check presence","func":"const lastSeenSeconds = 20;\nlet presenceCutoff = (new Date() - (lastSeenSeconds * 1000)) / 1000; \nconst people = {\n \"presence/user1\": \"Stigs-iPhone\",\n \"presence/user2\": \"GjertrutsiPhone\",\n \"presence/user3\": \"StigsAppleWatch\",\n \"presence/user4\": \"Duser4iPhone\",\n};\n\n\nreturn Object.keys(people).map(function(topic) {\n //let devices = msg.payload[0].filter(device => device.name === people[topic] && device.last_seen > presenceCutoff);\n let devices = msg.payload[0].filter(device => device.name === people[topic]);\n\n return {\n topic: topic,\n retain: true,\n payload: devices.length > 0\n };\n});\n\n","outputs":4,"noerr":0,"initialize":"","finalize":"","libs":[],"x":440,"y":380,"wires":[["58ee02bd63273818"],["58ee02bd63273818"],["58ee02bd63273818"],["58ee02bd63273818"]],"outputLabels":["joep presence","monique presence","",""]},{"id":"58ee02bd63273818","type":"join","z":"97d46aa8.590d48","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"4","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":640,"y":360,"wires":[["ebb191dde555057b"]]},{"id":"ebb191dde555057b","type":"function","z":"97d46aa8.590d48","name":"","func":"msg.topic = \"Presence\"\nmsg.payload = msg.payload.includes(true)\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":640,"y":420,"wires":[["bfde579cc4509dd8"]]},{"id":"8e94614975d0b834","type":"link out","z":"97d46aa8.590d48","name":"","links":["47087e11b76595fe"],"x":1055,"y":460,"wires":[]},{"id":"e3316f5276867e39","type":"delay","z":"97d46aa8.590d48","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":360,"y":220,"wires":[["701f4e844f05a65a"]]},{"id":"568b8d96ccda8fb8","type":"delay","z":"97d46aa8.590d48","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":360,"y":140,"wires":[["1f85f49d370cce7b"]]},{"id":"9f171d2313f9f102","type":"switch","z":"97d46aa8.590d48","name":"","property":"payload","propertyType":"msg","rules":[{"t":"neq","v":"4G","vt":"flow"}],"checkall":"true","repair":false,"outputs":1,"x":830,"y":60,"wires":[["dcede2ebb70dd93d","970a6c8bfe27a5a5"]]},{"id":"c72f91db93014436","type":"switch","z":"97d46aa8.590d48","name":"","property":"payload","propertyType":"msg","rules":[{"t":"neq","v":"vestre","vt":"flow"}],"checkall":"true","repair":false,"outputs":1,"x":830,"y":140,"wires":[["dcede2ebb70dd93d","675e9f3d80fac081"]]},{"id":"29d052841cf51b22","type":"switch","z":"97d46aa8.590d48","name":"","property":"payload","propertyType":"msg","rules":[{"t":"neq","v":"sagi","vt":"flow"}],"checkall":"true","repair":false,"outputs":1,"x":830,"y":220,"wires":[["dcede2ebb70dd93d","d3cdd654196367d3"]]},{"id":"970a6c8bfe27a5a5","type":"change","z":"97d46aa8.590d48","name":"4G","rules":[{"t":"set","p":"4G","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":950,"y":60,"wires":[["3cf6f87ae4aabcad"]]},{"id":"675e9f3d80fac081","type":"change","z":"97d46aa8.590d48","name":"vestre","rules":[{"t":"set","p":"vestre","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":950,"y":140,"wires":[["0b175bc94d063eae"]]},{"id":"d3cdd654196367d3","type":"change","z":"97d46aa8.590d48","name":"sagi","rules":[{"t":"set","p":"sagi","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":950,"y":220,"wires":[["3209fe9258deeaed"]]},{"id":"c3a88c2eb5de673b","type":"switch","z":"97d46aa8.590d48","name":"","property":"autolock","propertyType":"flow","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":930,"y":460,"wires":[["8e94614975d0b834"]]},{"id":"2179706fd1e048ab","type":"blynk-ws-in-write","z":"97d46aa8.590d48","name":"Auto","pin":"21","pin_all":0,"client":"445c05cf.41736c","x":790,"y":380,"wires":[["4f5089caa2d0c9d4"]]},{"id":"4f5089caa2d0c9d4","type":"change","z":"97d46aa8.590d48","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"2","fromt":"str","to":"false","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"str","to":"true","tot":"bool"},{"t":"set","p":"autolock","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":380,"wires":[[]]},{"id":"bfde579cc4509dd8","type":"rbe","z":"97d46aa8.590d48","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload","topi":"topic","x":790,"y":420,"wires":[["c3a88c2eb5de673b","3ff51f15da5255bd"]]},{"id":"3ff51f15da5255bd","type":"change","z":"97d46aa8.590d48","name":"","rules":[{"t":"set","p":"home","pt":"global","to":"payload","tot":"msg"},{"t":"change","p":"payload","pt":"msg","from":"true","fromt":"bool","to":"Occupied","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"Unoccupied","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":420,"wires":[["a4a855a6ed53f59e"]]},{"id":"a4a855a6ed53f59e","type":"blynk-ws-out-write","z":"97d46aa8.590d48","name":"Presence","pin":"17","pinmode":0,"client":"445c05cf.41736c","x":1140,"y":420,"wires":[]},{"id":"652b279ea7cd0ee1","type":"blynk-ws-out-sync","z":"97d46aa8.590d48","name":"","pin":"21","pinmode":"0","client":"445c05cf.41736c","x":440,"y":440,"wires":[]},{"id":"89292277.1f55d","type":"http in","z":"426fc302.e8964c","name":"","url":"/ttn","method":"post","upload":true,"swaggerDoc":"","x":60,"y":60,"wires":[["321460b1.8b5b"]]},{"id":"321460b1.8b5b","type":"change","z":"426fc302.e8964c","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.payload_fields.TempC_SHT","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":220,"y":60,"wires":[["3d5aa25d.4f119e"]]},{"id":"3d5aa25d.4f119e","type":"influxdb out","z":"426fc302.e8964c","influxdb":"8208eb36.6153d8","name":"utetemplht65","measurement":"utetemplht65","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":390,"y":60,"wires":[]},{"id":"a20703b6.cf7e5","type":"mqtt in","z":"426fc302.e8964c","name":"","topic":"zwavekjeller/#","qos":"1","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":70,"y":180,"wires":[["8f2ef8cf.b4b1b8"]]},{"id":"8f2ef8cf.b4b1b8","type":"debug","z":"426fc302.e8964c","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":430,"y":180,"wires":[]},{"id":"8e6fddba.2ff9c","type":"mqtt in","z":"426fc302.e8964c","name":"varmtvann forbruk","topic":"zwavekjeller/2/50/0/value/66049","qos":"2","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":90,"y":240,"wires":[["b081886e.1dae98"]]},{"id":"e917c500.293738","type":"influxdb out","z":"426fc302.e8964c","influxdb":"8208eb36.6153d8","name":"varmtvatn","measurement":"varmtvatn","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"ms","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":460,"y":300,"wires":[]},{"id":"b081886e.1dae98","type":"change","z":"426fc302.e8964c","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.value","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":240,"wires":[["e917c500.293738"]]},{"id":"fc6df6ce.08ab18","type":"change","z":"426fc302.e8964c","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.data[0].values[\"50-0-value-66049\"].value","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":300,"wires":[["e917c500.293738"]]},{"id":"c3e4bf8a.34be6","type":"mqtt in","z":"426fc302.e8964c","name":"varmtvann forbruk","topic":"zwavekjeller/_EVENTS/ZWAVE_GATEWAY-zwavejs2mqtt-kjeller/node/node_value_updated","qos":"2","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":90,"y":300,"wires":[["fc6df6ce.08ab18"]]},{"id":"a8dbdc9d.aa25c","type":"http request","z":"426fc302.e8964c","name":"HLTt","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://192.168.88.51:8000/global/HLTt","tls":"","persist":false,"proxy":"","authType":"","x":270,"y":560,"wires":[["11b6fee5.c1fb51"]]},{"id":"427d0071.1ca41","type":"debug","z":"426fc302.e8964c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":590,"y":560,"wires":[]},{"id":"e58d9ad7.a9d258","type":"inject","z":"426fc302.e8964c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":560,"wires":[["a8dbdc9d.aa25c"]]},{"id":"11b6fee5.c1fb51","type":"change","z":"426fc302.e8964c","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload.Value)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":420,"y":560,"wires":[["427d0071.1ca41"]]},{"id":"d64a5202.4bee","type":"inject","z":"426fc302.e8964c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":600,"wires":[["9d11ea44.e0a578"]]},{"id":"9d11ea44.e0a578","type":"http request","z":"426fc302.e8964c","name":"HLTv","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://192.168.88.51:8000/global/HLTv","tls":"","persist":false,"proxy":"","authType":"","x":270,"y":600,"wires":[["5fb1d42a.74e1ec"]]},{"id":"5fb1d42a.74e1ec","type":"change","z":"426fc302.e8964c","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload.Value)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":420,"y":600,"wires":[["70d63d65.7bee54"]]},{"id":"70d63d65.7bee54","type":"debug","z":"426fc302.e8964c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":590,"y":600,"wires":[]},{"id":"76e3154fafc08f48","type":"key-value-read","z":"fab5435eda80d36d","store":"eb1127af.550128","key":"","name":"","x":430,"y":340,"wires":[["c7a45a841ef4d419"]]},{"id":"f8659a2089904a7f","type":"change","z":"fab5435eda80d36d","name":"set batchnumber","rules":[{"t":"set","p":"topic","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":270,"y":340,"wires":[["76e3154fafc08f48","33892dfac52131cb"]]},{"id":"133c4f8d159fdc68","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"Batchno","pin":"8","pin_all":0,"client":"1f9f077d.fcb709","x":60,"y":320,"wires":[["7e0e253c10070ebe"]]},{"id":"1a8d71a5dfddfaaa","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"Button","pin":"9","pin_all":0,"client":"1f9f077d.fcb709","x":70,"y":280,"wires":[["baf710a04cb9941f"]]},{"id":"2190a3deab1616be","type":"inject","z":"fab5435eda80d36d","name":"start","props":[{"p":"payload","v":"","vt":"date"},{"p":"topic","v":"","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"8","topic":"","payload":"","payloadType":"date","x":70,"y":120,"wires":[["3aa13160b475c453"]]},{"id":"c7a45a841ef4d419","type":"change","z":"fab5435eda80d36d","name":"store","rules":[{"t":"set","p":"fermentationStartDate","pt":"flow","to":"payload.fermentationStartDate","tot":"jsonata"},{"t":"set","p":"stepTemp","pt":"flow","to":"payload.recipe.fermentation.steps.stepTemp\t","tot":"jsonata"},{"t":"set","p":"stepTime","pt":"flow","to":"payload.recipe.fermentation.steps.stepTime","tot":"jsonata"},{"t":"set","p":"steps","pt":"flow","to":"$count(msg.payload.recipe.fermentation.steps)\t","tot":"jsonata"},{"t":"set","p":"finished","pt":"flow","to":"$sum(payload.recipe.fermentation.steps.stepTime)\t\t","tot":"jsonata"},{"t":"set","p":"name","pt":"flow","to":"payload.recipe.name","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":340,"wires":[["447ae839499da5d7","b6725fe123b74d83"]]},{"id":"0fa98e28b33c1f28","type":"inject","z":"fab5435eda80d36d","name":"now","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"2","crontab":"","once":true,"onceDelay":"12","topic":"","payloadType":"date","x":750,"y":400,"wires":[["4bd18e01824903e9","bc881f723a135016"]]},{"id":"4bd18e01824903e9","type":"function","z":"fab5435eda80d36d","name":"Calc&store SP","func":"\nvar steptype\nvar pressuresp\nvar target\nvar msg1 = {};\nvar msg2 = {};\n\nvar now = msg.payload / 1000 /3600 / 24\nvar start = flow.get('fermentationStartDate') / 1000 /3600 /24\nvar steps = flow.get('steps') - 1\nvar stepTemp = flow.get('stepTemp')\nvar stepTime = flow.get('stepTime')\nvar stepcounter = 0\nvar nextsteptime = start+stepTime[0]\nvar elapsed = now - start\nflow.set('elapsed', elapsed)\nnow = now + flow.get('stepoverride')\n\nfor (var i=1;i<=steps;i++) {\n if (now > nextsteptime) {\n stepcounter += 1;\n nextsteptime += stepTime[i];\n }\n}\n\nvar nextstepcountdown = nextsteptime - now\nflow.set('nextstepcountdown', nextstepcountdown )\n\nif (global.get(\"F1tauto\") === true) {\n target = stepTemp[stepcounter]\n} else\n{ target = flow.get(\"newtarget\")\n}\nflow.set('target', target)\n\nsteptype = flow.get('steptype')\nsteptype = steptype[stepcounter]\nflow.set(\"stype\", steptype)\nflow.set('stepcounter', stepcounter)\n\nif (global.get(\"F1pauto\") === true) {\n pressuresp = flow.get('pressuresp')\n pressuresp = pressuresp[stepcounter]\n if (pressuresp === null) {\n pressuresp = 0\n }\n} else {\n pressuresp = flow.get('newpressuresp')\n}\nflow.set(\"PSP\", pressuresp)\n\nmsg.payload = {\n pressuresp\n}\nmsg1.pick = stepcounter\n\nmsg1.payload = pressuresp\nmsg2.payload = target\nreturn [msg1, msg2];\n \n","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":980,"y":460,"wires":[["3d28356fb2f66c7c","05d6bbd3993d89d4","871a5cb49882b041"],["bc41cf9d6d83b529","8cbd1aa0aa96a303"]]},{"id":"baf710a04cb9941f","type":"blynk-ws-out-sync","z":"fab5435eda80d36d","name":"Batchno-sync","pin":"8","pinmode":0,"client":"1f9f077d.fcb709","x":280,"y":280,"wires":[]},{"id":"c1bcc3a591809a43","type":"function","z":"fab5435eda80d36d","name":"thermostat","func":"var temp = flow.get('temp')||20\nvar hyst = 0.1\nvar ambient = flow.get('ambient')||20\nvar heat = flow.get('heat')||\"off\"\nvar cool = flow.get('cool')||\"off\"\nvar target = flow.get(\"target\")\n\n\nflow.set(\"F1temp\", msg.payload)\n//heat\nif (temp < target - hyst) {//&& (ambient < target)) {\n heat = \"on\"\n flow.set('heat', heat)\n }\nif (temp > target) {\n heat = \"off\"\n flow.set('heat', heat)\n}\n \n//cool\nif (temp > (target + hyst)) {\n cool = \"on\"\n flow.set('cool', cool)\n }\n\nif (temp < target) {\n cool = \"off\" \n flow.set('cool', cool)\n }\n \nif (flow.get('heatingstopped') === true) {\n heat = \"off\"\n flow.set('heat', heat)\n}\nif (flow.get('coolingstopped') === true) {\n cool = \"off\" \n flow.set('cool', cool)\n}\n\nmsg.topic = \"thermostat\"\nmsg.payload = {\"heat\": flow.get('heat'), \"cool\": flow.get('cool')}\n \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":590,"y":560,"wires":[["ea3c82af86d8bf32","743dce5ac173a30e","87ed05a97720406a"]]},{"id":"3d28356fb2f66c7c","type":"blynk-ws-out-table","z":"fab5435eda80d36d","name":"table","pin":"5","client":"1f9f077d.fcb709","x":1170,"y":300,"wires":[]},{"id":"447ae839499da5d7","type":"change","z":"fab5435eda80d36d","name":"clear table","rules":[{"t":"set","p":"clear","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":300,"wires":[["3d28356fb2f66c7c"]]},{"id":"96f5645ea53e9cc4","type":"function","z":"fab5435eda80d36d","name":"update table","func":"\nvar loadtable = [];\n\nfor (var i = 0; i < msg.payload.recipe.fermentation.steps.length; i++) {\n loadtable.push(\n [msg.payload.recipe.fermentation.steps[i].type+ \" for \"+ msg.payload.recipe.fermentation.steps[i].stepTime + \" days\" + \" @ \"+ parseFloat(msg.payload.recipe.fermentation.steps[i].pressure).toFixed(1)+ \" psi\", \n msg.payload.recipe.fermentation.steps[i].stepTemp + \" °C\"]\n )\n}\nmsg.loadtable = loadtable\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1010,"y":340,"wires":[["3d28356fb2f66c7c"]]},{"id":"04a4cd1c24ee6785","type":"delay","z":"fab5435eda80d36d","name":"limit","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"outputs":1,"x":830,"y":340,"wires":[["96f5645ea53e9cc4","541b41a70e5b8aac"]]},{"id":"4a8468ab864521fa","type":"blynk-ws-out-write","z":"fab5435eda80d36d","name":"beername","pin":"4","pinmode":0,"client":"1f9f077d.fcb709","x":1260,"y":400,"wires":[]},{"id":"bc881f723a135016","type":"function","z":"fab5435eda80d36d","name":"set beername","func":"var elapsed = Math.floor(flow.get('elapsed'))\n\nbeername = flow.get(\"name\") + \" @ day \" + elapsed\nmsg.payload = beername\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":980,"y":420,"wires":[["4a8468ab864521fa"]]},{"id":"91776889d9001626","type":"change","z":"fab5435eda80d36d","name":"cooling stop","rules":[{"t":"set","p":"coolingstopped","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":680,"wires":[[]]},{"id":"cdae309e806b2a62","type":"change","z":"fab5435eda80d36d","name":"cooling start","rules":[{"t":"set","p":"coolingstopped","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":720,"wires":[[]]},{"id":"f69faf2d144097c5","type":"change","z":"fab5435eda80d36d","name":"heating stop","rules":[{"t":"set","p":"heatingstopped","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":640,"wires":[[]]},{"id":"ecddbf59c0ded68b","type":"change","z":"fab5435eda80d36d","name":"heating start","rules":[{"t":"set","p":"heatingstopped","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":600,"wires":[[]]},{"id":"ea3c82af86d8bf32","type":"function","z":"fab5435eda80d36d","name":"set status","func":"\n\nvar status = \"Waiting\"\n\nif (flow.get(\"heatstatus\") == \"on\") {\n status = \"Heating\"\n}\n\nif (flow.get(\"coolstatus\") == \"on\") {\n status = \"Cooling\"\n}\n\nif ((flow.get(\"coolstatus\") == \"off\") && (flow.get(\"heatstatus\") == \"off\")) {\n status = \"Idle\"\n}\n\nmsg.payload = status\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":960,"y":660,"wires":[["c2fb38d6fb111c09"]]},{"id":"c2fb38d6fb111c09","type":"blynk-ws-out-write","z":"fab5435eda80d36d","name":"status","pin":"2","pinmode":0,"client":"1f9f077d.fcb709","x":1170,"y":680,"wires":[]},{"id":"37824587eab9da03","type":"blynk-ws-out-write","z":"fab5435eda80d36d","name":"temp","pin":"6","pinmode":0,"client":"1f9f077d.fcb709","x":550,"y":400,"wires":[]},{"id":"0a9d80aa85d117f4","type":"mqtt in","z":"fab5435eda80d36d","name":"","topic":"Tilt","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":930,"y":140,"wires":[["88392eba60ad4920","14f12973f5572917"]]},{"id":"8d801d2114c66850","type":"mqtt out","z":"fab5435eda80d36d","name":"","topic":"","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":1130,"y":580,"wires":[]},{"id":"541b41a70e5b8aac","type":"function","z":"fab5435eda80d36d","name":"Step type","func":"\nvar steptype = [];\n\nfor (var i = 0; i < msg.payload.recipe.fermentation.steps.length; i++) {\n steptype.push(\n msg.payload.recipe.fermentation.steps[i].type\n )\n}\nflow.set('steptype', steptype)\n\nvar pressuresp =[];\n\nfor (var x = 0; x < msg.payload.recipe.fermentation.steps.length; x++) {\n pressuresp.push(\n msg.payload.recipe.fermentation.steps[x].pressure\n )\n}\nflow.set('pressuresp', pressuresp)\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1000,"y":380,"wires":[[]]},{"id":"0d27f97400bce357","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"Tiltselector","pin":"3","pin_all":0,"client":"1f9f077d.fcb709","x":60,"y":160,"wires":[["1e6ab69f6caee7e3"]]},{"id":"1e6ab69f6caee7e3","type":"change","z":"fab5435eda80d36d","name":"Tiltselector","rules":[{"t":"set","p":"F1tiltselector","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":270,"y":160,"wires":[[]]},{"id":"4efa0e2271929d15","type":"blynk-ws-out-write","z":"fab5435eda80d36d","name":"Tilt value","pin":"10","pinmode":0,"client":"1f9f077d.fcb709","x":1880,"y":140,"wires":[]},{"id":"14f12973f5572917","type":"function","z":"fab5435eda80d36d","name":"Tiltselector","func":"if (msg.payload.Tilt == \"Red\") {\n flow.set('redtilt', msg.payload.Gravity)\n}\n\nif (msg.payload.Tilt == \"Yellow\") {\n flow.set('yellowtilt', msg.payload.Gravity)\n}\n\nif ((flow.get('F1tiltselector') == 1) && msg.payload.Tilt == \"Red\") {\n msg.payload = (msg.payload.Gravity + flow.get('redtiltcal'))\n msg.topic = msg.payload.Tilt\n return msg;\n}\nif ((flow.get('F1tiltselector') == 2) && msg.payload.Tilt == \"Yellow\") {\n msg.payload = (msg.payload.Gravity + flow.get('yellowtiltcal'))\n msg.topic = msg.payload.Tilt\n return msg;\n}\n\n","outputs":1,"noerr":0,"x":1730,"y":140,"wires":[["4efa0e2271929d15"]]},{"id":"db3cf671ef193e2b","type":"switch","z":"fab5435eda80d36d","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":410,"y":620,"wires":[["cdae309e806b2a62","ecddbf59c0ded68b"],["91776889d9001626","ecddbf59c0ded68b"],["cdae309e806b2a62","f69faf2d144097c5"],["91776889d9001626","f69faf2d144097c5"]]},{"id":"6636dd790276e96e","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"selector","pin":"11","pin_all":0,"client":"1f9f077d.fcb709","x":250,"y":560,"wires":[["c1bcc3a591809a43","db3cf671ef193e2b"]]},{"id":"9cc5a87d25cbb0a0","type":"function","z":"fab5435eda80d36d","name":"tiltcal","func":"\nif (flow.get('F1tiltselector') == 1) {\nflow.set('redtiltcal', msg.payload)\nmsg.payload = \n{\"Tilt\": \"Red\",\n\"Gravity\": flow.get('redtilt')\n}\n}\n\nif (flow.get('F1tiltselector') == 2) {\nflow.set('yellowtiltcal', msg.payload)\nmsg.payload = \n\n{\"Tilt\": \"Yellow\",\n\"Gravity\": flow.get('yellowtilt')\n}\n}\nreturn msg;","outputs":1,"noerr":0,"x":1590,"y":200,"wires":[["14f12973f5572917"]]},{"id":"b76480e8d76b4c10","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"Tiltcal","pin":"0","pin_all":0,"client":"1f9f077d.fcb709","x":1330,"y":200,"wires":[["92a40c006c445d74"]]},{"id":"46caeb16b4724b33","type":"blynk-ws-out-write","z":"fab5435eda80d36d","name":"Pressure","pin":"7","pinmode":0,"client":"1f9f077d.fcb709","x":1020,"y":1100,"wires":[]},{"id":"92a40c006c445d74","type":"json","z":"fab5435eda80d36d","name":"","property":"payload","action":"","pretty":false,"x":1470,"y":200,"wires":[["9cc5a87d25cbb0a0"]]},{"id":"88392eba60ad4920","type":"switch","z":"fab5435eda80d36d","name":"","property":"payload.Tilt","propertyType":"msg","rules":[{"t":"eq","v":"Red","vt":"str"},{"t":"eq","v":"Yellow","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":1150,"y":60,"wires":[[],[]]},{"id":"1c9ab1be9d06c85b","type":"function","z":"fab5435eda80d36d","name":"red tilt timeout","func":"if (msg.payload == \"Unsafe\") {\n flow.set('redtilt', 0)\n msg.payload = {\"Tilt\": \"Red\",\n \"Gravity\": flow.get('redtilt')\n}\n return msg;\n}\n","outputs":1,"noerr":0,"x":1520,"y":40,"wires":[["14f12973f5572917","cc3702e1faa3c8c3"]]},{"id":"30cec927725cf212","type":"function","z":"fab5435eda80d36d","name":"yellow tilt timeout","func":"if (msg.payload == \"Unsafe\") {\n flow.set('yellowtilt', 0)\n msg.payload = {\n \"Tilt\": \"Yellow\",\n \"Gravity\": flow.get('yellowtilt')\n}\n return msg;\n}\n","outputs":1,"noerr":0,"x":1510,"y":80,"wires":[["14f12973f5572917","cc3702e1faa3c8c3"]]},{"id":"743dce5ac173a30e","type":"function","z":"fab5435eda80d36d","name":"heat","func":"\nif (msg.payload.heat == \"off\" && flow.get(\"heatstatus\") !== \"off\") {\n msg.topic = \"shellies/F1/relay/0/command\"\n msg.payload = \"off\"\n flow.set(\"heatstatus\", \"off\")\n node.send(msg)\n}\nif (msg.payload.heat == \"on\" && flow.get(\"heatstatus\") !== \"on\") {\n msg.topic = \"shellies/F1/relay/0/command\"\n msg.payload = \"on\"\n flow.set(\"heatstatus\", \"on\")\n node.send(msg)\n}\n\n\n","outputs":1,"noerr":0,"x":950,"y":580,"wires":[["8d801d2114c66850"]]},{"id":"3f40b6224aaf519d","type":"change","z":"fab5435eda80d36d","name":"topic","rules":[{"t":"change","p":"topic","pt":"msg","from":"shellies/F3/relay/1","fromt":"str","to":"heat","tot":"str"},{"t":"set","p":"heatstatus","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":460,"wires":[["743dce5ac173a30e","ea3c82af86d8bf32"]]},{"id":"bc41cf9d6d83b529","type":"blynk-ws-out-write","z":"fab5435eda80d36d","name":"temptarget","pin":"1","pinmode":0,"client":"1f9f077d.fcb709","x":1330,"y":580,"wires":[]},{"id":"91001c4c5e8b9521","type":"change","z":"fab5435eda80d36d","name":"store2","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)\t","tot":"jsonata"},{"t":"set","p":"newtarget","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":800,"wires":[[]]},{"id":"a9ca94b71f47af3d","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"newtemptarget","pin":"1","pin_all":0,"client":"1f9f077d.fcb709","x":600,"y":780,"wires":[["91001c4c5e8b9521"]]},{"id":"501c354ba9a2fbb7","type":"mqtt in","z":"fab5435eda80d36d","name":"","topic":"shellies/F1/relay/+","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":330,"y":460,"wires":[["3f40b6224aaf519d"]]},{"id":"59bf82e643bf3b1d","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"temp auto","pin":"12","pin_all":0,"client":"1f9f077d.fcb709","x":960,"y":800,"wires":[["8c17cca277635cc2"]]},{"id":"8c17cca277635cc2","type":"change","z":"fab5435eda80d36d","name":"store5","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"str","to":"true","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"2","fromt":"str","to":"false","tot":"bool"},{"t":"set","p":"F1tauto","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1210,"y":800,"wires":[[]]},{"id":"f45f4b967b3a3cea","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"pressure auto","pin":"13","pin_all":0,"client":"1f9f077d.fcb709","x":970,"y":760,"wires":[["cd63d7747e66211a"]]},{"id":"cd63d7747e66211a","type":"change","z":"fab5435eda80d36d","name":"store4","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"str","to":"true","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"2","fromt":"str","to":"false","tot":"bool"},{"t":"set","p":"F1pauto","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1210,"y":760,"wires":[[]]},{"id":"827af1f95d14dbab","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"newpressuretarget","pin":"14","pin_all":0,"client":"1f9f077d.fcb709","x":590,"y":820,"wires":[["b10388fc09fb14a7"]]},{"id":"b10388fc09fb14a7","type":"change","z":"fab5435eda80d36d","name":"store3","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)\t","tot":"jsonata"},{"t":"set","p":"newpressuresp","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":840,"wires":[[]]},{"id":"05d6bbd3993d89d4","type":"blynk-ws-out-write","z":"fab5435eda80d36d","name":"pressuretarget","pin":"14","pinmode":0,"client":"1f9f077d.fcb709","x":1340,"y":520,"wires":[]},{"id":"3aa13160b475c453","type":"blynk-ws-out-sync","z":"fab5435eda80d36d","name":"","pin":"0","pinmode":"1","client":"1f9f077d.fcb709","x":250,"y":100,"wires":[]},{"id":"b6725fe123b74d83","type":"delay","z":"fab5435eda80d36d","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":700,"y":340,"wires":[["04a4cd1c24ee6785"]]},{"id":"7e0e253c10070ebe","type":"delay","z":"fab5435eda80d36d","name":"limit","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"outputs":1,"x":70,"y":380,"wires":[["f8659a2089904a7f"]]},{"id":"3c55b11bc2380fd8","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"Gasvalve","pin":"15","pin_all":0,"client":"1f9f077d.fcb709","x":1160,"y":1280,"wires":[["81a4cc6822718fc9"]]},{"id":"e8fe6a3056b702aa","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"Bleedvalve","pin":"16","pin_all":0,"client":"1f9f077d.fcb709","x":1160,"y":1240,"wires":[["6a217a1a2ad2fbf0"]]},{"id":"81a4cc6822718fc9","type":"change","z":"fab5435eda80d36d","name":"gasvalve","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)","tot":"jsonata"},{"t":"set","p":"gasvalve","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1300,"y":1280,"wires":[["b535d13b63b93b80"]]},{"id":"6a217a1a2ad2fbf0","type":"change","z":"fab5435eda80d36d","name":"bleedvalve","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)","tot":"jsonata"},{"t":"set","p":"bleedvalve","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1310,"y":1240,"wires":[["426ffc8720976fc9"]]},{"id":"39db3f4b03e50b18","type":"mqtt in","z":"fab5435eda80d36d","name":"","topic":"shellies/shellyplug-s-977630/relay/+","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":180,"y":1340,"wires":[[]]},{"id":"43028fee3d6fb7de","type":"change","z":"fab5435eda80d36d","name":"topic","rules":[{"t":"change","p":"topic","pt":"msg","from":"cmnd/tasmota_0B0009/POWER1","fromt":"str","to":"cool","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"$lowercase(payload)\t","tot":"jsonata"},{"t":"set","p":"coolstatus","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":520,"wires":[["87ed05a97720406a","ea3c82af86d8bf32"]]},{"id":"87ed05a97720406a","type":"function","z":"fab5435eda80d36d","name":"cool","func":"\nif (msg.payload.cool == \"off\" && flow.get(\"coolstatus\") !== \"off\") {\n msg.topic = \"cmnd/tasmota_0B0009/POWER1\"\n msg.payload = \"off\"\n node.send(msg)\n}\nif (msg.payload.cool == \"on\" && flow.get(\"coolstatus\") !== \"on\") {\n msg.topic = \"cmnd/tasmota_0B0009/POWER1\"\n msg.payload = \"on\"\n node.send(msg)\n}\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":950,"y":620,"wires":[["8d801d2114c66850"]]},{"id":"29d50bb2b67382bc","type":"change","z":"fab5435eda80d36d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)","tot":"jsonata"},{"t":"set","p":"temp","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":400,"wires":[["37824587eab9da03","c1bcc3a591809a43","492fa309e7980aeb"]]},{"id":"df2fce6833d15a84","type":"mqtt in","z":"fab5435eda80d36d","name":"F1 temp","topic":"shellies/F1/ext_temperature/0","qos":"0","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":60,"y":440,"wires":[["29d50bb2b67382bc"]]},{"id":"c64f4b4d754aa2d8","type":"smooth","z":"fab5435eda80d36d","name":"","property":"payload","action":"low","count":"1","round":"1","mult":"single","reduce":false,"x":560,"y":1100,"wires":[["46caeb16b4724b33","3d722e9bceb55556","c5af9497ff4eab6a"]]},{"id":"3d722e9bceb55556","type":"function","z":"fab5435eda80d36d","name":"pressostat","func":"var hys = 0.3\nvar out = 0\nvar SP = flow.get(\"PSP\")\n\nflow.set(\"F1pressure\", msg.payload)\n\nif (flow.get(\"stype\") != \"Carbonation\") {\n\n if (msg.payload + hys > SP) {\n out = 1\n }\n if (msg.payload < SP) {\n out = 0\n }\n \n msg.payload = out\nnode.send([msg,null]);\n}\n\nif (flow.get(\"stype\") == \"Carbonation\") {\n\n if (msg.payload + hys < SP) {\n out = 1\n }\n if (msg.payload > SP) {\n out = 0\n }\n \n msg.payload = out\nnode.send([null, msg]);\n \n} \n","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1030,"y":1160,"wires":[["4d0d67f4b7c33c27","426ffc8720976fc9"],["b535d13b63b93b80"]]},{"id":"6b12215e4f333fc7","type":"inject","z":"fab5435eda80d36d","name":"start","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"5","topic":"","payload":"1","payloadType":"num","x":90,"y":240,"wires":[["baf710a04cb9941f"]]},{"id":"cc3702e1faa3c8c3","type":"link out","z":"fab5435eda80d36d","name":"","links":[],"x":1735,"y":60,"wires":[]},{"id":"0ba5ee1499708b6e","type":"blynk-ws-out-write","z":"fab5435eda80d36d","name":"","pin":"19","pinmode":0,"client":"1f9f077d.fcb709","x":1960,"y":1500,"wires":[]},{"id":"4d0d67f4b7c33c27","type":"switch","z":"fab5435eda80d36d","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1370,"y":1500,"wires":[["fa843cc7d0d05bd6","dfdd2739c3285374"]]},{"id":"6ae94677f749bf9b","type":"change","z":"fab5435eda80d36d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload*24","tot":"jsonata"},{"t":"set","p":"F1fermentrate","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1840,"y":1380,"wires":[[]]},{"id":"fa843cc7d0d05bd6","type":"Message Counter","z":"fab5435eda80d36d","name":"","units":"hours","interval":"1","alignToClock":true,"generator":"internal","x":1550,"y":1500,"wires":[["a355e295fde406ae"],[]]},{"id":"ef3728cde553a732","type":"mqtt in","z":"fab5435eda80d36d","name":"","topic":"stat/tasmota_0B0009/POWER1","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":330,"y":520,"wires":[["43028fee3d6fb7de"]]},{"id":"22508079fbb4508d","type":"mqtt out","z":"fab5435eda80d36d","name":"","topic":"shellies/shellyplug-s-977630/relay/0/command","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":1180,"y":1420,"wires":[]},{"id":"735c0cb0e229e159","type":"mqtt in","z":"fab5435eda80d36d","name":"","topic":"stat/tasmota_0B0009/POWER2","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":170,"y":1540,"wires":[["d3607edd68f3c8d7","7fb3146ad8f73a14"]]},{"id":"4fe6eefd3f7109c1","type":"mqtt in","z":"fab5435eda80d36d","name":"","topic":"stat/tasmota_0B0009/POWER1","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":170,"y":1500,"wires":[["d3607edd68f3c8d7","b804fd227f1892f1"]]},{"id":"d3607edd68f3c8d7","type":"switch","z":"fab5435eda80d36d","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"ON","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":430,"y":1420,"wires":[["6addafe095dc67f1"]]},{"id":"6addafe095dc67f1","type":"change","z":"fab5435eda80d36d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"on","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":580,"y":1420,"wires":[["ee34ac577bf35db2"]]},{"id":"b804fd227f1892f1","type":"change","z":"fab5435eda80d36d","name":"","rules":[{"t":"set","p":"f1vlv","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":1500,"wires":[["a57f8c5c5e9cc841"]]},{"id":"7fb3146ad8f73a14","type":"change","z":"fab5435eda80d36d","name":"","rules":[{"t":"set","p":"f2vlv","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":1540,"wires":[["a57f8c5c5e9cc841"]]},{"id":"a57f8c5c5e9cc841","type":"function","z":"fab5435eda80d36d","name":"","func":"if (flow.get(\"f1vlv\") == \"OFF\" && flow.get(\"f2vlv\") == \"OFF\") {\n msg.payload = \"off\"\n node.send(msg)\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":680,"y":1520,"wires":[["de30c2e34b8d3386"]]},{"id":"ee34ac577bf35db2","type":"switch","z":"fab5435eda80d36d","name":"","property":"payload","propertyType":"msg","rules":[{"t":"neq","v":"pmp","vt":"flow"}],"checkall":"true","repair":false,"outputs":1,"x":730,"y":1420,"wires":[["de30c2e34b8d3386"]]},{"id":"de30c2e34b8d3386","type":"change","z":"fab5435eda80d36d","name":"","rules":[{"t":"set","p":"pmp","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":890,"y":1420,"wires":[["22508079fbb4508d"]]},{"id":"f5cff0840f17983a","type":"blynk-ws-in-write","z":"fab5435eda80d36d","name":"stepoverride","pin":"17","pin_all":0,"client":"1f9f077d.fcb709","x":970,"y":860,"wires":[["aa06fce9de2e82fa"]]},{"id":"aa06fce9de2e82fa","type":"function","z":"fab5435eda80d36d","name":"","func":"flow.set('stepoverride', parseInt(msg.payload))\nmsg.payload = flow.get('stepoverride')\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1220,"y":860,"wires":[[]]},{"id":"426ffc8720976fc9","type":"modbus-write","z":"fab5435eda80d36d","name":"Bleed F1","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"Coil","adr":"0","quantity":"1","server":"f894fc8468d121cf","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1540,"y":1240,"wires":[[],["64bfaf84f0711073"]]},{"id":"b535d13b63b93b80","type":"modbus-write","z":"fab5435eda80d36d","name":"Gas F1","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"Coil","adr":"3","quantity":"1","server":"f894fc8468d121cf","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1540,"y":1300,"wires":[[],["cee9a76eaf29676f"]]},{"id":"d2414a8369bbb860","type":"modbus-read","z":"fab5435eda80d36d","name":"Analog input","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"HoldingRegister","adr":"33","quantity":"1","rate":"1000","rateUnit":"ms","delayOnStart":false,"startDelayTime":"","server":"f894fc8468d121cf","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":130,"y":1100,"wires":[["f1c350d8e474dfc3"],["0168b864c1adc83f"]]},{"id":"0168b864c1adc83f","type":"modbus-response","z":"fab5435eda80d36d","name":"","registerShowMax":20,"x":350,"y":1140,"wires":[]},{"id":"cee9a76eaf29676f","type":"modbus-response","z":"fab5435eda80d36d","name":"","registerShowMax":20,"x":1730,"y":1300,"wires":[]},{"id":"64bfaf84f0711073","type":"modbus-response","z":"fab5435eda80d36d","name":"","registerShowMax":20,"x":1730,"y":1240,"wires":[]},{"id":"f1c350d8e474dfc3","type":"change","z":"fab5435eda80d36d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[0]","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"msg.payload-418","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"msg.payload/495","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"msg.payload*14.5","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"$round(msg.payload, 1)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":1100,"wires":[["c64f4b4d754aa2d8"]]},{"id":"c58564cc63db41bf","type":"influxdb out","z":"fab5435eda80d36d","influxdb":"8208eb36.6153d8","name":"fermentrate","measurement":"F1fermentrate","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":1950,"y":1460,"wires":[]},{"id":"c5af9497ff4eab6a","type":"influxdb out","z":"fab5435eda80d36d","influxdb":"8208eb36.6153d8","name":"F1pressure","measurement":"F1pressure","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":1030,"y":1200,"wires":[]},{"id":"492fa309e7980aeb","type":"influxdb out","z":"fab5435eda80d36d","influxdb":"8208eb36.6153d8","name":"F1temp","measurement":"F1temp","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":580,"y":480,"wires":[]},{"id":"51010acb4d32958d","type":"inject","z":"fab5435eda80d36d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"1200","crontab":"","once":true,"onceDelay":0.1,"topic":"","payloadType":"date","x":190,"y":1620,"wires":[["c228cff50d67c432"]]},{"id":"c228cff50d67c432","type":"function","z":"fab5435eda80d36d","name":"BFlogging","func":"temp = flow.get(\"F1temp\")\npressure = flow.get(\"F1pressure\")\naux_temp = global.get(\"coolertemp\")\nfermentrate = flow.get(\"F1fermentrate\")\n\n\n\nmsg.payload = {\n \"name\": \"F1\", // Required field, this will be the ID in Brewfather\n \"temp\": 20.32,\n \"aux_temp\": aux_temp, // Fridge Temp\n //\"ext_temp\": 6.51, // Room Temp\n \"temp_unit\": \"C\", // C, F, K\n //\"gravity\": 1.042,\n //\"gravity_unit\": \"G\", // G, P\n \"pressure\": pressure,\n \"pressure_unit\": \"PSI\", // PSI, BAR, KPA\n //\"ph\": 4.12,\n \"bpm\": fermentrate, // Bubbles Per Minute\n //\"comment\": \"Hello World\",\n //\"beer\": \"Pale Ale\",\n //\"battery\": 4.98\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":1620,"wires":[["bbf8905a893b5eb6"]]},{"id":"bbf8905a893b5eb6","type":"http request","z":"fab5435eda80d36d","name":"","method":"POST","ret":"txt","paytoqs":"ignore","url":"http://log.brewfather.net/stream?id=MJCu9dsSiGKwJr","tls":"","persist":false,"proxy":"","authType":"","x":530,"y":1620,"wires":[[]]},{"id":"871a5cb49882b041","type":"influxdb out","z":"fab5435eda80d36d","influxdb":"8208eb36.6153d8","name":"F1pressuretarget","measurement":"F1pressuretarget","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":1350,"y":480,"wires":[]},{"id":"8cbd1aa0aa96a303","type":"influxdb out","z":"fab5435eda80d36d","influxdb":"8208eb36.6153d8","name":"F1temptarget","measurement":"F1temptarget","precision":"","retentionPolicy":"","database":"database","precisionV18FluxV20":"s","retentionPolicyV18Flux":"","org":"brewket","bucket":"mybucket","x":1340,"y":620,"wires":[]},{"id":"c5b41ddea99585e0","type":"inject","z":"fab5435eda80d36d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":true,"onceDelay":0.1,"topic":"mc-control","payload":"report","payloadType":"str","x":1470,"y":1380,"wires":[["fa843cc7d0d05bd6"]]},{"id":"a355e295fde406ae","type":"switch","z":"fab5435eda80d36d","name":"","property":"isReset","propertyType":"msg","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":1690,"y":1420,"wires":[["6ae94677f749bf9b"],[]]},{"id":"f1022140a357bac8","type":"debug","z":"fab5435eda80d36d","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1930,"y":1620,"wires":[]},{"id":"b304c2e68fcc1bea","type":"debug","z":"fab5435eda80d36d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":740,"y":1060,"wires":[]},{"id":"dfdd2739c3285374","type":"frequency","z":"fab5435eda80d36d","name":"freq1","interval":"3600000","ntfyinterval":"60000","x":1510,"y":1560,"wires":[["3e50e0f4bb43f6a2"]]},{"id":"3e50e0f4bb43f6a2","type":"change","z":"fab5435eda80d36d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"msg.payload*10000","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"$round(msg.payload, 0)\t","tot":"jsonata"},{"t":"set","p":"F1fermentrate","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1660,"y":1560,"wires":[["f1022140a357bac8","c58564cc63db41bf","0ba5ee1499708b6e"]]},{"id":"33892dfac52131cb","type":"debug","z":"fab5435eda80d36d","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":600,"y":180,"wires":[]},{"id":"382e08919e37d5be","type":"key-value-read","z":"2dd18e3fe6f50d24","store":"eb1127af.550128","key":"","name":"","x":430,"y":340,"wires":[["323754e85fd29078"]]},{"id":"03a650f6fe37463d","type":"change","z":"2dd18e3fe6f50d24","name":"set batchnumber","rules":[{"t":"set","p":"topic","pt":"msg","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":250,"y":380,"wires":[["382e08919e37d5be"]]},{"id":"9cc426c4039b2972","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"Batchno","pin":"8","pin_all":0,"client":"04e16cbce69539b1","x":60,"y":320,"wires":[["4b6dc7cb822adad1"]]},{"id":"bc7cc46e7322f672","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"Button","pin":"9","pin_all":0,"client":"04e16cbce69539b1","x":50,"y":280,"wires":[["a41ccd310e4999d9"]]},{"id":"323754e85fd29078","type":"change","z":"2dd18e3fe6f50d24","name":"store","rules":[{"t":"set","p":"fermentationStartDate","pt":"flow","to":"payload.fermentationStartDate","tot":"jsonata"},{"t":"set","p":"stepTemp","pt":"flow","to":"payload.recipe.fermentation.steps.stepTemp\t","tot":"jsonata"},{"t":"set","p":"stepTime","pt":"flow","to":"payload.recipe.fermentation.steps.stepTime","tot":"jsonata"},{"t":"set","p":"steps","pt":"flow","to":"$count(msg.payload.recipe.fermentation.steps)\t","tot":"jsonata"},{"t":"set","p":"finished","pt":"flow","to":"$sum(payload.recipe.fermentation.steps.stepTime)\t\t","tot":"jsonata"},{"t":"set","p":"name","pt":"flow","to":"payload.recipe.name","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":340,"wires":[["4cb02dbfe9f0e8f1","98d2c688a93015d8"]]},{"id":"fef4bdfc2837bc0e","type":"inject","z":"2dd18e3fe6f50d24","name":"now","repeat":"2","crontab":"","once":true,"onceDelay":"12","topic":"","payload":"","payloadType":"date","x":670,"y":380,"wires":[["a60edac32feda975","e720360afcb1b90d"]]},{"id":"a41ccd310e4999d9","type":"blynk-ws-out-sync","z":"2dd18e3fe6f50d24","name":"Batchno-sync","pin":"8","pinmode":0,"client":"04e16cbce69539b1","x":280,"y":280,"wires":[]},{"id":"9f6e30d3119af807","type":"function","z":"2dd18e3fe6f50d24","name":"thermostat","func":"var temp = flow.get('temp')||20\nvar hyst = 0.2\nvar ambient = flow.get('ambient')||20\nvar heat = flow.get('heat')||\"off\"\nvar cool = flow.get('cool')||\"off\"\nvar target = flow.get(\"target\")\n\n\n\n//heat\nif (temp < target - hyst) {//&& (ambient < target)) {\n heat = \"on\"\n flow.set('heat', heat)\n }\nif (temp > target) {\n heat = \"off\"\n flow.set('heat', heat)\n}\n \n//cool\nif (temp > (target + hyst)) {\n cool = \"on\"\n flow.set('cool', cool)\n }\n\nif (temp < target) {\n cool = \"off\" \n flow.set('cool', cool)\n }\n \nif (flow.get('heatingstopped') === true) {\n heat = \"off\"\n flow.set('heat', heat)\n}\nif (flow.get('coolingstopped') === true) {\n cool = \"off\" \n flow.set('cool', cool)\n}\n\nmsg.topic = \"thermostat\"\nmsg.payload = { \"heat\": heat, \"cool\": cool}\n \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":470,"y":540,"wires":[["aeee0ef5ac2f7b0a","9de6503f66b9b289"]]},{"id":"d60a28e1b9d01e60","type":"blynk-ws-out-table","z":"2dd18e3fe6f50d24","name":"table","pin":"5","client":"04e16cbce69539b1","x":1270,"y":300,"wires":[]},{"id":"4cb02dbfe9f0e8f1","type":"change","z":"2dd18e3fe6f50d24","name":"clear table","rules":[{"t":"set","p":"clear","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":810,"y":300,"wires":[["d60a28e1b9d01e60"]]},{"id":"3df735dc5c00ef65","type":"function","z":"2dd18e3fe6f50d24","name":"update table","func":"\nvar loadtable = [];\n\nfor (var i = 0; i < msg.payload.recipe.fermentation.steps.length; i++) {\n loadtable.push(\n [msg.payload.recipe.fermentation.steps[i].type+ \" for \"+ msg.payload.recipe.fermentation.steps[i].stepTime + \" days\" + \" @ \"+ parseFloat(msg.payload.recipe.fermentation.steps[i].pressure).toFixed(1)+ \" psi\", \n msg.payload.recipe.fermentation.steps[i].stepTemp + \" °C\"]\n )\n}\nmsg.loadtable = loadtable\nreturn msg;","outputs":1,"noerr":0,"x":970,"y":340,"wires":[["d60a28e1b9d01e60"]]},{"id":"caa79bd840bfaed6","type":"delay","z":"2dd18e3fe6f50d24","name":"limit","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"outputs":1,"x":810,"y":340,"wires":[["3df735dc5c00ef65","49279017961dfb77"]]},{"id":"b70d35d476d84476","type":"blynk-ws-out-write","z":"2dd18e3fe6f50d24","name":"beername","pin":"4","pinmode":0,"client":"04e16cbce69539b1","x":1280,"y":420,"wires":[]},{"id":"e720360afcb1b90d","type":"function","z":"2dd18e3fe6f50d24","name":"set beername","func":"var elapsed = Math.floor(flow.get('elapsed'))\n\nbeername = flow.get(\"name\") + \" @ day \" + elapsed\nmsg.payload = beername\nreturn msg;\n","outputs":1,"noerr":0,"x":980,"y":420,"wires":[["b70d35d476d84476","4398ab8c47bec477"]]},{"id":"87f37da9e4729b95","type":"change","z":"2dd18e3fe6f50d24","name":"cooling stop","rules":[{"t":"set","p":"coolingstopped","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":780,"wires":[[]]},{"id":"dbc945a67afde812","type":"change","z":"2dd18e3fe6f50d24","name":"cooling start","rules":[{"t":"set","p":"coolingstopped","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":820,"wires":[[]]},{"id":"0b069f4ccef487e2","type":"change","z":"2dd18e3fe6f50d24","name":"heating stop","rules":[{"t":"set","p":"heatingstopped","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":740,"wires":[[]]},{"id":"efe49ed5bfa9fd85","type":"change","z":"2dd18e3fe6f50d24","name":"heating start","rules":[{"t":"set","p":"heatingstopped","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":430,"y":700,"wires":[[]]},{"id":"4a49a42a5c94704c","type":"function","z":"2dd18e3fe6f50d24","name":"set status","func":"\n\nvar status = \"Waiting\"\n\nif (flow.get(\"heatstatus\") == \"on\") {\n status = \"Heating\"\n}\n\nif (flow.get(\"coolstatus\") == \"ON\") {\n status = \"Cooling\"\n}\n\nif ((flow.get(\"coolstatus\") == \"OFF\") && (flow.get(\"heatstatus\") == \"off\")) {\n status = \"Idle\"\n}\n\nmsg.payload = status\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":960,"y":580,"wires":[["b318afc77a8e94c0"]]},{"id":"b318afc77a8e94c0","type":"blynk-ws-out-write","z":"2dd18e3fe6f50d24","name":"status","pin":"2","pinmode":0,"client":"04e16cbce69539b1","x":1090,"y":580,"wires":[]},{"id":"48c6ab0d15e77da3","type":"blynk-ws-out-write","z":"2dd18e3fe6f50d24","name":"temp","pin":"6","pinmode":0,"client":"04e16cbce69539b1","x":470,"y":380,"wires":[]},{"id":"beacfb1d729893ea","type":"mqtt out","z":"2dd18e3fe6f50d24","name":"","topic":"","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"049e1b3e4be39fc2","x":1090,"y":520,"wires":[]},{"id":"49279017961dfb77","type":"function","z":"2dd18e3fe6f50d24","name":"Step type","func":"\nvar steptype = [];\n\nfor (var i = 0; i < msg.payload.recipe.fermentation.steps.length; i++) {\n steptype.push(\n msg.payload.recipe.fermentation.steps[i].type\n )\n}\nflow.set('steptype', steptype)\n\nvar pressuresp =[];\n\nfor (var x = 0; x < msg.payload.recipe.fermentation.steps.length; x++) {\n pressuresp.push(\n msg.payload.recipe.fermentation.steps[x].pressure\n )\n}\nflow.set('pressuresp', pressuresp)\n","outputs":1,"noerr":0,"x":960,"y":380,"wires":[[]]},{"id":"915e4ddc8aae76d5","type":"blynk-ws-out-write","z":"2dd18e3fe6f50d24","name":"Tilt value","pin":"10","pinmode":0,"client":"04e16cbce69539b1","x":960,"y":100,"wires":[]},{"id":"fda69eea741e189f","type":"function","z":"2dd18e3fe6f50d24","name":"Tiltselector","func":"if (msg.payload.Tilt == \"Red\") {\n flow.set('redtilt', msg.payload.Gravity)\n}\n\nif (msg.payload.Tilt == \"Yellow\") {\n flow.set('yellowtilt', msg.payload.Gravity)\n}\n\nif ((flow.get('F3tiltselector') == 1) && msg.payload.Tilt == \"Red\") {\n msg.payload = (msg.payload.Gravity + flow.get('redtiltcal'))\n msg.topic = msg.payload.Tilt\n return msg;\n}\nif ((flow.get('F3tiltselector') == 2) && msg.payload.Tilt == \"Yellow\") {\n msg.payload = (msg.payload.Gravity + flow.get('yellowtiltcal'))\n msg.topic = msg.payload.Tilt\n return msg;\n}\n\n","outputs":1,"noerr":0,"x":810,"y":100,"wires":[["915e4ddc8aae76d5"]]},{"id":"36f29620dd1b62f6","type":"switch","z":"2dd18e3fe6f50d24","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":250,"y":720,"wires":[["dbc945a67afde812","efe49ed5bfa9fd85"],["87f37da9e4729b95","efe49ed5bfa9fd85"],["dbc945a67afde812","0b069f4ccef487e2"],["87f37da9e4729b95","0b069f4ccef487e2"]]},{"id":"76ef3bd7835a9528","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"selector","pin":"11","pin_all":0,"client":"04e16cbce69539b1","x":110,"y":640,"wires":[["9f6e30d3119af807","36f29620dd1b62f6"]]},{"id":"b705c1b48db9f3ca","type":"blynk-ws-out-write","z":"2dd18e3fe6f50d24","name":"Pressure","pin":"7","pinmode":0,"client":"04e16cbce69539b1","x":800,"y":880,"wires":[]},{"id":"07da5cbbc2f048d1","type":"change","z":"2dd18e3fe6f50d24","name":"topic","rules":[{"t":"change","p":"topic","pt":"msg","from":"shellies/shelly1pm-BA0B92/relay/0","fromt":"str","to":"heat","tot":"str"},{"t":"set","p":"heatstatus","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":750,"y":440,"wires":[["aeee0ef5ac2f7b0a","4a49a42a5c94704c"]]},{"id":"7dcd1a8d936f296e","type":"blynk-ws-out-write","z":"2dd18e3fe6f50d24","name":"temptarget","pin":"1","pinmode":0,"client":"04e16cbce69539b1","x":1290,"y":600,"wires":[]},{"id":"a1f2bfd7f56a6b53","type":"change","z":"2dd18e3fe6f50d24","name":"store","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)\t","tot":"jsonata"},{"t":"set","p":"newtarget","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":970,"y":820,"wires":[[]]},{"id":"edf89ad533a332c8","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"newtemptarget","pin":"1","pin_all":0,"client":"04e16cbce69539b1","x":800,"y":820,"wires":[["a1f2bfd7f56a6b53"]]},{"id":"17c8feb17cfa7c82","type":"mqtt in","z":"2dd18e3fe6f50d24","name":"","topic":"shellies/shelly1pm-BA0B92/relay/+","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":540,"y":440,"wires":[["07da5cbbc2f048d1"]]},{"id":"4381c2b6c3f73e89","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"temp auto","pin":"12","pin_all":0,"client":"04e16cbce69539b1","x":960,"y":180,"wires":[["05136379c8ccf4c3"]]},{"id":"05136379c8ccf4c3","type":"change","z":"2dd18e3fe6f50d24","name":"store","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"str","to":"true","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"2","fromt":"str","to":"false","tot":"bool"},{"t":"set","p":"F3tauto","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1210,"y":180,"wires":[[]]},{"id":"894b4143fa4ea13f","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"pressure auto","pin":"13","pin_all":0,"client":"04e16cbce69539b1","x":970,"y":140,"wires":[["63c1b96b69a9b5ee","4398ab8c47bec477"]]},{"id":"63c1b96b69a9b5ee","type":"change","z":"2dd18e3fe6f50d24","name":"store","rules":[{"t":"change","p":"payload","pt":"msg","from":"1","fromt":"str","to":"true","tot":"bool"},{"t":"change","p":"payload","pt":"msg","from":"2","fromt":"str","to":"false","tot":"bool"},{"t":"set","p":"F3pauto","pt":"global","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1210,"y":140,"wires":[[]]},{"id":"69d9a07f06506fea","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"newpressuretarget","pin":"14","pin_all":0,"client":"04e16cbce69539b1","x":810,"y":780,"wires":[["e6185e443ce4659c"]]},{"id":"c9cb328e8b837567","type":"blynk-ws-out-write","z":"2dd18e3fe6f50d24","name":"pressuretarget","pin":"14","pinmode":0,"client":"04e16cbce69539b1","x":1300,"y":560,"wires":[]},{"id":"98d2c688a93015d8","type":"delay","z":"2dd18e3fe6f50d24","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":680,"y":340,"wires":[["caa79bd840bfaed6"]]},{"id":"4b6dc7cb822adad1","type":"delay","z":"2dd18e3fe6f50d24","name":"limit","pauseType":"rate","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"outputs":1,"x":70,"y":380,"wires":[["03a650f6fe37463d"]]},{"id":"053ca4f207105df2","type":"mqtt in","z":"2dd18e3fe6f50d24","name":"F2 temp","topic":"shellies/shelly1pm-BA0B92/ext_temperature/0","qos":"2","datatype":"json","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":70,"y":440,"wires":[["dea9c5c7f98751e0","597fabc006a35c9e"]]},{"id":"dea9c5c7f98751e0","type":"change","z":"2dd18e3fe6f50d24","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)","tot":"jsonata"},{"t":"set","p":"temp","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":260,"y":440,"wires":[["48c6ab0d15e77da3","9f6e30d3119af807","597fabc006a35c9e"]]},{"id":"aeee0ef5ac2f7b0a","type":"function","z":"2dd18e3fe6f50d24","name":"heat","func":"\nif (msg.payload.heat == \"off\" && flow.get(\"heatstatus\") !== \"off\") {\n msg.topic = \"shellies/shelly1pm-BA0B92/relay/0/command\"\n msg.payload = \"off\"\n flow.set(\"heatstatus\", \"off\")\n node.send(msg)\n}\nif (msg.payload.heat == \"on\" && flow.get(\"heatstatus\") !== \"on\") {\n msg.topic = \"shellies/shelly1pm-BA0B92/relay/0/command\"\n msg.payload = \"on\"\n flow.set(\"heatstatus\", \"on\")\n node.send(msg)\n}\n\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":950,"y":500,"wires":[["beacfb1d729893ea"]]},{"id":"9de6503f66b9b289","type":"function","z":"2dd18e3fe6f50d24","name":"cool","func":"\nif (msg.payload.cool == \"off\" && flow.get(\"coolstatus\") !== \"off\") {\n msg.topic = \"cmnd/tasmota_0B0009/POWER2\"\n msg.payload = \"off\"\n node.send(msg)\n}\nif (msg.payload.cool == \"on\" && flow.get(\"coolstatus\") !== \"on\") {\n msg.topic = \"cmnd/tasmota_0B0009/POWER2\"\n msg.payload = \"on\"\n node.send(msg)\n}\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":950,"y":540,"wires":[["beacfb1d729893ea","99694ba21ccac16e"]]},{"id":"6b70d2412c602a67","type":"change","z":"2dd18e3fe6f50d24","name":"topic","rules":[{"t":"change","p":"topic","pt":"msg","from":"stat/tasmota_0B0009/POWER2","fromt":"str","to":"cool","tot":"str"},{"t":"set","p":"coolstatus","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":750,"y":480,"wires":[["9de6503f66b9b289","4a49a42a5c94704c"]]},{"id":"12e8fa9fc16d5633","type":"mqtt in","z":"2dd18e3fe6f50d24","name":"","topic":"stat/tasmota_0B0009/POWER2","qos":"2","datatype":"auto","broker":"049e1b3e4be39fc2","nl":false,"rap":false,"inputs":0,"x":550,"y":480,"wires":[["6b70d2412c602a67","99694ba21ccac16e"]]},{"id":"e6185e443ce4659c","type":"change","z":"2dd18e3fe6f50d24","name":"store","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)\t","tot":"jsonata"},{"t":"set","p":"newpressuresp","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":970,"y":780,"wires":[[]]},{"id":"edcb4dcf39b18c0b","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"Gasvalve","pin":"15","pin_all":0,"client":"04e16cbce69539b1","x":580,"y":1100,"wires":[["a7646b1f5b8f8b2c"]]},{"id":"e055ab884d22f086","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"Bleedvalve","pin":"16","pin_all":0,"client":"04e16cbce69539b1","x":580,"y":1060,"wires":[["06c5c2dd2582c2e1"]]},{"id":"a7646b1f5b8f8b2c","type":"change","z":"2dd18e3fe6f50d24","name":"gasvalve","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)","tot":"jsonata"},{"t":"set","p":"gasvalve","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":1100,"wires":[["7c140911351461fe"]]},{"id":"06c5c2dd2582c2e1","type":"change","z":"2dd18e3fe6f50d24","name":"bleedvalve","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload)","tot":"jsonata"},{"t":"set","p":"bleedvalve","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":810,"y":1060,"wires":[["5fae0ba5c586cc69"]]},{"id":"1869f7c8c9291f0d","type":"function","z":"2dd18e3fe6f50d24","name":"pressostat","func":"var hys = 0.3\nvar out = 0\nvar SP = flow.get(\"PSP\")\n\nif (flow.get(\"stype\") != \"Carbonation\") {\n\n if (msg.payload + hys > SP) {\n out = 1\n }\n if (msg.payload < SP) {\n out = 0\n }\n \n msg.payload = out\nnode.send([msg,null]);\n}\n\nif (flow.get(\"stype\") == \"Carbonation\") {\n\n if (msg.payload + hys < SP) {\n out = 1\n }\n if (msg.payload > SP) {\n out = 0\n }\n \n msg.payload = out\nnode.send([null, msg]);\n \n} \n","outputs":2,"noerr":0,"initialize":"","finalize":"","x":810,"y":1020,"wires":[["58a76780a29af9a7","5fae0ba5c586cc69"],["7c140911351461fe"]]},{"id":"a60edac32feda975","type":"function","z":"2dd18e3fe6f50d24","name":"Calc&store SP","func":"\nvar steptype\nvar pressuresp\nvar target\nvar msg1 = {};\nvar msg2 = {};\n\nvar now = msg.payload / 1000 /3600 / 24\nvar start = flow.get('fermentationStartDate') / 1000 /3600 /24\nvar steps = flow.get('steps') - 1\nvar stepTemp = flow.get('stepTemp')\nvar stepTime = flow.get('stepTime')\nvar stepcounter = 0\nvar nextsteptime = start+stepTime[0]\nvar elapsed = now - start\nflow.set('elapsed', elapsed)\n\nfor (var i=1;i<=steps;i++) {\n if (now > nextsteptime) {\n stepcounter += 1;\n nextsteptime += stepTime[i];\n }\n}\n \n\nif (global.get(\"F3tauto\") === true) {\n target = stepTemp[stepcounter]\n} else\n{ target = flow.get(\"newtarget\")\n}\nflow.set('target', target)\n\nsteptype = flow.get('steptype')\nsteptype = steptype[stepcounter]\nflow.set(\"stype\", steptype)\nflow.set('stepcounter', stepcounter)\n\nif (global.get(\"F3pauto\") === true) {\n pressuresp = flow.get('pressuresp')\n pressuresp = pressuresp[stepcounter]\n if (pressuresp === null) {\n pressuresp = 0\n }\n} else {\n pressuresp = flow.get('newpressuresp')\n}\nflow.set(\"PSP\", pressuresp)\n\nmsg.payload = {\n pressuresp\n}\nmsg1.pick = stepcounter\n\nmsg1.payload = pressuresp\nmsg2.payload = target\nreturn [msg1, msg2];\n \n","outputs":2,"noerr":0,"x":980,"y":460,"wires":[["d60a28e1b9d01e60","c9cb328e8b837567"],["7dcd1a8d936f296e"]]},{"id":"4398ab8c47bec477","type":"debug","z":"2dd18e3fe6f50d24","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1220,"y":240,"wires":[]},{"id":"fc73ef8012582b55","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"Tiltselector","pin":"3","pin_all":0,"client":"04e16cbce69539b1","x":660,"y":60,"wires":[["dc075438a2011ca9"]]},{"id":"dc075438a2011ca9","type":"change","z":"2dd18e3fe6f50d24","name":"Tiltselector","rules":[{"t":"set","p":"F3tiltselector","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":810,"y":60,"wires":[[]]},{"id":"a88ca9d390df75c0","type":"function","z":"2dd18e3fe6f50d24","name":"tiltcal","func":"\nif (flow.get('F3tiltselector') == 1) {\nflow.set('redtiltcal', msg.payload)\nmsg.payload = \n{\"Tilt\": \"Red\",\n\"Gravity\": flow.get('redtilt')\n}\n}\n\nif (flow.get('F3tiltselector') == 2) {\nflow.set('yellowtiltcal', msg.payload)\nmsg.payload = \n\n{\"Tilt\": \"Yellow\",\n\"Gravity\": flow.get('yellowtilt')\n}\n}\nreturn msg;","outputs":1,"noerr":0,"x":650,"y":120,"wires":[["fda69eea741e189f"]]},{"id":"bd5cb73b2c840b34","type":"blynk-ws-in-write","z":"2dd18e3fe6f50d24","name":"Tiltcal","pin":"0","pin_all":0,"client":"04e16cbce69539b1","x":410,"y":120,"wires":[["c3f0e7486aa75636"]]},{"id":"c3f0e7486aa75636","type":"json","z":"2dd18e3fe6f50d24","name":"","property":"payload","action":"","pretty":false,"x":530,"y":120,"wires":[["a88ca9d390df75c0"]]},{"id":"dff8396e89196a92","type":"blynk-ws-out-sync","z":"2dd18e3fe6f50d24","name":"","pin":"0","pinmode":"1","client":"04e16cbce69539b1","x":270,"y":220,"wires":[]},{"id":"6bad57a51f0d97b0","type":"inject","z":"2dd18e3fe6f50d24","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"3","topic":"","payloadType":"date","x":90,"y":220,"wires":[["dff8396e89196a92","a41ccd310e4999d9"]]},{"id":"eb18fef3965b3f95","type":"link in","z":"2dd18e3fe6f50d24","name":"","links":[],"x":675,"y":160,"wires":[["fda69eea741e189f"]]},{"id":"33d4bb382da78f48","type":"blynk-ws-out-write","z":"2dd18e3fe6f50d24","name":"","pin":"19","pinmode":0,"client":"04e16cbce69539b1","x":1560,"y":1160,"wires":[]},{"id":"58a76780a29af9a7","type":"switch","z":"2dd18e3fe6f50d24","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":890,"y":1180,"wires":[["d87f0c1a20dff700"]]},{"id":"d87f0c1a20dff700","type":"Message Counter","z":"2dd18e3fe6f50d24","name":"","units":"hours","interval":"1","alignToClock":true,"generator":"internal","x":1070,"y":1180,"wires":[["f9e35db4ce126165"],[]]},{"id":"cdca00989339749c","type":"smooth","z":"2dd18e3fe6f50d24","name":"","property":"payload","action":"low","count":"1","round":"1","mult":"single","reduce":false,"x":620,"y":920,"wires":[["1869f7c8c9291f0d","b705c1b48db9f3ca"]]},{"id":"597fabc006a35c9e","type":"debug","z":"2dd18e3fe6f50d24","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":220,"y":520,"wires":[]},{"id":"99694ba21ccac16e","type":"debug","z":"2dd18e3fe6f50d24","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1040,"y":660,"wires":[]},{"id":"69ce1851b528bc24","type":"modbus-read","z":"2dd18e3fe6f50d24","name":"Analog input","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"1","dataType":"HoldingRegister","adr":"32","quantity":"1","rate":"1000","rateUnit":"ms","delayOnStart":false,"startDelayTime":"","server":"f894fc8468d121cf","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":230,"y":920,"wires":[["bab7a8a42ace8ec5"],["9b69bafc635d3794"]]},{"id":"9b69bafc635d3794","type":"modbus-response","z":"2dd18e3fe6f50d24","name":"","registerShowMax":20,"x":410,"y":980,"wires":[]},{"id":"bab7a8a42ace8ec5","type":"change","z":"2dd18e3fe6f50d24","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload[0]","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"msg.payload-418","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"msg.payload/495","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"msg.payload*14.5","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"$round(msg.payload, 1)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":920,"wires":[["cdca00989339749c"]]},{"id":"5fae0ba5c586cc69","type":"modbus-write","z":"2dd18e3fe6f50d24","name":"Bleed F2","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"Coil","adr":"1","quantity":"1","server":"f894fc8468d121cf","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1000,"y":1040,"wires":[[],["1aa49d6ab0c3b2fc"]]},{"id":"7c140911351461fe","type":"modbus-write","z":"2dd18e3fe6f50d24","name":"Gas F2","showStatusActivities":false,"showErrors":false,"unitid":"1","dataType":"Coil","adr":"2","quantity":"1","server":"f894fc8468d121cf","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1000,"y":1100,"wires":[[],["a42bbbac5bd92de6"]]},{"id":"1aa49d6ab0c3b2fc","type":"modbus-response","z":"2dd18e3fe6f50d24","name":"","registerShowMax":20,"x":1190,"y":1040,"wires":[]},{"id":"a42bbbac5bd92de6","type":"modbus-response","z":"2dd18e3fe6f50d24","name":"","registerShowMax":20,"x":1190,"y":1100,"wires":[]},{"id":"f9e35db4ce126165","type":"change","z":"2dd18e3fe6f50d24","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload*24","tot":"jsonata"},{"t":"set","p":"F1fermentrate","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1320,"y":1160,"wires":[["33d4bb382da78f48"]]}]
Add Comment
Please, Sign In to add comment