Home Assistant

Laundry handoff reminders

Washer and dryer cycle-done alerts from a power-monitoring plug (or a vibration sensor), quiet hours, and a repeating washer-to-dryer handoff reminder if the dryer does not start within about 30 minutes.

Difficulty · BeginnerSetup · 30–60 minutesHA · current stable (blueprint)
Get the pack · from $19Have us set it up

Some hardware links on this page are affiliate links. As an Amazon Associate I earn from qualifying purchases. We may earn a commission if you buy through them, at no extra cost to you. See the affiliate disclosure.

A finished washer that sits wet is a smell, not a notification problem. This workflow watches cycle power (or vibration), pages when a machine actually stopped, respects quiet hours, and — if the dryer has not started after the washer — keeps reminding until someone moves the load.

Entity ids are blueprint inputs. Do not publish a specific laundry-room plug name.

What problem it solves

You want a single “washer is done” push, a matching dryer-done push, and a nag to move clothes if the dryer stays idle — without a page at 1 a.m. and without treating a rinse agitate as a finished cycle.

How it works

  1. Running vs idle — power plug: watts above a “running” threshold for a start debounce, then below an “idle” threshold for a stop debounce. Vibration: binary sensor on then off for the same kind of debounce. Either method can feed the same helpers.
  2. Cycle done — on idle after a run, fire notify (washer or dryer). A helper records last_washer_done / last_dryer_done.
  3. Quiet hours — if the stop lands inside a quiet window, skip the push (or delay it until the window ends). Handoff reminders use the same window so overnight wet clothes wait until morning to nag.
  4. Handoff — when the washer goes idle, set washer_waiting. If the dryer does not go running within ~30 minutes, notify “move the load,” then repeat on an interval until the dryer starts or you clear the helper from the notify action.
  5. Dryer start clears the nag — dryer watts (or vibration) crossing the running threshold turns washer_waiting off. A dryer-only cycle never starts the handoff.

Thresholds are per machine. A heat-pump dryer idles lower than a resistive one; measure a real cycle before you lock numbers in.

Hardware notes

  • Power plugs. In-wall or plug-through meters that expose a watts sensor in HA. Match the plug to the load rating; a 240 V dryer usually needs a dedicated energy monitor, not a 120 V travel plug.
  • Vibration. A cheap accelerometer / “vibration sensor” on the drum works when you cannot meter the circuit. Mount on the cabinet, not the lid that slams.
  • Notify. Companion, Pushover, or any notify service the blueprint input accepts. Actionable notify is what clears washer_waiting from the phone.
  • Two machines. One detector per appliance. Sharing a single plug on a split receptacle will lie to you.

Snippet

The pack ships a blueprint. Inputs replace real entity ids:

trigger:
  - platform: numeric_state
    entity_id: !input washer_power
    below: !input washer_idle_w
    for: "00:02:00"
    id: washer_idle
  - platform: numeric_state
    entity_id: !input dryer_power
    above: !input dryer_running_w
    for: "00:00:30"
    id: dryer_started
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: washer_idle
          - condition: state
            entity_id: !input washer_was_running
            state: "on"
        sequence:
          - service: input_boolean.turn_on
            target:
              entity_id: !input washer_waiting
          - if:
              - condition: not
                conditions:
                  - condition: time
                    after: !input quiet_start
                    before: !input quiet_end
            then:
              - service: notify.notify
                data:
                  message: "Washer is done"
          - delay: "00:30:00"
          # repeat handoff while washer_waiting: full blueprint in the pack
      - conditions:
          - condition: trigger
            id: dryer_started
        sequence:
          - service: input_boolean.turn_off
            target:
              entity_id: !input washer_waiting

Setup outline

  1. Add watts sensors (or vibration binaries) for washer and dryer. Watch one full cycle and write down running vs idle numbers.
  2. Create helpers (washer_was_running, washer_waiting) or use the pack’s.
  3. Import the blueprint, fill !input entities, thresholds, quiet hours, and notify service.
  4. Test: run a short cycle (or spoof watts with a lamp on the washer plug). Confirm: cycle done → one notify; quiet hours → silence; no dryer start → handoff repeat; dryer start → repeats stop.

Troubleshooting

  • Notify on every rinse. Idle threshold is too high or the stop for is too short. Use the peak-run helper (washer_was_running) so a pause mid-cycle does not count as done unless it sat idle for the full debounce.
  • No notify at all. Plug reports kW not W, or the entity is energy (kWh) not power. The blueprint wants instantaneous watts (or a vibration binary).
  • Handoff never stops. Dryer running threshold is above what that machine actually draws on tumble, or the dryer plug is on the wrong outlet. Lower the threshold after you watch a start.
  • Pings at night. Quiet-hours after / before wrapping midnight is easy to invert. The pack uses a time condition that handles a window crossing 00:00; do not replace it with a naive after only.

Credits

Based on the community blueprint LaundryMinder — washer/dryer cycle notifications and handoff reminders. This write-up is an original overview of the power/vibration plus handoff pattern.

Changelog

v1.0 · Oct 15, 2026: First publish.