How to detect washer/dryer done with cycle?

Hello all!

I’m rather new to HA and Node-red, so I need someone to take a look at one of my sequences and check if I’m doing something wrong.

Simply I want to monitor my washer and dryer and get a notification when either of them finishes the cycle. I’m using Aqara vibration sensors. And I have a problem with eliminating false-negative outcomes.

BTW: I know about API error for Google. Need to get a new key. :slight_smile:

Any suggestions? Thank You.

[{"id":"4a2e8f26.ab996","type":"server-state-changed","z":"4da33ba7.16f594","name":"Washer Runnin?","server":"83bbac0e.2341a","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.vibration_4","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":"2","forType":"num","forUnits":"seconds","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":100,"y":680,"wires":[["e8fa60ca.eb653"],[]]},{"id":"e8fa60ca.eb653","type":"delay","z":"4da33ba7.16f594","name":"","pauseType":"delay","timeout":"3","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":320,"y":680,"wires":[["fd2e46b7.347b28"]]},{"id":"fd2e46b7.347b28","type":"trigger-state","z":"4da33ba7.16f594","name":"Still Running?","server":"83bbac0e.2341a","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.vibration_4","entityidfiltertype":"exact","debugenabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on","propertyValue":"new_state.state"}],"outputs":2,"customoutputs":[],"outputinitially":false,"state_type":"str","x":500,"y":680,"wires":[["b61df173.762b1"],["8b1dd7.8a656228"]]},{"id":"b61df173.762b1","type":"delay","z":"4da33ba7.16f594","name":"","pauseType":"delay","timeout":"3","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":700,"y":680,"wires":[["b721d335.9f775"]]},{"id":"b721d335.9f775","type":"trigger-state","z":"4da33ba7.16f594","name":"Still Running?","server":"83bbac0e.2341a","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.vibration_4","entityidfiltertype":"exact","debugenabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"on","propertyValue":"new_state.state"}],"outputs":2,"customoutputs":[],"outputinitially":false,"state_type":"str","x":880,"y":640,"wires":[["e8fa60ca.eb653"],["8b1dd7.8a656228"]]},{"id":"20816ea8.8ab922","type":"api-call-service","z":"4da33ba7.16f594","name":"TTS","server":"83bbac0e.2341a","version":1,"debugenabled":false,"service_domain":"tts","service":"google_translate_say","entityId":"media_player.office_speaker_2","data":"{    \"message\": \"Washer has stopped\"    \"volume_level\":0.5}","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":1070,"y":800,"wires":[[]]},{"id":"77c02fa3.556b7","type":"api-call-service","z":"4da33ba7.16f594","name":"","server":"83bbac0e.2341a","version":1,"debugenabled":false,"service_domain":"notify","service":"notify","entityId":"","data":"{\"message\":\"Washer has stopped\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1100,"y":740,"wires":[[]]},{"id":"8b1dd7.8a656228","type":"delay","z":"4da33ba7.16f594","name":"","pauseType":"delay","timeout":"3","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":700,"y":740,"wires":[["7646ea8.113f614"]]},{"id":"7646ea8.113f614","type":"trigger-state","z":"4da33ba7.16f594","name":"Still Off?","server":"83bbac0e.2341a","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"binary_sensor.vibration_4","entityidfiltertype":"exact","debugenabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"off","propertyValue":"new_state.state"}],"outputs":2,"customoutputs":[],"outputinitially":false,"state_type":"str","x":860,"y":800,"wires":[["77c02fa3.556b7","20816ea8.8ab922"],["e8fa60ca.eb653"]]},{"id":"83bbac0e.2341a","type":"server","z":"","name":"Home Assistant","addon":true}]

Can’t you use the “if state is false” output from your events:state node?

1 Like

I would use native automations with state trigger and properly configured “for:”. Emulating delayed activation in node-red is possible but not worth the trouble most of the time.

In case you insist on node-red: use trigger node with single “still running/off” loop and reset signal to avoid false positive.

2 Likes

I’ve been looking for this same thing. I have the same vibration sensor. I haven’t been able to figure out a good solution.

Both my washer dryer are electric. And this works well.

I have
-A power sensor on the washer.
-door sensors on both washer dryer

I use the door sensor to measure the temp on the dryer to know when it’s running. I tried vibration sensor but could not get that to work.

Which power sensors do you use?

It is not available any more, but any one that measures voltage will work.