Home Assistant Unofficial Reference 2024.12.1
light.py
Go to the documentation of this file.
1 """Support for SleepIQ outlet lights."""
2 
3 import logging
4 from typing import Any
5 
6 from asyncsleepiq import SleepIQBed, SleepIQLight
7 
8 from homeassistant.components.light import ColorMode, LightEntity
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
14 from .coordinator import SleepIQData, SleepIQDataUpdateCoordinator
15 from .entity import SleepIQBedEntity
16 
17 _LOGGER = logging.getLogger(__name__)
18 
19 
21  hass: HomeAssistant,
22  entry: ConfigEntry,
23  async_add_entities: AddEntitiesCallback,
24 ) -> None:
25  """Set up the SleepIQ bed lights."""
26  data: SleepIQData = hass.data[DOMAIN][entry.entry_id]
28  SleepIQLightEntity(data.data_coordinator, bed, light)
29  for bed in data.client.beds.values()
30  for light in bed.foundation.lights
31  )
32 
33 
34 class SleepIQLightEntity(SleepIQBedEntity[SleepIQDataUpdateCoordinator], LightEntity):
35  """Representation of a light."""
36 
37  _attr_color_mode = ColorMode.ONOFF
38  _attr_supported_color_modes = {ColorMode.ONOFF}
39 
40  def __init__(
41  self,
42  coordinator: SleepIQDataUpdateCoordinator,
43  bed: SleepIQBed,
44  light: SleepIQLight,
45  ) -> None:
46  """Initialize the light."""
47  self.lightlight = light
48  super().__init__(coordinator, bed)
49  self._attr_name_attr_name = f"SleepNumber {bed.name} Light {light.outlet_id}"
50  self._attr_unique_id_attr_unique_id = f"{bed.id}-light-{light.outlet_id}"
51 
52  async def async_turn_on(self, **kwargs: Any) -> None:
53  """Turn on light."""
54  await self.lightlight.turn_on()
55  self._handle_coordinator_update()
56 
57  async def async_turn_off(self, **kwargs: Any) -> None:
58  """Turn off light."""
59  await self.lightlight.turn_off()
60  self._handle_coordinator_update()
61 
62  @callback
63  def _async_update_attrs(self) -> None:
64  """Update light attributes."""
65  self._attr_is_on_attr_is_on = self.lightlight.is_on
None __init__(self, SleepIQDataUpdateCoordinator coordinator, SleepIQBed bed, SleepIQLight light)
Definition: light.py:45
None turn_off(self, **Any kwargs)
Definition: entity.py:1705
None turn_on(self, **Any kwargs)
Definition: entity.py:1697
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: light.py:24