James Duffy

Washer and dryer monitoring in Home Assistant with smart plugs

I work from home, and with a family there is at least one load of laundry a day. I’ll start a load, get distracted by work, and forget to move it. So I wanted to know when the washer and dryer in our garage start, when they finish, and how much time is left.

Both are ordinary non-connected machines. We rent, and they come with the unit, so swapping in “smart” ones wasn’t an option.

A smart plug with energy monitoring gets you most of the way there. A washer or dryer draws a recognizable amount of power over a cycle, and a custom integration called WashData in Home Assistant turns that into start, finish and time remaining. I have now had it running for a few weeks.

A white front-loading dryer next to a larger Kenmore front-loading washer in the garage
The washer and dryer in our garage.

#The hardware

One Tapo P110M smart plug per machine, between the wall outlet and the appliance. I added them to Home Assistant over Matter instead of the Tapo cloud integration, so everything stays local. Each plug reports power, voltage, current and cumulative energy, and updates about every 10 seconds.

Two white smart plugs labeled with green painter’s tape, “Dryer” and “Washer”, stacked in a wall outlet
Both plugs share one outlet, labeled with tape so I don't mix them up.

The dryer runs on gas, so the plug only sees the drum motor and controls. That’s why it peaks around 700 W. The washer peaks around 430 to 570 W. An electric dryer on 240 V pulls several kW and could never go through a plug like this.

#The software

WashData is a custom integration, so it isn’t part of Home Assistant itself. I installed it through the Marketplace (formally HACS but it is now built into Home Assistant as of 2026.11) Once it’s installed, WashData watches a plug’s power sensor, detects when a cycle starts and ends, and estimates how much time is left. It can also send notifications on its own.

You add one entry per appliance. Mine look like this:

1Washer
2  device type:  washing_machine
3  power sensor: sensor.garage_washing_machine_power
4  min power:    2 W
5
6Dryer
7  device type:  dryer
8  power sensor: sensor.garage_dryer_power
9  min power:    2 W

That’s the required part: pick a device type, pick the power sensor, set a minimum power. I also set my electricity price ($0.226/kWh, my PG&E off-peak rate 💸) so it can put a cost on each cycle, and I use Pushover to alert my phone when a cycle starts and when it ends. The finish message is a template:

1{device} finished. Duration: {duration} min.

#It learns your cycles

After a few runs WashData starts recognizing cycles and offering suggested settings. In the first five days the washer logged 11 cycles (1.23 kWh) and the dryer logged 8 (2.58 kWh). A typical washer cycle runs about 43 minutes and a typical dryer cycle about 91.

Here is what a single cycle looks like in the WashData panel. The green line is the power the plug measured and the brown line is what WashData expected for that cycle profile. This washer cycle was the “Normal / Cold” profile: 40 minutes, 0.11 kWh, and the highest power of the run comes at the end.

WashData cycle graph for a 40 minute Normal / Cold washer cycle, showing power rising and falling to a peak of about 540 W near the end
A washer cycle, with power climbing toward the end.

The dryer is much flatter. This one was the “Low” profile, 1 hour 29 minutes and 0.33 kWh, sitting around 200 W with a spike up to 400 to 700 W every so often.

WashData cycle graph for a 1 hour 29 minute Low dryer cycle, showing steady power around 200 W with periodic spikes
A dryer cycle. Steady draw with regular spikes.

The expected line tracks the real one pretty closely on both.

#Does it help

Yes. I get a notification on my phone when the washer or dryer finishes, so I no longer have to remember to go check. That was the whole point, and it works better than I expected. Next I want to figure out how to announce it on the smart speakers around the house, so the rest of the family hears it too.