The washer is in the basement, two floors away from anyone who might remember it's running. Wet laundry left overnight is the kind of problem that's perfect for home automation: low stakes, happens every week, and the fix is a single message at the right moment.

Reading the washer's mind through its plug

The washer is plugged into a smart plug that reports power usage. Any plug with energy monitoring will do, as long as it's rated for the load. A washing machine's power draw tells you a lot: a few watts when idle, tens of watts while agitating, hundreds while spinning, and brief dips to almost nothing while it soaks or drains.

Those dips are the trap. A naïve "power dropped, so it's finished" rule fires halfway through the cycle. The fix is to require the power to stay low for a while, and to remember whether a cycle actually started.

A helper and two automations

A toggle helper, input_boolean.washer_running, remembers whether a cycle is in progress. One automation turns it on, another turns it off and sends the message:

- alias: "Washer: started"
  triggers:
    - trigger: numeric_state
      entity_id: sensor.washer_plug_power
      above: 10
      for: "00:01:00"
  actions:
    - action: input_boolean.turn_on
      target:
        entity_id: input_boolean.washer_running

- alias: "Washer: finished"
  triggers:
    - trigger: numeric_state
      entity_id: sensor.washer_plug_power
      below: 3
      for: "00:03:00"
  conditions:
    - condition: state
      entity_id: input_boolean.washer_running
      state: "on"
  actions:
    - action: input_boolean.turn_off
      target:
        entity_id: input_boolean.washer_running
    - action: notify.household
      data:
        title: "Laundry"
        message: "The washer's done. Time to move it to the dryer."

The gap between the two thresholds, above 10 W to start and below 3 W to finish, is deliberate. It's hysteresis: a reading that wobbles around a single number can't flip the state back and forth. The three-minute wait was found by watching the power graph for a few loads; the longest soak pause on our machine is a little under two minutes.

Sending it to everyone

notify.household is a notify group, so one action reaches every phone in the house through the Home Assistant companion app:

notify:
  - platform: group
    name: household
    services:
      - action: mobile_app_phone_one
      - action: mobile_app_phone_two

The dryer is a different story

In the US, most electric dryers run on a 240-volt circuit, and an ordinary smart plug won't fit or survive it. The options are a current clamp on the dryer's circuit at the panel, or a vibration sensor stuck to the top of the machine. We went with the vibration sensor: the same "started, then quiet for a few minutes" pattern works, just with binary_sensor.dryer_vibration in place of the power reading.

The washer's toggle helper also shows up on the kitchen dashboard, so anyone walking past can see whether a load is still going.