Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Binary Sensors for Tesla Wall Connector."""
2 
3 from dataclasses import dataclass
4 import logging
5 
7  BinarySensorDeviceClass,
8  BinarySensorEntity,
9  BinarySensorEntityDescription,
10 )
11 from homeassistant.config_entries import ConfigEntry
12 from homeassistant.const import EntityCategory
13 from homeassistant.core import HomeAssistant
14 from homeassistant.helpers.entity_platform import AddEntitiesCallback
15 
16 from . import WallConnectorData
17 from .const import DOMAIN, WALLCONNECTOR_DATA_VITALS
18 from .entity import WallConnectorEntity, WallConnectorLambdaValueGetterMixin
19 
20 _LOGGER = logging.getLogger(__name__)
21 
22 
23 @dataclass(frozen=True)
25  BinarySensorEntityDescription, WallConnectorLambdaValueGetterMixin
26 ):
27  """Binary Sensor entity description."""
28 
29 
30 WALL_CONNECTOR_SENSORS = [
32  key="vehicle_connected",
33  translation_key="vehicle_connected",
34  entity_category=EntityCategory.DIAGNOSTIC,
35  value_fn=lambda data: data[WALLCONNECTOR_DATA_VITALS].vehicle_connected,
36  device_class=BinarySensorDeviceClass.PLUG,
37  ),
39  key="contactor_closed",
40  translation_key="contactor_closed",
41  entity_category=EntityCategory.DIAGNOSTIC,
42  value_fn=lambda data: data[WALLCONNECTOR_DATA_VITALS].contactor_closed,
43  device_class=BinarySensorDeviceClass.BATTERY_CHARGING,
44  ),
45 ]
46 
47 
49  hass: HomeAssistant,
50  config_entry: ConfigEntry,
51  async_add_entities: AddEntitiesCallback,
52 ) -> None:
53  """Create the Wall Connector sensor devices."""
54  wall_connector_data = hass.data[DOMAIN][config_entry.entry_id]
55 
56  all_entities = [
57  WallConnectorBinarySensorEntity(wall_connector_data, description)
58  for description in WALL_CONNECTOR_SENSORS
59  ]
60 
61  async_add_entities(all_entities)
62 
63 
65  """Wall Connector Sensor Entity."""
66 
67  def __init__(
68  self,
69  wall_connectord_data: WallConnectorData,
70  description: WallConnectorBinarySensorDescription,
71  ) -> None:
72  """Initialize WallConnectorBinarySensorEntity."""
73  self.entity_descriptionentity_description = description
74  super().__init__(wall_connectord_data)
75 
76  @property
77  def is_on(self):
78  """Return the state of the sensor."""
79 
80  return self.entity_descriptionentity_description.value_fn(self.coordinator.data)
None __init__(self, WallConnectorData wall_connectord_data, WallConnectorBinarySensorDescription description)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)