Home Assistant Unofficial Reference 2024.12.1
light.py
Go to the documentation of this file.
1 """Nice G.O. light."""
2 
3 import logging
4 from typing import TYPE_CHECKING, Any
5 
6 from aiohttp import ClientError
7 from nice_go import ApiError
8 
9 from homeassistant.components.light import ColorMode, LightEntity
10 from homeassistant.const import Platform
11 from homeassistant.core import HomeAssistant
12 from homeassistant.exceptions import HomeAssistantError
13 from homeassistant.helpers.entity_platform import AddEntitiesCallback
14 
15 from . import NiceGOConfigEntry
16 from .const import (
17  DOMAIN,
18  KNOWN_UNSUPPORTED_DEVICE_TYPES,
19  SUPPORTED_DEVICE_TYPES,
20  UNSUPPORTED_DEVICE_WARNING,
21 )
22 from .entity import NiceGOEntity
23 
24 _LOGGER = logging.getLogger(__name__)
25 
26 
28  hass: HomeAssistant,
29  config_entry: NiceGOConfigEntry,
30  async_add_entities: AddEntitiesCallback,
31 ) -> None:
32  """Set up Nice G.O. light."""
33 
34  coordinator = config_entry.runtime_data
35 
36  entities = []
37 
38  for device_id, device_data in coordinator.data.items():
39  if device_data.type in SUPPORTED_DEVICE_TYPES[Platform.LIGHT]:
40  entities.append(NiceGOLightEntity(coordinator, device_id, device_data.name))
41  elif device_data.type not in KNOWN_UNSUPPORTED_DEVICE_TYPES[Platform.LIGHT]:
42  _LOGGER.warning(
43  UNSUPPORTED_DEVICE_WARNING,
44  device_data.name,
45  device_data.type,
46  device_data.type,
47  )
48 
49  async_add_entities(entities)
50 
51 
53  """Light for Nice G.O. devices."""
54 
55  _attr_color_mode = ColorMode.ONOFF
56  _attr_supported_color_modes = {ColorMode.ONOFF}
57  _attr_translation_key = "light"
58 
59  @property
60  def is_on(self) -> bool:
61  """Return if the light is on or not."""
62  if TYPE_CHECKING:
63  assert self.datadatadata.light_status is not None
64  return self.datadatadata.light_status
65 
66  async def async_turn_on(self, **kwargs: Any) -> None:
67  """Turn on the light."""
68 
69  try:
70  await self.coordinator.api.light_on(self._device_id_device_id)
71  except (ApiError, ClientError) as error:
72  raise HomeAssistantError(
73  translation_domain=DOMAIN,
74  translation_key="light_on_error",
75  translation_placeholders={"exception": str(error)},
76  ) from error
77 
78  async def async_turn_off(self, **kwargs: Any) -> None:
79  """Turn off the light."""
80 
81  try:
82  await self.coordinator.api.light_off(self._device_id_device_id)
83  except (ApiError, ClientError) as error:
84  raise HomeAssistantError(
85  translation_domain=DOMAIN,
86  translation_key="light_off_error",
87  translation_placeholders={"exception": str(error)},
88  ) from error
None async_setup_entry(HomeAssistant hass, NiceGOConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: light.py:31