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.
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.
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.
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.
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

