From 1cfb70ae98a67c7273d494b0945d5d18dbb0d6be Mon Sep 17 00:00:00 2001 From: wn Date: Tue, 24 Aug 2021 11:19:13 +0000 Subject: [PATCH] Several changes, including TimescaleDB and DigitalTwin1 support --- flow.json | 2 +- flow_cred.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flow.json b/flow.json index 47daeb3..e77d076 100644 --- a/flow.json +++ b/flow.json @@ -1 +1 @@ -[{"id":"161f9872.1bc6e8","type":"tab","label":"Measurement Collection","disabled":false,"info":""},{"id":"e4659a9f.3f8658","type":"tab","label":"ModbusMeasurement","disabled":false,"info":""},{"id":"c2d99cfc.d05b9","type":"tab","label":"DatabaseConnection","disabled":false,"info":""},{"id":"15cbc07c.cf074","type":"tab","label":"Temperature Publishing","disabled":false,"info":""},{"id":"63d1c956.3ee9c8","type":"tab","label":"Location","disabled":false,"info":""},{"id":"5f3b2200.77571","type":"tab","label":"Pushover","disabled":false,"info":""},{"id":"f7f94748.f88348","type":"tab","label":"Telegram Alarming","disabled":true,"info":""},{"id":"a7163696.6f4318","type":"mqtt-broker","z":"","name":"","broker":"172.16.2.16","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"64f763bb.19937c","type":"influxdb","z":"","hostname":"influxdb","port":"8086","protocol":"http","database":"smarthome2","name":"","usetls":false,"tls":""},{"id":"9ade7197.41fd7","type":"twitter-credentials","z":"","screen_name":"wollud1969"},{"id":"949da0ae.eef54","type":"telegram bot","z":"","botname":"de.hottis.nodered.telegrambot","usernames":"","chatids":"","baseapiurl":"","updatemode":"polling","pollinterval":"300","usesocks":false,"sockshost":"","socksport":"6667","socksusername":"anonymous","sockspassword":"","bothost":"","localbotport":"8443","publicbotport":"8443","privatekey":"","certificate":"","useselfsignedcertificate":false,"verboselogging":false},{"id":"47e2b918.6ee958","type":"mqtt in","z":"161f9872.1bc6e8","name":"","topic":"IoT/ParsedData/MeterbusHub","qos":"2","broker":"a7163696.6f4318","x":200,"y":340,"wires":[["24fb9c6e.71e374","37e8ad2f.f23a62"]]},{"id":"31ea9a27.6a4fc6","type":"debug","z":"161f9872.1bc6e8","name":"Meterbus","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":380,"y":400,"wires":[]},{"id":"2519cae9.83a656","type":"switch","z":"161f9872.1bc6e8","name":"KindSelector","property":"payload.kind","propertyType":"msg","rules":[{"t":"eq","v":"Temperature","vt":"str"},{"t":"eq","v":"ElectricEnergy","vt":"str"},{"t":"eq","v":"Water","vt":"str"},{"t":"eq","v":"Gas","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":270,"y":480,"wires":[["12a37f1c.96b951"],["5ba7da32.19ad24"],["5bd72a60.ee53f4"],["7b69f4df.bf551c"]]},{"id":"24fb9c6e.71e374","type":"json","z":"161f9872.1bc6e8","name":"","property":"payload","action":"","pretty":false,"x":190,"y":400,"wires":[["31ea9a27.6a4fc6","2519cae9.83a656"]]},{"id":"fea6250f.6ee3f8","type":"template","z":"161f9872.1bc6e8","name":"InfluxPowerPreparator","field":"payload","fieldType":"msg","format":"json","syntax":"mustache","template":"[\n { \n \"pv\":{{payload.values.power}},\n \"sv\":{{payload.values.energy}}\n },\n {\n \"deviceid\":\"{{payload.name}}\",\n \"kind\":\"{{payload.kind}}\",\n \"category\":\"{{payload.category}}\"\n }\n]","output":"json","x":1080,"y":720,"wires":[["ba567f4a.7189b"]]},{"id":"5b1b606f.0266e","type":"change","z":"161f9872.1bc6e8","name":"LowPowerCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"LowPower","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":800,"wires":[["fea6250f.6ee3f8"]]},{"id":"e43bf443.5a0798","type":"change","z":"161f9872.1bc6e8","name":"HighPowerCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"HighPower","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":840,"wires":[["fea6250f.6ee3f8"]]},{"id":"e89610fd.77041","type":"change","z":"161f9872.1bc6e8","name":"IndoorCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"Indoor","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":790,"y":700,"wires":[["24408300.280ebe"]]},{"id":"aa911dc7.bfdaf","type":"change","z":"161f9872.1bc6e8","name":"OutdoorCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"Outdoor","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":660,"wires":[["24408300.280ebe"]]},{"id":"b543dc5c.f78ee","type":"switch","z":"161f9872.1bc6e8","name":"TemperatureDeviceSelector","property":"payload.name","propertyType":"msg","rules":[{"t":"eq","v":"Hedge","vt":"str"},{"t":"eq","v":"House","vt":"str"},{"t":"eq","v":"Bedroom","vt":"str"},{"t":"eq","v":"DiningRoom","vt":"str"},{"t":"eq","v":"Kitchen","vt":"str"},{"t":"eq","v":"Attic","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":7,"x":540,"y":700,"wires":[["aa911dc7.bfdaf"],["aa911dc7.bfdaf"],["e89610fd.77041","52c8f65b.50e438"],["e89610fd.77041","7ea720a.3c121e"],["e89610fd.77041","b93f273e.e701d8"],["e89610fd.77041","e6e0540a.68ca78"],["6022a80d.129b78"]]},{"id":"5d4d2325.6124fc","type":"change","z":"161f9872.1bc6e8","name":"UnknownCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"Unknown","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":920,"wires":[["fea6250f.6ee3f8"]]},{"id":"5ba7da32.19ad24","type":"switch","z":"161f9872.1bc6e8","name":"PowerDeviceSelector","property":"payload.name","propertyType":"msg","rules":[{"t":"eq","v":"Light","vt":"str"},{"t":"eq","v":"Computer","vt":"str"},{"t":"eq","v":"Fridge","vt":"str"},{"t":"eq","v":"Freezer","vt":"str"},{"t":"eq","v":"Laundry","vt":"str"},{"t":"eq","v":"Dryer","vt":"str"},{"t":"eq","v":"Dishwasher","vt":"str"},{"t":"eq","v":"Total","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":9,"x":500,"y":840,"wires":[["5b1b606f.0266e","76caa43a.189d1c"],["5b1b606f.0266e","5e6c821b.1aafcc"],["5b1b606f.0266e","6143841c.604efc"],["5b1b606f.0266e","a12235e5.bba038"],["e43bf443.5a0798","94aa46aa.028448"],["e43bf443.5a0798","b353c7e.6f76638"],["e43bf443.5a0798","ac5fd667.d56718"],["e379acd7.5b501","c20b94cb.004ef8"],["5d4d2325.6124fc"]]},{"id":"24408300.280ebe","type":"template","z":"161f9872.1bc6e8","name":"InfluxTemperaturePreparator","field":"payload","fieldType":"msg","format":"json","syntax":"mustache","template":"[\n { \n \"pv\":{{payload.values.temperature}},\n \"sv\":{{payload.values.battery}}\n },\n {\n \"deviceid\":\"{{payload.name}}\",\n \"kind\":\"{{payload.kind}}\",\n \"category\":\"{{payload.category}}\"\n }\n]","output":"json","x":1100,"y":660,"wires":[["a3c2b617.b695e8"]]},{"id":"57f6d1fc.266a6","type":"mqtt in","z":"161f9872.1bc6e8","name":"","topic":"IoT/espThermometer2/measurement","qos":"2","broker":"a7163696.6f4318","x":180,"y":720,"wires":[["c61a7524.40f7f8"]]},{"id":"19fe1878.552c28","type":"debug","z":"161f9872.1bc6e8","name":"EspTherm","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":250,"y":900,"wires":[]},{"id":"c61a7524.40f7f8","type":"json","z":"161f9872.1bc6e8","name":"","property":"payload","action":"","pretty":false,"x":270,"y":780,"wires":[["8f0ce40b.a890c8"]]},{"id":"12a37f1c.96b951","type":"change","z":"161f9872.1bc6e8","name":"SetBattery","rules":[{"t":"set","p":"payload.values.battery","pt":"msg","to":"-1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":620,"wires":[["b543dc5c.f78ee"]]},{"id":"8f0ce40b.a890c8","type":"template","z":"161f9872.1bc6e8","name":"EspThermAdjuster","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\n \"name\":\"{{payload.location}}\",\n \"kind\":\"Temperature\",\n \"values\": {\n \"battery\":{{payload.battery}},\n \"temperature\":{{payload.temperature}}\n }\n}","output":"json","x":230,"y":840,"wires":[["19fe1878.552c28","b543dc5c.f78ee"]]},{"id":"6022a80d.129b78","type":"change","z":"161f9872.1bc6e8","name":"UnknownCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"Unknown","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":740,"wires":[["24408300.280ebe"]]},{"id":"e379acd7.5b501","type":"change","z":"161f9872.1bc6e8","name":"TotalPowerCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"TotalPower","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":880,"wires":[["fea6250f.6ee3f8"]]},{"id":"37e8ad2f.f23a62","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":270,"y":280,"wires":[["ff0dcef0.c1cfd"]]},{"id":"ff0dcef0.c1cfd","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Meterbus","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":220,"wires":[["7c566964.6012d8"]]},{"id":"52c8f65b.50e438","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":600,"wires":[["a54d311e.3d336"]]},{"id":"a54d311e.3d336","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"ESP_Bedroom","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":600,"wires":[["de5e1488.905cf8"]]},{"id":"7ea720a.3c121e","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":560,"wires":[["d69c9d18.3f2d1"]]},{"id":"d69c9d18.3f2d1","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"ESP_Diningroom","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":560,"wires":[["de5e1488.905cf8"]]},{"id":"4c2cff9d.77dca","type":"catch","z":"161f9872.1bc6e8","name":"","scope":null,"x":200,"y":1700,"wires":[["6ef3c0ff.cf872"]]},{"id":"bdbb7cc1.47758","type":"e-mail","z":"161f9872.1bc6e8","server":"mailer","port":"25","secure":false,"name":"wolfgang.hottgenroth@icloud.com","dname":"Error message","x":620,"y":1700,"wires":[]},{"id":"26e39dac.99f412","type":"inject","z":"15cbc07c.cf074","name":"Daily at noon","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"00 12 * * *","once":false,"onceDelay":0.1,"x":180,"y":160,"wires":[["d0524503.6384a8","7d3d1673.57e388","e1524efe.856ff","5009f71a.1f24d8"]]},{"id":"d0524503.6384a8","type":"influxdb in","z":"15cbc07c.cf074","influxdb":"64f763bb.19937c","name":"avg_temp_hedge_last_15min","query":"select mean(pv) from measured where deviceid = 'Hedge' and kind = 'Temperature' and time > now() - 15m","rawOutput":false,"precision":"","retentionPolicy":"","x":430,"y":100,"wires":[["c4e40448.5247a8"]]},{"id":"7d3d1673.57e388","type":"influxdb in","z":"15cbc07c.cf074","influxdb":"64f763bb.19937c","name":"min_temp_hedge_last_24h","query":"select min(pv) from measured where deviceid = 'Hedge' and kind = 'Temperature' and time > now() - 24h","rawOutput":false,"precision":"","retentionPolicy":"","x":420,"y":180,"wires":[["d7e3c7a6.698798"]]},{"id":"5009f71a.1f24d8","type":"influxdb in","z":"15cbc07c.cf074","influxdb":"64f763bb.19937c","name":"max_temp_hedge_last_24h","query":"select max(pv) from measured where deviceid = 'Hedge' and kind = 'Temperature' and time > now() - 24h","rawOutput":false,"precision":"","retentionPolicy":"","x":420,"y":220,"wires":[["ebebc5f9.8565c8"]]},{"id":"e1524efe.856ff","type":"influxdb in","z":"15cbc07c.cf074","influxdb":"64f763bb.19937c","name":"avg_temp_hedge_last_24h","query":"select mean(pv) from measured where deviceid = 'Hedge' and kind = 'Temperature' and time > now() - 24h","rawOutput":false,"precision":"","retentionPolicy":"","x":420,"y":140,"wires":[["3298c777.4e34f8"]]},{"id":"c4e40448.5247a8","type":"change","z":"15cbc07c.cf074","name":"set topic: avg15min","rules":[{"t":"set","p":"topic","pt":"msg","to":"avg15min","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":100,"wires":[["4ad2acda.2099c4"]]},{"id":"3298c777.4e34f8","type":"change","z":"15cbc07c.cf074","name":"set topic: avg24h","rules":[{"t":"set","p":"topic","pt":"msg","to":"avg24h","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":140,"wires":[["4ad2acda.2099c4"]]},{"id":"d7e3c7a6.698798","type":"change","z":"15cbc07c.cf074","name":"set topic: min24h","rules":[{"t":"set","p":"topic","pt":"msg","to":"min","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":180,"wires":[["4ad2acda.2099c4"]]},{"id":"ebebc5f9.8565c8","type":"change","z":"15cbc07c.cf074","name":"set topic: max24h","rules":[{"t":"set","p":"topic","pt":"msg","to":"max","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":220,"wires":[["4ad2acda.2099c4"]]},{"id":"4ad2acda.2099c4","type":"join","z":"15cbc07c.cf074","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"4","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":890,"y":160,"wires":[["eaefee46.b7e6"]]},{"id":"eaefee46.b7e6","type":"function","z":"15cbc07c.cf074","name":"TextPreparator","func":"let output = \"\"\noutput += `Die aktuelle Temperatur zuhause ist ${msg.payload.avg15min[0].mean.toFixed(1)}°C.\\n`\noutput += `Die Durchschnittstemperatur der letzten 24 Stunden war ${msg.payload.avg24h[0].mean.toFixed(1)}°C, `\noutput += `die Tiefsttemperatur war ${msg.payload.min[0].min.toFixed(1)}°C um ${msg.payload.min[0].time.getHours()}:${msg.payload.min[0].time.getMinutes()} Uhr und `\noutput += `die Höchsttemperatur war ${msg.payload.max[0].max.toFixed(1)}°C um ${msg.payload.max[0].time.getHours()}:${msg.payload.max[0].time.getMinutes()} Uhr.\\n`\noutput += \"Powered by @NodeRED and @InfluxDB.\"\nmsg.payload = output\nreturn msg;\n","outputs":1,"noerr":0,"x":1060,"y":160,"wires":[["57a41df1.8e7bb4"]]},{"id":"b93f273e.e701d8","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":520,"wires":[["180233c3.f4c66c"]]},{"id":"180233c3.f4c66c","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"ESP_Kitchen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":520,"wires":[["de5e1488.905cf8"]]},{"id":"5bd72a60.ee53f4","type":"change","z":"161f9872.1bc6e8","name":"TotalWaterCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"TotalWater","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":1000,"wires":[["1dae2289.1313ed","1e5524e0.e44d7b"]]},{"id":"1dae2289.1313ed","type":"template","z":"161f9872.1bc6e8","name":"InfluxWaterPreparator","field":"payload","fieldType":"msg","format":"json","syntax":"mustache","template":"[\n { \n \"pv\":{{payload.values.volume}},\n \"sv\":{{payload.values.flow}},\n \"tv\":{{payload.values.temperature}},\n \"qv\":{{payload.values.optime}}\n },\n {\n \"deviceid\":\"{{payload.name}}\",\n \"kind\":\"{{payload.kind}}\",\n \"category\":\"{{payload.category}}\"\n }\n]","output":"json","x":800,"y":1000,"wires":[["edba769.7203188"]]},{"id":"76caa43a.189d1c","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":750,"y":1180,"wires":[["2410886d.e5da78"]]},{"id":"2410886d.e5da78","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Light","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":1180,"wires":[["b080376b.1e2678"]]},{"id":"5304ceae.33839","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Computer","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":1220,"wires":[["b080376b.1e2678"]]},{"id":"a052256f.7fb248","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Fridge","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":1260,"wires":[["b080376b.1e2678"]]},{"id":"4fba8aaa.f553e4","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Freezer","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":1300,"wires":[["b080376b.1e2678"]]},{"id":"21a16e3e.263ee2","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Laundry","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":1340,"wires":[["b080376b.1e2678"]]},{"id":"dd9206d.5108df8","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Dryer","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":1380,"wires":[["b080376b.1e2678"]]},{"id":"ca316958.80bec8","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Dishwasher","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":1420,"wires":[["b080376b.1e2678"]]},{"id":"15a5a2fe.1555fd","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Total","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":1460,"wires":[["b080376b.1e2678"]]},{"id":"b02e6e45.47185","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Water_Total","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":1500,"wires":[["b080376b.1e2678"]]},{"id":"5e6c821b.1aafcc","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":750,"y":1220,"wires":[["5304ceae.33839"]]},{"id":"6143841c.604efc","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":750,"y":1260,"wires":[["a052256f.7fb248"]]},{"id":"a12235e5.bba038","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":750,"y":1300,"wires":[["4fba8aaa.f553e4"]]},{"id":"94aa46aa.028448","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":750,"y":1340,"wires":[["21a16e3e.263ee2"]]},{"id":"b353c7e.6f76638","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":750,"y":1380,"wires":[["dd9206d.5108df8"]]},{"id":"ac5fd667.d56718","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":750,"y":1420,"wires":[["ca316958.80bec8"]]},{"id":"c20b94cb.004ef8","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":750,"y":1460,"wires":[["15a5a2fe.1555fd"]]},{"id":"1e5524e0.e44d7b","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":750,"y":1500,"wires":[["b02e6e45.47185"]]},{"id":"e6e0540a.68ca78","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":480,"wires":[["ee19751d.1403c8"]]},{"id":"ee19751d.1403c8","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"ESP_Attic","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":480,"wires":[["de5e1488.905cf8"]]},{"id":"7b69f4df.bf551c","type":"change","z":"161f9872.1bc6e8","name":"TotalGasCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"TotalGas","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":1040,"wires":[["23113cc1.aedf34","d69d250e.2069f8"]]},{"id":"23113cc1.aedf34","type":"template","z":"161f9872.1bc6e8","name":"InfluxGasPreparator","field":"payload","fieldType":"msg","format":"json","syntax":"mustache","template":"[\n { \n \"pv\":{{payload.values.v1}},\n \"sv\":{{payload.values.v2}},\n \"tv\":{{payload.values.v3}}\n },\n {\n \"deviceid\":\"{{payload.name}}\",\n \"kind\":\"{{payload.kind}}\",\n \"category\":\"{{payload.category}}\"\n }\n]","output":"json","x":800,"y":1040,"wires":[["c9f761e.47c18a"]]},{"id":"d69d250e.2069f8","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":750,"y":1540,"wires":[["627b1339.7f79ac"]]},{"id":"627b1339.7f79ac","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Gas_Total","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":1540,"wires":[["b080376b.1e2678"]]},{"id":"57a41df1.8e7bb4","type":"twitter out","z":"15cbc07c.cf074","twitter":"9ade7197.41fd7","name":"Tweet","x":1250,"y":160,"wires":[]},{"id":"c3a2e3e9.17cf5","type":"telegram sender","z":"f7f94748.f88348","name":"hottis_bot","bot":"949da0ae.eef54","x":680,"y":420,"wires":[["10d261e9.381fae"]]},{"id":"12eb3d0f.69a043","type":"telegram receiver","z":"f7f94748.f88348","name":"Receiver","bot":"949da0ae.eef54","saveDataDir":"","x":120,"y":260,"wires":[["31d9cb49.1b5c54","5d8c8fab.ad857"],["6febab95.98e214"]]},{"id":"6febab95.98e214","type":"debug","z":"f7f94748.f88348","name":"UnauthorizedAccess","active":true,"tosidebar":true,"console":true,"tostatus":true,"complete":"payload","targetType":"msg","x":180,"y":340,"wires":[]},{"id":"10d261e9.381fae","type":"debug","z":"f7f94748.f88348","name":"TelegramOutput","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","x":710,"y":360,"wires":[]},{"id":"e3217c9a.a357b","type":"debug","z":"161f9872.1bc6e8","name":"ErrorMessage","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":620,"y":1760,"wires":[]},{"id":"6ef3c0ff.cf872","type":"function","z":"161f9872.1bc6e8","name":"ErrorMessage","func":"// let res = JSON.stringify(msg)\n// msg.payload = res\nreturn msg","outputs":1,"noerr":0,"x":400,"y":1700,"wires":[["bdbb7cc1.47758","e3217c9a.a357b","59301994.0b70e8"]]},{"id":"31d9cb49.1b5c54","type":"function","z":"f7f94748.f88348","name":"TelegramInboundController","func":"if (msg.payload.content.startsWith(\"/\")) {\n msg.tokens = msg.payload.content.split(\" \")\n msg.cmd = msg.tokens.shift().substr(1)\n return [null, msg]\n} else {\n msg.payload.content = \"Start commands with a /, maybe you want to try /help.\"\n return [msg, null]\n}\n\n","outputs":2,"noerr":0,"x":180,"y":420,"wires":[["c3a2e3e9.17cf5"],["192e92a8.2075bd"]]},{"id":"7c566964.6012d8","type":"link out","z":"161f9872.1bc6e8","name":"alarmMeterbus","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":415,"y":220,"wires":[]},{"id":"de5e1488.905cf8","type":"link out","z":"161f9872.1bc6e8","name":"alarmESP","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":1175,"y":500,"wires":[]},{"id":"b080376b.1e2678","type":"link out","z":"161f9872.1bc6e8","name":"alarmX","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":1155,"y":1300,"wires":[]},{"id":"59301994.0b70e8","type":"delay","z":"161f9872.1bc6e8","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":610,"y":1640,"wires":[["3efe4607.e0a6ea"]]},{"id":"3efe4607.e0a6ea","type":"link out","z":"161f9872.1bc6e8","name":"errors","links":["d147891c.b43828","26719762.125ec8"],"x":840,"y":1640,"wires":[]},{"id":"8b8eddd8.8145b","type":"function","z":"f7f94748.f88348","name":"ClearChatDict","func":"const CHAT_DICT_KEY = 'chatKey'\nflow.set(CHAT_DICT_KEY, {})\nnode.warn(\"chatDict cleared\")\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":40,"wires":[[]]},{"id":"8aa25d79.c189c","type":"inject","z":"f7f94748.f88348","name":"Trigger","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":40,"wires":[["8b8eddd8.8145b"]]},{"id":"192e92a8.2075bd","type":"switch","z":"f7f94748.f88348","name":"","property":"cmd","propertyType":"msg","rules":[{"t":"eq","v":"start","vt":"str"},{"t":"eq","v":"stop","vt":"str"},{"t":"eq","v":"help","vt":"str"},{"t":"eq","v":"register","vt":"str"},{"t":"eq","v":"clear","vt":"str"},{"t":"eq","v":"list","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":7,"x":170,"y":520,"wires":[["a283b2cd.cbdf3"],["272e70d9.b49de"],["8aa39a51.1480d8"],["94c6d2ef.aa1e2"],["791bf1ba.0ee4b"],["4e11b20a.53142c"],["82f07dd3.9f2f7"]],"inputLabels":["In"],"outputLabels":["Start","Stop","Help","Register","",null,"Default"]},{"id":"82f07dd3.9f2f7","type":"template","z":"f7f94748.f88348","name":"UnknownCmd","field":"payload.content","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Sorry, the command \"{{cmd}}\" is unknown here.","output":"str","x":420,"y":760,"wires":[["c3a2e3e9.17cf5"]]},{"id":"a283b2cd.cbdf3","type":"function","z":"f7f94748.f88348","name":"StartCmd","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\n//node.warn(JSON.stringify(chatDict))\nlet msgs = []\nif (msg.payload.chatId in chatDict) {\n msg.payload.content = \"You are already known here\"\n} else {\n chatDict[msg.payload.chatId.toString()] = {\n \"errors\": false,\n \"alarms\": false,\n \"geofency\": false,\n \"locative\": false,\n \"time\": false\n }\n msg.payload.content = \"Now you are known here\"\n flow.set(CHAT_DICT_KEY, chatDict)\n}\nreturn msg\n","outputs":1,"noerr":0,"x":400,"y":500,"wires":[["c3a2e3e9.17cf5"]]},{"id":"272e70d9.b49de","type":"function","z":"f7f94748.f88348","name":"StopCmd","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\n//node.warn(JSON.stringify(chatDict))\nlet msgs = []\nif (msg.payload.chatId in chatDict) {\n delete chatDict[msg.payload.chatId.toString()]\n msg.payload.content = \"You are known here, but now I forgot you\"\n flow.set(CHAT_DICT_KEY, chatDict)\n} else {\n msg.payload.content = \"You are unknown here\"\n}\nreturn msg\n","outputs":1,"noerr":0,"x":400,"y":540,"wires":[["c3a2e3e9.17cf5"]]},{"id":"8aa39a51.1480d8","type":"template","z":"f7f94748.f88348","name":"HelpCmd","field":"payload.content","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Help for the HottisBot.\n\n/start\n Start your conversation with the bot. ChatId will be stored.\n \n/stop\n End your conversation, chatId will be forgotten.\n\n/help\n This help.\n\n/register token\n Register for information to be send for the particular token.\n\n/clear\n Clear all registrations\n \n/list \n List your registrations\n ","output":"str","x":400,"y":580,"wires":[["c3a2e3e9.17cf5"]]},{"id":"94c6d2ef.aa1e2","type":"function","z":"f7f94748.f88348","name":"RegisterCmd","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\n//node.warn(JSON.stringify(chatDict))\nlet msgs = []\nif (msg.payload.chatId in chatDict) {\n if (msg.tokens[0] == \"help\") {\n let tmpMsg = \"Possible options are \"\n for (let o in chatDict[msg.payload.chatId]) {\n tmpMsg += o + \" \"\n }\n msg.payload.content = tmpMsg\n } else {\n if (msg.tokens[0] in chatDict[msg.payload.chatId]) {\n chatDict[msg.payload.chatId][msg.tokens[0]] = true\n msg.payload.content = `You have been registered for the option ${msg.tokens[0]}`\n flow.set(CHAT_DICT_KEY, chatDict)\n } else {\n msg.payload.content = \"Unknown option\"\n }\n }\n} else {\n msg.payload.content = \"You are unknown here, start with /start\"\n}\nreturn msg\n","outputs":1,"noerr":0,"x":410,"y":620,"wires":[["c3a2e3e9.17cf5"]]},{"id":"c4aed737.6b87d8","type":"function","z":"f7f94748.f88348","name":"PrintChatDict","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\nnode.warn(JSON.stringify(chatDict))\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":100,"wires":[[]]},{"id":"e3ab7e28.09718","type":"inject","z":"f7f94748.f88348","name":"Trigger","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":100,"wires":[["c4aed737.6b87d8"]]},{"id":"791bf1ba.0ee4b","type":"function","z":"f7f94748.f88348","name":"ClearCmd","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\n//node.warn(JSON.stringify(chatDict))\nlet msgs = []\nif (msg.payload.chatId in chatDict) {\n for (let o in chatDict[msg.payload.chatId]) {\n chatDict[msg.payload.chatId][o] = false\n }\n msg.payload.content = \"All your registrations have been cleared\"\n flow.set(CHAT_DICT_KEY, chatDict)\n} else {\n msg.payload.content = \"You are unknown here, start with /start\"\n}\nreturn msg\n","outputs":1,"noerr":0,"x":400,"y":660,"wires":[["c3a2e3e9.17cf5"]]},{"id":"4e11b20a.53142c","type":"function","z":"f7f94748.f88348","name":"ListCmd","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\n//node.warn(JSON.stringify(chatDict))\nlet msgs = []\nif (msg.payload.chatId in chatDict) {\n let tmpMsg = \"You are registered for\\n\"\n for (let o in chatDict[msg.payload.chatId]) {\n tmpMsg += o + \": \" + chatDict[msg.payload.chatId][o] + \"\\n\"\n }\n msg.payload.content = tmpMsg\n} else {\n msg.payload.content = \"You are unknown here, start with /start\"\n}\nreturn msg\n","outputs":1,"noerr":0,"x":400,"y":700,"wires":[["c3a2e3e9.17cf5"]]},{"id":"e9de7ec7.cbf71","type":"function","z":"f7f94748.f88348","name":"TelegramMessagePreparator","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\nlet msgs = []\nfor (let chatId in chatDict) {\n node.warn(\"Id: \" + chatId + \", option: \" + msg.option)\n if ((msg.option in chatDict[chatId]) && (chatDict[chatId][msg.option])) {\n node.warn(\"Mark 1\")\n let m = { \"payload\": {\n \"chatId\": chatId,\n \"type\": \"message\",\n \"content\": JSON.stringify(msg, null, 2)\n }\n }\n msgs.push(m)\n }\n}\nnode.warn(JSON.stringify(msgs))\nreturn [msgs];","outputs":1,"noerr":0,"x":460,"y":840,"wires":[["c3a2e3e9.17cf5"]]},{"id":"6aa6322b.0aff5c","type":"mqtt in","z":"f7f94748.f88348","name":"","topic":"IoT/Presence/Geofency","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":140,"y":1060,"wires":[["369d676c.ff2e68"]]},{"id":"4ace0f7a.c48a9","type":"change","z":"f7f94748.f88348","name":"errors","rules":[{"t":"set","p":"option","pt":"msg","to":"errors","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":210,"y":840,"wires":[["e9de7ec7.cbf71"]]},{"id":"d147891c.b43828","type":"link in","z":"f7f94748.f88348","name":"","links":["3efe4607.e0a6ea","cb5cfac1.9c0d88"],"x":115,"y":840,"wires":[["4ace0f7a.c48a9"]]},{"id":"983aafdf.fd28c","type":"change","z":"f7f94748.f88348","name":"time","rules":[{"t":"set","p":"option","pt":"msg","to":"time","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":210,"y":880,"wires":[["e9de7ec7.cbf71"]]},{"id":"efd11e7b.d7a08","type":"inject","z":"f7f94748.f88348","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":940,"wires":[["983aafdf.fd28c"]]},{"id":"a5c806e0.2be3e8","type":"inject","z":"161f9872.1bc6e8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":200,"y":1640,"wires":[["6ef3c0ff.cf872"]]},{"id":"369d676c.ff2e68","type":"change","z":"f7f94748.f88348","name":"geofency","rules":[{"t":"set","p":"option","pt":"msg","to":"geofency","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":1000,"wires":[["e9de7ec7.cbf71"]]},{"id":"96d8fa5c.a13318","type":"mqtt in","z":"f7f94748.f88348","name":"","topic":"IoT/Presence/Locative","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":140,"y":1200,"wires":[["1896fa82.a809f5"]]},{"id":"1896fa82.a809f5","type":"change","z":"f7f94748.f88348","name":"locative","rules":[{"t":"set","p":"option","pt":"msg","to":"locative","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":1140,"wires":[["e9de7ec7.cbf71"]]},{"id":"2d7d82a6.d7759e","type":"change","z":"f7f94748.f88348","name":"alarms","rules":[{"t":"set","p":"option","pt":"msg","to":"alarms","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":210,"y":1260,"wires":[["e9de7ec7.cbf71"]]},{"id":"994c7bcc.36e3a8","type":"link in","z":"f7f94748.f88348","name":"","links":["7c566964.6012d8","9786e66c.08f3e8","b080376b.1e2678","de5e1488.905cf8","e44a2b47.10b378","7990f40d.cfc6dc","9be3b04e.3e7b8","619de5cc.60b4fc","80f1ac34.2df46","4a85527.ad86bac","9c093ca3.0e02"],"x":115,"y":1260,"wires":[["2d7d82a6.d7759e"]]},{"id":"5d8c8fab.ad857","type":"debug","z":"f7f94748.f88348","name":"ReceivedMsg","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":450,"y":240,"wires":[]},{"id":"e51249cb.ca80a8","type":"pushover","z":"5f3b2200.77571","name":"","device":"","title":"HomeControlAlarm","priority":0,"sound":"pushover","url":"","url_title":"","html":true,"x":890,"y":260,"wires":[]},{"id":"259061c9.8caf6e","type":"inject","z":"5f3b2200.77571","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":360,"y":260,"wires":[["e51249cb.ca80a8"]]},{"id":"26719762.125ec8","type":"link in","z":"5f3b2200.77571","name":"Push Error","links":["3efe4607.e0a6ea","cb5cfac1.9c0d88"],"x":335,"y":360,"wires":[["7bec6469.a3c17c"]]},{"id":"7bec6469.a3c17c","type":"change","z":"5f3b2200.77571","name":"Topic NodeRed Exception","rules":[{"t":"set","p":"topic","pt":"msg","to":"Node-RED Exception","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":360,"wires":[["e51249cb.ca80a8"]]},{"id":"a96ab0e9.c738e","type":"link in","z":"5f3b2200.77571","name":"Push Alarm","links":["9786e66c.08f3e8","e44a2b47.10b378","7990f40d.cfc6dc"],"x":335,"y":520,"wires":[["ab610711.56b898"]]},{"id":"ab610711.56b898","type":"change","z":"5f3b2200.77571","name":"Topic Device Alarm","rules":[{"t":"set","p":"topic","pt":"msg","to":"Device Alarm","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":520,"wires":[["e51249cb.ca80a8"]]},{"id":"bf0f1a1a.bd15d8","type":"http in","z":"63d1c956.3ee9c8","name":"Location","url":"/location","method":"post","upload":false,"swaggerDoc":"","x":200,"y":180,"wires":[["dea26ac6.83a288","ba0ccdca.996cf"]]},{"id":"dea26ac6.83a288","type":"template","z":"63d1c956.3ee9c8","name":"Prepare Response","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Ok, location service, thank you very much.","output":"str","x":430,"y":180,"wires":[["731db480.aadd9c"]]},{"id":"731db480.aadd9c","type":"http response","z":"63d1c956.3ee9c8","name":"","statusCode":"200","headers":{},"x":660,"y":180,"wires":[]},{"id":"31957024.76a17","type":"function","z":"63d1c956.3ee9c8","name":"Stringify","func":"let m = JSON.stringify(msg.payload, null, 2)\nmsg.payload = m\nreturn msg;","outputs":1,"noerr":0,"x":740,"y":240,"wires":[["ee40dee3.a2715","fc4be7c8.26bd28"]]},{"id":"16fa8e82.4283a1","type":"change","z":"5f3b2200.77571","name":"Topic Notification","rules":[{"t":"set","p":"topic","pt":"msg","to":"Notification","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":580,"wires":[["e51249cb.ca80a8"]]},{"id":"c931c70.3beb138","type":"link in","z":"5f3b2200.77571","name":"Push Notification","links":["bf534da5.e7ae2"],"x":335,"y":580,"wires":[["16fa8e82.4283a1"]]},{"id":"445f490f.ae7268","type":"debug","z":"63d1c956.3ee9c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":750,"y":300,"wires":[]},{"id":"ba0ccdca.996cf","type":"function","z":"63d1c956.3ee9c8","name":"Prepare","func":"let content = {\n \"location\": msg.payload.id,\n \"direction\": msg.payload.trigger,\n \"device\": msg.payload.device\n}\nmsg.payload = content\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":300,"wires":[["c528ca13.42f448"]]},{"id":"c528ca13.42f448","type":"function","z":"63d1c956.3ee9c8","name":"SelectPerson","func":"let device = msg.payload.device\nlet persons = {\n \"7DF7374D-83A5-4E56-838B-D3BB26ED4A54\": \"Wolfgang\",\n \"01A2B612-060B-47B0-82FA-A8F41328C6D4\": \"Patty\",\n \"9C4D290A-D0DC-42AB-97F0-9075041512E2\": \"Anna\",\n \"E1693F9B-37DE-449C-BF47-AE0227EDD782\": \"Matthias\"\n}\nlet person = \"Unknown\"\nif (device in persons) {\n person = persons[device]\n} \nmsg.payload.person = person\nreturn msg;","outputs":1,"noerr":0,"x":570,"y":300,"wires":[["445f490f.ae7268","31957024.76a17"]]},{"id":"ee40dee3.a2715","type":"mqtt out","z":"63d1c956.3ee9c8","name":"","topic":"IoT/Presence/Location","qos":"","retain":"","broker":"a7163696.6f4318","x":960,"y":180,"wires":[]},{"id":"46b22e68.24113","type":"function","z":"c2d99cfc.d05b9","name":"EventCounter","func":"let cnt = context.get('EventCounter') || 0\ncnt += 1\ncontext.set('EventCounter', cnt)\nnode.status({fill:\"blue\",shape:\"dot\",text:`${cnt}`})\nreturn msg;","outputs":1,"noerr":0,"x":440,"y":380,"wires":[["8c7fcb5a.cfdf38","4489e91d.4448d8"]]},{"id":"8c7fcb5a.cfdf38","type":"debug","z":"c2d99cfc.d05b9","name":"InfluxReady","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":650,"y":360,"wires":[]},{"id":"4489e91d.4448d8","type":"influxdb out","z":"c2d99cfc.d05b9","influxdb":"64f763bb.19937c","name":"","measurement":"measured","precision":"","retentionPolicy":"","x":730,"y":400,"wires":[]},{"id":"e774ea0a.8c9498","type":"link in","z":"c2d99cfc.d05b9","name":"DatabaseInput","links":["7f786eca.756de","a3c2b617.b695e8","ba567f4a.7189b","edba769.7203188","c9f761e.47c18a","7f24c8d4.78b378","626a4ff4.2659a","e35e483a.8ee6a8","d8654fea.c36b3","b1f5ba29.5080d8","89295b26.bf9a78"],"x":255,"y":380,"wires":[["46b22e68.24113"]]},{"id":"a3c2b617.b695e8","type":"link out","z":"161f9872.1bc6e8","name":"","links":["e774ea0a.8c9498"],"x":1275,"y":660,"wires":[]},{"id":"ba567f4a.7189b","type":"link out","z":"161f9872.1bc6e8","name":"","links":["e774ea0a.8c9498"],"x":1235,"y":720,"wires":[]},{"id":"edba769.7203188","type":"link out","z":"161f9872.1bc6e8","name":"","links":["e774ea0a.8c9498"],"x":975,"y":1000,"wires":[]},{"id":"c9f761e.47c18a","type":"link out","z":"161f9872.1bc6e8","name":"","links":["e774ea0a.8c9498"],"x":975,"y":1040,"wires":[]},{"id":"c7382408.0842f8","type":"change","z":"e4659a9f.3f8658","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Modbus2_Laundry_Temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":640,"y":120,"wires":[["9be3b04e.3e7b8"]]},{"id":"2ed0bcf5.3ecd54","type":"trigger","z":"e4659a9f.3f8658","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":430,"y":120,"wires":[["c7382408.0842f8"]]},{"id":"9be3b04e.3e7b8","type":"link out","z":"e4659a9f.3f8658","name":"alarmModbus","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":815,"y":120,"wires":[]},{"id":"26894128.4da4fe","type":"mqtt in","z":"e4659a9f.3f8658","name":"","topic":"IoT/Measurement/Modbus2/Laundry/Temperature","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":220,"y":180,"wires":[["2ed0bcf5.3ecd54","d2658ade.4be488"]]},{"id":"d2658ade.4be488","type":"template","z":"e4659a9f.3f8658","name":"Modbus2LaundryTemperature","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[\n { \n \"pv\":{{payload}}\n },\n {\n \"deviceid\":\"Laundry\",\n \"kind\":\"Temperature\",\n \"category\":\"Indoor\"\n }\n]","output":"json","x":490,"y":240,"wires":[["e5491c23.66121","d8654fea.c36b3"]]},{"id":"e5491c23.66121","type":"debug","z":"e4659a9f.3f8658","name":"ModbusLaundryTemperature","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":860,"y":280,"wires":[]},{"id":"5c55b2d7.96294c","type":"change","z":"e4659a9f.3f8658","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Modbus2_Laundry_Humidity","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":640,"y":420,"wires":[["619de5cc.60b4fc"]]},{"id":"b2e383b0.9f2ea","type":"trigger","z":"e4659a9f.3f8658","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":430,"y":420,"wires":[["5c55b2d7.96294c"]]},{"id":"619de5cc.60b4fc","type":"link out","z":"e4659a9f.3f8658","name":"alarmModbus","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":815,"y":420,"wires":[]},{"id":"cc26a43e.e53118","type":"mqtt in","z":"e4659a9f.3f8658","name":"","topic":"IoT/Measurement/Modbus2/Laundry/Humidity","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":210,"y":480,"wires":[["b2e383b0.9f2ea","5788c7f5.101908"]]},{"id":"5788c7f5.101908","type":"template","z":"e4659a9f.3f8658","name":"Modbus2LaundryHumidity","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[\n { \n \"pv\":{{payload}}\n },\n {\n \"deviceid\":\"Laundry\",\n \"kind\":\"Humidity\",\n \"category\":\"Indoor\"\n }\n]","output":"json","x":470,"y":540,"wires":[["f04a518b.613c7","626a4ff4.2659a"]]},{"id":"626a4ff4.2659a","type":"link out","z":"e4659a9f.3f8658","name":"","links":["e774ea0a.8c9498"],"x":755,"y":540,"wires":[]},{"id":"f04a518b.613c7","type":"debug","z":"e4659a9f.3f8658","name":"ModbusLaundryHumidity","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":850,"y":580,"wires":[]},{"id":"10bb547.0703fac","type":"change","z":"e4659a9f.3f8658","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Modbus2_Freezer_Temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":640,"y":740,"wires":[["80f1ac34.2df46"]]},{"id":"149e9b31.462285","type":"trigger","z":"e4659a9f.3f8658","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":430,"y":740,"wires":[["10bb547.0703fac"]]},{"id":"80f1ac34.2df46","type":"link out","z":"e4659a9f.3f8658","name":"alarmModbus","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":835,"y":740,"wires":[]},{"id":"9f089e17.30bd6","type":"mqtt in","z":"e4659a9f.3f8658","name":"","topic":"IoT/Measurement/Modbus2/Freezer","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":180,"y":800,"wires":[["149e9b31.462285","c3a641b8.fb524"]]},{"id":"c3a641b8.fb524","type":"template","z":"e4659a9f.3f8658","name":"Modbus2FreezerTemperature","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[\n { \n \"pv\":{{payload}}\n },\n {\n \"deviceid\":\"Freezer\",\n \"kind\":\"Temperature\",\n \"category\":\"Device\"\n }\n]","output":"json","x":490,"y":860,"wires":[["3dc154c3.a188bc","e35e483a.8ee6a8"]]},{"id":"3dc154c3.a188bc","type":"debug","z":"e4659a9f.3f8658","name":"ModbusFreezerTemperature","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":860,"y":900,"wires":[]},{"id":"e35e483a.8ee6a8","type":"link out","z":"e4659a9f.3f8658","name":"","links":["e774ea0a.8c9498"],"x":755,"y":860,"wires":[]},{"id":"d8654fea.c36b3","type":"link out","z":"e4659a9f.3f8658","name":"","links":["e774ea0a.8c9498"],"x":755,"y":240,"wires":[]},{"id":"ac57e5d9.c707e8","type":"catch","z":"e4659a9f.3f8658","name":"","scope":null,"x":100,"y":1080,"wires":[["bf5ed3c7.d7ff7"]]},{"id":"2ff06ca5.070bc4","type":"e-mail","z":"e4659a9f.3f8658","server":"mailer","port":"25","secure":false,"name":"wolfgang.hottgenroth@icloud.com","dname":"Error message","x":520,"y":1080,"wires":[]},{"id":"73653e14.45b7c","type":"debug","z":"e4659a9f.3f8658","name":"ErrorMessage","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":520,"y":1140,"wires":[]},{"id":"bf5ed3c7.d7ff7","type":"function","z":"e4659a9f.3f8658","name":"ErrorMessage","func":"// let res = JSON.stringify(msg)\n// msg.payload = res\nreturn msg","outputs":1,"noerr":0,"x":300,"y":1080,"wires":[["2ff06ca5.070bc4","73653e14.45b7c","14b1c9b1.ffd2d6"]]},{"id":"14b1c9b1.ffd2d6","type":"delay","z":"e4659a9f.3f8658","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":510,"y":1020,"wires":[["cb5cfac1.9c0d88"]]},{"id":"cb5cfac1.9c0d88","type":"link out","z":"e4659a9f.3f8658","name":"errors","links":["d147891c.b43828","26719762.125ec8"],"x":740,"y":1020,"wires":[]},{"id":"218cd9fd.a17db6","type":"inject","z":"e4659a9f.3f8658","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":1020,"wires":[["bf5ed3c7.d7ff7"]]},{"id":"9ad916fd.866ff8","type":"change","z":"e4659a9f.3f8658","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Modbus2_Basement_Temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":640,"y":1260,"wires":[["4a85527.ad86bac"]]},{"id":"a5cd481a.aacaa8","type":"trigger","z":"e4659a9f.3f8658","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":430,"y":1260,"wires":[["9ad916fd.866ff8"]]},{"id":"4a85527.ad86bac","type":"link out","z":"e4659a9f.3f8658","name":"alarmModbus","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":815,"y":1260,"wires":[]},{"id":"e353f884.8a1618","type":"mqtt in","z":"e4659a9f.3f8658","name":"","topic":"IoT/Measurement/Modbus2/Basement/Temperature","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":220,"y":1320,"wires":[["a5cd481a.aacaa8","e10cda0e.0cfbf8"]]},{"id":"e10cda0e.0cfbf8","type":"template","z":"e4659a9f.3f8658","name":"Modbus2BasementTemperature","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[\n { \n \"pv\":{{payload}}\n },\n {\n \"deviceid\":\"Basement\",\n \"kind\":\"Basement\",\n \"category\":\"Indoor\"\n }\n]","output":"json","x":490,"y":1380,"wires":[["171eae2b.6bfcb2","89295b26.bf9a78"]]},{"id":"171eae2b.6bfcb2","type":"debug","z":"e4659a9f.3f8658","name":"ModbusBasementTemperature","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":870,"y":1420,"wires":[]},{"id":"1ba519dc.5288c6","type":"change","z":"e4659a9f.3f8658","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Modbus2_Basement_Humidity","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":640,"y":1560,"wires":[["9c093ca3.0e02"]]},{"id":"c6c95c4.545f1a","type":"trigger","z":"e4659a9f.3f8658","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":430,"y":1560,"wires":[["1ba519dc.5288c6"]]},{"id":"9c093ca3.0e02","type":"link out","z":"e4659a9f.3f8658","name":"alarmModbus","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":815,"y":1560,"wires":[]},{"id":"5bab7b98.418a44","type":"mqtt in","z":"e4659a9f.3f8658","name":"","topic":"IoT/Measurement/Modbus2/Basement/Humidity","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":220,"y":1620,"wires":[["c6c95c4.545f1a","fedfa872.fc3958"]]},{"id":"fedfa872.fc3958","type":"template","z":"e4659a9f.3f8658","name":"Modbus2BasementHumidity","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[\n { \n \"pv\":{{payload}}\n },\n {\n \"deviceid\":\"Basement\",\n \"kind\":\"Humidity\",\n \"category\":\"Indoor\"\n }\n]","output":"json","x":480,"y":1680,"wires":[["abf88dc9.f977c","b1f5ba29.5080d8"]]},{"id":"b1f5ba29.5080d8","type":"link out","z":"e4659a9f.3f8658","name":"","links":["e774ea0a.8c9498"],"x":755,"y":1680,"wires":[]},{"id":"abf88dc9.f977c","type":"debug","z":"e4659a9f.3f8658","name":"ModbusBasementHumidity","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":860,"y":1720,"wires":[]},{"id":"89295b26.bf9a78","type":"link out","z":"e4659a9f.3f8658","name":"","links":["e774ea0a.8c9498"],"x":755,"y":1380,"wires":[]},{"id":"fc4be7c8.26bd28","type":"pushover","z":"63d1c956.3ee9c8","name":"","device":"","title":"PresenceNotification","priority":0,"sound":"pushover","url":"","url_title":"","html":true,"x":960,"y":240,"wires":[]},{"id":"f18313c3.4aa548","type":"function","z":"5f3b2200.77571","name":"PrepareMessage","func":"let statusText = (msg.payload == '1' ? 'okay' : 'failed')\nmsg.payload = {\n 'device': msg.deviceName,\n 'status': msg.payload,\n 'statusText': statusText,\n 'message': msg.deviceName + \" \" + statusText\n}\nmsg.topic = 'IoT/SensorStatus/' + msg.deviceName\nreturn msg;","outputs":1,"noerr":0,"x":510,"y":440,"wires":[["2d57cf67.04159","674df4cb.2a1f04"]]},{"id":"331ae160.3b9ace","type":"link in","z":"5f3b2200.77571","name":"Push Alarm Raw","links":["7c566964.6012d8","de5e1488.905cf8","b080376b.1e2678","9be3b04e.3e7b8","619de5cc.60b4fc","80f1ac34.2df46","4a85527.ad86bac","9c093ca3.0e02"],"x":335,"y":440,"wires":[["f18313c3.4aa548"]]},{"id":"ec77aa98.476f3","type":"inject","z":"161f9872.1bc6e8","name":"","topic":"","payload":"0","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":120,"wires":[["ff0dcef0.c1cfd"]]},{"id":"2d57cf67.04159","type":"change","z":"5f3b2200.77571","name":"for Pushover","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.message","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":480,"wires":[["ab610711.56b898"]]},{"id":"674df4cb.2a1f04","type":"mqtt out","z":"5f3b2200.77571","name":"SensorStatus","topic":"","qos":"","retain":"true","broker":"a7163696.6f4318","x":880,"y":440,"wires":[]}] \ No newline at end of file +[{"id":"161f9872.1bc6e8","type":"tab","label":"Temperature Measurement","disabled":false,"info":""},{"id":"cc5f4bb3.067d7","type":"tab","label":"Power Measurement","disabled":false,"info":""},{"id":"a80a9d37.68d378","type":"tab","label":"ShellyPlug Power Measurement","disabled":false,"info":""},{"id":"e4659a9f.3f8658","type":"tab","label":"ModbusMeasurement","disabled":false,"info":""},{"id":"17f27a3f.d2a296","type":"tab","label":"RainMeasurement","disabled":false,"info":""},{"id":"c2d99cfc.d05b9","type":"tab","label":"DatabaseConnection","disabled":false,"info":""},{"id":"15cbc07c.cf074","type":"tab","label":"Temperature Publishing","disabled":false,"info":""},{"id":"63d1c956.3ee9c8","type":"tab","label":"Location","disabled":false,"info":""},{"id":"5f3b2200.77571","type":"tab","label":"Pushover","disabled":false,"info":""},{"id":"bc38d6a.83ca528","type":"tab","label":"MqttAuditing","disabled":true,"info":""},{"id":"f7f94748.f88348","type":"tab","label":"Telegram Alarming","disabled":true,"info":""},{"id":"f9bcf.31a70c32","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"796cb70.681af48","type":"subflow","name":"ModbusTemperatureMeasurement","info":"","category":"","in":[],"out":[{"x":800,"y":260,"wires":[{"id":"1dcfd53c.f4f6e3","port":0}]},{"x":800,"y":360,"wires":[{"id":"c6cfd0f8.44ca5","port":0}]},{"x":800,"y":460,"wires":[{"id":"98f77991.5f3938","port":0}]}],"env":[{"name":"MQTT_Input_Topic","type":"str","value":""},{"name":"Location","type":"str","value":""},{"name":"HardLow","type":"num","value":"-273"},{"name":"SoftLow","type":"num","value":"-50"},{"name":"SoftHigh","type":"num","value":"20"},{"name":"HardHigh","type":"str","value":"100"},{"name":"Category","type":"str","value":""}],"status":{"x":800,"y":180,"wires":[{"id":"38df7d6.3e0c482","port":0}]}},{"id":"a7163696.6f4318","type":"mqtt-broker","z":"","name":"","broker":"mosquitto","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"64f763bb.19937c","type":"influxdb","z":"","hostname":"influxdb","port":"8086","protocol":"http","database":"smarthome2","name":"","usetls":false,"tls":""},{"id":"9ade7197.41fd7","type":"twitter-credentials","z":"","screen_name":"wollud1969"},{"id":"949da0ae.eef54","type":"telegram bot","z":"","botname":"de.hottis.nodered.telegrambot","usernames":"","chatids":"","baseapiurl":"","updatemode":"polling","pollinterval":"300","usesocks":false,"sockshost":"","socksport":"6667","socksusername":"anonymous","sockspassword":"","bothost":"","localbotport":"8443","publicbotport":"8443","privatekey":"","certificate":"","useselfsignedcertificate":false,"verboselogging":false},{"id":"df185e35.29245","type":"mongo-client","z":"","uri":"mongodb://172.16.3.15:27017/HomeAutomationAudit","name":"","options":""},{"id":"130337d4.ea361","type":"MySQLdatabase","z":"","name":"mqttauditing","host":"172.16.10.18","port":"3306","db":"mqttauditing","tz":"Europe/Berlin"},{"id":"d9d536e3.9c771","type":"mqtt-broker","z":"","name":"broker.nb-iot.krohne.com","broker":"broker.nb-iot.hottis.de","port":"8883","tls":"6fc1da39.d066f4","clientid":"","usetls":true,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"6fc1da39.d066f4","type":"tls-config","z":"","name":"broker.nb-iot.krohne.com","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"dev-internal-ca.krohne.com.crt","servername":"broker.nb-iot.krohne.com","verifyservercert":true},{"id":"8a7061d0.229298","type":"postgresdb","z":"","hostname":"172.16.10.27","port":"5432","db":"presence","ssl":true},{"id":"2fd416bb.c289b2","type":"postgresdb","z":"","hostname":"172.16.10.27","port":"5432","db":"power","ssl":true},{"id":"e89610fd.77041","type":"change","z":"161f9872.1bc6e8","name":"IndoorCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"Indoor","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":790,"y":700,"wires":[["24408300.280ebe"]]},{"id":"aa911dc7.bfdaf","type":"change","z":"161f9872.1bc6e8","name":"OutdoorCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"Outdoor","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":660,"wires":[["24408300.280ebe"]]},{"id":"b543dc5c.f78ee","type":"switch","z":"161f9872.1bc6e8","name":"TemperatureDeviceSelector","property":"payload.name","propertyType":"msg","rules":[{"t":"eq","v":"HedgeDisabled","vt":"str"},{"t":"eq","v":"House","vt":"str"},{"t":"eq","v":"Bedroom","vt":"str"},{"t":"eq","v":"DiningRoom","vt":"str"},{"t":"eq","v":"Kitchen","vt":"str"},{"t":"eq","v":"Attic","vt":"str"},{"t":"eq","v":"Matthias","vt":"str"},{"t":"eq","v":"Anna","vt":"str"},{"t":"eq","v":"Studierzimmer","vt":"str"},{"t":"eq","v":"Basement","vt":"str"},{"t":"eq","v":"Laundry","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":12,"x":520,"y":700,"wires":[[],["aa911dc7.bfdaf","4b1db719.c975e8"],["e89610fd.77041","52c8f65b.50e438"],["e89610fd.77041","7ea720a.3c121e"],["e89610fd.77041","b93f273e.e701d8"],["e89610fd.77041","e6e0540a.68ca78"],["e89610fd.77041","a37970cb.f4ab88"],["e89610fd.77041","d3116784.bc8df8"],["e89610fd.77041","877eafee.ccebb"],["e89610fd.77041","59e99a87.83f45c"],["e89610fd.77041","257cd34c.e21fac"],["6022a80d.129b78"]]},{"id":"24408300.280ebe","type":"template","z":"161f9872.1bc6e8","name":"InfluxTemperaturePreparator","field":"payload","fieldType":"msg","format":"json","syntax":"mustache","template":"[\n { \n \"pv\":{{payload.values.temperature}},\n \"sv\":{{payload.values.battery}}\n },\n {\n \"deviceid\":\"{{payload.name}}\",\n \"kind\":\"{{payload.kind}}\",\n \"category\":\"{{payload.category}}\",\n \"status\":\"good\",\n \"statusText\":\"not evaluated\"\n }\n]","output":"json","x":1100,"y":660,"wires":[["a3c2b617.b695e8"]]},{"id":"57f6d1fc.266a6","type":"mqtt in","z":"161f9872.1bc6e8","name":"","topic":"IoT/espThermometer2/measurement","qos":"2","broker":"a7163696.6f4318","x":180,"y":460,"wires":[["c61a7524.40f7f8"]]},{"id":"19fe1878.552c28","type":"debug","z":"161f9872.1bc6e8","name":"EspTherm","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":250,"y":580,"wires":[]},{"id":"c61a7524.40f7f8","type":"json","z":"161f9872.1bc6e8","name":"","property":"payload","action":"","pretty":false,"x":270,"y":500,"wires":[["8f0ce40b.a890c8"]]},{"id":"8f0ce40b.a890c8","type":"template","z":"161f9872.1bc6e8","name":"EspThermAdjuster","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\n \"name\":\"{{payload.location}}\",\n \"kind\":\"Temperature\",\n \"values\": {\n \"battery\":{{payload.battery}},\n \"temperature\":{{payload.temperature}}\n }\n}","output":"json","x":230,"y":540,"wires":[["19fe1878.552c28","b543dc5c.f78ee"]]},{"id":"6022a80d.129b78","type":"change","z":"161f9872.1bc6e8","name":"UnknownCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"Unknown","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":740,"wires":[["24408300.280ebe"]]},{"id":"52c8f65b.50e438","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":600,"wires":[["a54d311e.3d336"]]},{"id":"a54d311e.3d336","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"ESP_Bedroom","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":600,"wires":[["de5e1488.905cf8"]]},{"id":"7ea720a.3c121e","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":560,"wires":[["d69c9d18.3f2d1"]]},{"id":"d69c9d18.3f2d1","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"ESP_Diningroom","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":560,"wires":[["de5e1488.905cf8"]]},{"id":"4c2cff9d.77dca","type":"catch","z":"161f9872.1bc6e8","name":"","scope":null,"x":200,"y":1700,"wires":[["6ef3c0ff.cf872"]]},{"id":"bdbb7cc1.47758","type":"e-mail","z":"161f9872.1bc6e8","server":"mailer","port":"25","secure":false,"name":"wolfgang.hottgenroth@icloud.com","dname":"Error message","x":620,"y":1700,"wires":[]},{"id":"26e39dac.99f412","type":"inject","z":"15cbc07c.cf074","name":"Daily at noon","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"00 12 * * *","once":false,"onceDelay":0.1,"x":180,"y":160,"wires":[["d0524503.6384a8","7d3d1673.57e388","e1524efe.856ff","5009f71a.1f24d8"]]},{"id":"d0524503.6384a8","type":"influxdb in","z":"15cbc07c.cf074","influxdb":"64f763bb.19937c","name":"avg_temp_hedge_last_15min","query":"select mean(pv) from measured where deviceid = 'Hedge' and kind = 'Temperature' and time > now() - 15m","rawOutput":false,"precision":"","retentionPolicy":"","x":430,"y":100,"wires":[["c4e40448.5247a8"]]},{"id":"7d3d1673.57e388","type":"influxdb in","z":"15cbc07c.cf074","influxdb":"64f763bb.19937c","name":"min_temp_hedge_last_24h","query":"select min(pv) from measured where deviceid = 'Hedge' and kind = 'Temperature' and time > now() - 24h","rawOutput":false,"precision":"","retentionPolicy":"","x":420,"y":180,"wires":[["d7e3c7a6.698798"]]},{"id":"5009f71a.1f24d8","type":"influxdb in","z":"15cbc07c.cf074","influxdb":"64f763bb.19937c","name":"max_temp_hedge_last_24h","query":"select max(pv) from measured where deviceid = 'Hedge' and kind = 'Temperature' and time > now() - 24h","rawOutput":false,"precision":"","retentionPolicy":"","x":420,"y":220,"wires":[["ebebc5f9.8565c8"]]},{"id":"e1524efe.856ff","type":"influxdb in","z":"15cbc07c.cf074","influxdb":"64f763bb.19937c","name":"avg_temp_hedge_last_24h","query":"select mean(pv) from measured where deviceid = 'Hedge' and kind = 'Temperature' and time > now() - 24h","rawOutput":false,"precision":"","retentionPolicy":"","x":420,"y":140,"wires":[["3298c777.4e34f8"]]},{"id":"c4e40448.5247a8","type":"change","z":"15cbc07c.cf074","name":"set topic: avg15min","rules":[{"t":"set","p":"topic","pt":"msg","to":"avg15min","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":100,"wires":[["4ad2acda.2099c4"]]},{"id":"3298c777.4e34f8","type":"change","z":"15cbc07c.cf074","name":"set topic: avg24h","rules":[{"t":"set","p":"topic","pt":"msg","to":"avg24h","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":140,"wires":[["4ad2acda.2099c4"]]},{"id":"d7e3c7a6.698798","type":"change","z":"15cbc07c.cf074","name":"set topic: min24h","rules":[{"t":"set","p":"topic","pt":"msg","to":"min","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":180,"wires":[["4ad2acda.2099c4"]]},{"id":"ebebc5f9.8565c8","type":"change","z":"15cbc07c.cf074","name":"set topic: max24h","rules":[{"t":"set","p":"topic","pt":"msg","to":"max","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":690,"y":220,"wires":[["4ad2acda.2099c4"]]},{"id":"4ad2acda.2099c4","type":"join","z":"15cbc07c.cf074","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"4","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":890,"y":160,"wires":[["eaefee46.b7e6"]]},{"id":"eaefee46.b7e6","type":"function","z":"15cbc07c.cf074","name":"TextPreparator","func":"let output = \"\"\noutput += `Die aktuelle Temperatur zuhause ist ${msg.payload.avg15min[0].mean.toFixed(1)}°C.\\n`\noutput += `Die Durchschnittstemperatur der letzten 24 Stunden war ${msg.payload.avg24h[0].mean.toFixed(1)}°C, `\noutput += `die Tiefsttemperatur war ${msg.payload.min[0].min.toFixed(1)}°C um ${msg.payload.min[0].time.getHours()}:${msg.payload.min[0].time.getMinutes()} Uhr und `\noutput += `die Höchsttemperatur war ${msg.payload.max[0].max.toFixed(1)}°C um ${msg.payload.max[0].time.getHours()}:${msg.payload.max[0].time.getMinutes()} Uhr.\\n`\noutput += \"Powered by @NodeRED and @InfluxDB.\"\nmsg.payload = output\nreturn msg;\n","outputs":1,"noerr":0,"x":1060,"y":160,"wires":[["57a41df1.8e7bb4"]]},{"id":"b93f273e.e701d8","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":520,"wires":[["180233c3.f4c66c"]]},{"id":"180233c3.f4c66c","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"ESP_Kitchen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":520,"wires":[["de5e1488.905cf8"]]},{"id":"e6e0540a.68ca78","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":480,"wires":[["ee19751d.1403c8"]]},{"id":"ee19751d.1403c8","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"ESP_Attic","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":480,"wires":[["de5e1488.905cf8"]]},{"id":"57a41df1.8e7bb4","type":"twitter out","z":"15cbc07c.cf074","twitter":"9ade7197.41fd7","name":"Tweet","x":1250,"y":160,"wires":[]},{"id":"c3a2e3e9.17cf5","type":"telegram sender","z":"f7f94748.f88348","name":"hottis_bot","bot":"949da0ae.eef54","x":680,"y":420,"wires":[["10d261e9.381fae"]]},{"id":"12eb3d0f.69a043","type":"telegram receiver","z":"f7f94748.f88348","name":"Receiver","bot":"949da0ae.eef54","saveDataDir":"","x":120,"y":260,"wires":[["31d9cb49.1b5c54","5d8c8fab.ad857"],["6febab95.98e214"]]},{"id":"6febab95.98e214","type":"debug","z":"f7f94748.f88348","name":"UnauthorizedAccess","active":true,"tosidebar":true,"console":true,"tostatus":true,"complete":"payload","targetType":"msg","x":180,"y":340,"wires":[]},{"id":"10d261e9.381fae","type":"debug","z":"f7f94748.f88348","name":"TelegramOutput","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","x":710,"y":360,"wires":[]},{"id":"e3217c9a.a357b","type":"debug","z":"161f9872.1bc6e8","name":"ErrorMessage","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":620,"y":1760,"wires":[]},{"id":"6ef3c0ff.cf872","type":"function","z":"161f9872.1bc6e8","name":"ErrorMessage","func":"// let res = JSON.stringify(msg)\n// msg.payload = res\nreturn msg","outputs":1,"noerr":0,"x":400,"y":1700,"wires":[["bdbb7cc1.47758","e3217c9a.a357b","59301994.0b70e8"]]},{"id":"31d9cb49.1b5c54","type":"function","z":"f7f94748.f88348","name":"TelegramInboundController","func":"if (msg.payload.content.startsWith(\"/\")) {\n msg.tokens = msg.payload.content.split(\" \")\n msg.cmd = msg.tokens.shift().substr(1)\n return [null, msg]\n} else {\n msg.payload.content = \"Start commands with a /, maybe you want to try /help.\"\n return [msg, null]\n}\n\n","outputs":2,"noerr":0,"x":180,"y":420,"wires":[["c3a2e3e9.17cf5"],["192e92a8.2075bd"]]},{"id":"de5e1488.905cf8","type":"link out","z":"161f9872.1bc6e8","name":"alarmESP","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":1175,"y":500,"wires":[]},{"id":"59301994.0b70e8","type":"delay","z":"161f9872.1bc6e8","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":610,"y":1640,"wires":[["3efe4607.e0a6ea"]]},{"id":"3efe4607.e0a6ea","type":"link out","z":"161f9872.1bc6e8","name":"errors","links":["d147891c.b43828","26719762.125ec8"],"x":840,"y":1640,"wires":[]},{"id":"8b8eddd8.8145b","type":"function","z":"f7f94748.f88348","name":"ClearChatDict","func":"const CHAT_DICT_KEY = 'chatKey'\nflow.set(CHAT_DICT_KEY, {})\nnode.warn(\"chatDict cleared\")\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":40,"wires":[[]]},{"id":"8aa25d79.c189c","type":"inject","z":"f7f94748.f88348","name":"Trigger","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":40,"wires":[["8b8eddd8.8145b"]]},{"id":"192e92a8.2075bd","type":"switch","z":"f7f94748.f88348","name":"","property":"cmd","propertyType":"msg","rules":[{"t":"eq","v":"start","vt":"str"},{"t":"eq","v":"stop","vt":"str"},{"t":"eq","v":"help","vt":"str"},{"t":"eq","v":"register","vt":"str"},{"t":"eq","v":"clear","vt":"str"},{"t":"eq","v":"list","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":7,"x":170,"y":520,"wires":[["a283b2cd.cbdf3"],["272e70d9.b49de"],["8aa39a51.1480d8"],["94c6d2ef.aa1e2"],["791bf1ba.0ee4b"],["4e11b20a.53142c"],["82f07dd3.9f2f7"]],"inputLabels":["In"],"outputLabels":["Start","Stop","Help","Register","",null,"Default"]},{"id":"82f07dd3.9f2f7","type":"template","z":"f7f94748.f88348","name":"UnknownCmd","field":"payload.content","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Sorry, the command \"{{cmd}}\" is unknown here.","output":"str","x":420,"y":760,"wires":[["c3a2e3e9.17cf5"]]},{"id":"a283b2cd.cbdf3","type":"function","z":"f7f94748.f88348","name":"StartCmd","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\n//node.warn(JSON.stringify(chatDict))\nlet msgs = []\nif (msg.payload.chatId in chatDict) {\n msg.payload.content = \"You are already known here\"\n} else {\n chatDict[msg.payload.chatId.toString()] = {\n \"errors\": false,\n \"alarms\": false,\n \"geofency\": false,\n \"locative\": false,\n \"time\": false\n }\n msg.payload.content = \"Now you are known here\"\n flow.set(CHAT_DICT_KEY, chatDict)\n}\nreturn msg\n","outputs":1,"noerr":0,"x":400,"y":500,"wires":[["c3a2e3e9.17cf5"]]},{"id":"272e70d9.b49de","type":"function","z":"f7f94748.f88348","name":"StopCmd","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\n//node.warn(JSON.stringify(chatDict))\nlet msgs = []\nif (msg.payload.chatId in chatDict) {\n delete chatDict[msg.payload.chatId.toString()]\n msg.payload.content = \"You are known here, but now I forgot you\"\n flow.set(CHAT_DICT_KEY, chatDict)\n} else {\n msg.payload.content = \"You are unknown here\"\n}\nreturn msg\n","outputs":1,"noerr":0,"x":400,"y":540,"wires":[["c3a2e3e9.17cf5"]]},{"id":"8aa39a51.1480d8","type":"template","z":"f7f94748.f88348","name":"HelpCmd","field":"payload.content","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Help for the HottisBot.\n\n/start\n Start your conversation with the bot. ChatId will be stored.\n \n/stop\n End your conversation, chatId will be forgotten.\n\n/help\n This help.\n\n/register token\n Register for information to be send for the particular token.\n\n/clear\n Clear all registrations\n \n/list \n List your registrations\n ","output":"str","x":400,"y":580,"wires":[["c3a2e3e9.17cf5"]]},{"id":"94c6d2ef.aa1e2","type":"function","z":"f7f94748.f88348","name":"RegisterCmd","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\n//node.warn(JSON.stringify(chatDict))\nlet msgs = []\nif (msg.payload.chatId in chatDict) {\n if (msg.tokens[0] == \"help\") {\n let tmpMsg = \"Possible options are \"\n for (let o in chatDict[msg.payload.chatId]) {\n tmpMsg += o + \" \"\n }\n msg.payload.content = tmpMsg\n } else {\n if (msg.tokens[0] in chatDict[msg.payload.chatId]) {\n chatDict[msg.payload.chatId][msg.tokens[0]] = true\n msg.payload.content = `You have been registered for the option ${msg.tokens[0]}`\n flow.set(CHAT_DICT_KEY, chatDict)\n } else {\n msg.payload.content = \"Unknown option\"\n }\n }\n} else {\n msg.payload.content = \"You are unknown here, start with /start\"\n}\nreturn msg\n","outputs":1,"noerr":0,"x":410,"y":620,"wires":[["c3a2e3e9.17cf5"]]},{"id":"c4aed737.6b87d8","type":"function","z":"f7f94748.f88348","name":"PrintChatDict","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\nnode.warn(JSON.stringify(chatDict))\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":100,"wires":[[]]},{"id":"e3ab7e28.09718","type":"inject","z":"f7f94748.f88348","name":"Trigger","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":100,"wires":[["c4aed737.6b87d8"]]},{"id":"791bf1ba.0ee4b","type":"function","z":"f7f94748.f88348","name":"ClearCmd","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\n//node.warn(JSON.stringify(chatDict))\nlet msgs = []\nif (msg.payload.chatId in chatDict) {\n for (let o in chatDict[msg.payload.chatId]) {\n chatDict[msg.payload.chatId][o] = false\n }\n msg.payload.content = \"All your registrations have been cleared\"\n flow.set(CHAT_DICT_KEY, chatDict)\n} else {\n msg.payload.content = \"You are unknown here, start with /start\"\n}\nreturn msg\n","outputs":1,"noerr":0,"x":400,"y":660,"wires":[["c3a2e3e9.17cf5"]]},{"id":"4e11b20a.53142c","type":"function","z":"f7f94748.f88348","name":"ListCmd","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\n//node.warn(JSON.stringify(chatDict))\nlet msgs = []\nif (msg.payload.chatId in chatDict) {\n let tmpMsg = \"You are registered for\\n\"\n for (let o in chatDict[msg.payload.chatId]) {\n tmpMsg += o + \": \" + chatDict[msg.payload.chatId][o] + \"\\n\"\n }\n msg.payload.content = tmpMsg\n} else {\n msg.payload.content = \"You are unknown here, start with /start\"\n}\nreturn msg\n","outputs":1,"noerr":0,"x":400,"y":700,"wires":[["c3a2e3e9.17cf5"]]},{"id":"e9de7ec7.cbf71","type":"function","z":"f7f94748.f88348","name":"TelegramMessagePreparator","func":"const CHAT_DICT_KEY = 'chatKey'\nlet chatDict = flow.get(CHAT_DICT_KEY) || {}\nlet msgs = []\nfor (let chatId in chatDict) {\n node.warn(\"Id: \" + chatId + \", option: \" + msg.option)\n if ((msg.option in chatDict[chatId]) && (chatDict[chatId][msg.option])) {\n node.warn(\"Mark 1\")\n let m = { \"payload\": {\n \"chatId\": chatId,\n \"type\": \"message\",\n \"content\": JSON.stringify(msg, null, 2)\n }\n }\n msgs.push(m)\n }\n}\nnode.warn(JSON.stringify(msgs))\nreturn [msgs];","outputs":1,"noerr":0,"x":460,"y":840,"wires":[["c3a2e3e9.17cf5"]]},{"id":"6aa6322b.0aff5c","type":"mqtt in","z":"f7f94748.f88348","name":"","topic":"IoT/Presence/Geofency","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":140,"y":1060,"wires":[["369d676c.ff2e68"]]},{"id":"4ace0f7a.c48a9","type":"change","z":"f7f94748.f88348","name":"errors","rules":[{"t":"set","p":"option","pt":"msg","to":"errors","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":210,"y":840,"wires":[["e9de7ec7.cbf71"]]},{"id":"d147891c.b43828","type":"link in","z":"f7f94748.f88348","name":"","links":["3efe4607.e0a6ea","cb5cfac1.9c0d88"],"x":115,"y":840,"wires":[["4ace0f7a.c48a9"]]},{"id":"983aafdf.fd28c","type":"change","z":"f7f94748.f88348","name":"time","rules":[{"t":"set","p":"option","pt":"msg","to":"time","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":210,"y":880,"wires":[["e9de7ec7.cbf71"]]},{"id":"efd11e7b.d7a08","type":"inject","z":"f7f94748.f88348","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":940,"wires":[["983aafdf.fd28c"]]},{"id":"a5c806e0.2be3e8","type":"inject","z":"161f9872.1bc6e8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":200,"y":1640,"wires":[["6ef3c0ff.cf872"]]},{"id":"369d676c.ff2e68","type":"change","z":"f7f94748.f88348","name":"geofency","rules":[{"t":"set","p":"option","pt":"msg","to":"geofency","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":1000,"wires":[["e9de7ec7.cbf71"]]},{"id":"96d8fa5c.a13318","type":"mqtt in","z":"f7f94748.f88348","name":"","topic":"IoT/Presence/Locative","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":140,"y":1200,"wires":[["1896fa82.a809f5"]]},{"id":"1896fa82.a809f5","type":"change","z":"f7f94748.f88348","name":"locative","rules":[{"t":"set","p":"option","pt":"msg","to":"locative","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":1140,"wires":[["e9de7ec7.cbf71"]]},{"id":"2d7d82a6.d7759e","type":"change","z":"f7f94748.f88348","name":"alarms","rules":[{"t":"set","p":"option","pt":"msg","to":"alarms","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":210,"y":1260,"wires":[["e9de7ec7.cbf71"]]},{"id":"994c7bcc.36e3a8","type":"link in","z":"f7f94748.f88348","name":"","links":["7c566964.6012d8","9786e66c.08f3e8","b080376b.1e2678","de5e1488.905cf8","e44a2b47.10b378","7990f40d.cfc6dc","9be3b04e.3e7b8","619de5cc.60b4fc","80f1ac34.2df46","4a85527.ad86bac","9c093ca3.0e02","2cefca60.4a7316","3a49ee1e.1daa7a","dfddb6cf.e4a588","9fc6e500.062908"],"x":115,"y":1260,"wires":[["2d7d82a6.d7759e"]]},{"id":"5d8c8fab.ad857","type":"debug","z":"f7f94748.f88348","name":"ReceivedMsg","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":450,"y":240,"wires":[]},{"id":"e51249cb.ca80a8","type":"pushover","z":"5f3b2200.77571","name":"","device":"","title":"HomeControlAlarm","priority":0,"sound":"pushover","url":"","url_title":"","html":true,"x":890,"y":260,"wires":[]},{"id":"259061c9.8caf6e","type":"inject","z":"5f3b2200.77571","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":360,"y":260,"wires":[["e51249cb.ca80a8"]]},{"id":"26719762.125ec8","type":"link in","z":"5f3b2200.77571","name":"Push Error","links":["3efe4607.e0a6ea","cb5cfac1.9c0d88"],"x":335,"y":360,"wires":[["7bec6469.a3c17c"]]},{"id":"7bec6469.a3c17c","type":"change","z":"5f3b2200.77571","name":"Topic NodeRed Exception","rules":[{"t":"set","p":"topic","pt":"msg","to":"Node-RED Exception","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":360,"wires":[["e51249cb.ca80a8"]]},{"id":"a96ab0e9.c738e","type":"link in","z":"5f3b2200.77571","name":"Push Alarm","links":["9786e66c.08f3e8","e44a2b47.10b378","7990f40d.cfc6dc"],"x":335,"y":520,"wires":[["ab610711.56b898"]]},{"id":"ab610711.56b898","type":"change","z":"5f3b2200.77571","name":"Topic Device Alarm","rules":[{"t":"set","p":"topic","pt":"msg","to":"Device Alarm","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":520,"wires":[["e51249cb.ca80a8"]]},{"id":"bf0f1a1a.bd15d8","type":"http in","z":"63d1c956.3ee9c8","name":"Location","url":"/location","method":"post","upload":false,"swaggerDoc":"","x":200,"y":180,"wires":[["dea26ac6.83a288","ba0ccdca.996cf"]]},{"id":"dea26ac6.83a288","type":"template","z":"63d1c956.3ee9c8","name":"Prepare Response","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Ok, location service, thank you very much.","output":"str","x":430,"y":180,"wires":[["731db480.aadd9c"]]},{"id":"731db480.aadd9c","type":"http response","z":"63d1c956.3ee9c8","name":"","statusCode":"200","headers":{},"x":660,"y":180,"wires":[]},{"id":"31957024.76a17","type":"function","z":"63d1c956.3ee9c8","name":"Stringify","func":"let m = JSON.stringify(msg.payload, null, 2)\nmsg.payload = m\nreturn msg;","outputs":1,"noerr":0,"x":740,"y":300,"wires":[["fc4be7c8.26bd28"]]},{"id":"16fa8e82.4283a1","type":"change","z":"5f3b2200.77571","name":"Topic Notification","rules":[{"t":"set","p":"topic","pt":"msg","to":"Notification","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":580,"wires":[["e51249cb.ca80a8"]]},{"id":"c931c70.3beb138","type":"link in","z":"5f3b2200.77571","name":"Push Notification","links":["bf534da5.e7ae2"],"x":335,"y":580,"wires":[["16fa8e82.4283a1"]]},{"id":"445f490f.ae7268","type":"debug","z":"63d1c956.3ee9c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":750,"y":380,"wires":[]},{"id":"ba0ccdca.996cf","type":"function","z":"63d1c956.3ee9c8","name":"Prepare","func":"let content = {\n \"location\": msg.payload.id,\n \"direction\": msg.payload.trigger,\n \"device\": msg.payload.device\n}\nmsg.payload = content\nreturn msg;","outputs":1,"noerr":0,"x":400,"y":300,"wires":[["c528ca13.42f448"]]},{"id":"c528ca13.42f448","type":"function","z":"63d1c956.3ee9c8","name":"SelectPerson","func":"let device = msg.payload.device\nlet persons = {\n \"A26FF17D-CC09-464E-9E71-A994EEC1C883\": \"Wolfgang\",\n \"01A2B612-060B-47B0-82FA-A8F41328C6D4\": \"Patty\",\n \"9C4D290A-D0DC-42AB-97F0-9075041512E2\": \"Anna\",\n \"E1693F9B-37DE-449C-BF47-AE0227EDD782\": \"Matthias\"\n}\nlet person = \"Unknown\"\nif (device in persons) {\n person = persons[device]\n}\nlet location = msg.payload.location\nmsg.topic = `IoT/Presence/Location/${person}/${location}`\nmsg.payload.person = person\nreturn msg;","outputs":1,"noerr":0,"x":570,"y":300,"wires":[["445f490f.ae7268","31957024.76a17","ee40dee3.a2715","e04c3689.f5ad98"]]},{"id":"ee40dee3.a2715","type":"mqtt out","z":"63d1c956.3ee9c8","name":"","topic":"","qos":"","retain":"true","broker":"a7163696.6f4318","x":910,"y":180,"wires":[]},{"id":"46b22e68.24113","type":"function","z":"c2d99cfc.d05b9","name":"EventCounter","func":"let cnt = context.get('EventCounter') || 0\ncnt += 1\ncontext.set('EventCounter', cnt)\nnode.status({fill:\"blue\",shape:\"dot\",text:`${cnt}`})\nreturn msg;","outputs":1,"noerr":0,"x":440,"y":380,"wires":[["8c7fcb5a.cfdf38","4489e91d.4448d8"]]},{"id":"8c7fcb5a.cfdf38","type":"debug","z":"c2d99cfc.d05b9","name":"InfluxReadyMain","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":660,"y":360,"wires":[]},{"id":"4489e91d.4448d8","type":"influxdb out","z":"c2d99cfc.d05b9","influxdb":"64f763bb.19937c","name":"","measurement":"measured","precision":"","retentionPolicy":"","x":730,"y":400,"wires":[]},{"id":"e774ea0a.8c9498","type":"link in","z":"c2d99cfc.d05b9","name":"DatabaseInput","links":["7f786eca.756de","a3c2b617.b695e8","ba567f4a.7189b","edba769.7203188","c9f761e.47c18a","7f24c8d4.78b378","626a4ff4.2659a","e35e483a.8ee6a8","d8654fea.c36b3","b1f5ba29.5080d8","89295b26.bf9a78","522bf444.8db39c","85df4595.b6a24","e217b061.aa0ef","dfa7220a.6b28e","82ed515f.9447d"],"x":255,"y":380,"wires":[["46b22e68.24113"]]},{"id":"a3c2b617.b695e8","type":"link out","z":"161f9872.1bc6e8","name":"","links":["e774ea0a.8c9498"],"x":1275,"y":660,"wires":[]},{"id":"3dc154c3.a188bc","type":"debug","z":"e4659a9f.3f8658","name":"ModbusFreezerTemperature","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":680,"y":320,"wires":[]},{"id":"e35e483a.8ee6a8","type":"link out","z":"e4659a9f.3f8658","name":"","links":["e774ea0a.8c9498"],"x":575,"y":360,"wires":[]},{"id":"ac57e5d9.c707e8","type":"catch","z":"e4659a9f.3f8658","name":"","scope":null,"x":140,"y":160,"wires":[["bf5ed3c7.d7ff7"]]},{"id":"2ff06ca5.070bc4","type":"e-mail","z":"e4659a9f.3f8658","server":"mailer","port":"25","secure":false,"name":"wolfgang.hottgenroth@icloud.com","dname":"Error message","x":560,"y":160,"wires":[]},{"id":"73653e14.45b7c","type":"debug","z":"e4659a9f.3f8658","name":"ErrorMessage","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":560,"y":220,"wires":[]},{"id":"bf5ed3c7.d7ff7","type":"function","z":"e4659a9f.3f8658","name":"ErrorMessage","func":"// let res = JSON.stringify(msg)\n// msg.payload = res\nreturn msg","outputs":1,"noerr":0,"x":340,"y":160,"wires":[["2ff06ca5.070bc4","73653e14.45b7c","14b1c9b1.ffd2d6"]]},{"id":"14b1c9b1.ffd2d6","type":"delay","z":"e4659a9f.3f8658","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":550,"y":100,"wires":[["cb5cfac1.9c0d88"]]},{"id":"cb5cfac1.9c0d88","type":"link out","z":"e4659a9f.3f8658","name":"errors","links":["d147891c.b43828","26719762.125ec8"],"x":780,"y":100,"wires":[]},{"id":"218cd9fd.a17db6","type":"inject","z":"e4659a9f.3f8658","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":100,"wires":[["bf5ed3c7.d7ff7"]]},{"id":"fc4be7c8.26bd28","type":"pushover","z":"63d1c956.3ee9c8","name":"","device":"","title":"PresenceNotification","priority":0,"sound":"pushover","url":"","url_title":"","html":true,"x":960,"y":300,"wires":[]},{"id":"f18313c3.4aa548","type":"function","z":"5f3b2200.77571","name":"PrepareMessage","func":"let statusText = (msg.payload == '1' ? 'okay' : 'failed')\nmsg.payload = {\n 'device': msg.deviceName,\n 'status': msg.payload,\n 'statusText': statusText,\n 'message': msg.deviceName + \" \" + statusText\n}\nmsg.topic = 'IoT/SensorStatus/' + msg.deviceName\nreturn msg;","outputs":1,"noerr":0,"x":510,"y":440,"wires":[["2d57cf67.04159","674df4cb.2a1f04","103dfef.8557901"]]},{"id":"331ae160.3b9ace","type":"link in","z":"5f3b2200.77571","name":"Push Alarm Raw","links":["7c566964.6012d8","de5e1488.905cf8","b080376b.1e2678","9be3b04e.3e7b8","619de5cc.60b4fc","80f1ac34.2df46","4a85527.ad86bac","9c093ca3.0e02","2cefca60.4a7316","3a49ee1e.1daa7a","dfddb6cf.e4a588","9fc6e500.062908"],"x":335,"y":440,"wires":[["f18313c3.4aa548"]]},{"id":"2d57cf67.04159","type":"change","z":"5f3b2200.77571","name":"for Pushover","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.message","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":480,"wires":[["ab610711.56b898"]]},{"id":"674df4cb.2a1f04","type":"mqtt out","z":"5f3b2200.77571","name":"SensorStatus","topic":"","qos":"","retain":"true","broker":"a7163696.6f4318","x":880,"y":440,"wires":[]},{"id":"4b1db719.c975e8","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":440,"wires":[["da9d638e.9f2cb"]]},{"id":"da9d638e.9f2cb","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Outdoor_House","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":440,"wires":[["de5e1488.905cf8"]]},{"id":"1c6e730a.e6188d","type":"mqtt in","z":"bc38d6a.83ca528","name":"Subscribe Everything","topic":"#","qos":"2","datatype":"utf8","broker":"a7163696.6f4318","x":140,"y":140,"wires":[["8cc2908c.1a654"]]},{"id":"cc667c8d.627068","type":"debug","z":"bc38d6a.83ca528","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":130,"y":320,"wires":[]},{"id":"a6bfe95f.5d5b8","type":"mysql","z":"bc38d6a.83ca528","mydb":"130337d4.ea361","name":"MqttAuditing","x":150,"y":260,"wires":[["cc667c8d.627068"]]},{"id":"8cc2908c.1a654","type":"function","z":"bc38d6a.83ca528","name":"MqttAuditingStatement","func":"let outMsg = {\n \"topic\": \"INSERT INTO audittrail (topic, payload) VALUES (:auditTopic, :auditPayload)\",\n \"payload\": {\n \"auditTopic\" : msg.topic,\n \"auditPayload\" : msg.payload\n }\n}\n\nmsg = outMsg\n\nreturn msg;\n","outputs":1,"noerr":0,"x":180,"y":200,"wires":[["a6bfe95f.5d5b8"]]},{"id":"103dfef.8557901","type":"debug","z":"5f3b2200.77571","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":880,"y":560,"wires":[]},{"id":"243c1f2.b0e0ae","type":"mqtt out","z":"e4659a9f.3f8658","name":"","topic":"test/temperature","qos":"","retain":"","broker":"d9d536e3.9c771","x":760,"y":500,"wires":[]},{"id":"e4ae0374.8fcbc8","type":"json","z":"e4659a9f.3f8658","name":"","property":"payload","action":"","pretty":false,"x":610,"y":500,"wires":[["243c1f2.b0e0ae"]]},{"id":"32c9498c.ab01a6","type":"mqtt in","z":"17f27a3f.d2a296","name":"","topic":"IoT/RainSensor2/Values","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":190,"y":240,"wires":[["8fd129c0.776088","78216937.9e7f78"]]},{"id":"8fd129c0.776088","type":"json","z":"17f27a3f.d2a296","name":"","property":"payload","action":"","pretty":false,"x":470,"y":240,"wires":[["bfba0ea3.f87358"]]},{"id":"bfba0ea3.f87358","type":"template","z":"17f27a3f.d2a296","name":"InfluxRainPreparator","field":"payload","fieldType":"msg","format":"json","syntax":"mustache","template":"[\n { \n \"pv\":{{payload.raincnt}},\n \"sv\":{{payload.totalCnt}},\n \"tv\":{{payload.uptime}}\n },\n {\n \"deviceid\":\"RainSensor2\",\n \"kind\":\"Rain\",\n \"category\":\"Outdoor\",\n \"status\":\"good\",\n \"statusText\":\"not evaluated\"\n }\n]","output":"json","x":700,"y":240,"wires":[["85df4595.b6a24","22c6e43d.2c4684"]]},{"id":"85df4595.b6a24","type":"link out","z":"17f27a3f.d2a296","name":"","links":["e774ea0a.8c9498"],"x":895,"y":240,"wires":[]},{"id":"22c6e43d.2c4684","type":"debug","z":"17f27a3f.d2a296","name":"Prepared","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":910,"y":180,"wires":[]},{"id":"78216937.9e7f78","type":"debug","z":"17f27a3f.d2a296","name":"Raw","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":450,"y":180,"wires":[]},{"id":"83120bc7.70589","type":"function","z":"c2d99cfc.d05b9","name":"EventCounter","func":"let cnt = context.get('EventCounter') || 0\ncnt += 1\ncontext.set('EventCounter', cnt)\nnode.status({fill:\"blue\",shape:\"dot\",text:`${cnt}`})\nreturn msg;","outputs":1,"noerr":0,"x":440,"y":540,"wires":[["4cebe084.d7f18","d0acf431.f708e"]]},{"id":"4cebe084.d7f18","type":"debug","z":"c2d99cfc.d05b9","name":"InfluxReadyStatistics","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":680,"y":520,"wires":[]},{"id":"d0acf431.f708e","type":"influxdb out","z":"c2d99cfc.d05b9","influxdb":"64f763bb.19937c","name":"","measurement":"statistics","precision":"","retentionPolicy":"","x":730,"y":560,"wires":[]},{"id":"9257f59d.7f82c8","type":"link in","z":"c2d99cfc.d05b9","name":"DatabaseStatisticsInput","links":["476d066c.3d8448"],"x":255,"y":540,"wires":[["83120bc7.70589"]]},{"id":"58d43e40.8a909","type":"mqtt in","z":"161f9872.1bc6e8","name":"","topic":"NR/Multisensor/+/Temperatur","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":200,"y":780,"wires":[["5eaa8efa.69fde8"]]},{"id":"5eaa8efa.69fde8","type":"json","z":"161f9872.1bc6e8","name":"","property":"payload","action":"obj","pretty":false,"x":270,"y":820,"wires":[["a1b70488.084d98"]]},{"id":"a1b70488.084d98","type":"template","z":"161f9872.1bc6e8","name":"ZigbeeThermAdjuster","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\n \"name\":\"{{payload.location}}\",\n \"kind\":\"Temperature\",\n \"values\": {\n \"battery\":0,\n \"temperature\":{{payload.CurrentTemperature}}\n }\n}","output":"json","x":220,"y":860,"wires":[["5d7d643b.a38cd4","b543dc5c.f78ee"]]},{"id":"5d7d643b.a38cd4","type":"debug","z":"161f9872.1bc6e8","name":"ZigbeeTherm","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":240,"y":900,"wires":[]},{"id":"877eafee.ccebb","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"60","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":400,"wires":[["31fb974f.fa234"]]},{"id":"31fb974f.fa234","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Indoor_Studierzimmer","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":400,"wires":[["de5e1488.905cf8"]]},{"id":"a37970cb.f4ab88","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"60","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":360,"wires":[["dea322d6.612158"]]},{"id":"dea322d6.612158","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Indoor_Matthias","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":360,"wires":[["de5e1488.905cf8"]]},{"id":"d3116784.bc8df8","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"60","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":320,"wires":[["61109a73.29f72c"]]},{"id":"61109a73.29f72c","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Indoor_Anna","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":320,"wires":[["de5e1488.905cf8"]]},{"id":"d279226.e32c86","type":"change","z":"cc5f4bb3.067d7","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Meterbus","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":1040,"wires":[["3a49ee1e.1daa7a"]]},{"id":"8b19f299.0334","type":"trigger","z":"cc5f4bb3.067d7","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":910,"y":1040,"wires":[["d279226.e32c86"]]},{"id":"88525a40.3432f","type":"mqtt in","z":"cc5f4bb3.067d7","name":"","topic":"IoT/MBGW3/Measurement","qos":"2","datatype":"json","broker":"a7163696.6f4318","x":170,"y":640,"wires":[["9c5f791c.baff9","7e76dbe2.4409cc","8b19f299.0334"]]},{"id":"9c5f791c.baff9","type":"debug","z":"cc5f4bb3.067d7","name":"Meterbus","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":220,"y":700,"wires":[]},{"id":"6652cb7b.af7f0c","type":"switch","z":"cc5f4bb3.067d7","name":"PowerDeviceSelector","property":"payload.name","propertyType":"msg","rules":[{"t":"eq","v":"Light","vt":"str"},{"t":"eq","v":"Computer","vt":"str"},{"t":"eq","v":"Fridge","vt":"str"},{"t":"eq","v":"Freezer","vt":"str"},{"t":"eq","v":"Laundry","vt":"str"},{"t":"eq","v":"Dryer","vt":"str"},{"t":"eq","v":"Dishwasher","vt":"str"},{"t":"eq","v":"Total","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":9,"x":660,"y":520,"wires":[["176d3af8.5e25cd","6a4a7fe.d7ee98"],["176d3af8.5e25cd","d335439a.5ab19"],["176d3af8.5e25cd","cde2812f.bb14d"],["176d3af8.5e25cd","d01b2004.2116b"],["70c8a3a7.f14c4c","2969a1a4.bca7e6"],["70c8a3a7.f14c4c","464effec.349a4"],["70c8a3a7.f14c4c","c258b8d0.6fbe"],["d7852f08.011c48","833adb94.f81d7"],["3f17e37d.6095a4"]]},{"id":"176d3af8.5e25cd","type":"change","z":"cc5f4bb3.067d7","name":"LowPowerCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"LowPower","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":340,"wires":[["e23623e0.d3efd","f06c3d0a.7b27"]]},{"id":"70c8a3a7.f14c4c","type":"change","z":"cc5f4bb3.067d7","name":"HighPowerCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"HighPower","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":380,"wires":[["e23623e0.d3efd","f06c3d0a.7b27"]]},{"id":"d7852f08.011c48","type":"change","z":"cc5f4bb3.067d7","name":"TotalPowerCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"TotalPower","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":420,"wires":[["e23623e0.d3efd","f06c3d0a.7b27"]]},{"id":"3f17e37d.6095a4","type":"change","z":"cc5f4bb3.067d7","name":"UnknownCategorizer","rules":[{"t":"set","p":"payload.category","pt":"msg","to":"Unknown","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":460,"wires":[["e23623e0.d3efd","f06c3d0a.7b27"]]},{"id":"e23623e0.d3efd","type":"template","z":"cc5f4bb3.067d7","name":"InfluxPowerPreparator","field":"payload","fieldType":"msg","format":"json","syntax":"mustache","template":"[\n { \n \"pv\":{{payload.values.power}},\n \"sv\":{{payload.values.energy}},\n \"tv\":{{payload.values.errorRatio}}\n },\n {\n \"deviceid\":\"{{payload.name}}\",\n \"kind\":\"{{payload.kind}}\",\n \"category\":\"{{payload.category}}\",\n \"status\":\"{{payload.status}}\",\n \"statusText\":\"{{payload.statusText}}\"\n }\n]","output":"json","x":1240,"y":260,"wires":[[]]},{"id":"dfa7220a.6b28e","type":"link out","z":"cc5f4bb3.067d7","name":"","links":["e774ea0a.8c9498"],"x":1395,"y":260,"wires":[]},{"id":"6a4a7fe.d7ee98","type":"trigger","z":"cc5f4bb3.067d7","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":910,"y":720,"wires":[["1a698b0f.b85565"]]},{"id":"d335439a.5ab19","type":"trigger","z":"cc5f4bb3.067d7","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":910,"y":760,"wires":[["4345f346.3e8f84"]]},{"id":"cde2812f.bb14d","type":"trigger","z":"cc5f4bb3.067d7","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":910,"y":800,"wires":[["d8a3a69f.3bd708"]]},{"id":"d01b2004.2116b","type":"trigger","z":"cc5f4bb3.067d7","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":910,"y":840,"wires":[["2ba118f1.7a2e48"]]},{"id":"2969a1a4.bca7e6","type":"trigger","z":"cc5f4bb3.067d7","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":910,"y":880,"wires":[["c5b1fce7.28a35"]]},{"id":"464effec.349a4","type":"trigger","z":"cc5f4bb3.067d7","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":910,"y":920,"wires":[["8943c11c.efdb98"]]},{"id":"c258b8d0.6fbe","type":"trigger","z":"cc5f4bb3.067d7","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":910,"y":960,"wires":[["a0626832.c510e8"]]},{"id":"833adb94.f81d7","type":"trigger","z":"cc5f4bb3.067d7","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":910,"y":1000,"wires":[["4b887b8e.077394"]]},{"id":"4b887b8e.077394","type":"change","z":"cc5f4bb3.067d7","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Total","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":1000,"wires":[["3a49ee1e.1daa7a"]]},{"id":"a0626832.c510e8","type":"change","z":"cc5f4bb3.067d7","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Dishwasher","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":960,"wires":[["3a49ee1e.1daa7a"]]},{"id":"8943c11c.efdb98","type":"change","z":"cc5f4bb3.067d7","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Dryer","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":920,"wires":[["3a49ee1e.1daa7a"]]},{"id":"c5b1fce7.28a35","type":"change","z":"cc5f4bb3.067d7","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Laundry","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":880,"wires":[["3a49ee1e.1daa7a"]]},{"id":"2ba118f1.7a2e48","type":"change","z":"cc5f4bb3.067d7","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Freezer","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":840,"wires":[["3a49ee1e.1daa7a"]]},{"id":"d8a3a69f.3bd708","type":"change","z":"cc5f4bb3.067d7","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Fridge","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":800,"wires":[["3a49ee1e.1daa7a"]]},{"id":"4345f346.3e8f84","type":"change","z":"cc5f4bb3.067d7","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Computer","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":760,"wires":[["3a49ee1e.1daa7a"]]},{"id":"1a698b0f.b85565","type":"change","z":"cc5f4bb3.067d7","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Power_Light","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1120,"y":720,"wires":[["3a49ee1e.1daa7a"]]},{"id":"3a49ee1e.1daa7a","type":"link out","z":"cc5f4bb3.067d7","name":"alarmX","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":1315,"y":840,"wires":[]},{"id":"87fe7f9c.50ad","type":"template","z":"cc5f4bb3.067d7","name":"MBusPowerAdjuster","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\n \"name\":\"{{payload.Device}}\",\n \"kind\":\"Power\",\n \"status\":\"{{payload.Status}}\",\n \"statusText\":\"-\",\n \"values\": {\n \"battery\":0,\n \"energy\":{{payload.Values.Energy}},\n \"power\":{{payload.Values.Power}},\n \"errorRatio\":{{payload.ErrorRatio}}\n }\n}","output":"json","x":400,"y":500,"wires":[["6652cb7b.af7f0c"]]},{"id":"7e76dbe2.4409cc","type":"switch","z":"cc5f4bb3.067d7","name":"Status","property":"payload.Status","propertyType":"msg","rules":[{"t":"eq","v":"Ok","vt":"str"},{"t":"eq","v":"Error","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":190,"y":520,"wires":[["87fe7f9c.50ad"],["82fea274.edce68"]]},{"id":"82fea274.edce68","type":"template","z":"cc5f4bb3.067d7","name":"MBusPowerErrorAdjuster","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\n \"name\":\"{{payload.Device}}\",\n \"kind\":\"Power\",\n \"status\":\"{{payload.Status}}\",\n \"statusText\":\"-\",\n \"values\": {\n \"battery\":0,\n \"energy\":0,\n \"power\":0,\n \"errorRatio\":{{payload.ErrorRatio}}\n }\n}","output":"json","x":410,"y":540,"wires":[["6652cb7b.af7f0c"]]},{"id":"ef9ee1bf.a81bd8","type":"postgres","z":"c2d99cfc.d05b9","postgresdb":"8a7061d0.229298","name":"Test1","output":true,"perrow":false,"rowspermsg":"1","outputs":1,"x":590,"y":160,"wires":[["377dda6d.bfe91e"]]},{"id":"377dda6d.bfe91e","type":"debug","z":"c2d99cfc.d05b9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":740,"y":160,"wires":[]},{"id":"928fa175.148258","type":"inject","z":"c2d99cfc.d05b9","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":160,"wires":[["eb8a26c1.fbbe"]]},{"id":"eb8a26c1.fbbe","type":"function","z":"c2d99cfc.d05b9","name":"","func":"msg.queryParameters = {}\nmsg.queryParameters.testtxt = msg.payload\nmsg.payload = \"insert into test_t (txt) values ($testtxt)\"\nreturn msg;","outputs":1,"noerr":0,"x":370,"y":160,"wires":[["ef9ee1bf.a81bd8"]]},{"id":"f06c3d0a.7b27","type":"function","z":"cc5f4bb3.067d7","name":"PreparePowerTimescaleDB","func":"msg.queryParameters = { \n \"power\": msg.payload.values.power,\n \"energy\": msg.payload.values.energy,\n \"category\": msg.payload.category,\n \"errorRatio\": msg.payload.values.errorRatio,\n \"deviceid\": msg.payload.name,\n \"status\": msg.payload.status\n}\nmsg.payload = `\n INSERT INTO power_measurement_t\n (\n time,\n power, energy, errorratio,\n category, deviceid, status\n )\n VALUES(\n now(),\n $power, $energy, $errorRatio,\n $category, $deviceid, $status\n )\n`\nreturn msg\n","outputs":1,"noerr":0,"x":1260,"y":200,"wires":[["67b5923e.9b5a3c"]]},{"id":"b619ba93.b4e48","type":"debug","z":"161f9872.1bc6e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1150,"y":960,"wires":[]},{"id":"132f7736.bf1341","type":"function","z":"161f9872.1bc6e8","name":"PrepareTemperatureTimescaleDB","func":"msg.queryParameters = { \n \"temperature\": msg.payload.values.temperature,\n \"battery\": msg.payload.values.battery,\n \"deviceid\": msg.payload.name,\n \"kind\": msg.payload.kind,\n \"category\": msg.payload.category,\n \"status\": \"Ok\",\n \"statusText\": \"-\"\n}\nmsg.payload = `\n INSERT INTO temperature_measurement_t\n (\n temperature, battery,\n deviceid, kind, category,\n status, statustext\n )\n VALUES(\n $temperature, $battery,\n $deviceid, $kind, $category,\n $status, $statusText\n )\n`\nreturn msg\n","outputs":1,"noerr":0,"x":1120,"y":840,"wires":[["18c5fdfa.48d4ca"]]},{"id":"18c5fdfa.48d4ca","type":"postgres","z":"161f9872.1bc6e8","postgresdb":"8a7061d0.229298","name":"Test1","output":true,"perrow":false,"rowspermsg":"1","outputs":1,"x":1170,"y":900,"wires":[["b619ba93.b4e48"]]},{"id":"1dcfd53c.f4f6e3","type":"function","z":"796cb70.681af48","name":"Modbus2ThermAdjuster","func":"let location = env.get(\"Location\")\nlet hardLow = parseFloat(env.get(\"HardLow\"))\nlet softLow = parseFloat(env.get(\"SoftLow\"))\nlet softHigh = parseFloat(env.get(\"SoftHigh\"))\nlet hardHigh = parseFloat(env.get(\"HardHigh\"))\n\nlet temperature = parseInt(msg.payload)\nif (temperature & 0x8000) {\n temperature = ((temperature - 1) ^ 0xffff) * -1\n}\ntemperature = temperature / 10\n\nlet status = \"\"\nif (temperature < softLow || temperature > softHigh) {\n status = \"out of spec\"\n} else if (temperature < hardLow || temperature > hardHigh) {\n status = \"bad\"\n} else {\n status = \"good\"\n}\n\nlet tmpPayload = {\n \"name\":location,\n \"kind\":\"Temperature\",\n \"values\": {\n \"battery\":0,\n \"temperature\": temperature\n },\n \"status\": status\n}\n\nmsg.payload = tmpPayload;\nreturn msg\n","outputs":1,"noerr":0,"x":590,"y":260,"wires":[["c6cfd0f8.44ca5","38df7d6.3e0c482"]]},{"id":"59e99a87.83f45c","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":280,"wires":[["44d1441f.291f4c"]]},{"id":"44d1441f.291f4c","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Basement","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":280,"wires":[["de5e1488.905cf8"]]},{"id":"257cd34c.e21fac","type":"trigger","z":"161f9872.1bc6e8","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":770,"y":240,"wires":[["2d49319d.ae02c6"]]},{"id":"2d49319d.ae02c6","type":"change","z":"161f9872.1bc6e8","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Laundry","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":240,"wires":[["de5e1488.905cf8"]]},{"id":"8e54ba57.5c9dd","type":"http request","z":"f9bcf.31a70c32","name":"OpenWeather Temperature","method":"GET","ret":"obj","paytoqs":false,"url":"http://api.openweathermap.org/data/2.5/weather?q={{city}},{{country}}&appid=3dbd3edb5288c757d6cdb059c1b27a54","tls":"","proxy":"","authType":"","x":880,"y":400,"wires":[["c0816f07.4f927"]]},{"id":"9301910e.c9e658","type":"inject","z":"f9bcf.31a70c32","name":"1 Minute Period","topic":"","payload":"","payloadType":"date","repeat":"60","crontab":"","once":false,"onceDelay":0.1,"x":170,"y":400,"wires":[["3d5703f7.deda64","828b295a.8039f8","dd560bcc.ca2518","43ad3475.e1632c","d3451749.67bfe8","6fc4070.8f674f8","4394419c.f6caf","304656e2.01d5fa","377cc053.bb945","2f4169a2.8dec1e"]]},{"id":"43ad3475.e1632c","type":"function","z":"f9bcf.31a70c32","name":"Bochum, DE","func":"msg.city = \"Bochum\"\nmsg.country = \"de\"\nreturn msg","outputs":1,"noerr":0,"x":410,"y":400,"wires":[["8e54ba57.5c9dd"]]},{"id":"6743c37f.3ad354","type":"mqtt out","z":"f9bcf.31a70c32","name":"","topic":"test/temperature","qos":"","retain":"","broker":"d9d536e3.9c771","x":850,"y":520,"wires":[]},{"id":"1e095087.4aa7e7","type":"template","z":"f9bcf.31a70c32","name":"PrepareTemperature","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"[\n { \n \"pv\":{{payload.temperature_celsius}}\n },\n {\n \"deviceid\":\"OpenWeatherMap\",\n \"kind\":\"Temperature\",\n \"category\":\"Outdoor\",\n \"location\":\"{{payload.name}},{{payload.sys.country}}\",\n \"longitude\":\"{{payload.coord.lon}}\",\n \"latitude\":\"{{payload.coord.lat}}\",\n \"status\":\"good\",\n \"statusText\":\"not evaluated\"\n }\n]","output":"json","x":860,"y":480,"wires":[["6743c37f.3ad354"]]},{"id":"c0816f07.4f927","type":"function","z":"f9bcf.31a70c32","name":"Kelvin2Celsius","func":"msg.payload.temperature_celsius = msg.payload.main.temp - 273\nreturn msg;","outputs":1,"noerr":0,"x":840,"y":440,"wires":[["1e095087.4aa7e7"]]},{"id":"d3451749.67bfe8","type":"function","z":"f9bcf.31a70c32","name":"Dueren, DE","func":"msg.city = \"Dueren\"\nmsg.country = \"de\"\nreturn msg","outputs":1,"noerr":0,"x":410,"y":360,"wires":[["8e54ba57.5c9dd"]]},{"id":"6fc4070.8f674f8","type":"function","z":"f9bcf.31a70c32","name":"Duisburg, DE","func":"msg.city = \"Duisburg\"\nmsg.country = \"de\"\nreturn msg","outputs":1,"noerr":0,"x":420,"y":320,"wires":[["8e54ba57.5c9dd"]]},{"id":"4394419c.f6caf","type":"function","z":"f9bcf.31a70c32","name":"Dordrecht, NL","func":"msg.city = \"Dordrecht\"\nmsg.country = \"nl\"\nreturn msg","outputs":1,"noerr":0,"x":420,"y":280,"wires":[["8e54ba57.5c9dd"]]},{"id":"dd560bcc.ca2518","type":"function","z":"f9bcf.31a70c32","name":"Essen, DE","func":"msg.city = \"Essen\"\nmsg.country = \"de\"\nreturn msg","outputs":1,"noerr":0,"x":410,"y":440,"wires":[["8e54ba57.5c9dd"]]},{"id":"3d5703f7.deda64","type":"function","z":"f9bcf.31a70c32","name":"Egmond aan Zee, NL","func":"msg.city = \"Egmond aan Zee\"\nmsg.country = \"nl\"\nreturn msg","outputs":1,"noerr":0,"x":440,"y":480,"wires":[["8e54ba57.5c9dd"]]},{"id":"828b295a.8039f8","type":"function","z":"f9bcf.31a70c32","name":"Zingst, DE","func":"msg.city = \"Zingst\"\nmsg.country = \"de\"\nreturn msg","outputs":1,"noerr":0,"x":410,"y":520,"wires":[["8e54ba57.5c9dd"]]},{"id":"304656e2.01d5fa","type":"function","z":"f9bcf.31a70c32","name":"Kevelaer, DE","func":"msg.city = \"Kevelaer\"\nmsg.country = \"de\"\nreturn msg","outputs":1,"noerr":0,"x":410,"y":560,"wires":[["8e54ba57.5c9dd"]]},{"id":"377cc053.bb945","type":"function","z":"f9bcf.31a70c32","name":"Samara, RU","func":"msg.city = \"Samara\"\nmsg.country = \"ru\"\nreturn msg","outputs":1,"noerr":0,"x":410,"y":600,"wires":[[]]},{"id":"2f4169a2.8dec1e","type":"function","z":"f9bcf.31a70c32","name":"Chennai, IN","func":"msg.city = \"Chennai\"\nmsg.country = \"in\"\nreturn msg","outputs":1,"noerr":0,"x":410,"y":640,"wires":[[]]},{"id":"fe95f5fb.ed4498","type":"postgres","z":"63d1c956.3ee9c8","postgresdb":"8a7061d0.229298","name":"Postgres Presence","output":false,"perrow":false,"rowspermsg":"1","outputs":0,"x":770,"y":500,"wires":[]},{"id":"e04c3689.f5ad98","type":"function","z":"63d1c956.3ee9c8","name":"PrepareForPostgres","func":"msg.queryParameters = {\n \"location\": msg.payload.location,\n \"person\": msg.payload.person,\n \"direction\": msg.payload.direction,\n \"device\": msg.payload.device,\n \"msgid\": msg._msgid\n}\nmsg.payload = `\n INSERT INTO presence2 \n (\n time, \n location, \n person, \n direction, \n messageid, \n device\n ) \n VALUES (\n now(), \n $location, \n $person, \n $direction, \n $msgid, \n $device\n )\n`\nreturn msg;","outputs":1,"noerr":0,"x":780,"y":460,"wires":[["fe95f5fb.ed4498","3e009538.b2b612"]]},{"id":"3e009538.b2b612","type":"debug","z":"63d1c956.3ee9c8","name":"PostgresStatement","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1050,"y":460,"wires":[]},{"id":"67b5923e.9b5a3c","type":"postgres","z":"cc5f4bb3.067d7","postgresdb":"2fd416bb.c289b2","name":"Postgres Power","output":false,"perrow":false,"rowspermsg":"1","outputs":0,"x":1580,"y":200,"wires":[]},{"id":"cac2bef3.92562","type":"function","z":"a80a9d37.68d378","name":"PreparePowerTimescaleDB","func":"msg.queryParameters = { \n \"power\": msg.payload.power,\n \"energy\": msg.payload.energy,\n \"category\": \"TemporalPower\",\n \"errorRatio\": 0,\n \"deviceid\": msg.deviceId,\n \"status\": msg.valid\n}\nmsg.payload = `\n INSERT INTO power_measurement_t\n (\n time,\n power, energy, errorratio,\n category, deviceid, status\n )\n VALUES(\n now(),\n $power, $energy, $errorRatio,\n $category, $deviceid, $status\n )\n`\nreturn msg\n","outputs":1,"noerr":0,"x":920,"y":340,"wires":[["ab095e59.f3fc"]]},{"id":"ab095e59.f3fc","type":"postgres","z":"a80a9d37.68d378","postgresdb":"2fd416bb.c289b2","name":"Postgres Power","output":false,"perrow":false,"rowspermsg":"1","outputs":0,"x":880,"y":380,"wires":[]},{"id":"38608160.8d6a9e","type":"mqtt in","z":"a80a9d37.68d378","name":"","topic":"shellies/shellyplug-s-216EBB/relay/0/power","qos":"2","datatype":"utf8","broker":"a7163696.6f4318","x":220,"y":120,"wires":[["f5e2699f.9dc748"]]},{"id":"87c107d5.27a2d","type":"join","z":"a80a9d37.68d378","name":"JoinMQTTFromShelly","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"3","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":600,"y":180,"wires":[["d52ed5bb.ae6c78"]]},{"id":"f5e2699f.9dc748","type":"function","z":"a80a9d37.68d378","name":"ShortenTopic","func":"let topicParts = msg.topic.split('/')\nmsg.deviceId = topicParts[1]\nmsg.topic = topicParts[4] || \"on\"\nreturn msg;","outputs":1,"noerr":0,"x":570,"y":140,"wires":[["87c107d5.27a2d"]]},{"id":"d52ed5bb.ae6c78","type":"function","z":"a80a9d37.68d378","name":"Preprocess","func":"msg.valid = \"Ok\"\n\nif (! (\"power\" in msg.payload)) {\n msg.payload.power = Number.NaN\n msg.valid = \"Incomplete\"\n} else {\n msg.payload.power = parseFloat(msg.payload.power).toFixed(2)\n}\n\nif (! (\"energy\" in msg.payload)) {\n msg.payload.energy = Number.NaN\n msg.valid = \"Incomplete\"\n} else {\n // convert from Wmin to Wh\n msg.payload.energy = (parseFloat(msg.payload.energy) / 60.0).toFixed(2)\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":870,"y":300,"wires":[["cac2bef3.92562","55abbb47.3d8a24"]]},{"id":"9858a4eb.901e48","type":"mqtt in","z":"a80a9d37.68d378","name":"","topic":"shellies/shellyplug-s-216EBB/relay/0/energy","qos":"2","datatype":"utf8","broker":"a7163696.6f4318","x":230,"y":160,"wires":[["f5e2699f.9dc748"]]},{"id":"55abbb47.3d8a24","type":"debug","z":"a80a9d37.68d378","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1200,"y":220,"wires":[]},{"id":"d3e255f9.85f458","type":"mqtt in","z":"796cb70.681af48","name":"","topic":"${MQTT_Input_Topic}","qos":"2","datatype":"auto","broker":"a7163696.6f4318","x":310,"y":260,"wires":[["1dcfd53c.f4f6e3","d5a6c656.22c418"]]},{"id":"d46919f5.b0fc88","type":"subflow:796cb70.681af48","z":"e4659a9f.3f8658","name":"Temperature Freezer","env":[{"name":"MQTT_Input_Topic","type":"str","value":"dt1/ai/periodic/1"},{"name":"Location","type":"str","value":"Freezer"},{"name":"HardLow","type":"str","value":"-273"},{"name":"SoftLow","type":"str","value":"-50"},{"name":"SoftHigh","type":"str","value":"20"},{"name":"Category","type":"str","value":"Device"}],"x":200,"y":400,"wires":[["3dc154c3.a188bc"],["e35e483a.8ee6a8"],["9fc6e500.062908"]]},{"id":"dfddb6cf.e4a588","type":"link out","z":"e4659a9f.3f8658","name":"alarmModbus","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":575,"y":620,"wires":[]},{"id":"f2bb6b8d.3acea8","type":"debug","z":"e4659a9f.3f8658","name":"ModbusOutdoorTemperature","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":680,"y":540,"wires":[]},{"id":"82ed515f.9447d","type":"link out","z":"e4659a9f.3f8658","name":"","links":["e774ea0a.8c9498"],"x":575,"y":580,"wires":[]},{"id":"f4dcc109.20aae","type":"subflow:796cb70.681af48","z":"e4659a9f.3f8658","name":"Temperature Outdoor","env":[{"name":"MQTT_Input_Topic","type":"str","value":"dt1/ai/periodic/3"},{"name":"Location","type":"str","value":"Outdoor"},{"name":"HardLow","type":"str","value":"-273"},{"name":"SoftLow","type":"str","value":"-60"},{"name":"SoftHigh","type":"str","value":"60"},{"name":"Category","type":"str","value":"Outdoor"}],"x":200,"y":620,"wires":[["f2bb6b8d.3acea8","e4ae0374.8fcbc8"],["82ed515f.9447d"],["dfddb6cf.e4a588"]]},{"id":"c6cfd0f8.44ca5","type":"function","z":"796cb70.681af48","name":"InfluxDBPreparer","func":"let category = env.get(\"Category\")\n\nlet p = msg.payload\n\nmsg.payload = [\n { \n \"pv\": p.values.temperature,\n \"sv\": p.values.battery\n },\n {\n \"deviceid\": p.name,\n \"kind\": \"Temperature\",\n \"category\": category,\n \"status\": p.status,\n \"statusText\": \"not evaluated\"\n }\n]\n\nreturn msg","outputs":1,"noerr":0,"x":610,"y":360,"wires":[[]]},{"id":"d5a6c656.22c418","type":"trigger","z":"796cb70.681af48","op1":"1","op2":"0","op1type":"str","op2type":"str","duration":"15","extend":true,"units":"min","reset":"","bytopic":"all","name":"","x":620,"y":420,"wires":[["98f77991.5f3938"]]},{"id":"98f77991.5f3938","type":"change","z":"796cb70.681af48","name":"","rules":[{"t":"set","p":"deviceName","pt":"msg","to":"Freezer_Temperature","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":590,"y":460,"wires":[[]]},{"id":"9fc6e500.062908","type":"link out","z":"e4659a9f.3f8658","name":"alarmModbus","links":["331ae160.3b9ace","994c7bcc.36e3a8"],"x":575,"y":400,"wires":[]},{"id":"38df7d6.3e0c482","type":"function","z":"796cb70.681af48","name":"Status","func":"let ts = new Date()\nmsg.payload = `Last: ${ts}: ${msg.payload.values.temperature}°C`\nreturn msg;","outputs":1,"noerr":0,"x":650,"y":180,"wires":[[]]}] \ No newline at end of file diff --git a/flow_cred.json b/flow_cred.json index e378bc6..1103f7c 100644 --- a/flow_cred.json +++ b/flow_cred.json @@ -1 +1 @@ -{"a7163696.6f4318":{},"64f763bb.19937c":{},"9ade7197.41fd7":{"consumer_key":"d69PJDaoHG5nTcSOmE95DFdHh","consumer_secret":"Mf7ejpW4WJ6rrF5XSqf0kssuQmDfzjTK4rIn6tNyf0OoHSvJYY","access_token":"548450816-I4Ii986kKA2ZUoAtdP1QKswgVjIiBoe5reeDYKco","access_token_secret":"eFfM6QevUrb2STK9h5CBW1DHZweIfeqLaF3HBKQmySlBH"},"949da0ae.eef54":{"token":"744671147:AAHmqiNVIC-c2KuYDylOobJgt16LxUZhsns"},"bdbb7cc1.47758":{},"e51249cb.ca80a8":{"deviceid":"uf4n8bff9ko82nfpermm81yqanibd4","pushkey":"a7dfvhn3ftpb2b5zueqyizsw2m4nx9"},"fc4be7c8.26bd28":{"deviceid":"uf4n8bff9ko82nfpermm81yqanibd4","pushkey":"amkm8xpxtvjgf2grwiv25zjucuez1x"}} \ No newline at end of file +{"a7163696.6f4318":{},"64f763bb.19937c":{},"9ade7197.41fd7":{"consumer_key":"d69PJDaoHG5nTcSOmE95DFdHh","consumer_secret":"Mf7ejpW4WJ6rrF5XSqf0kssuQmDfzjTK4rIn6tNyf0OoHSvJYY","access_token":"548450816-I4Ii986kKA2ZUoAtdP1QKswgVjIiBoe5reeDYKco","access_token_secret":"eFfM6QevUrb2STK9h5CBW1DHZweIfeqLaF3HBKQmySlBH"},"949da0ae.eef54":{"token":"744671147:AAHmqiNVIC-c2KuYDylOobJgt16LxUZhsns"},"bdbb7cc1.47758":{},"e51249cb.ca80a8":{"deviceid":"uf4n8bff9ko82nfpermm81yqanibd4","pushkey":"a7dfvhn3ftpb2b5zueqyizsw2m4nx9"},"fc4be7c8.26bd28":{"deviceid":"uf4n8bff9ko82nfpermm81yqanibd4","pushkey":"amkm8xpxtvjgf2grwiv25zjucuez1x"},"df185e35.29245":{},"130337d4.ea361":{"user":"mqttauditing","password":"nodered.sh123"},"d9d536e3.9c771":{"user":"hottis","password":"EVkU3F3RYNaHfmyecy2a6yJT"},"6fc1da39.d066f4":{"cadata":"-----BEGIN CERTIFICATE-----\nMIIEPjCCAyagAwIBAgIIBifrRfTGXGAwDQYJKoZIhvcNAQELBQAwgaMxCzAJBgNV\nBAYTAkRFMQwwCgYDVQQIEwNOUlcxETAPBgNVBAcTCER1aXNidXJnMQ8wDQYDVQQK\nEwZLUk9ITkUxFDASBgNVBAsTC0RldmVsb3BtZW50MSMwIQYDVQQDDBpkZXYtaW50\nZXJuYWwtY2FAa3JvaG5lLmNvbTEnMCUGCSqGSIb3DQEJARYYdy5ob3R0Z2Vucm90\naEBrcm9obmUuY29tMCAXDTIwMDkwNDE1MTAwMFoYDzIxMjAwOTA0MTUxMDAwWjCB\nozELMAkGA1UEBhMCREUxDDAKBgNVBAgTA05SVzERMA8GA1UEBxMIRHVpc2J1cmcx\nDzANBgNVBAoTBktST0hORTEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxIzAhBgNVBAMM\nGmRldi1pbnRlcm5hbC1jYUBrcm9obmUuY29tMScwJQYJKoZIhvcNAQkBFhh3Lmhv\ndHRnZW5yb3RoQGtyb2huZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQCe/dwZThGmFGrwcBIa5bV/DWzPN4vO236wgII2kjv/k6K/TEiGy4NlFsXc\n8AQzJX4jIXpWHzithzDnh6JEaxHa10O4/FG2tZ+FF65W1DcJncqAiUcAsF9TgnQ9\ny7mJC7ADyLue6B30aAIuIsT+R1IYI+jt/rziyRpwbnpIpInu5k9UTq0PwEvHuZq6\ntgVJB1P/4QDgiUmVizduOOK7nmXagVtT/bQl55LAhWBjPIcZeMQF8mLEig/D5uBq\nevN/79G2wT5zA5SxCFQC5Uv3L5pIhrt/U4yQ+H01+Xf2CYGTZRjGDEtnvTT6vXF+\nKdBml5DBGaWnDhEwyDEFDSS/F5DNAgMBAAGjcjBwMA8GA1UdEwEB/wQFMAMBAf8w\nHQYDVR0OBBYEFNHopYg39OpLjg6HO3euTGqUAVu2MAsGA1UdDwQEAwIBBjARBglg\nhkgBhvhCAQEEBAMCAAcwHgYJYIZIAYb4QgENBBEWD3hjYSBjZXJ0aWZpY2F0ZTAN\nBgkqhkiG9w0BAQsFAAOCAQEAEVLG8cYYimjXy3MizTkETxONJblDTQ4SgvOcqT+L\nvujlAIQdlnMZRziblqHE0nRN34/xhWMlY3+bsgYB+7WOuqjYEoBNxNCnwYpy4tSc\nec6urrNuB+w27+l3tZkpQ6N49qHxDyY2wN9wk7VDwoT3CLx8WBAE+fBDppVBhXzF\nDR0D72TKQZRGWpFQpat/CpMWe/9EhER0307vqvHJ1hqn0ZtVI2FxIE2NO+GtzmOr\ncbaoiAoLeuqfa0gGbHTMpFlEz5cOYeYqSQe98F/VScklUiJCZNY96J0CmpElEnTD\ngQeuf/1PeHyRVHQs2jh3EYc6DQDqDpoQuhmsQdIg939PkQ==\n-----END CERTIFICATE-----\n"},"8a7061d0.229298":{"user":"nodered","password":"ZDSwc$Eys$Un9x6gh3h28!p4"},"8e54ba57.5c9dd":{},"2fd416bb.c289b2":{"user":"nodered","password":"ZDSwc$Eys$Un9x6gh3h28!p4"}} \ No newline at end of file