Washing machine notification

Folks, i monitor the consumption of my washing machine, and when it drops below 25 watts for a fixed amount of time, i have a notification sent that its in crease protection and again when it goes below 10 that its ready.

well that also happens each time i restart the HA instance, since then its so many minutes under 25 watts. and usually i work on it late at night and the very best wife is more than slightly annoyed by those false alarms while shes mostly trying to go sound asleep

how do i monitor for the average consumption over the past 20 minutes being above a given threshold?

the sensor is a Nous A1 wifi mqtt tasmota plug that also could switch but is not used for switching, only for measuring.

kind of if the 20 min average is above 500 watts cock the notification trigger, if it goes below 25 watts pull the notification trigger, but only fire when it was cocked before…

thanks
manne

2 Likes

what if you change the trigger to go from [above] to [below] ?

thanks.
hm, i took a look at the history, and i cant do that as the washing machine hikes up and down many times during the washing process. e.g. while it heating its way up and while its soaking it basically zero, hence i have had a time limit for it to be under 25watts for a certain amount of time, (longer than the soak time…)

If i want to improve i have to have an average over a certain amount of time, then i could make a trigger if that goes from [above] to [below]

so I would like to clarify my question:

  1. how do I make a trigger that goes from [above] to [below]
  2. how do I get an average from an every 10 seconds reporting wifi mqtt sensor

A different approach.
It seems you get these false alarms because or when the washing machine is not running for real?
So what about first detecting that it is on and set a boolean to true. (above 100 w or something)
This boolean is then your condition in the notification automation.

that would work for sure, but only fixes part of my issues. the annoying ones for sure.

wiht your solution I would still have a delayed notification, because the “finished” notification comes only after the soaking time threshold.

is computing an 30 min average from a sensor input that difficult?

I use a binary sensor that turns on, if power consumption goes above defined threshold (10 Watts). I use that binary sensor in an automation. A signal is sent if consumption falls below threshold for 5 minutes.

I don’t say, that this the easiest solution, but I don’t face false alarms.

Binary Sensor

binary_sensor:
  - platform: template
    sensors:
      washing_machine:
        value_template: "{{ states('sensor.washing_machine_power') | float(default=0) > 10.0 }}"

Automation

alias: signal washing machine is ready
description: ""
trigger:
  - entity_id: binary_sensor.washing_machine
    for: "00:05:00"
    from: "on"
    platform: state
    to: "off"
condition: 
  - condition: time
    after: "08:00:00"
    before: "22:00:00"
action:
  - data:
      message: >-
        Waschmaschine ist fertig.
    service: notify.someone_who_cares
mode: single
1 Like

thanks for the code, spares a lot of time building it myself, thats basically what Hellis81 was suggesting too.

I know a washing machine is not time critical…

i did some googleling and found that maybe a statistics sensor with median or meanwould do the trick?

I started playing with the statistics sensor

- platform: statistics
  name: "Washing machine average of 10 Minutes"
  unique_id: af802d9c-488e-41eb-b7e5-a7a60eea686d
  entity_id: sensor.plug_wama_energy_power
  state_characteristic: mean
  max_age:
    minutes: 10

right now gives me a nice smooth line in the UI. Ill put a screenshot in here after the machine finished washing…

for a first test not so bad: image

I think I have found a way to get my automation the way I want it… thanks folks for the help, Ill be back with the finished code snipet.

edit: code:

alias: WaMa_finished
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.plug_wama_r_energy_power
    below: 20
    for:
      hours: 0
      minutes: 3
      seconds: 0
    id: WaMaR
condition: []
action:
  - choose:
      - conditions:
          - condition: and
            conditions:
              - condition: trigger
                id: WaMaR
              - condition: state
                entity_id: binary_sensor.wama_r
                state: "on"
        sequence:
          - service: mqtt.publish
            data:
              topic: wallpanel/nexus9/command
              payload: "{\"speak\": \"Washing machine finished.\"}"
              qos: 0
              retain: false
          - service: notify.mobile_app_for_who_cares
            data:
              message: Washing machine finished.
              title: WaMa finished
    default:
      - service: mqtt.publish
        data:
          topic: wallpanel/nexus9/command
          payload: "{\"speak\": \"Nothing new in the laundry room.\"}"
          qos: 0
          retain: false
