[{"id":"9943106af49417f9","type":"tab","label":"Ventilation flow","disabled":false,"info":"","env":[]},{"id":"cad0dcdc43a10153","type":"mqtt out","z":"9943106af49417f9","name":"","topic":"ithohru/cmd","qos":"0","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"d6f99d82880d5da5","x":1070,"y":620,"wires":[]},{"id":"0e510eb6ca06eb8a","type":"mqtt out","z":"9943106af49417f9","name":"","topic":"ithohru/cmd","qos":"0","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"d6f99d82880d5da5","x":1070,"y":680,"wires":[]},{"id":"b2ac4e282b1ebb4c","type":"switch","z":"9943106af49417f9","name":"Bathroom Ventilation 85/75","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"85","vt":"str"},{"t":"lt","v":"75","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":360,"y":140,"wires":[["95ac9ffc4e9eb5a2"],["c685785b1568ad49"]]},{"id":"d4761836b7d617e5","type":"change","z":"9943106af49417f9","name":"MQTT Translation to High setting","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload","pt":"msg","to":"{ vremote: 'high'}","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":620,"wires":[["cad0dcdc43a10153"]]},{"id":"ae8d2aa05d0c4087","type":"change","z":"9943106af49417f9","name":"MQTT Translation to Low Setting","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"payload","pt":"msg","to":"{ vremote: 'medium'}","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":680,"wires":[["0e510eb6ca06eb8a"]]},{"id":"ce85ec69f1f4206a","type":"server-state-changed","z":"9943106af49417f9","name":"Bathroom Humidity","server":"3db2f9b372efea56","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.badkamer_luchtvochtigheid","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":110,"y":140,"wires":[["b2ac4e282b1ebb4c"]]},{"id":"2d724e2df62ab68b","type":"server-state-changed","z":"9943106af49417f9","name":"Bedroom CO2 >800","server":"3db2f9b372efea56","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.slaapkamer_co2","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"800","halt_if_type":"num","halt_if_compare":"gt","outputs":2,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":110,"y":260,"wires":[["65a8d5b4d3c38be2"],["9553731dc39228d7"]]},{"id":"d57c86181581f2b5","type":"server-state-changed","z":"9943106af49417f9","name":"Livingroom CO2 >1000","server":"3db2f9b372efea56","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.woonkamer_co2","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"1000","halt_if_type":"num","halt_if_compare":"gt","outputs":2,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":120,"y":360,"wires":[["75508df30d824d15"],["c62b1708a6f94c31"]]},{"id":"105d458f22724251","type":"mqtt in","z":"9943106af49417f9","name":"","topic":"ithohru/lastcmd","qos":"2","datatype":"auto-detect","broker":"d6f99d82880d5da5","nl":false,"rap":true,"rh":0,"inputs":0,"x":100,"y":500,"wires":[["33d9d338f9195da9"]]},{"id":"95ac9ffc4e9eb5a2","type":"change","z":"9943106af49417f9","name":"Bathroom High","rules":[{"t":"set","p":"bathroom_high","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":120,"wires":[["1cbffa5bfc762e8d"]]},{"id":"c685785b1568ad49","type":"change","z":"9943106af49417f9","name":"Bathroom Low","rules":[{"t":"set","p":"bathroom_high","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":160,"wires":[["1cbffa5bfc762e8d"]]},{"id":"f397bc67c2edc70c","type":"switch","z":"9943106af49417f9","name":"","property":"payload","propertyType":"msg","rules":[{"t":"jsonata_exp","v":"$flowContext(\"override\") = true","vt":"jsonata"},{"t":"jsonata_exp","v":"$flowContext(\"bathroom_high\") = true","vt":"jsonata"},{"t":"jsonata_exp","v":"$flowContext(\"bedroom_high\") = true","vt":"jsonata"},{"t":"jsonata_exp","v":"$flowContext(\"livingroom_high\") = true\t","vt":"jsonata"},{"t":"else"}],"checkall":"false","repair":false,"outputs":5,"x":290,"y":620,"wires":[["d4761836b7d617e5"],["d4761836b7d617e5"],["d4761836b7d617e5"],["d4761836b7d617e5"],["eeb37510907ce258"]]},{"id":"75508df30d824d15","type":"change","z":"9943106af49417f9","name":"Livingroom High","rules":[{"t":"set","p":"livingroom_high","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":340,"wires":[["1cbffa5bfc762e8d"]]},{"id":"c62b1708a6f94c31","type":"change","z":"9943106af49417f9","name":"LivingroomLow","rules":[{"t":"set","p":"livingroom_high","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":380,"wires":[["1cbffa5bfc762e8d"]]},{"id":"33d9d338f9195da9","type":"function","z":"9943106af49417f9","name":"On timestamp change","func":"// Set up the save data storage, set to zero if this hasn't run before\nvar last_seen_timestamp = context.get('last_seen_timestamp') || 0;\n\n// First time through\nif (last_seen_timestamp == 0) {\n // Save timestamp\n context.set('last_seen_timestamp', msg.payload.timestamp);\n // Intentionally do nothing this round, wait for next timestamp msg\n return null;\n}\n\nif (msg.payload.timestamp != last_seen_timestamp) {\n // Save timestamp\n context.set('last_seen_timestamp', msg.payload.timestamp);\n // Send payload from input\n return msg;\n}\nelse {\n return null;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":340,"y":500,"wires":[["b25afc0d4c7d41de"]]},{"id":"b25afc0d4c7d41de","type":"switch","z":"9943106af49417f9","name":"","property":"payload.command","propertyType":"msg","rules":[{"t":"eq","v":"speed:220","vt":"str"},{"t":"eq","v":"medium","vt":"str"},{"t":"eq","v":"speed:20","vt":"str"},{"t":"eq","v":"speed:120","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":550,"y":500,"wires":[["00213e70de1b2e90"],["56535ed883211f0a"],["56535ed883211f0a"],["56535ed883211f0a"]]},{"id":"00213e70de1b2e90","type":"change","z":"9943106af49417f9","name":"Activate overide","rules":[{"t":"set","p":"override","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":480,"wires":[["4e6fd048471d7455","45ba923cb0781bd2"]]},{"id":"4e6fd048471d7455","type":"delay","z":"9943106af49417f9","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"hours","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":980,"y":520,"wires":[["56535ed883211f0a"]]},{"id":"56535ed883211f0a","type":"change","z":"9943106af49417f9","name":"De-Activate overide","rules":[{"t":"set","p":"override","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":770,"y":520,"wires":[["45ba923cb0781bd2"]]},{"id":"7eeea521fd7ffb8f","type":"link in","z":"9943106af49417f9","name":"check fan status","links":["1cbffa5bfc762e8d","45ba923cb0781bd2"],"x":100,"y":620,"wires":[["f397bc67c2edc70c"]],"l":true},{"id":"1cbffa5bfc762e8d","type":"link out","z":"9943106af49417f9","name":"run fan check","mode":"link","links":["7eeea521fd7ffb8f"],"x":1020,"y":260,"wires":[],"l":true},{"id":"45ba923cb0781bd2","type":"link out","z":"9943106af49417f9","name":"run fan check","mode":"link","links":["7eeea521fd7ffb8f"],"x":1000,"y":480,"wires":[],"l":true},{"id":"65a8d5b4d3c38be2","type":"change","z":"9943106af49417f9","name":"Bedroom High","rules":[{"t":"set","p":"bedroom_high","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":240,"wires":[["1cbffa5bfc762e8d"]]},{"id":"9553731dc39228d7","type":"change","z":"9943106af49417f9","name":"bedroom Low","rules":[{"t":"set","p":"bedroom_high","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":760,"y":280,"wires":[["1cbffa5bfc762e8d"]]},{"id":"eeb37510907ce258","type":"delay","z":"9943106af49417f9","name":"Minimum High Runtime 10'","pauseType":"delay","timeout":"10","timeoutUnits":"minutes","rate":"1","nbRateUnits":"10","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":500,"y":680,"wires":[["ae8d2aa05d0c4087"]]},{"id":"42383b597ecc8f1d","type":"server-state-changed","z":"9943106af49417f9","name":"Bathroom Humidity Change > 30%/hr","server":"3db2f9b372efea56","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.bathroom_humidity_derivative","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"30","halt_if_type":"num","halt_if_compare":"gt","outputs":2,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":170,"y":80,"wires":[["95ac9ffc4e9eb5a2"],[]]},{"id":"d6f99d82880d5da5","type":"mqtt-broker","name":"","broker":"192.168.178.67","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"3db2f9b372efea56","type":"server","name":"Home Assistant","version":4,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":": ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"default","statusTimeFormat":"h:m"}]