diff --git a/custom_components/xiaomi_home/miot/specs/specv2entity.py b/custom_components/xiaomi_home/miot/specs/specv2entity.py index 48d56c2..b239d63 100644 --- a/custom_components/xiaomi_home/miot/specs/specv2entity.py +++ b/custom_components/xiaomi_home/miot/specs/specv2entity.py @@ -170,6 +170,11 @@ SPEC_DEVICE_TRANS_MAP: dict = { 'properties': { 'battery-level': {'read'} } + }, + 'optional': { + 'actions': { + 'start-charge' + } } } }, diff --git a/custom_components/xiaomi_home/vacuum.py b/custom_components/xiaomi_home/vacuum.py index 3957f86..7a61596 100644 --- a/custom_components/xiaomi_home/vacuum.py +++ b/custom_components/xiaomi_home/vacuum.py @@ -203,6 +203,16 @@ class Vacuum(MIoTServiceEntity, StateVacuumEntity): self._attr_supported_features |= VacuumEntityFeature.LOCATE 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: """Start or resume the cleaning task.""" if self._prop_status is not None: