My Wife Just Wanted to Vacuum the Kitchen
My wife has a robot vacuum. We named it Treat, after our daughter's hamster who passed away not long ago. Treat the hamster had a habit of climbing over absolutely everything in his path -- furniture, hands, the side of his cage, didn't matter. He'd just scramble over it and carry on. The vacuum does the same thing. Boundaries set? Doesn't care. Chair legs? Climbs them. It inherited Treat's complete disregard for anything in his way, minus the fur and the personality. Mostly.
It has a perfectly functional app on her phone with big buttons that say things like "Kitchen Vacuum" and "Downstairs Vacuum." She presses them. The vacuum does the thing. Everyone's happy.
So naturally, I decided to spend an evening overengineering the entire setup because what if she could press those same buttons on a web page instead.
The Excuse
It started with Home Assistant. I'd been meaning to set it up for a while -- one of those homelab projects that sits on a mental to-do list for months until you run out of other things to procrastinate with. The Eufy Clean E28 was the nudge I needed. If I was going to have a smart home hub, it should probably know about the robot that cleans my floors.
The actual HA install was the easy part. Community script, a VM, fifteen minutes of watching progress bars. The kind of setup where you feel productive despite doing almost nothing.
Then came the vacuum integration, and things got interesting.
Three Wrong Doors
Home Assistant's approach to vacuum support is a choose-your-own-adventure where most of the doors lead to disappointment.
Door number one: the community RoboVac integration. Installed it. Entered my credentials. It stared at me blankly. Turns out it supports about 30 Eufy models and the E28 isn't one of them. The "Clean" series is apparently a different product line that nobody told the integration about.
Door number two: Matter. The E28 supports Matter, which is the smart home protocol that was supposed to make everything just work. And it does! You get start, stop, dock, and a list of cleaning modes. What you don't get is any of the room-specific presets you've carefully configured in the Eufy app. Matter gives you the equivalent of a TV remote with only a power button and a volume knob.
So Matter could tell my vacuum to start cleaning, but not what to clean. Helpful in the same way that telling someone "go to work" is helpful when they don't know where they work.
Door number three: eufy-clean. A HACS custom integration that connects via MQTT. Not officially listed as supporting the E28. The compatibility page mentions the X10 Pro Omni and a handful of others, with the E28 conspicuously absent.
I installed it anyway, because hope is a powerful debugging tool.
It found Treat immediately. And not just the basic controls -- it pulled in every single scene from the Eufy app. Downstairs Vacuum, Deep Clean, Kitchen Mop, the lot. Nine custom presets, each with their room maps and cleaning configurations intact. It even exposed individual room selection, battery status, water level, and maintenance counters for every brush and filter.
The integration that wasn't supposed to support my vacuum gave me more control than the protocol that was specifically designed for it.
The Dashboard Nobody Asked For
With all nine scenes available as Home Assistant entities, the next logical step was obvious: build a dashboard so my wife can trigger them from a web page instead of the app she's been perfectly happy with for months.
The first attempt was a disaster. Cards scattered across multiple columns. A blank spacer card I'd added because nine buttons don't divide evenly into rows of two. A maintenance section showing brush hours remaining that nobody except me would ever look at. It had the energy of a TV remote designed by a committee.
Version two was better. Panel mode to force a single column. A 3x3 grid of scene buttons, each with a sensible icon. Battery gauge at the top. Stop and Go Home at the bottom. The maintenance data got cut entirely. If a brush needs replacing, the vacuum will complain loudly enough on its own.
The Kiosk Problem
A nice dashboard is still buried inside Home Assistant's UI, which has a sidebar, a header, a search button, a notifications bell, and approximately seven other things my wife would never need to see. Giving her access to the vacuum controls also gave her access to the energy dashboard, the map, the activity log, and a to-do list that would just make her wonder what I've been doing.
The solution was kiosk mode -- a HACS plugin that strips away everything except the dashboard itself. No sidebar. No header. No three-dot menu with options that lead to places she shouldn't be. Just nine buttons, a battery gauge, and a stop button. Like a dedicated appliance, except it's a web page.
Combined with a non-admin user account and HA's trusted networks auth, the final setup auto-logs in from any device on the home network. No password prompt. Visit the URL, see the buttons, press one, watch Treat wake up and trundle off towards the kitchen. Just like the original used to, except this one actually cleans up after itself.
The Wife Test
"Why can't I just use the app?"
A fair question. The honest answer is: she can. The app works fine. It has the same buttons. It even has a map that shows where the vacuum is in real-time, which my dashboard doesn't.
But the dashboard loads instantly on any device with a browser. No app install. No Eufy account. No "please update the app" popups. Bookmark it on the iPad, and it's one tap to a full-screen vacuum remote that looks like it was built for exactly this purpose. Because it was.
She bookmarked it. I'm choosing to interpret that as a win.
What I Actually Learned
Matter is great for basic device control but terrible for anything manufacturer-specific. If your smart home device has custom features -- room maps, cleaning presets, anything beyond on/off -- you'll probably need a dedicated integration that speaks the manufacturer's protocol.
The "unsupported" community integration was the one that worked best. Official support matrices are guidelines, not guarantees. If a protocol is similar enough across a product line, there's a decent chance an unlisted model will work. Worth trying before giving up.
And sometimes the best interface isn't the most capable one. The Eufy app can do everything. The dashboard can do nine things. For the person who only needs those nine things, less is more.
Treat is currently docked at 100%, waiting for someone to press a button. Any button. On any device. From any interface. Still climbing over everything in his path -- just quieter about it now.
My wife will probably use the app.