Home Assistant Unofficial Reference 2024.12.1
light.py
Go to the documentation of this file.
1 """Support for control of ElkM1 lighting (X10, UPB, etc)."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from elkm1_lib.elements import Element
8 from elkm1_lib.elk import Elk
9 from elkm1_lib.lights import Light
10 
11 from homeassistant.components.light import ATTR_BRIGHTNESS, ColorMode, LightEntity
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 
15 from . import ElkM1ConfigEntry
16 from .entity import ElkEntity, create_elk_entities
17 from .models import ELKM1Data
18 
19 
21  hass: HomeAssistant,
22  config_entry: ElkM1ConfigEntry,
23  async_add_entities: AddEntitiesCallback,
24 ) -> None:
25  """Set up the Elk light platform."""
26  elk_data = config_entry.runtime_data
27  elk = elk_data.elk
28  entities: list[ElkEntity] = []
29  create_elk_entities(elk_data, elk.lights, "plc", ElkLight, entities)
30  async_add_entities(entities)
31 
32 
34  """Representation of an Elk lighting device."""
35 
36  _attr_color_mode = ColorMode.BRIGHTNESS
37  _attr_supported_color_modes = {ColorMode.BRIGHTNESS}
38  _element: Light
39 
40  def __init__(self, element: Element, elk: Elk, elk_data: ELKM1Data) -> None:
41  """Initialize the Elk light."""
42  super().__init__(element, elk, elk_data)
43  self._brightness_brightness = self._element_element.status
44 
45  @property
46  def brightness(self) -> int:
47  """Get the brightness."""
48  return self._brightness_brightness
49 
50  @property
51  def is_on(self) -> bool:
52  """Get the current brightness."""
53  return self._brightness_brightness != 0
54 
55  def _element_changed(self, element: Element, changeset: Any) -> None:
56  status = self._element_element.status if self._element_element.status != 1 else 100
57  self._brightness_brightness = round(status * 2.55)
58 
59  async def async_turn_on(self, **kwargs: Any) -> None:
60  """Turn on the light."""
61  self._element_element.level(round(kwargs.get(ATTR_BRIGHTNESS, 255) / 2.55))
62 
63  async def async_turn_off(self, **kwargs: Any) -> None:
64  """Turn off the light."""
65  self._element_element.level(0)
None __init__(self, Element element, Elk elk, ELKM1Data elk_data)
Definition: light.py:40
None async_turn_off(self, **Any kwargs)
Definition: light.py:63
None async_turn_on(self, **Any kwargs)
Definition: light.py:59
None _element_changed(self, Element element, Any changeset)
Definition: light.py:55
list[ElkEntity]|None create_elk_entities(ELKM1Data elk_data, Iterable[Element] elk_elements, str element_type, Any class_, list[ElkEntity] entities)
Definition: entity.py:30
None async_setup_entry(HomeAssistant hass, ElkM1ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: light.py:24