Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for SleepIQ sensors."""
2 
3 from asyncsleepiq import SleepIQBed, SleepIQSleeper
4 
6  BinarySensorDeviceClass,
7  BinarySensorEntity,
8 )
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.core import HomeAssistant, callback
11 from homeassistant.helpers.entity_platform import AddEntitiesCallback
12 
13 from .const import DOMAIN, ICON_EMPTY, ICON_OCCUPIED, IS_IN_BED
14 from .coordinator import SleepIQData, SleepIQDataUpdateCoordinator
15 from .entity import SleepIQSleeperEntity
16 
17 
19  hass: HomeAssistant,
20  entry: ConfigEntry,
21  async_add_entities: AddEntitiesCallback,
22 ) -> None:
23  """Set up the SleepIQ bed binary sensors."""
24  data: SleepIQData = hass.data[DOMAIN][entry.entry_id]
26  IsInBedBinarySensor(data.data_coordinator, bed, sleeper)
27  for bed in data.client.beds.values()
28  for sleeper in bed.sleepers
29  )
30 
31 
33  SleepIQSleeperEntity[SleepIQDataUpdateCoordinator], BinarySensorEntity
34 ):
35  """Implementation of a SleepIQ presence sensor."""
36 
37  _attr_device_class = BinarySensorDeviceClass.OCCUPANCY
38 
39  def __init__(
40  self,
41  coordinator: SleepIQDataUpdateCoordinator,
42  bed: SleepIQBed,
43  sleeper: SleepIQSleeper,
44  ) -> None:
45  """Initialize the sensor."""
46  super().__init__(coordinator, bed, sleeper, IS_IN_BED)
47 
48  @callback
49  def _async_update_attrs(self) -> None:
50  """Update sensor attributes."""
51  self._attr_is_on_attr_is_on = self.sleeper.in_bed
52  self._attr_icon_attr_icon = ICON_OCCUPIED if self.sleeper.in_bed else ICON_EMPTY
None __init__(self, SleepIQDataUpdateCoordinator coordinator, SleepIQBed bed, SleepIQSleeper sleeper)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)