mode: single

And I think this is a nice idea at least for the TTS stuff.

              - condition: time
                after: "08:00:00"
                before: "23:00:00"

hence i turned it around:

  - conditions:
      - condition: and
        conditions:
          - condition: trigger
            id: WaMaR
          - condition: state
            entity_id: binary_sensor.wama_r
            state: "on"
    sequence:
      - service: notify.mobile_app_from_who_cares
        data:
          message: Washing machine is finished.
          title: WaMa done
      - if:
          - condition: time
            after: "08:00:00"
            before: "23:00:00"
        then:
          - service: mqtt.publish
            data:
              topic: wallpanel/nexus9/command
              payload: "{\"speak\": \"Washing machine is finished.\"}"
              qos: 0
              retain: false

now I dont have false alarms after HA restart and i dont have a talking tablet after 11pm, just the companion app notification during the night.

2 Likes

Thats a really elegant solution - I went another route with in total three helpers - two number values to determine the kWh and one to sort out fales negatives during the washing cycle.

The value give at the end is the same as my Energy dashboard shows me (currentyl tests three times)

Maybe this could be interesing for someone here.

alias: "[Washing] Done"
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.waschmaschine_power
    for:
      hours: 0
      minutes: 1
      seconds: 0
    above: 3
    id: Washing_Start
  - platform: numeric_state
    entity_id: sensor.waschmaschine_power
    for:
      hours: 0
      minutes: 1
      seconds: 30
    below: 1
    id: Washing_End
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: Washing_Start
          - condition: state
            entity_id: input_boolean.washing_machine_on
            state: "off"
        sequence:
          - service: input_number.set_value
            data_template:
              value: "{{ states('sensor.waschmaschine_energy') | float }}"
              entity_id: input_number.energy_start
          - service: input_boolean.turn_on
            data: {}
            target:
              entity_id: input_boolean.washing_machine_on
      - conditions:
          - condition: trigger
            id: Washing_End
        sequence:
          - service: input_number.set_value
            data_template:
              value: "{{ states('sensor.waschmaschine_energy') | float }}"
              entity_id: input_number.energy_end
          - service: notify.pushover
            data:
              title: So Fresh and So Clean
              message: >-
                Washing is done. Used {{
                ((states('input_number.energy_end')|float)  - 
                (states('input_number.energy_start')|float)) | round(2)}} kWh.
          - service: input_boolean.turn_off
            data: {}
            target:
              entity_id: input_boolean.washing_machine_on
mode: single

3 Likes

Hi Thorn, yours is also pretty neat :slight_smile:

how ever, do one really wants to know how much energy the washing machine is using? one could get scared at the current energy prices and by this one may start to get a bit more smelly.

ROFL

For me, I use mostly solar power, so I honestly dont care, same goes for water, I use 100% rainwater, and its still enough in the cistern to water the garden and even fill up the pool when necessary, I really dont care.

We havent run dry in years, and we feed a house with 6 grownups and 7 kids. Lots of washing, lots of toilet-flushings, big garden, regular pool refills from splash water, washing cars etc. pp.

So, the only thing I care is, is my cloth clean from grease and dirt as well as free from soap and it should be fast. I work mechanically, I cook all my work cloths, I change them at least every day. Thats 3 Machines a week for me alone. Hence I want it fast. 60mins for a 95°C cooked machine with no prewash but with extra rinse. I only have one machine thats slower. its the newest, Bosch, and I wont go buy an other one of those new slow crapy green machines, I go with old Mile, good results, fast and reliable for decades.

In most countries washing the car where the water ends up in rivers, lakes or oceans is illegal.
You would need the water to go to a drain inside the house that goes to a treatment plant.

And your 60 min washing programs are not the best.
There is a reason why washing machines and dishwashers takes hours these days.
They clean the clothes or dishes the same way you would do it, by letting it soak in water and letting the water do the hard work.
The shorter programs relies more or mechanical cleaning which uses more energy and wears the clothes more.

That‘s what the Energy dashboard is for …

There’s not much point in me expanding on this unless you use node-RED, but just in case you do there is a neat contrib node that allows you to create a ‘state machine’ as the washing machine goes through its various phases. Using a regular entity state node you measure how long a given level of consumption is detected e.g. low, medium, high and depending on the previous machine state you can infer the new state.


