Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Binary sensor module."""
2 
3 from collections.abc import Callable
4 from dataclasses import dataclass
5 from typing import Generic
6 
7 from deebot_client.capabilities import CapabilityEvent
8 from deebot_client.events.water_info import WaterInfoEvent
9 
11  BinarySensorEntity,
12  BinarySensorEntityDescription,
13 )
14 from homeassistant.const import EntityCategory
15 from homeassistant.core import HomeAssistant
16 from homeassistant.helpers.entity_platform import AddEntitiesCallback
17 
18 from . import EcovacsConfigEntry
19 from .entity import EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity, EventT
20 from .util import get_supported_entitites
21 
22 
23 @dataclass(kw_only=True, frozen=True)
25  BinarySensorEntityDescription,
26  EcovacsCapabilityEntityDescription,
27  Generic[EventT],
28 ):
29  """Class describing Deebot binary sensor entity."""
30 
31  value_fn: Callable[[EventT], bool | None]
32 
33 
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,
41  ),
42 )
43 
44 
46  hass: HomeAssistant,
47  config_entry: EcovacsConfigEntry,
48  async_add_entities: AddEntitiesCallback,
49 ) -> None:
50  """Add entities for passed config_entry in HA."""
53  config_entry.runtime_data, EcovacsBinarySensor, ENTITY_DESCRIPTIONS
54  )
55  )
56 
57 
59  EcovacsDescriptionEntity[CapabilityEvent[EventT]],
60  BinarySensorEntity,
61 ):
62  """Ecovacs binary sensor."""
63 
64  entity_description: EcovacsBinarySensorEntityDescription
65 
66  async def async_added_to_hass(self) -> None:
67  """Set up the event listeners now that hass is ready."""
68  await super().async_added_to_hass()
69 
70  async def on_event(event: EventT) -> None:
71  self._attr_is_on_attr_is_on = self.entity_descriptionentity_description.value_fn(event)
72  self.async_write_ha_stateasync_write_ha_state()
73 
74  self._subscribe_subscribe(self._capability_capability.event, on_event)
None _subscribe(self, type[EventT] event_type, Callable[[EventT], Coroutine[Any, Any, None]] callback)
Definition: entity.py:87
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)
Definition: util.py:37