diff --git a/homeassistant/components/ecovacs/event.py b/homeassistant/components/ecovacs/event.py index daac4a626ae..fb4c25c7559 100644 --- a/homeassistant/components/ecovacs/event.py +++ b/homeassistant/components/ecovacs/event.py @@ -13,6 +13,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback from .const import DOMAIN from .controller import EcovacsController from .entity import EcovacsEntity +from .util import get_name_key async def async_setup_entry( @@ -54,10 +55,7 @@ class EcovacsLastJobEventEntity( # we trigger only on job done return - event_type = event.status.name.lower() - if event.status == CleanJobStatus.MANUAL_STOPPED: - event_type = "manually_stopped" - + event_type = get_name_key(event.status) self._trigger_event(event_type) self.async_write_ha_state() diff --git a/homeassistant/components/ecovacs/manifest.json b/homeassistant/components/ecovacs/manifest.json index 52753e6eb39..2e088024215 100644 --- a/homeassistant/components/ecovacs/manifest.json +++ b/homeassistant/components/ecovacs/manifest.json @@ -6,5 +6,5 @@ "documentation": "https://www.home-assistant.io/integrations/ecovacs", "iot_class": "cloud_push", "loggers": ["sleekxmppfs", "sucks", "deebot_client"], - "requirements": ["py-sucks==0.9.9", "deebot-client==6.0.2"] + "requirements": ["py-sucks==0.9.9", "deebot-client==7.0.0"] } diff --git a/homeassistant/components/ecovacs/select.py b/homeassistant/components/ecovacs/select.py index 8a3def54e28..01d4c5aae6b 100644 --- a/homeassistant/components/ecovacs/select.py +++ b/homeassistant/components/ecovacs/select.py @@ -22,7 +22,7 @@ from .entity import ( EcovacsDescriptionEntity, EventT, ) -from .util import get_supported_entitites +from .util import get_name_key, get_supported_entitites @dataclass(kw_only=True, frozen=True) @@ -41,8 +41,8 @@ ENTITY_DESCRIPTIONS: tuple[EcovacsSelectEntityDescription, ...] = ( EcovacsSelectEntityDescription[WaterInfoEvent]( device_capabilities=VacuumCapabilities, capability_fn=lambda caps: caps.water, - current_option_fn=lambda e: e.amount.display_name, - options_fn=lambda water: [amount.display_name for amount in water.types], + current_option_fn=lambda e: get_name_key(e.amount), + options_fn=lambda water: [get_name_key(amount) for amount in water.types], key="water_amount", translation_key="water_amount", entity_category=EntityCategory.CONFIG, @@ -50,8 +50,8 @@ ENTITY_DESCRIPTIONS: tuple[EcovacsSelectEntityDescription, ...] = ( EcovacsSelectEntityDescription[WorkModeEvent]( device_capabilities=VacuumCapabilities, capability_fn=lambda caps: caps.clean.work_mode, - current_option_fn=lambda e: e.mode.display_name, - options_fn=lambda cap: [mode.display_name for mode in cap.types], + current_option_fn=lambda e: get_name_key(e.mode), + options_fn=lambda cap: [get_name_key(mode) for mode in cap.types], key="work_mode", translation_key="work_mode", entity_registry_enabled_default=False, diff --git a/homeassistant/components/ecovacs/util.py b/homeassistant/components/ecovacs/util.py index 14e69cd4b61..ab5db58c579 100644 --- a/homeassistant/components/ecovacs/util.py +++ b/homeassistant/components/ecovacs/util.py @@ -2,12 +2,15 @@ from __future__ import annotations +from enum import Enum import random import string from typing import TYPE_CHECKING from deebot_client.capabilities import Capabilities +from homeassistant.core import callback + from .entity import ( EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity, @@ -38,3 +41,9 @@ def get_supported_entitites( if isinstance(device.capabilities, description.device_capabilities) if (capability := description.capability_fn(device.capabilities)) ] + + +@callback +def get_name_key(enum: Enum) -> str: + """Return the lower case name of the enum.""" + return enum.name.lower() diff --git a/homeassistant/components/ecovacs/vacuum.py b/homeassistant/components/ecovacs/vacuum.py index d5016ab683d..0e990645d7c 100644 --- a/homeassistant/components/ecovacs/vacuum.py +++ b/homeassistant/components/ecovacs/vacuum.py @@ -33,6 +33,7 @@ from homeassistant.util import slugify from .const import DOMAIN from .controller import EcovacsController from .entity import EcovacsEntity +from .util import get_name_key _LOGGER = logging.getLogger(__name__) @@ -242,7 +243,7 @@ class EcovacsVacuum( self._rooms: list[Room] = [] self._attr_fan_speed_list = [ - level.display_name for level in capabilities.fan_speed.types + get_name_key(level) for level in capabilities.fan_speed.types ] async def async_added_to_hass(self) -> None: @@ -254,7 +255,7 @@ class EcovacsVacuum( self.async_write_ha_state() async def on_fan_speed(event: FanSpeedEvent) -> None: - self._attr_fan_speed = event.speed.display_name + self._attr_fan_speed = get_name_key(event.speed) self.async_write_ha_state() async def on_rooms(event: RoomsEvent) -> None: diff --git a/requirements_all.txt b/requirements_all.txt index b2ffc771db8..a5d370fce8b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -694,7 +694,7 @@ debugpy==1.8.1 # decora==0.6 # homeassistant.components.ecovacs -deebot-client==6.0.2 +deebot-client==7.0.0 # homeassistant.components.ihc # homeassistant.components.namecheapdns diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 7b45f2d56d4..35c005fe4d3 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -572,7 +572,7 @@ dbus-fast==2.21.1 debugpy==1.8.1 # homeassistant.components.ecovacs -deebot-client==6.0.2 +deebot-client==7.0.0 # homeassistant.components.ihc # homeassistant.components.namecheapdns diff --git a/tests/components/ecovacs/test_event.py b/tests/components/ecovacs/test_event.py index 0e7adaad954..104a3bfc69e 100644 --- a/tests/components/ecovacs/test_event.py +++ b/tests/components/ecovacs/test_event.py @@ -76,7 +76,7 @@ async def test_last_job( await notify_and_wait( hass, event_bus, - ReportStatsEvent(0, 1, "spotArea", "3", CleanJobStatus.MANUAL_STOPPED, [1]), + ReportStatsEvent(0, 1, "spotArea", "3", CleanJobStatus.MANUALLY_STOPPED, [1]), ) assert (state := hass.states.get(state.entity_id))