The state machine handles this:
Screenshot 2023-02-08 105110
and you then create an entity based on the result.

2 Likes

thats neat, would have made so much so much easier… I just wonder why in years of FHEM and HA I never stumbled over that add-on.

I really do miss the Siemens PLC language FUP, that is so easy, still runing an S5 in my basement for some stuff. I never understood why all those Home Automation Guys made it so much more difficult.

Well, thanks @hunterdrayman
I for sure try that one out.

@m0wlheld, I have the energy dashboard deactivated :slight_smile: I did pay for that second layer on my roof and the big battery a lot of money, therefore now, I dont pay any money any more, asside from the hail insurance for that stuff. 100% self sufficient. The 600l rapeseed oil I use in my BHKW during the winter to bolster the battery, grow on my own land, well I leased it to a farmer and he pays me in rapeseed oil, as I myself would need to rotated the fruits to keep the ground in good shape, and could not grow rapeseed every year, also would need to bother with Berufsgenossenschaft and keep all the hardware to run the “farming”, naa. Therefore I just dont care how much we consume, we got plenty enough to run bitcoin miners 10 months a year with the surplus energy. And at 9€ per day (0,6 cent per min) I dont care if miners runs a bit more or not. I just rather make some bitcoin and use the waste heat in my house than just dumping the surplus energy into heating water with a heating element, its basically the same, just without the 9€ gain per day.

@Hellis81 indeed your right, if you wash delicate stuff, absolutely, go with the slow washing. However, my work cloth seldom gets older than a few months, a year max, due to ripping tearing and other stuff like welding burn-holes and such. So who cares if the fast washing eats that cloth? For me clean and fast is all I care.

Hi,
I’m “hijacking” this thread, since I am thinking on creating something similar… but … before I just start to do an automation with the notification, I would like to start creating a template with the current state - similar to what @hunterdrayman did with node red…
But - I would like to try it without the usage of nodered…

I am asking myself, if it could be possible to create a template sensor with such states based on this pattern…

Sure, it might change if you select another washing program… but basically, I think it should be possible :thinking:

The part of my node-RED flow that you’re referring to is embodied in the state nodes. Below is one of them. Basically each is saying ‘if an HA state holds for time t emit trigger X’. This is the easy bit and I’d expect that to be possible in an automation. The interplay of many triggers and many machine states is the complicated bit. I think this will be difficult to replicate in a template but I would be delighted to be proved wrong.

You’re right about other washing machine programmes messing things up, as I find out every so often when my wife uses a different one or when the machine objects to an excess of suds!

hi, do you have a better example of this flow, look simple for a washing machine and dryer, to control when is on and off

Can you explain further what you want to achieve

This is my flow, hope is copy well, and sorry for the spanish but is my main language and a need some quotes to remember, what im trying to achieve is a simple flow to get a notification when the laundry or dryer is done.
I used a few examples from the forum, but honestly many of them trigger even when im not using the washing machine.

