Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Binary sensor platform for Hass.io addons."""
2 
3 from __future__ import annotations
4 
5 from dataclasses import dataclass
6 
8  BinarySensorDeviceClass,
9  BinarySensorEntity,
10  BinarySensorEntityDescription,
11 )
12 from homeassistant.config_entries import ConfigEntry
13 from homeassistant.core import HomeAssistant
14 from homeassistant.helpers.entity_platform import AddEntitiesCallback
15 
16 from .const import ADDONS_COORDINATOR, ATTR_STARTED, ATTR_STATE, DATA_KEY_ADDONS
17 from .entity import HassioAddonEntity
18 
19 
20 @dataclass(frozen=True)
22  """Hassio binary sensor entity description."""
23 
24  target: str | None = None
25 
26 
27 ADDON_ENTITY_DESCRIPTIONS = (
29  device_class=BinarySensorDeviceClass.RUNNING,
30  entity_registry_enabled_default=False,
31  key=ATTR_STATE,
32  translation_key="state",
33  target=ATTR_STARTED,
34  ),
35 )
36 
37 
39  hass: HomeAssistant,
40  config_entry: ConfigEntry,
41  async_add_entities: AddEntitiesCallback,
42 ) -> None:
43  """Binary sensor set up for Hass.io config entry."""
44  coordinator = hass.data[ADDONS_COORDINATOR]
45 
48  addon=addon,
49  coordinator=coordinator,
50  entity_description=entity_description,
51  )
52  for addon in coordinator.data[DATA_KEY_ADDONS].values()
53  for entity_description in ADDON_ENTITY_DESCRIPTIONS
54  )
55 
56 
58  """Binary sensor for Hass.io add-ons."""
59 
60  entity_description: HassioBinarySensorEntityDescription
61 
62  @property
63  def is_on(self) -> bool:
64  """Return true if the binary sensor is on."""
65  value = self.coordinator.data[DATA_KEY_ADDONS][self._addon_slug_addon_slug][
66  self.entity_descriptionentity_description.key
67  ]
68  if self.entity_descriptionentity_description.target is None:
69  return value
70  return value == self.entity_descriptionentity_description.target
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)