1 """Ecovacs switch module."""
3 from dataclasses
import dataclass
6 from deebot_client.capabilities
import CapabilitySetEnable
7 from deebot_client.events
import EnableEvent
14 from .
import EcovacsConfigEntry
16 EcovacsCapabilityEntityDescription,
17 EcovacsDescriptionEntity,
20 from .util
import get_supported_entitites
23 @dataclass(kw_only=True, frozen=True)
25 SwitchEntityDescription,
26 EcovacsCapabilityEntityDescription[CapabilitySetEnable],
28 """Ecovacs switch entity description."""
31 ENTITY_DESCRIPTIONS: tuple[EcovacsSwitchEntityDescription, ...] = (
33 capability_fn=
lambda c: c.settings.advanced_mode,
35 translation_key=
"advanced_mode",
36 entity_registry_enabled_default=
False,
37 entity_category=EntityCategory.CONFIG,
40 capability_fn=
lambda c: c.clean.continuous,
41 key=
"continuous_cleaning",
42 translation_key=
"continuous_cleaning",
43 entity_registry_enabled_default=
False,
44 entity_category=EntityCategory.CONFIG,
47 capability_fn=
lambda c: c.settings.carpet_auto_fan_boost,
48 key=
"carpet_auto_fan_boost",
49 translation_key=
"carpet_auto_fan_boost",
50 entity_registry_enabled_default=
False,
51 entity_category=EntityCategory.CONFIG,
54 capability_fn=
lambda c: c.clean.preference,
55 key=
"clean_preference",
56 translation_key=
"clean_preference",
57 entity_registry_enabled_default=
False,
58 entity_category=EntityCategory.CONFIG,
61 capability_fn=
lambda c: c.settings.true_detect,
63 translation_key=
"true_detect",
64 entity_registry_enabled_default=
False,
65 entity_category=EntityCategory.CONFIG,
68 capability_fn=
lambda c: c.settings.border_switch,
70 translation_key=
"border_switch",
71 entity_registry_enabled_default=
False,
72 entity_category=EntityCategory.CONFIG,
75 capability_fn=
lambda c: c.settings.child_lock,
77 translation_key=
"child_lock",
78 entity_registry_enabled_default=
False,
79 entity_category=EntityCategory.CONFIG,
82 capability_fn=
lambda c: c.settings.moveup_warning,
83 key=
"move_up_warning",
84 translation_key=
"move_up_warning",
85 entity_registry_enabled_default=
False,
86 entity_category=EntityCategory.CONFIG,
89 capability_fn=
lambda c: c.settings.cross_map_border_warning,
90 key=
"cross_map_border_warning",
91 translation_key=
"cross_map_border_warning",
92 entity_registry_enabled_default=
False,
93 entity_category=EntityCategory.CONFIG,
96 capability_fn=
lambda c: c.settings.safe_protect,
98 translation_key=
"safe_protect",
99 entity_registry_enabled_default=
False,
100 entity_category=EntityCategory.CONFIG,
107 config_entry: EcovacsConfigEntry,
108 async_add_entities: AddEntitiesCallback,
110 """Add entities for passed config_entry in HA."""
111 controller = config_entry.runtime_data
113 controller, EcovacsSwitchEntity, ENTITY_DESCRIPTIONS
120 EcovacsDescriptionEntity[CapabilitySetEnable],
123 """Ecovacs switch entity."""
125 entity_description: EcovacsSwitchEntityDescription
130 """Set up the event listeners now that hass is ready."""
133 async
def on_event(event: EnableEvent) ->
None:
140 """Turn the entity on."""
144 """Turn the entity off."""
None _subscribe(self, type[EventT] event_type, Callable[[EventT], Coroutine[Any, Any, None]] callback)
None async_turn_on(self, **Any kwargs)
None async_added_to_hass(self)
None async_turn_off(self, **Any kwargs)
None async_write_ha_state(self)
None async_setup_entry(HomeAssistant hass, EcovacsConfigEntry config_entry, AddEntitiesCallback async_add_entities)
list[EcovacsEntity] get_supported_entitites(EcovacsController controller, type[EcovacsDescriptionEntity] entity_class, tuple[EcovacsCapabilityEntityDescription,...] descriptions)