refactor: enhance vacuum RETURN_HOME support with start-charge fallback

This commit is contained in:
Brandon 2025-08-15 21:18:11 +08:00
parent 8aa0c5d2ca
commit a022b36356
2 changed files with 13 additions and 7 deletions

View File

@ -160,13 +160,6 @@ SPEC_DEVICE_TRANS_MAP: dict = {
} }
}, },
'optional': { 'optional': {
'vacuum-extend': {
'optional': {
'actions': {
'stop-and-gocharge'
}
}
},
'identify': { 'identify': {
'required': { 'required': {
'actions': {'identify'} 'actions': {'identify'}
@ -177,6 +170,11 @@ SPEC_DEVICE_TRANS_MAP: dict = {
'properties': { 'properties': {
'battery-level': {'read'} 'battery-level': {'read'}
} }
},
'optional': {
'actions': {
'start-charge'
}
} }
} }
}, },

View File

@ -203,6 +203,14 @@ class Vacuum(MIoTServiceEntity, StateVacuumEntity):
self._attr_supported_features |= VacuumEntityFeature.LOCATE self._attr_supported_features |= VacuumEntityFeature.LOCATE
self._action_identify = action self._action_identify = action
# Use start-charge from battery service as fallback if stop-and-gocharge is not available
if self._action_stop_and_gocharge is None:
for action in entity_data.actions:
if action.name == 'start-charge':
self._attr_supported_features |= VacuumEntityFeature.RETURN_HOME
self._action_stop_and_gocharge = action
break
async def async_start(self) -> None: async def async_start(self) -> None:
"""Start or resume the cleaning task.""" """Start or resume the cleaning task."""
if self._prop_status is not None: if self._prop_status is not None: