Guides

Make Your Dumb Washing Machine Smart (The Reliable Way)

A practical Home Assistant setup using power, vibration, and a contact sensor to reliably detect when your washing machine has actually finished.

  • Intermediate
  • Home Assistant
  • Automations
  • Sensors
  • Zigbee
  • Home Assistant

🎥 Prefer to see it instead?


The problem

We’ve got a bit of a problem with our washing machine. It’s completely dumb… like most of them.

It lives out in the garage, so we never hear the “I’m finished” chime, which basically means it’s out of sight, out of mind.

I could blame our forgetfulness… but honestly, it’s easier to blame the washing machine.

What we actually want here is pretty simple.

We just want to know when the wash is finished… and get a nudge if we forget about it.


Why the obvious solution doesn’t quite work

The first thing I tried was power monitoring.

When the power drops, the wash must be finished… right?

Sounds logical, but washing machines don’t behave that cleanly.

They ramp up and down, pause mid-cycle, and sometimes just sit there doing almost nothing before kicking back into life again.

That “doing nothing” looks exactly like “finished”.

So you end up with false alerts, missed alerts… or both.


What actually works

What actually fixed it wasn’t more logic.

It was better signals.

Instead of trying to make one signal perfect, I started combining a few simple ones:

  • power, to understand load
  • vibration, to confirm movement
  • lid state, to confirm someone’s actually dealt with it

None of these are perfect on their own.

But together, they give you enough context to make a much better call.


Sensors I’m using

For this setup, I kept things pretty simple.

Device Type Notes
ThirdReality Vibration Sensor Zigbee Detects spin/movement
ThirdReality Contact Sensor Zigbee Mounted on lid
Power Monitoring Plug Any Must report power usage

If you don’t have Zigbee, their bridge is an easy way to get started:

👉 ThirdReality Smart Bridge MZ1

This lets you bring Zigbee devices into Matter ecosystems like Apple or Google.


Quick note on smart plugs

If you’re buying a plug for this, it’s worth being a bit intentional about it.

You don’t actually need to control the washing machine. You just want to monitor it.

So ideally, you’re looking for something that does power monitoring only, without a relay.

Relay-based plugs can work, but they’re not really designed for motor loads long term. And you’re not using the switching anyway.

Personally, I’m keeping an eye on CT clamp options. That feels like the better long-term approach.


How the logic comes together

The goal here isn’t to detect a single moment.

It’s to be confident the washing machine has actually finished.

If the power is up, or the machine is vibrating, we treat it as running. That covers most of the cycle without needing anything too clever.

Where things get tricky is when it looks like it’s finished.

Power drops. Vibration stops. Everything goes quiet.

But that’s also exactly what a soak cycle looks like.

So instead of reacting straight away, I just wait.

If it stays idle for a set period, then we call it finished. If it spins back up again, nothing happens and the timer resets.

Once that delay passes and everything is still quiet, we mark it as finished.

At that point:

  • send a notification
  • optionally announce it
  • start a reminder loop

The part that actually makes it useful

The reminders are what actually make this useful.

If the washing is still sitting there, it’ll just nudge you again.

Every 10 minutes.

And it stops as soon as the lid is opened.

Nothing complicated, but this is what solves the real problem.


Resetting everything

As soon as the lid is opened, everything clears down.

If a new cycle starts before that, it resets itself automatically.

So the system just stays in sync without you needing to think about it.


The helpers behind it

Before we get into the automations, we need a few helpers.

Nothing fancy here, just some simple building blocks so we can track state and control behaviour without hardcoding everything.

You can create these in the UI:

Settings → Devices & Services → Helpers → Create Helper

(This looks like a lot, but it’s really just a few helpers to make the logic easier to manage.)


Core state helpers

Name Entity Type Purpose
Washer Running input_boolean.washer_running Toggle Tracks when a cycle is actively running
Washer Finished input_boolean.washer_finished Toggle Tracks when the wash has finished but hasn’t been emptied

