Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 17 additions & 21 deletions homeassistant/components/tasmota/light.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,9 @@
ATTR_HS_COLOR,
ATTR_TRANSITION,
ATTR_WHITE,
COLOR_MODE_BRIGHTNESS,
COLOR_MODE_COLOR_TEMP,
COLOR_MODE_HS,
COLOR_MODE_ONOFF,
COLOR_MODE_WHITE,
SUPPORT_EFFECT,
SUPPORT_TRANSITION,
ColorMode,
LightEntity,
brightness_supported,
)
Expand Down Expand Up @@ -132,23 +128,23 @@ def _setup_from_entity(self) -> None:
if light_type in [LIGHT_TYPE_RGB, LIGHT_TYPE_RGBW, LIGHT_TYPE_RGBCW]:
# Mark HS support for RGBW light because we don't have direct control over the
# white channel, so the base component's RGB->RGBW translation does not work
self._supported_color_modes.add(COLOR_MODE_HS)
self._color_mode = COLOR_MODE_HS
self._supported_color_modes.add(ColorMode.HS)
self._color_mode = ColorMode.HS

if light_type == LIGHT_TYPE_RGBW:
self._supported_color_modes.add(COLOR_MODE_WHITE)
self._supported_color_modes.add(ColorMode.WHITE)

if light_type in [LIGHT_TYPE_COLDWARM, LIGHT_TYPE_RGBCW]:
self._supported_color_modes.add(COLOR_MODE_COLOR_TEMP)
self._color_mode = COLOR_MODE_COLOR_TEMP
self._supported_color_modes.add(ColorMode.COLOR_TEMP)
self._color_mode = ColorMode.COLOR_TEMP

if light_type != LIGHT_TYPE_NONE and not self._supported_color_modes:
self._supported_color_modes.add(COLOR_MODE_BRIGHTNESS)
self._color_mode = COLOR_MODE_BRIGHTNESS
self._supported_color_modes.add(ColorMode.BRIGHTNESS)
self._color_mode = ColorMode.BRIGHTNESS

if not self._supported_color_modes:
self._supported_color_modes.add(COLOR_MODE_ONOFF)
self._color_mode = COLOR_MODE_ONOFF
self._supported_color_modes.add(ColorMode.ONOFF)
self._color_mode = ColorMode.ONOFF

if light_type in [LIGHT_TYPE_RGB, LIGHT_TYPE_RGBW, LIGHT_TYPE_RGBCW]:
supported_features |= SUPPORT_EFFECT
Expand Down Expand Up @@ -180,15 +176,15 @@ def state_updated(self, state: bool, **kwargs: Any) -> None:
if self._tasmota_entity.light_type == LIGHT_TYPE_RGBW:
# Tasmota does not support RGBW mode, set mode to white or hs
if self._white_value == 0:
self._color_mode = COLOR_MODE_HS
self._color_mode = ColorMode.HS
else:
self._color_mode = COLOR_MODE_WHITE
self._color_mode = ColorMode.WHITE
elif self._tasmota_entity.light_type == LIGHT_TYPE_RGBCW:
# Tasmota does not support RGBWW mode, set mode to ct or hs
if self._white_value == 0:
self._color_mode = COLOR_MODE_HS
self._color_mode = ColorMode.HS
else:
self._color_mode = COLOR_MODE_COLOR_TEMP
self._color_mode = ColorMode.COLOR_TEMP

self.async_write_ha_state()

Expand Down Expand Up @@ -256,11 +252,11 @@ async def async_turn_on(self, **kwargs: Any) -> None:

attributes: dict[str, Any] = {}

if ATTR_HS_COLOR in kwargs and COLOR_MODE_HS in supported_color_modes:
if ATTR_HS_COLOR in kwargs and ColorMode.HS in supported_color_modes:
hs_color = kwargs[ATTR_HS_COLOR]
attributes["color_hs"] = [hs_color[0], hs_color[1]]

if ATTR_WHITE in kwargs and COLOR_MODE_WHITE in supported_color_modes:
if ATTR_WHITE in kwargs and ColorMode.WHITE in supported_color_modes:
attributes["white_value"] = scale_brightness(kwargs[ATTR_WHITE])

if ATTR_TRANSITION in kwargs:
Expand All @@ -269,7 +265,7 @@ async def async_turn_on(self, **kwargs: Any) -> None:
if ATTR_BRIGHTNESS in kwargs and brightness_supported(supported_color_modes):
attributes["brightness"] = scale_brightness(kwargs[ATTR_BRIGHTNESS])

if ATTR_COLOR_TEMP in kwargs and COLOR_MODE_COLOR_TEMP in supported_color_modes:
if ATTR_COLOR_TEMP in kwargs and ColorMode.COLOR_TEMP in supported_color_modes:
attributes["color_temp"] = int(kwargs[ATTR_COLOR_TEMP])

if ATTR_EFFECT in kwargs:
Expand Down