Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for V2C binary sensors."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Callable
6 from dataclasses import dataclass
7 
8 from pytrydan import Trydan
9 
11  BinarySensorDeviceClass,
12  BinarySensorEntity,
13  BinarySensorEntityDescription,
14 )
15 from homeassistant.core import HomeAssistant
16 from homeassistant.helpers.entity_platform import AddEntitiesCallback
17 
18 from . import V2CConfigEntry
19 from .coordinator import V2CUpdateCoordinator
20 from .entity import V2CBaseEntity
21 
22 
23 @dataclass(frozen=True, kw_only=True)
25  """Describes an EVSE binary sensor entity."""
26 
27  value_fn: Callable[[Trydan], bool]
28 
29 
30 TRYDAN_SENSORS = (
32  key="connected",
33  translation_key="connected",
34  device_class=BinarySensorDeviceClass.PLUG,
35  value_fn=lambda evse: evse.connected,
36  ),
38  key="charging",
39  translation_key="charging",
40  device_class=BinarySensorDeviceClass.BATTERY_CHARGING,
41  value_fn=lambda evse: evse.charging,
42  ),
44  key="ready",
45  translation_key="ready",
46  value_fn=lambda evse: evse.ready,
47  ),
48 )
49 
50 
52  hass: HomeAssistant,
53  config_entry: V2CConfigEntry,
54  async_add_entities: AddEntitiesCallback,
55 ) -> None:
56  """Set up V2C binary sensor platform."""
57  coordinator = config_entry.runtime_data
58 
60  V2CBinarySensorBaseEntity(coordinator, description, config_entry.entry_id)
61  for description in TRYDAN_SENSORS
62  )
63 
64 
66  """Defines a base V2C binary_sensor entity."""
67 
68  entity_description: V2CBinarySensorEntityDescription
69 
70  def __init__(
71  self,
72  coordinator: V2CUpdateCoordinator,
73  description: V2CBinarySensorEntityDescription,
74  entry_id: str,
75  ) -> None:
76  """Init the V2C base entity."""
77  super().__init__(coordinator, description)
78  self._attr_unique_id_attr_unique_id = f"{entry_id}_{description.key}"
79 
80  @property
81  def is_on(self) -> bool:
82  """Return the state of the V2C binary_sensor."""
83  return self.entity_descriptionentity_description.value_fn(self.coordinator.evse)
None __init__(self, V2CUpdateCoordinator coordinator, V2CBinarySensorEntityDescription description, str entry_id)
None async_setup_entry(HomeAssistant hass, V2CConfigEntry config_entry, AddEntitiesCallback async_add_entities)