Add vacuum.clean_area action
#1284
|
2025.09.29: Changed ContextMany modern robotic vacuums support cleaning specific areas, but Home Assistant currently lacks built-in support for this feature. Integrations that could benefit include:
ProposalIntroduce a new action that instructs a vacuum to clean selected areas. To provide the best user experience, the action will target native Home Assistant areas, instead of relying on vacuum's internal segment identifiers (room, area, segment - naming differs depending on the vacuum manufacturer, here we will use "segment" for this concept to avoid confusion with native Home Assistant areas). Using native areas instead of internal segment identifiers provides several benefits:
To implement this proposal, two main components are required:
Backend implementationThe class VacuumEntityFeature(IntFlag):
...
CLEAN_AREA = 16384The following methods will be available for integrations to implement in the @dataclass(slots=True)
class Segment:
id: str
name: str
group: str | None = None
async def async_get_segments(self) -> list[Segment]:
"""Get the segments that can be cleaned."""
async def async_clean_segments(
self, segment_ids: list[str], **kwargs: Any
) -> None:
"""Perform an area clean."""When the The translation will be done using the mapping stored in the vacuum entity options, that maps a Home Assistant area to one or more vacuum segments.
PR: home-assistant/core#149315 FrontendFrontend will add a “Vacuum options” field in the vacuum entity settings for integrations that support this feature. It will behave similarly to existing helpers (e.g. templates, groups). Clicking it will open a dialog that allows users to map Home Assistant areas to vacuum segment names.
|
Replies: 12 comments 12 replies
|
How common is the repeat feature among existing integrations? |
|
I would add MQTT as an integration that would use this since Valetudo (one of the commonly integrated MQTT Vacuums has support for cleaning areas). There's an example of how it's currently called today here (bottom of page). It also supports 1-3x repeat when cleaning. |
|
Some comments
|
|
|
This looks like a very good design, handling the assignment of internal vacuum segments to Areas with a UI. This seems to address the discussion started in #913 (comment) -- This seems like it will work for Roborock, and i'm supportive of this proposal. Some tweaks I might suggest: The currently proposed async_get_segments interface is nice and minimal, though we may want to return an object instead of just simple types to allow for some future expansion: Future use case: This is not designing a solution now, but an example. Thinking through the floor plan idea, it could be built on top of your proposal by adding a polygon or rectangle on top of the current proposal. (In the future, clicking on a vacuum map card on top of an vacuum map image could trigger clean area command for that segment id. I haven't looked at the custom map cards closely, so just spitballing here) |
|
Just something to keep in mind: in the Roborock app, editing a map sometimes changes the segment IDs, which will make some mapping work for some areas, while others not. |
|
I would love to have this. The HACS integration "Eufy Robovacs" would also benefit from this. One thing to note is that at least Eufy duplicates room IDs for different floors. So you can have areas 1,2,3,4 on floor 1 and areas 1,2,3,4 on floor 2. Not sure if the other integrations have a similar setup. I would ask that a Current Floor selector also be added so that repeated room IDs can be mapped separately. Hopefully this makes sense the way I'm explaining it. |
|
Has there been any progress on this? |
With the Matter protocol, areas can only belong to one floor if there are several floors. |
|
Any progress on this? It would be a really powerful addition to HA Matter integration. |
|
The proposal was discussed and approved in a core meeting December 18th 2025 |
|
Please do not name this as CLEAN_AREA for cleaning rooms. |

The proposal was discussed and approved in a core meeting December 18th 2025