Timers

Name Entity Type Purpose
Washer Finish Delay timer.washer_finish_delay Timer Prevents soak cycles being treated as finished
Washer Reminder Timer timer.washer_reminder_timer Timer Drives the repeat reminder loop

Power thresholds

Name Entity Type Purpose
Washer Running Power Threshold input_number.washer_running_power_threshold Number Above this = running
Washer Finish Power Threshold input_number.washer_finish_power_threshold Number Below this = idle/finished

These will vary depending on your washing machine.

As a rough starting point:

  • Running: ~20W+
  • Finished: ~10W or lower

You’ll likely need to tweak these once you see your real power graph.


Quiet hours

Name Entity Type Purpose
Quiet Hours Start input_datetime.quiet_hours_start Time When speaker announcements should stop
Quiet Hours End input_datetime.quiet_hours_end Time When they can resume

This just stops your house yelling “washing machine finished” at 2am.

You’ll still get phone notifications during this time.


Optional (not required)

Name Entity Type Purpose
Washing Machine State input_select.washing_machine_state Select Optional UI/state tracking
Washing Loads counter.washing_loads Counter Optional tracking

You don’t need these for the automation to work, but they’re useful if you want to build this out further later.


The nice thing about doing it this way is you can tweak behaviour without touching the automations.

Change a threshold, adjust a timer, tweak quiet hours… everything just adapts.


The automation logic

You don’t need to copy this line-for-line, but these examples show how the pieces fit together.

You will need to swap in your own entity names, especially the power sensor, vibration sensor, lid sensor, notification service, presence group, TTS engine, and speaker.

Quick note:

In my actual setup, this all lives in a single automation with multiple branches.

I’ve broken it out here purely to make the logic easier to follow.

If you’re just getting started, splitting things like this can make debugging a lot easier.

Once you’re comfortable, you can absolutely consolidate it back into one.


1. Detect when the washer is running

This marks the washer as running when either the power rises above the running threshold or vibration is detected.

It also cancels any finish or reminder timers, because a new cycle or resumed activity means the old “finished” logic no longer applies.

Automation: Washer Running Detection

Detect power or vibration and reset any previous finished state.

View YAML Download YAML

2. Detect when the washer may be finished

This is where the soak cycle problem is handled.

When power drops below the finish threshold, or vibration has cleared for a while, the automation checks whether the washer is still meant to be running. If it is, and both power and vibration are quiet, it starts a finish delay.

If everything is still quiet when that timer finishes, the washer is marked as finished.

Automation: Washer Finish Detection

Confirm the washer stays quiet before marking the cycle as finished.

View YAML Download YAML

3. Repeat reminders until the washing is removed

Once the washer is marked as finished, the reminder timer keeps looping.

It checks that the washer is still marked as finished and that the lid is still closed. If both are true, it sends another reminder and starts the timer again.

Automation: Washer Reminder Loop

Repeat reminders while the finished washer remains unopened.

View YAML Download YAML

4. Clear everything when the lid opens

The lid is the final confirmation that someone has actually dealt with the washing.

Once it opens, the finished state is cleared and the reminder timers are cancelled.

Automation: Washer Lid Reset

Clear the finished state and timers when the lid opens.

View YAML Download YAML

How it behaves in real life

Once this is in place, it’s one of those automations you stop thinking about.

You get a notification when the wash actually finishes.

If you ignore it, you’ll get reminded.

If no one’s home, it waits.

And it won’t start announcing things in the middle of the night.

It just quietly does its job.


The bigger takeaway

This works well for a washing machine, but the idea applies more broadly.

Single signals are fragile.

Once you start combining context, everything becomes a lot more reliable.

That’s really where Home Assistant shines.


Where to go next

If you want to extend this:

  • add speaker announcements
  • apply the same logic to your dryer
  • build a simple dashboard
  • look into CT clamp monitoring

Full walkthrough