Our robot vacuum is a Eufy X10 Pro Omni, it vacuums and mops. When the boys come home with sandy shoes, the entrance needs a quick vacuum, and I’ve always had the dream of just telling Siri to clean everything up. Do you remember the scene from The Fifth Element? Exactly this one.
For that I wanted it in Apple Home. Apple Home has supported robot vacuums for a while now, but only with Matter, and as luck would have it the Eufy app offers no Matter for our model. So, Home Assistant again, the same one on my Raspberry Pi that controls the Run-Chicken door.
There’s software for everything these days. For the vacuum there is a community integration for Home Assistant: eufy-clean. I put the folder custom_components/robovac_mqtt into the config directory of Home Assistant, restarted, and added Eufy Robovac MQTT with the login of our Eufy account. It connects to the vacuum through the Eufy cloud. The upside is I can start it from anywhere, the downside is it’s always connected to the internet, and there’s no local-only option for our model. Our Eufy robot lawn mower is on the same Eufy account and showed up too, but it isn’t supported, so I filtered it out.
My first try to get the vacuum into Apple Home was the HomeKit Bridge, same as with the door. The bridge shows a vacuum as a plain switch, on starts it, off sends it back to the dock. For the rooms I started writing one script per room, each with the room IDs from the Eufy map and a mode (vacuum, mop or both), and each script would have been another switch. Every change to the Eufy map would have meant new scripts, so I dropped it.
What worked was Home Assistant Matter Hub. With it the vacuum shows up in Apple Home as a Matter robot vacuum, with the rooms of the Eufy map and the cleaning modes. Apple Home shows all the data of the Eufy live, and it’s zero-config.
Matter Hub runs as a second container next to Home Assistant. Its README has a docker run command, as a compose file it looks roughly like this:
services:
matter-hub:
image: ghcr.io/riddix/home-assistant-matter-hub:latest
restart: unless-stopped
network_mode: host
environment:
HAMH_HOME_ASSISTANT_URL: "http://localhost:8123/"
HAMH_HOME_ASSISTANT_ACCESS_TOKEN: "<long-lived token>"
volumes:
- matter-hub-data:/data
volumes:
matter-hub-data:
In Matter Hub I set up a bridge with only the vacuum on it and turned on Server Mode. That one gave me a bit of a headache. A normal bridge puts all its devices behind one Matter device, and Apple Home shows them as accessories of that bridge. With a robot vacuum behind a bridge, Apple Home got stuck on “Updating”, and Siri and the room selection didn’t work. According to the Matter Hub README, the fix is Server Mode.
Matter Hub then shows a pairing code. In the Home app I tapped Add accessory, then More options, and entered the code. Next to the Home Assistant bridge, there’s now a Matter bridge in HomeKit, both are software bridges, which feels very brittle. It’s fine for one device here and there, but I wouldn’t trust a software bridge with a whole home automation setup of dozens of devices, because if I ever have to restore the bridge and set it up again, I have to pair every device again too.
Hey Siri, clean all the mess.