Objective
When we first moved into our house, we quickly realized how tough it was to keep track of which parts of our large central living area had been vacuumed. Halfway through a frustrating cleaning session, I threw in the towel, hopped onto Aliexpress, and ordered our first robot vacuum. A few months later, I got two more—one for each level of the house.
I initially set them to run every few days in the morning. But the first time one wandered into my office during a Zoom call, I knew I had to rethink that. My goal was simple: I wanted a clean house without ever having to see or hear the robots—ideally, they’d run when nobody was home.
Fortunately, I already had the GPS data of mobile devices integrated in Home Assistant, so it was easy to detect absence of family members. All that was left was to prepare the work schedule, because some rooms get dirtier faster therefore should be prioritized.
Hardware
We picked vacuums that could work with Valetudo, a software that disconnects them from the cloud and lets us integrate them locally with Home Assistant. This keeps things running smoothly even if the manufacturer stops supporting the device.
Vacuums:
- Roborock S5 Max (basement)
- Dreame Z10 Pro (main floor)
- Dreame Z10 Pro (attic)
The last two have a docking station that seriously cuts down how often they need emptying — from daily to just yearly.
Integrating with Home Assistant
Valetudo supports MQTT, which can be used to integrate it with Home Assistant. This setup lets us track their status, kick off a cleaning session, or display home’s layout.
Automation Logic
Here’s how it works for each vacuum:
- Basement: Runs anytime we all leave, but only cleans the entrance area.
- Main floor: Starts cleaning everytime we leave the home and does it in a specific order — dining room and kitchen first, as they get the most foot traffic. We had to program it this way because sometimes we’re only gone briefly, not long enough for a full clean but just enough for the key areas.
- Attic: Kicks off when everyone leaves but only if robots haven’t cleaned it in over four days. If a week passes without any cleaning, it’ll run in the morning, regardless of whether anyone’s home.
The automation also controls the following:
- Each vacuum cleaner has a defined vacuuming time, which represents a satisfactory amount of vacuumed area. When it is exceeded, the job is considered as finished for the day. This prevents the vacuum cleaners from vacuuming the whole house several times if we leave several times in one day.
- Each vacuum cleaner monitors the service interval for the individual components, when they are over they notify this via Telegram.
- Vacuuming is limited between 7:00 and 19:30. This prevents the situation that when my fiancée and I go out, the vacuum cleaners are not bothering the babysitter and the sleeping children.