I got tired of walking to the utility room just to check if the washer or dryer had finished, so I built a little ESP32 gadget — with an AI coding assistant doing most of the actual typing — that watches both machines and pings my phone the moment a cycle starts or ends.
The trick is what it actually senses. Rather than tapping into the machines electrically or measuring vibration, it just watches light — a BH1750 sensor taped over each machine’s own “running” indicator LED. If the light’s on, the machine’s running; when it goes off, the cycle’s done. It’s about as non-invasive as monitoring gets, and it works on basically anything with a status light, not just my specific washer and dryer.
I actually started with vibration sensing instead, measuring a window of motion to decide if a machine was active, but it ended up simpler and more reliable to just watch the light. Getting the timing logic right so a brief flicker doesn’t count as a full cycle took a few passes, and it all runs non-blocking off millis() so the WiFi connection and the display stay responsive.
Notifications go out over a self-hosted ntfy.sh topic rather than a proprietary app or cloud service, and there’s a small OLED on the device itself for an at-a-glance status if my phone’s not around.
It’s since been retired, though — I replaced the whole setup with an IKEA smart plug and Home Assistant, which tracks power draw instead of light and needed zero custom firmware. Still, wiring, parts list, and the full sketch are in the washing-machine-notify repository, in case the light-sensing approach is useful for a machine that doesn’t play nicely with a smart plug.