[{"id":"7a34c540.8f84c4","type":"tab","label":"Lavanderia","disabled":false,"info":"","env":[]},{"id":"460265d7ba75fba3","type":"group","z":"7a34c540.8f84c4","name":"Lavadora Power check","style":{"label":true},"nodes":["b1547d02.33153","80540aed.a59958","9cb145cdbee03a9c","c2049748089b29f5","31c4befbd89ee158","8078f42256b41c85"],"x":14,"y":79,"w":812,"h":122},{"id":"427dd904b467cd54","type":"group","z":"7a34c540.8f84c4","name":"MQTT ","style":{"label":true},"nodes":["b6a9df0c6027cb02","64e8f5cb7fdf1cc3","2417f1dbf67cc025","f2b62b48ed17faef"],"x":914,"y":79,"w":312,"h":142},{"id":"c9fc0aef5b95cadf","type":"group","z":"7a34c540.8f84c4","name":"Secadora Power check","style":{"label":true},"nodes":["8a19c92d3935a570","eb0453f5904780d1","32f43eaf91ed64b7","c2b90b7429a0d609","1804953737e0dec6","50ed25291446bf35","dfdd86690b7a8e0f"],"x":14,"y":499,"w":852,"h":182},{"id":"018640f73fed4ce9","type":"group","z":"7a34c540.8f84c4","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["2c58824dcca1c676","83b81f3404c3fa44","7f5e14273692a01d","7d9c5b204ccc517e","4dd92ba684b40c1e","6f098ccdb15054e1","8f6b9ccd4d9b6188","69a785f925d12248"],"x":14,"y":239,"w":1012,"h":162},{"id":"72678095323e27f1","type":"group","z":"7a34c540.8f84c4","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["2f1188216004fa0a","13a0382b2adcf375","76ca4dbdb5aea3c2","ef79e8fd8a6ef307","63868916b5953faf","a211e142b336bbb6","1853316e92580ff5","67e4c8e9138d531d","725d42bab63436dc","c14a78c786ed01ce","890b3ced20c7d9fa","793119d51cdbbd8b","c00759b40530cc9a"],"x":14,"y":699,"w":1012,"h":222},{"id":"b1547d02.33153","type":"switch","z":"7a34c540.8f84c4","g":"460265d7ba75fba3","name":"Check power","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"gt","v":"10","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":270,"y":160,"wires":[["c2049748089b29f5"],["9cb145cdbee03a9c"]]},{"id":"80540aed.a59958","type":"server-state-changed","z":"7a34c540.8f84c4","g":"460265d7ba75fba3","name":"Lavadora Power","server":"063846561e68d38f","version":6,"outputs":1,"exposeAsEntityConfig":"","entities":{"entity":["sensor.lavadora_energy_power"],"substring":[],"regex":[]},"outputInitially":true,"stateType":"num","ifState":"","ifStateType":"str","ifStateOperator":"is","outputOnlyOnStateChange":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":120,"wires":[["b1547d02.33153"]]},{"id":"b6a9df0c6027cb02","type":"mqtt out","z":"7a34c540.8f84c4","g":"427dd904b467cd54","name":"mqtt washer state","topic":"house/washer/status","qos":"2","retain":"true","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"15faf22da4efca08","x":1110,"y":120,"wires":[]},{"id":"9cb145cdbee03a9c","type":"change","z":"7a34c540.8f84c4","g":"460265d7ba75fba3","name":"lavadora lavando","rules":[{"t":"set","p":"payload","pt":"msg","to":"Lavando","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":160,"wires":[["31c4befbd89ee158","8078f42256b41c85"]]},{"id":"c2049748089b29f5","type":"change","z":"7a34c540.8f84c4","g":"460265d7ba75fba3","name":"lavadora apagada","rules":[{"t":"set","p":"payload","pt":"msg","to":"Apagada","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":120,"wires":[["31c4befbd89ee158"]]},{"id":"31c4befbd89ee158","type":"link out","z":"7a34c540.8f84c4","g":"460265d7ba75fba3","name":"mqtt lavadora out","mode":"link","links":["64e8f5cb7fdf1cc3"],"x":635,"y":120,"wires":[]},{"id":"64e8f5cb7fdf1cc3","type":"link in","z":"7a34c540.8f84c4","g":"427dd904b467cd54","name":"mqtt lavadora in","links":["31c4befbd89ee158"],"x":955,"y":120,"wires":[["b6a9df0c6027cb02"]]},{"id":"8a19c92d3935a570","type":"server-state-changed","z":"7a34c540.8f84c4","g":"c9fc0aef5b95cadf","name":"Secadora Power","server":"063846561e68d38f","version":6,"outputs":1,"exposeAsEntityConfig":"","entities":{"entity":["sensor.secadora_energy_power"],"substring":[],"regex":[]},"outputInitially":true,"stateType":"num","ifState":"","ifStateType":"str","ifStateOperator":"is","outputOnlyOnStateChange":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":560,"wires":[["1804953737e0dec6"]]},{"id":"eb0453f5904780d1","type":"change","z":"7a34c540.8f84c4","g":"c9fc0aef5b95cadf","name":"secadora secando","rules":[{"t":"set","p":"payload","pt":"msg","to":"Secando","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":640,"wires":[["c2b90b7429a0d609"]]},{"id":"32f43eaf91ed64b7","type":"change","z":"7a34c540.8f84c4","g":"c9fc0aef5b95cadf","name":"secadora apagada","rules":[{"t":"set","p":"payload","pt":"msg","to":"Apagada","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":730,"y":540,"wires":[["c2b90b7429a0d609"]]},{"id":"c2b90b7429a0d609","type":"link out","z":"7a34c540.8f84c4","g":"c9fc0aef5b95cadf","name":"mqtt secadora out","mode":"link","links":["f2b62b48ed17faef"],"x":825,"y":640,"wires":[]},{"id":"1804953737e0dec6","type":"switch","z":"7a34c540.8f84c4","g":"c9fc0aef5b95cadf","name":"power check","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"lte","v":"11","vt":"num"},{"t":"gt","v":"15","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":290,"y":560,"wires":[["dfdd86690b7a8e0f"],["50ed25291446bf35"],["eb0453f5904780d1"]]},{"id":"2417f1dbf67cc025","type":"mqtt out","z":"7a34c540.8f84c4","g":"427dd904b467cd54","name":"mqtt dryer state","topic":"house/dryer/status","qos":"2","retain":"true","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"15faf22da4efca08","x":1100,"y":180,"wires":[]},{"id":"f2b62b48ed17faef","type":"link in","z":"7a34c540.8f84c4","g":"427dd904b467cd54","name":"mqtt secadora in","links":["c2b90b7429a0d609","793119d51cdbbd8b"],"x":955,"y":180,"wires":[["2417f1dbf67cc025"]]},{"id":"66cfc37c739390c1","type":"comment","z":"7a34c540.8f84c4","name":"Secadora","info":"","x":80,"y":460,"wires":[]},{"id":"7062cb34744548cc","type":"comment","z":"7a34c540.8f84c4","name":"Lavadora","info":"","x":80,"y":40,"wires":[]},{"id":"8078f42256b41c85","type":"api-call-service","z":"7a34c540.8f84c4","g":"460265d7ba75fba3","name":"prender secadora","server":"063846561e68d38f","version":7,"debugenabled":false,"action":"switch.turn_on","floorId":[],"areaId":[],"deviceId":[],"entityId":["switch.secadora"],"labelId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"switch","service":"turn_on","x":710,"y":160,"wires":[[]]},{"id":"50ed25291446bf35","type":"change","z":"7a34c540.8f84c4","g":"c9fc0aef5b95cadf","name":"secadora inactiva","rules":[{"t":"set","p":"payload","pt":"msg","to":"Inactiva","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":600,"wires":[["c2b90b7429a0d609"]]},{"id":"dfdd86690b7a8e0f","type":"api-current-state","z":"7a34c540.8f84c4","g":"c9fc0aef5b95cadf","name":"Secadora plug is off?","server":"063846561e68d38f","version":3,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","entity_id":"switch.secadora","state_type":"str","blockInputOverrides":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":500,"y":540,"wires":[["32f43eaf91ed64b7"],[]]},{"id":"2c58824dcca1c676","type":"trigger-state","z":"7a34c540.8f84c4","g":"018640f73fed4ce9","name":"Lavadora change to Apagada","server":"063846561e68d38f","version":5,"inputs":0,"outputs":2,"exposeAsEntityConfig":"","entities":{"entity":["sensor.estado_lavadora"],"substring":[],"regex":[]},"debugEnabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"Lavando"},{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"Apagada"}],"customOutputs":[],"outputInitially":false,"stateType":"str","enableInput":false,"x":160,"y":280,"wires":[["83b81f3404c3fa44"],[]]},{"id":"83b81f3404c3fa44","type":"delay","z":"7a34c540.8f84c4","g":"018640f73fed4ce9","name":"Wait a minute","pauseType":"delay","timeout":"1","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":400,"y":360,"wires":[["7f5e14273692a01d"]]},{"id":"7f5e14273692a01d","type":"api-current-state","z":"7a34c540.8f84c4","g":"018640f73fed4ce9","name":"check lavadora state","server":"063846561e68d38f","version":3,"outputs":2,"halt_if":"Apagada","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.estado_lavadora","state_type":"str","blockInputOverrides":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":460,"y":280,"wires":[["7d9c5b204ccc517e"],["83b81f3404c3fa44"]]},{"id":"7d9c5b204ccc517e","type":"chronos-switch","z":"7a34c540.8f84c4","g":"018640f73fed4ce9","name":"between 9-21","config":"4a814fd34380283b","baseTime":"","baseTimeType":"msgIngress","conditions":[{"operator":"between","label":"between 9:00 and 21:00","operands":[{"type":"time","value":"9:00","offset":0,"random":false,"precision":"millisecond"},{"type":"time","value":"21:00","offset":0,"random":false,"precision":"millisecond"}]},{"operator":"otherwise","label":"otherwise"}],"stopOnFirstMatch":false,"outputs":2,"x":680,"y":280,"wires":[["8f6b9ccd4d9b6188"],["69a785f925d12248"]]},{"id":"4dd92ba684b40c1e","type":"link out","z":"7a34c540.8f84c4","g":"018640f73fed4ce9","name":"to all phones","mode":"link","links":["27260df67cc918b8"],"x":945,"y":340,"wires":[]},{"id":"6f098ccdb15054e1","type":"link out","z":"7a34c540.8f84c4","g":"018640f73fed4ce9","name":"laundry msg","mode":"link","links":["1321cc54f1659499"],"x":985,"y":280,"wires":[]},{"id":"2f1188216004fa0a","type":"trigger-state","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"Secadora change to Inactiva","server":"063846561e68d38f","version":5,"inputs":0,"outputs":2,"exposeAsEntityConfig":"","entities":{"entity":["sensor.estado_secadora"],"substring":[],"regex":[]},"debugEnabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"Secando"},{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"Inactiva"}],"customOutputs":[],"outputInitially":false,"stateType":"str","enableInput":false,"x":160,"y":740,"wires":[["13a0382b2adcf375"],[]]},{"id":"13a0382b2adcf375","type":"delay","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"Wait a minute","pauseType":"delay","timeout":"1","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":400,"y":820,"wires":[["76ca4dbdb5aea3c2"]]},{"id":"76ca4dbdb5aea3c2","type":"api-current-state","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"check secadora state","server":"063846561e68d38f","version":3,"outputs":2,"halt_if":"Inactiva","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.estado_secadora","state_type":"str","blockInputOverrides":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":460,"y":740,"wires":[["ef79e8fd8a6ef307"],["13a0382b2adcf375"]]},{"id":"ef79e8fd8a6ef307","type":"chronos-switch","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"between 9-21","config":"4a814fd34380283b","baseTime":"","baseTimeType":"msgIngress","conditions":[{"operator":"between","label":"between 9:00 and 21:00","operands":[{"type":"time","value":"9:00","offset":0,"random":false,"precision":"millisecond"},{"type":"time","value":"21:00","offset":0,"random":false,"precision":"millisecond"}]},{"operator":"otherwise","label":"otherwise"}],"stopOnFirstMatch":false,"outputs":2,"x":680,"y":740,"wires":[["1853316e92580ff5"],["67e4c8e9138d531d"]]},{"id":"63868916b5953faf","type":"link out","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"to all phones","mode":"link","links":["27260df67cc918b8"],"x":945,"y":800,"wires":[]},{"id":"a211e142b336bbb6","type":"link out","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"laundry msg","mode":"link","links":["1321cc54f1659499"],"x":985,"y":740,"wires":[]},{"id":"1853316e92580ff5","type":"api-render-template","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"random msg","server":"063846561e68d38f","version":0,"template":"{{ [\n      \"Perdón, pero la secadora terminó su ciclo, no olviden darle las gracias.\", \"Discúlpenme, pero, la secadora ya se detuvo.\", \n      \"La secadora ha terminado, es hora de ponerse a dieta, porque de seguro la ropa se encogió.\", \n      \"Se que estan ocupados, pero, la secadora terminó, hora de doblar la ropa.\", \n      \"Atención, la secadora termino, aplausos.\", \n      \"No quiero entrometerme, pero, ya que la secadora termino, doble y guarde la ropa.\",\n      \"El ser humano ha llegado a la luna, pero aun no inventa una secadora que tambien doble la ropa, asi que le toca a usted ese trabajo, la secadora terminó.\", \n      \"Solo un aviso rápido, la secadora terminó, pase a doblar y guardar la ropa.\"\n] | random }}","resultsLocation":"payload","resultsLocationType":"msg","templateLocation":"template","templateLocationType":"msg","x":870,"y":740,"wires":[["a211e142b336bbb6"]]},{"id":"67e4c8e9138d531d","type":"change","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"msg secadora termino","rules":[{"t":"set","p":"payload","pt":"msg","to":"La Secadora ya termino","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":800,"wires":[["63868916b5953faf"]]},{"id":"8f6b9ccd4d9b6188","type":"api-render-template","z":"7a34c540.8f84c4","g":"018640f73fed4ce9","name":"random msg","server":"063846561e68d38f","version":0,"template":"{{ [\n      \"Perdón, pero la lavadora terminó su ciclo de lavado, no olvide mover la ropa a la secadora.\", \n      \"Discúlpenme, pero, la lavadora dejo de lavar, recuerde mover la ropa a la secadora.\",\n      \"No deseo interrumpir, pero, la lavadora ya terminó, no olvide ponerla en la secadora.\",\n      \"Odio interrumpir así, pero, la lavadora terminó, no olvide mover la ropa a la secadora.\",\n      \"Le ruego me disculpe, pero, le informo que la lavadora terminó, no olvide mover la ropa a la secadora.\",\n      \"No quiero entrometerme, pero, comentarle que la lavadora terminó, recuerde ponerla en la secadora.\",\n      \"Siento interrumpir, pero, terminó el lavado, pase la ropa a la secadora.\",\n      \"Solo un aviso rápido, la lavadora terminó, pase la ropa a la secadora.\"\n] | random }}","resultsLocation":"payload","resultsLocationType":"msg","templateLocation":"template","templateLocationType":"msg","x":870,"y":280,"wires":[["6f098ccdb15054e1"]]},{"id":"69a785f925d12248","type":"change","z":"7a34c540.8f84c4","g":"018640f73fed4ce9","name":"msg lavadora termino","rules":[{"t":"set","p":"payload","pt":"msg","to":"La Lavadora ya termino","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":740,"y":340,"wires":[["4dd92ba684b40c1e"]]},{"id":"725d42bab63436dc","type":"trigger-state","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"Secadora Power <12","server":"063846561e68d38f","version":5,"inputs":0,"outputs":2,"exposeAsEntityConfig":"","entities":{"entity":["sensor.secadora_energy_power"],"substring":[],"regex":[]},"debugEnabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"previous_state","propertyValue":"old_state.state","comparatorType":">","comparatorValueDatatype":"num","comparatorValue":"12"},{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"<=","comparatorValueDatatype":"num","comparatorValue":"11"}],"customOutputs":[],"outputInitially":false,"stateType":"num","enableInput":false,"x":140,"y":880,"wires":[["c00759b40530cc9a"],[]]},{"id":"c14a78c786ed01ce","type":"api-call-service","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"apagar secadora","server":"063846561e68d38f","version":7,"debugenabled":false,"action":"switch.turn_off","floorId":[],"areaId":[],"deviceId":[],"entityId":["switch.secadora"],"labelId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"switch","service":"turn_off","x":630,"y":880,"wires":[["890b3ced20c7d9fa"]]},{"id":"890b3ced20c7d9fa","type":"change","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"secadora apagada","rules":[{"t":"set","p":"payload","pt":"msg","to":"Apagada","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":880,"wires":[["793119d51cdbbd8b"]]},{"id":"793119d51cdbbd8b","type":"link out","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"mqtt secadora out","mode":"link","links":["f2b62b48ed17faef"],"x":985,"y":880,"wires":[]},{"id":"c00759b40530cc9a","type":"api-current-state","z":"7a34c540.8f84c4","g":"72678095323e27f1","name":"check secadora state","server":"063846561e68d38f","version":3,"outputs":2,"halt_if":"Inactiva","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.estado_secadora","state_type":"str","blockInputOverrides":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"30","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":400,"y":880,"wires":[["c14a78c786ed01ce"],[]]},{"id":"063846561e68d38f","type":"server","name":"Home Assistant","version":5,"addon":false,"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","enableGlobalContextStore":false},{"id":"15faf22da4efca08","type":"mqtt-broker","name":"","broker":"192.168.0.198","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"3","keepalive":"60","cleansession":true,"autoUnsubscribe":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willRetain":"false","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"4a814fd34380283b","type":"chronos-config","name":"casa chronos","latitudeType":"num","longitudeType":"num","timezone":"America/Lima","sunPositions":[]}]

I’m having trouble importing your flow - not sure why.

Are you using a smart plug, like I am, to measure the power usage of the machine?