1 """Binary sensor module."""
3 from collections.abc
import Callable
4 from dataclasses
import dataclass
5 from typing
import Generic
7 from deebot_client.capabilities
import CapabilityEvent
8 from deebot_client.events.water_info
import WaterInfoEvent
12 BinarySensorEntityDescription,
18 from .
import EcovacsConfigEntry
19 from .entity
import EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity, EventT
20 from .util
import get_supported_entitites
23 @dataclass(kw_only=True, frozen=True)
25 BinarySensorEntityDescription,
26 EcovacsCapabilityEntityDescription,
29 """Class describing Deebot binary sensor entity."""
31 value_fn: Callable[[EventT], bool |
None]
34 ENTITY_DESCRIPTIONS: tuple[EcovacsBinarySensorEntityDescription, ...] = (
35 EcovacsBinarySensorEntityDescription[WaterInfoEvent](
36 capability_fn=
lambda caps: caps.water,
37 value_fn=
lambda e: e.mop_attached,
38 key=
"water_mop_attached",
39 translation_key=
"water_mop_attached",
40 entity_category=EntityCategory.DIAGNOSTIC,
47 config_entry: EcovacsConfigEntry,
48 async_add_entities: AddEntitiesCallback,
50 """Add entities for passed config_entry in HA."""
53 config_entry.runtime_data, EcovacsBinarySensor, ENTITY_DESCRIPTIONS
59 EcovacsDescriptionEntity[CapabilityEvent[EventT]],
62 """Ecovacs binary sensor."""
64 entity_description: EcovacsBinarySensorEntityDescription
67 """Set up the event listeners now that hass is ready."""
70 async
def on_event(event: EventT) ->
None:
None async_added_to_hass(self)
None _subscribe(self, type[EventT] event_type, Callable[[EventT], Coroutine[Any, Any, None]] callback)
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)