I’m always looking for new things to add to my smart home, and was a very early adopter of robotic vacuum tech because who actually likes to vacuum? But to say how long I’ve been using smart devices, I’m a relatively new convert to Home Assistant to tie everything together. Being able to control lights, switches, and more from a single app or web dashboard has quite frankly been a revelation, and I don’t know how I managed juggling apps before this.
So when I realized I could bring my fleet of robotic vacuums into Home Assistant, I jumped at the task. They all worked straight away after finding the correct integrations and logging in to the cloud service for each brand, and while some features are missing, they’re not features that I use much, if at all, so I’m pretty happy with the situation as it stands.
Adding my robovac to Home Assistant removes another app from my phone
While making things easier for my household to control it
Most of my robovacs are from Ecovacs, although I’ve tested almost every brand over the years. I’ve found Ecovacs to be better at mapping and pathfinding, although I have to admit it’s been a few years since I had a new model from any other brand to compare against. I’ve also got mostly composite wood floors, so I wanted a robot vacuum that could vacuum and mop. At the time, they were the only brand using dual spinning mops instead of vibrating pads.
Adding them to my Home Assistant installation was easier than I expected. The Ecovacs integration for Home Assistant has been painstakingly put together by a few developers and plenty of community information about which device calls which parts of the API and how they’re all named. It uses the cloud service to pull device names and add them to HA, so all you need to do is install the integration and then add your login details.
Now I’ve got a separate dashboard view in HA with stats about cleaning times, controls for my vacuum, and the map from its onboard sensors. Plus, Home Assistant can show me the lifespan of the brushes, roller, and other parts that either need manual cleaning for peak performance or replacing as they wear out. This is one of the other things I like about the official app, as I’m terrible at remembering schedules without having a little helpful reminder.
The main thing missing for me is the camera feed
Ecovacs uses an undocumented API to communicate between its robovacs and the app, so the integration into Home Assistant has been painstakingly reverse-engineered by a few people who wanted their robot vacuum to work in HA. That means it’s missing some parts, which might be a reason to stick with the official app.
I did have dreams about putting the live camera feed on my HA dashboard, which I thought would be neat to see while the robot trundles around cleaning. But it seems nobody has gotten it working yet, partly because it’ll need the app and the robot firmware deconstructed to get the encryption keys Ecovacs uses for the video. That’s assuming it is in the app, not on Ecovacs’ server. I’m sure someone will figure it out one day.
And I can go further by self-hosting the control server if I want
Now, the current setup uses the Ecovacs app and their cloud servers, just like if I weren’t using Home Assistant. While looking for ways to bring the camera feed into HA, I found a project called Bumper. While sadly, it doesn’t have the holy grail of camera access, it does do one thing that the self-hoster in me loves: enabling a local control server to cut the cloud out of the running of my vacuums.
The developer of Bumper spent what seems to be a ton of time reverse engineering the protocols, APIs, and other things the Ecovacs vacuums use to communicate with the app and with the servers. This involved using a Kali Linux VM with a Wi-Fi dongle set up as a man-in-the-middle access point to sniff the Ecovacs transmissions, with MitMProxy doing the actual work, then feeding those logs into WireShark for analysis.
What’s interesting is that Ecovacs uses XMPP for some machines and MQTT for others (newer ones seem to be using MQTT). That suggests that we could get better integration in the future once the MQTT traffic is appropriately mapped, so we know all the different commands for these vacuums.
I’ve got nothing against the Ecovacs app
It’s served me well for years, but I prefer to simplify things
I’ve used the apps for most of the robot vacuums out there, and they all tend towards showing too much information at once. I like to get in, set cleaning parameters once, set up a weekly schedule, and then leave the app alone. It’s one of the tasks that I fully trust for automations to handle, and means I don’t have to worry about dust or grime on my floors except for a quick touch-up around the corners and under the curtains, both areas that robot vacuums struggle to clean.
The only time I really open the app again is to watch the position of the robot while it’s driving around cleaning. Some smart technology will never fail to amaze me, and while I know the how behind its positioning, it’s still somewhat magical. The HA integration gives me enough sensors and control to keep my floors clean on a schedule, and that’s all I wanted from any robot vacuum control app in the first place.
It’ll have to stay on my phone a little longer, though
I just got a new Ecovacs Deebot X11 OmniCyclone, mainly because it has a bagless canister for waste, so I’m not adding extra trash when I empty it. That works great, and it’s quieter than the old bagged dock was, but there’s one problem with using it with Home Assistant. It’s not supported (yet), because the integration relies on owners and developers to sniff the requisite information from transmissions before they get added. And well, this is a new model, and it hasn’t had that done yet. Sounds like another weekend project for me if it doesn’t get done before I have time.
Once again, Home Assistant makes my smart home better