Home Assistant Unofficial Reference 2024.12.1
light.py
Go to the documentation of this file.
1 """Light integration microBees."""
2 
3 from typing import Any
4 
5 from homeassistant.components.light import ATTR_RGBW_COLOR, ColorMode, LightEntity
6 from homeassistant.config_entries import ConfigEntry
7 from homeassistant.core import HomeAssistant
8 from homeassistant.exceptions import HomeAssistantError
9 from homeassistant.helpers.entity_platform import AddEntitiesCallback
10 
11 from .const import DOMAIN
12 from .coordinator import MicroBeesUpdateCoordinator
13 from .entity import MicroBeesActuatorEntity
14 
15 
17  hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
18 ) -> None:
19  """Config entry."""
20  coordinator: MicroBeesUpdateCoordinator = hass.data[DOMAIN][
21  entry.entry_id
22  ].coordinator
24  MBLight(coordinator, bee_id, light.id)
25  for bee_id, bee in coordinator.data.bees.items()
26  if bee.productID in (31, 79)
27  for light in bee.actuators
28  )
29 
30 
32  """Representation of a microBees light."""
33 
34  _attr_supported_color_modes = {ColorMode.RGBW}
35 
36  def __init__(
37  self,
38  coordinator: MicroBeesUpdateCoordinator,
39  bee_id: int,
40  actuator_id: int,
41  ) -> None:
42  """Initialize the microBees light."""
43  super().__init__(coordinator, bee_id, actuator_id)
44  self._attr_rgbw_color_attr_rgbw_color = self.actuatoractuator.configuration.color
45 
46  @property
47  def name(self) -> str:
48  """Name of the cover."""
49  return self.actuatoractuator.name
50 
51  @property
52  def is_on(self) -> bool:
53  """Status of the light."""
54  return self.actuatoractuator.value
55 
56  async def async_turn_on(self, **kwargs: Any) -> None:
57  """Turn on the light."""
58  if ATTR_RGBW_COLOR in kwargs:
59  self._attr_rgbw_color_attr_rgbw_color = kwargs[ATTR_RGBW_COLOR]
60  sendCommand = await self.coordinator.microbees.sendCommand(
61  self.actuator_idactuator_id, 1, color=self._attr_rgbw_color_attr_rgbw_color
62  )
63  if not sendCommand:
64  raise HomeAssistantError(f"Failed to turn on {self.name}")
65 
66  self.actuatoractuator.value = True
67  self.async_write_ha_stateasync_write_ha_state()
68 
69  async def async_turn_off(self, **kwargs: Any) -> None:
70  """Turn off the light."""
71  sendCommand = await self.coordinator.microbees.sendCommand(
72  self.actuator_idactuator_id, 0, color=self._attr_rgbw_color_attr_rgbw_color
73  )
74  if not sendCommand:
75  raise HomeAssistantError(f"Failed to turn off {self.name}")
76 
77  self.actuatoractuator.value = False
78  self.async_write_ha_stateasync_write_ha_state()
None async_turn_on(self, **Any kwargs)
Definition: light.py:56
None async_turn_off(self, **Any kwargs)
Definition: light.py:69
None __init__(self, MicroBeesUpdateCoordinator coordinator, int bee_id, int actuator_id)
Definition: light.py:41
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: light.py:18