Vacuum MapGuard integration: Prevent "vacuum.start" from overriting map

Hey everyone! :waving_hand:

I just released a small custom integration called Vacuum MapGuard.
Check out my GitHub repository!

The problem
Depending on the vacuum and its firmware, a normal “start” (full clean) can redraw the saved floor plan. A closed door gets burned into the map, rooms merge, and the room layout you tuned for an hour is gone. Cleaning every room as its own segment doesn’t have that problem, but then you have to change every dashboard, automation and voice command that calls vacuum.start.

What it does
Vacuum MapGuard puts a proxy in front of your vacuum.
It takes over the original entity ID (vacuum.robot) and moves the real vacuum aside (vacuum.robot_roborock, hidden). Everything is passed through to the original, except vacuum.start: that now cleans your rooms one after another instead of starting a full clean.
Nothing else has to change. Dashboards, schedules and voice assistants keep working as before.

In the setup flow you can optionally set the order in which Start cleans your rooms. You get a list with the rooms exactly as your vacuum reports them, with the names from its own app, already in the order Start would use anyway. Drag a room to move it, remove one to skip it (handy for a balcony or a garage), or leave the list alone to clean everything. You can change it later under Configure.

Home Assistant’s own Clean areas dialog (and vacuum.clean_area) keeps working too, and the rooms reach the vacuum in the order you tapped them.

If you delete the integration entry, the original vacuum gets its entity ID back.

Hopefully someone else find this integration usefull, the motivation to do this was my valetudo vacuum, which does not has the feature “persistent map” in it’s firmware!

Cheers,
Sebastian (seb5594)

1 Like