Flow not doing what I expected

hey!

have a flow that I want to warn us when the outdoor particulate matter (PM) values are above 32, and then when they are back to safe levels. However, it seems to be telling everytime the value is above 32. The reporting interval of the sensor is every 10 minutes or so.

I thought the timer would keep it looped until the levels are back below 32, but its not anymore.

I basically want to warn when the PM is above 32, and then again, when its below 32.

flow data:

[{"id":"409a05f427fb05b3","type":"switch","z":"aaeb4e984950aca8","name":"32 and Over","property":"PM25EOut_reading","propertyType":"msg","rules":[{"t":"gte","v":"32","vt":"num"}],"checkall":"false","repair":false,"outputs":1,"x":670,"y":3100,"wires":[["b1f6816d12fa3c8b"]]},{"id":"fe1cd54f05747d9c","type":"api-current-state","z":"aaeb4e984950aca8","name":"PM25 < 32","server":"f11241dc.5364d","version":3,"outputs":2,"halt_if":"32","halt_if_type":"num","halt_if_compare":"lt","entity_id":"{{data.entity_id}}","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"PM25EOut_reading","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":0,"forType":"num","forUnits":"minutes","x":1130,"y":3100,"wires":[["b95a86e160c10f40","8aef9d8ff899578f"],["0b7b4915d500b267"]]},{"id":"0b7b4915d500b267","type":"delay","z":"aaeb4e984950aca8","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"minutes","rate":"1","nbRateUnits":"30","rateUnits":"minute","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"allowrate":false,"outputs":1,"x":1150,"y":3180,"wires":[["fe1cd54f05747d9c"]]},{"id":"b1f6816d12fa3c8b","type":"trigger","z":"aaeb4e984950aca8","name":"","op1":"","op2":"0","op1type":"pay","op2type":"str","duration":"0","extend":true,"overrideDelay":false,"units":"ms","reset":"","bytopic":"topic","topic":"topic","outputs":1,"x":880,"y":3100,"wires":[["fe1cd54f05747d9c","788554ed6485ef09"]]},{"id":"b95a86e160c10f40","type":"change","z":"aaeb4e984950aca8","name":"Reset","rules":[{"t":"set","p":"reset","pt":"msg","to":"yes","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1110,"y":3020,"wires":[["b1f6816d12fa3c8b"]]},{"id":"a1ae6501dfd9904e","type":"server-state-changed","z":"aaeb4e984950aca8","name":"Outdoor PM 2.5 Levels","server":"f11241dc.5364d","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.pm25_ch1","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":200,"y":3100,"wires":[["1cdf2ed7f9bee415"]]},{"id":"1cdf2ed7f9bee415","type":"change","z":"aaeb4e984950aca8","name":"Set PM2.5 and topic","rules":[{"t":"set","p":"PM25EOut_reading","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"Outdoor PM25","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":3100,"wires":[["409a05f427fb05b3"]]},{"id":"788554ed6485ef09","type":"function","z":"aaeb4e984950aca8","name":"","func":"msg.payload = \"Warning! \" + msg.topic + \" Particulate Matter levels are at \" + msg.PM25EOut_reading + \" ug/m3!\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1140,"y":3240,"wires":[["ada67a356463ed4f","f749597b7cd9f94c","5c8bcf55b740f23d"]]},{"id":"8aef9d8ff899578f","type":"function","z":"aaeb4e984950aca8","name":"","func":"msg.payload = msg.topic + \" Particulate Matter levels are now safe.\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1400,"y":3100,"wires":[["30c7b1749d787c68","b6e3891b10bb6b45","28e71049cc02e8a7"]]},{"id":"30c7b1749d787c68","type":"debug","z":"aaeb4e984950aca8","name":"Safe Message","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1620,"y":3100,"wires":[]},{"id":"ada67a356463ed4f","type":"debug","z":"aaeb4e984950aca8","name":"Danger Message","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1630,"y":3380,"wires":[]},{"id":"51eeabcbcb880fe0","type":"google-notify","z":"aaeb4e984950aca8","server":"d17211f08fb61d4c","label":"Family Room Display Broadcast","playVolumeLevel":"60","language":"config","speakSlow":"false","mediaUrl":"","mediaType":"mp3","x":1670,"y":3420,"wires":[[]]},{"id":"2c8f2d4df8c0d177","type":"google-notify","z":"aaeb4e984950aca8","server":"d17211f08fb61d4c","label":"Family Room Display Broadcast","playVolumeLevel":"60","language":"config","speakSlow":"false","mediaUrl":"","mediaType":"mp3","x":1710,"y":3140,"wires":[[]]},{"id":"67e6c93034dd2604","type":"google-notify","z":"aaeb4e984950aca8","server":"a2c3303bcc4c7823","label":"Kitchen Display Broadcast","playVolumeLevel":"60","language":"config","speakSlow":"false","mediaUrl":"","mediaType":"mp3","x":1690,"y":3200,"wires":[[]]},{"id":"2a350ec717e5868c","type":"google-notify","z":"aaeb4e984950aca8","server":"a2c3303bcc4c7823","label":"Kitchen Display Broadcast","playVolumeLevel":"60","language":"config","speakSlow":"false","mediaUrl":"","mediaType":"mp3","x":1650,"y":3480,"wires":[[]]},{"id":"737df71186f06803","type":"google-notify","z":"aaeb4e984950aca8","server":"c9aa2a2bc10df8f4","label":"Main Floor Bathroom Broadcast","playVolumeLevel":"60","language":"config","speakSlow":"false","mediaUrl":"","mediaType":"mp3","x":1710,"y":3260,"wires":[[]]},{"id":"26dbb04dd2138c7c","type":"google-notify","z":"aaeb4e984950aca8","server":"c9aa2a2bc10df8f4","label":"Main Floor Bathroom Broadcast","playVolumeLevel":"60","language":"config","speakSlow":"false","mediaUrl":"","mediaType":"mp3","x":1670,"y":3540,"wires":[[]]},{"id":"f749597b7cd9f94c","type":"time-range-switch","z":"aaeb4e984950aca8","name":"Time Range","lat":"53.42167","lon":"-113.63615","startTime":"7:00","endTime":"20:00","startOffset":0,"endOffset":0,"x":1230,"y":3440,"wires":[["51eeabcbcb880fe0","2a350ec717e5868c","26dbb04dd2138c7c","e2110250aab5d7b2"],[]]},{"id":"e2110250aab5d7b2","type":"google-notify","z":"aaeb4e984950aca8","server":"68f59c430bfc900e","label":"Basement Family Room Display Broadcast","playVolumeLevel":"60","language":"config","speakSlow":"false","mediaUrl":"","mediaType":"mp3","x":1710,"y":3600,"wires":[[]]},{"id":"b6e3891b10bb6b45","type":"time-range-switch","z":"aaeb4e984950aca8","name":"Time Range","lat":"53.42167","lon":"-113.63615","startTime":"7:00","endTime":"20:00","startOffset":0,"endOffset":0,"x":1430,"y":3220,"wires":[["2c8f2d4df8c0d177","67e6c93034dd2604","737df71186f06803"],[]]},{"id":"5c8bcf55b740f23d","type":"api-call-service","z":"aaeb4e984950aca8","name":"Notify Me Sony Xperia Phone","server":"f11241dc.5364d","version":5,"debugenabled":false,"domain":"notify","service":"mobile_app_sony_xperia_zx1","areaId":[],"deviceId":[],"entityId":[],"data":"{\"message\":\"{{payload}}\"}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1670,"y":3320,"wires":[[]]},{"id":"28e71049cc02e8a7","type":"api-call-service","z":"aaeb4e984950aca8","name":"Notify Me Sony Xperia Phone","server":"f11241dc.5364d","version":5,"debugenabled":false,"domain":"notify","service":"mobile_app_sony_xperia_zx1","areaId":[],"deviceId":[],"entityId":[],"data":"{\"message\":\"{{payload}}\"}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1660,"y":3040,"wires":[[]]},{"id":"f11241dc.5364d","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":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m"},{"id":"d17211f08fb61d4c","type":"google-notify-config","ipaddress":"192.168.1.133","name":"Family Room Display","language":"en","playVolumeLevel":"20","speakSlow":true,"mediaServerUrl":"","mediaServerPort":"8098","cacheFolder":"/tmp"},{"id":"a2c3303bcc4c7823","type":"google-notify-config","ipaddress":"192.168.1.154","name":"Kitchen Display","language":"en","playVolumeLevel":"20","speakSlow":true,"mediaServerUrl":"","mediaServerPort":"8098","cacheFolder":"/tmp"},{"id":"c9aa2a2bc10df8f4","type":"google-notify-config","ipaddress":"192.168.1.145","name":"Main Floor Bathroom","language":"en","playVolumeLevel":"20","speakSlow":true,"mediaServerUrl":"","mediaServerPort":"8098","cacheFolder":"/tmp"},{"id":"68f59c430bfc900e","type":"google-notify-config","ipaddress":"192.168.1.182","name":"Basement Family Room Display","language":"en","playVolumeLevel":"20","speakSlow":true,"mediaServerUrl":"","mediaServerPort":"8098","cacheFolder":"/tmp"}]

You can set a boolean property, then filter on true/false, so you will only get messages when the boolean changes.
here is an example.

[{"id":"7adc3ba8.bfdee4","type":"inject","z":"30af2d3e.d94ea2","name":"20","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"20","payloadType":"num","x":200,"y":3260,"wires":[["1cdf2ed7f9bee415"]]},{"id":"1cdf2ed7f9bee415","type":"change","z":"30af2d3e.d94ea2","name":"Set PM2.5 and topic","rules":[{"t":"set","p":"PM25EOut_reading","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"Outdoor PM25","tot":"str"},{"t":"set","p":"boolean","pt":"msg","to":"$$.payload >= 32","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":3320,"wires":[["85362332.719c38"]]},{"id":"aa1e5740.09be6","type":"inject","z":"30af2d3e.d94ea2","name":"40","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"40","payloadType":"num","x":190,"y":3300,"wires":[["1cdf2ed7f9bee415"]]},{"id":"f329ecfd.58a0a","type":"inject","z":"30af2d3e.d94ea2","name":"50","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"50","payloadType":"num","x":190,"y":3340,"wires":[["1cdf2ed7f9bee415"]]},{"id":"85362332.719c38","type":"rbe","z":"30af2d3e.d94ea2","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"boolean","x":610,"y":3320,"wires":[["7ccd532f.b7a5ac"]]},{"id":"7ccd532f.b7a5ac","type":"debug","z":"30af2d3e.d94ea2","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":640,"y":3400,"wires":[]}]

Thank you @E1cid!

Your example should work pretty well, and much more simple than mine. I'll have to work this into my node flow.

I'm just curious why my clunky way isn't working anymore. Was there some sort of breaking change? Or perhaps mine never worked.

I was just watching the flow in action, its like the "trigger and block" is not blocking anymore. Here's how it set up the trigger and block node:

for example, both values of 54 (18:59) and 53 (19:09) came in, but it didn't block 53:

image

I never looked at why your flow didn't work because I do not have HA installed and it just looked OTT for what you wanted to do. Glad my example has helped you work out a cleaner way.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.