architecture
architecture copied to clipboard
Add rooms/zones cleaning as feature (to be supported) in vacuum entity
Context
Defined/preset room/zone cleaning is becoming every time more common in vacuum robots, but the base vacuum entity does not have that capability, leaving it to the integrations to declare their own additional service for it or having the users declare multiple workarounds like a script for every room they have (here, here, and here)
As the integrations can't report the rooms in a common state attribute and there is no default service for a room clean start/stop, it also makes it impossible to add the room cleaning feature of Google Assistant (and other voice assistants in the future maybe), as the google_assistant integration can't report the available zones. This feature can already work in a hacky way (see this post by pergola.fabio)
Proposal
- Add a state attribute (or capability attribute) of available rooms / available zones, which is reported by integrations when the entity supports room cleaning (
SUPPORT_ROOM_CLEANING) I don't know if it should have a standard format for id, name, etc. Some vacuums support zones (by coordinates) and others also support rooms (no coordinates, only id and name)
Either:
- Add services to the vacuum entity like
start_room_cleaningandstop_room_cleaning
or
- Add a parameter to the start, stop and pause services to pass the id or ids of the zones/rooms to clean. Google Assistant implements it like this (
availableZonesproperty in SYNC request and as a parameter in traitStartStop) reference
Consequences
As it is an additional feature with an optional support feature, it would not break current integrations, as they would be working as they currently work, but they should eventually be migrated to the common vacuum entity rooms.
p.s. I'm not sure on the naming, room vs zone, as it can be confusing. Roborock/Xiaomi vacuums support zones (by coordinates) and then also recently rooms (by id). Should the vacuum entity distinguish those two?
As I see it is not getting activity for the moment, just want to add that I have a working implementation of this, and would be ready to create a PR.
Just seeing this now I think in HA terminology it's technically an area? I think this is a good idea as we do have a custom neato cleaning service that allows users to clean a zone. May need to wait for a core member to chime in here on the flow.
This architecture issue is old, stale, and possibly obsolete. Things changed a lot over the years. Additionally, we have been moving to discussions for these architectural discussions.
For that reason, I'm going to close this issue.
../Frenck