Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Binary sensor entities for LIFX integration."""
2 
3 from __future__ import annotations
4 
6  BinarySensorDeviceClass,
7  BinarySensorEntity,
8  BinarySensorEntityDescription,
9 )
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.const import EntityCategory
12 from homeassistant.core import HomeAssistant, callback
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 
15 from .const import DOMAIN, HEV_CYCLE_STATE
16 from .coordinator import LIFXUpdateCoordinator
17 from .entity import LIFXEntity
18 from .util import lifx_features
19 
20 HEV_CYCLE_STATE_SENSOR = BinarySensorEntityDescription(
21  key=HEV_CYCLE_STATE,
22  translation_key="clean_cycle",
23  entity_category=EntityCategory.DIAGNOSTIC,
24  device_class=BinarySensorDeviceClass.RUNNING,
25 )
26 
27 
29  hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
30 ) -> None:
31  """Set up LIFX from a config entry."""
32  coordinator: LIFXUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
33 
34  if lifx_features(coordinator.device)["hev"]:
36  [LIFXHevCycleBinarySensorEntity(coordinator, HEV_CYCLE_STATE_SENSOR)]
37  )
38 
39 
41  """LIFX HEV cycle state binary sensor."""
42 
43  def __init__(
44  self,
45  coordinator: LIFXUpdateCoordinator,
46  description: BinarySensorEntityDescription,
47  ) -> None:
48  """Initialise the sensor."""
49  super().__init__(coordinator)
50  self.entity_descriptionentity_description = description
51  self._attr_unique_id_attr_unique_id = f"{coordinator.serial_number}_{description.key}"
52  self._async_update_attrs_async_update_attrs()
53 
54  @callback
55  def _handle_coordinator_update(self) -> None:
56  """Handle updated data from the coordinator."""
57  self._async_update_attrs_async_update_attrs()
59 
60  @callback
61  def _async_update_attrs(self) -> None:
62  """Handle coordinator updates."""
63  self._attr_is_on_attr_is_on = self.coordinator.async_get_hev_cycle_state()
None __init__(self, LIFXUpdateCoordinator coordinator, BinarySensorEntityDescription description)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
dict[str, Any] lifx_features(Light bulb)
Definition: util.py:78