Files
core/homeassistant/components/saunum/light.py
2025-11-24 12:02:46 +01:00

72 lines
2.3 KiB
Python

"""Light platform for Saunum Leil Sauna Control Unit."""
from __future__ import annotations
from typing import Any
from pysaunum import SaunumException
from homeassistant.components.light import ColorMode, LightEntity
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import LeilSaunaConfigEntry
from .const import DOMAIN
from .entity import LeilSaunaEntity
PARALLEL_UPDATES = 1
async def async_setup_entry(
hass: HomeAssistant,
entry: LeilSaunaConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up Saunum Leil Sauna light entity."""
coordinator = entry.runtime_data
async_add_entities([LeilSaunaLight(coordinator)])
class LeilSaunaLight(LeilSaunaEntity, LightEntity):
"""Representation of a Saunum Leil Sauna light entity."""
_attr_translation_key = "light"
_attr_color_mode = ColorMode.ONOFF
_attr_supported_color_modes = {ColorMode.ONOFF}
def __init__(self, coordinator) -> None:
"""Initialize the light entity."""
super().__init__(coordinator)
# Override unique_id to differentiate from climate entity
self._attr_unique_id = f"{coordinator.config_entry.entry_id}_light"
@property
def is_on(self) -> bool | None:
"""Return True if light is on."""
return self.coordinator.data.light_on
async def async_turn_on(self, **kwargs: Any) -> None:
"""Turn the light on."""
try:
await self.coordinator.client.async_set_light_control(True)
except SaunumException as err:
raise HomeAssistantError(
translation_domain=DOMAIN,
translation_key="set_light_on_failed",
) from err
await self.coordinator.async_request_refresh()
async def async_turn_off(self, **kwargs: Any) -> None:
"""Turn the light off."""
try:
await self.coordinator.client.async_set_light_control(False)
except SaunumException as err:
raise HomeAssistantError(
translation_domain=DOMAIN,
translation_key="set_light_off_failed",
) from err
await self.coordinator.async_request_refresh()