Window open, notify users who are at home
This still is a work in progress, but basics work. It uses a subflow for notifications, you can finds on the nodered flows page as well.
- When a window was open too long, notify phones (which are at home) recurring.
- When it is also cold out, send an extra notification (as the heating is wasted).
- If window closed - cancel all notifications
- Notify only between specific times
[{"id":"c410a60f.be26f8","type":"subflow","name":"Notify Devices(s)","info":"stuur notification met filters op device","category":"","in":[{"x":60,"y":100,"wires":[{"id":"eec84c44.e05e4"}]}],"out":[],"inputLabels":["msg.data filled with JSON"],"icon":"node-red/comment.png"},{"id":"96608345.8c627","type":"api-call-service","z":"c410a60f.be26f8","name":"notify sam","server":"181266bf.748f49","service_domain":"notify","service":"android_pixel2","data":"","render_data":false,"mergecontext":"","output_location":"","output_location_type":"none","x":450,"y":40,"wires":[[]]},{"id":"4469ce76.7214b","type":"api-call-service","z":"c410a60f.be26f8","name":"notify Willeke","server":"181266bf.748f49","service_domain":"notify","service":"android_p10","data":"","render_data":false,"mergecontext":"","output_location":"","output_location_type":"none","x":450,"y":140,"wires":[[]]},{"id":"eec84c44.e05e4","type":"switch","z":"c410a60f.be26f8","name":"switch topic","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"P10","vt":"str"},{"t":"eq","v":"Pixel2","vt":"str"},{"t":"null"}],"checkall":"true","repair":false,"outputs":3,"x":230,"y":100,"wires":[["4469ce76.7214b"],["96608345.8c627"],["4469ce76.7214b","96608345.8c627"]]},{"id":"181266bf.748f49","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open"},{"id":"a92d9cf0.4086a","type":"tab","label":"Doucheraam","disabled":false,"info":""},{"id":"c49d04d6.9e5d78","type":"switch","z":"a92d9cf0.4086a","name":"Raam open/dicht","property":"payload","propertyType":"msg","rules":[{"t":"cont","v":"\"contact\":false","vt":"str"},{"t":"cont","v":"\"contact\":true","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":250,"y":360,"wires":[["798c28db.947488"],["eca3cc3e.76e9e"]]},{"id":"b5586b2b.773c48","type":"mqtt in","z":"a92d9cf0.4086a","name":"9b1","topic":"home/0x00158d000275b9b1","qos":"0","broker":"c128a9a5.055948","x":50,"y":220,"wires":[["84f64293.0d4b3"]]},{"id":"798c28db.947488","type":"stoptimer","z":"a92d9cf0.4086a","duration":"25","units":"Minute","payloadtype":"num","payloadval":"0","name":"","x":500,"y":340,"wires":[["d7c2b642.afbbf8","621f419e.ca442"],[]]},{"id":"eca3cc3e.76e9e","type":"change","z":"a92d9cf0.4086a","name":"set stop command","rules":[{"t":"set","p":"payload","pt":"msg","to":"STOP","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":290,"y":540,"wires":[["798c28db.947488","d7c2b642.afbbf8"]]},{"id":"d7c2b642.afbbf8","type":"stoptimer","z":"a92d9cf0.4086a","duration":"25","units":"Minute","payloadtype":"num","payloadval":"0","name":"","x":640,"y":460,"wires":[["a1f6c5c4.542568"],[]]},{"id":"6c684a2.19e17b4","type":"comment","z":"a92d9cf0.4086a","name":"Koud? dan nog een notificatie!","info":"","x":680,"y":420,"wires":[]},{"id":"84f64293.0d4b3","type":"json","z":"a92d9cf0.4086a","name":"","property":"payload","action":"str","pretty":false,"x":130,"y":300,"wires":[["c49d04d6.9e5d78"]]},{"id":"c2997111.8d06f","type":"comment","z":"a92d9cf0.4086a","name":"Na 25 min een notificatie, op schappelijke tijden, naar devices die thuis zijn","info":"","x":560,"y":80,"wires":[]},{"id":"3baed7f5.bdf278","type":"comment","z":"a92d9cf0.4086a","name":"cancel notificaties indien raam dicht","info":"","x":260,"y":480,"wires":[]},{"id":"9af31623.2588f8","type":"subflow:c410a60f.be26f8","z":"a92d9cf0.4086a","name":"","x":1090,"y":200,"wires":[]},{"id":"621f419e.ca442","type":"time-range-switch","z":"a92d9cf0.4086a","name":"","lat":"","lon":"","startTime":"06:00","endTime":"23:00","startOffset":0,"endOffset":0,"x":370,"y":140,"wires":[["d4f4b57b.e5bc28"],[]]},{"id":"5bfea696.93dad8","type":"function","z":"a92d9cf0.4086a","name":"Get device which are home","func":"var samHome = global.get('Pixel2home') !== null;\nvar willekeHome = global.get('P10home')!== null;\n\nif(samHome & willekeHome)\n{\n msg.topic = null;\n}\nelse if(samHome)\n{\n msg.topic = 'Pixel2';\n}\nelse if(willekeHome)\n{\n msg.topic = 'P10';\n}\nreturn msg;","outputs":1,"noerr":0,"x":800,"y":240,"wires":[["9af31623.2588f8"]]},{"id":"a1f6c5c4.542568","type":"tado","z":"a92d9cf0.4086a","configName":"cb6ba78c.bbcfe8","apiCall":"getWeather","homeId":"000000","deviceId":"732909","zoneId":"1","power":"on","temperature":"18","terminationType":"manual","terminationTimeout":900,"name":"Get weather","x":710,"y":520,"wires":[["f63e57a2.3c0d58"]]},{"id":"d4f4b57b.e5bc28","type":"function","z":"a92d9cf0.4086a","name":"set payload doucheraam is open","func":"msg.payload = {\n \"data\": {\n \"title\": \"Doucheraam\",\n \"message\": \"doucheraam is open \".concat(\n new Date().getHours(), \n \":\",new Date().getMinutes())\n }\n};\nreturn msg;","outputs":1,"noerr":0,"x":690,"y":140,"wires":[["5bfea696.93dad8"]]},{"id":"ddbe5afc.7bb998","type":"function","z":"a92d9cf0.4086a","name":"set payload doucheraam is open","func":"msg.payload = {\n \"data\": {\n \"title\": \"Doucheraam en kachel\",\n \"message\": \"doucheraam is open en kachel aan \".concat(\n new Date().getHours(), \n \":\",new Date().getMinutes())\n }\n};\nreturn msg;","outputs":1,"noerr":0,"x":950,"y":360,"wires":[["5bfea696.93dad8"]]},{"id":"f63e57a2.3c0d58","type":"json","z":"a92d9cf0.4086a","name":"","property":"payload","action":"obj","pretty":false,"x":810,"y":480,"wires":[["b413ca98.9c2678"]]},{"id":"b413ca98.9c2678","type":"switch","z":"a92d9cf0.4086a","name":"koud buiten","property":"payload.outsideTemperature.celsius","propertyType":"msg","rules":[{"t":"lte","v":"14","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":950,"y":500,"wires":[["ddbe5afc.7bb998"],[]]},{"id":"c128a9a5.055948","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"NodeRed","usetls":false,"compatmode":true,"keepalive":"60","cleansession":false,"birthTopic":"","birthQos":"2","birthRetain":"true","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"cb6ba78c.bbcfe8","type":"tado-config","z":"","name":"tado"}]