mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 15:17:35 +00:00
parent
8b3bad1f54
commit
f36ee88a87
@ -50,6 +50,7 @@ from homeassistant.util import color as color_util
|
|||||||
|
|
||||||
from . import TriggerUpdateCoordinator
|
from . import TriggerUpdateCoordinator
|
||||||
from .const import CONF_OBJECT_ID, CONF_PICTURE, DOMAIN
|
from .const import CONF_OBJECT_ID, CONF_PICTURE, DOMAIN
|
||||||
|
from .entity import AbstractTemplateEntity
|
||||||
from .template_entity import (
|
from .template_entity import (
|
||||||
LEGACY_FIELDS as TEMPLATE_ENTITY_LEGACY_FIELDS,
|
LEGACY_FIELDS as TEMPLATE_ENTITY_LEGACY_FIELDS,
|
||||||
TEMPLATE_ENTITY_AVAILABILITY_SCHEMA,
|
TEMPLATE_ENTITY_AVAILABILITY_SCHEMA,
|
||||||
@ -272,16 +273,14 @@ async def async_setup_platform(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class AbstractTemplateLight(LightEntity):
|
class AbstractTemplateLight(AbstractTemplateEntity, LightEntity):
|
||||||
"""Representation of a template lights features."""
|
"""Representation of a template lights features."""
|
||||||
|
|
||||||
def __init__(
|
def __init__( # pylint: disable=super-init-not-called
|
||||||
self, config: dict[str, Any], initial_state: bool | None = False
|
self, config: dict[str, Any], initial_state: bool | None = False
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize the features."""
|
"""Initialize the features."""
|
||||||
|
|
||||||
self._registered_scripts: list[str] = []
|
|
||||||
|
|
||||||
# Template attributes
|
# Template attributes
|
||||||
self._template = config.get(CONF_STATE)
|
self._template = config.get(CONF_STATE)
|
||||||
self._level_template = config.get(CONF_LEVEL)
|
self._level_template = config.get(CONF_LEVEL)
|
||||||
@ -312,7 +311,7 @@ class AbstractTemplateLight(LightEntity):
|
|||||||
self._color_mode: ColorMode | None = None
|
self._color_mode: ColorMode | None = None
|
||||||
self._supported_color_modes: set[ColorMode] | None = None
|
self._supported_color_modes: set[ColorMode] | None = None
|
||||||
|
|
||||||
def _register_scripts(
|
def _iterate_scripts(
|
||||||
self, config: dict[str, Any]
|
self, config: dict[str, Any]
|
||||||
) -> Generator[tuple[str, Sequence[dict[str, Any]], ColorMode | None]]:
|
) -> Generator[tuple[str, Sequence[dict[str, Any]], ColorMode | None]]:
|
||||||
for action_id, color_mode in (
|
for action_id, color_mode in (
|
||||||
@ -327,7 +326,6 @@ class AbstractTemplateLight(LightEntity):
|
|||||||
(CONF_RGBWW_ACTION, ColorMode.RGBWW),
|
(CONF_RGBWW_ACTION, ColorMode.RGBWW),
|
||||||
):
|
):
|
||||||
if (action_config := config.get(action_id)) is not None:
|
if (action_config := config.get(action_id)) is not None:
|
||||||
self._registered_scripts.append(action_id)
|
|
||||||
yield (action_id, action_config, color_mode)
|
yield (action_id, action_config, color_mode)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -522,7 +520,7 @@ class AbstractTemplateLight(LightEntity):
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
ATTR_COLOR_TEMP_KELVIN in kwargs
|
ATTR_COLOR_TEMP_KELVIN in kwargs
|
||||||
and (script := CONF_TEMPERATURE_ACTION) in self._registered_scripts
|
and (script := CONF_TEMPERATURE_ACTION) in self._action_scripts
|
||||||
):
|
):
|
||||||
common_params["color_temp"] = color_util.color_temperature_kelvin_to_mired(
|
common_params["color_temp"] = color_util.color_temperature_kelvin_to_mired(
|
||||||
kwargs[ATTR_COLOR_TEMP_KELVIN]
|
kwargs[ATTR_COLOR_TEMP_KELVIN]
|
||||||
@ -532,7 +530,7 @@ class AbstractTemplateLight(LightEntity):
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
ATTR_EFFECT in kwargs
|
ATTR_EFFECT in kwargs
|
||||||
and (script := CONF_EFFECT_ACTION) in self._registered_scripts
|
and (script := CONF_EFFECT_ACTION) in self._action_scripts
|
||||||
):
|
):
|
||||||
assert self._effect_list is not None
|
assert self._effect_list is not None
|
||||||
effect = kwargs[ATTR_EFFECT]
|
effect = kwargs[ATTR_EFFECT]
|
||||||
@ -551,7 +549,7 @@ class AbstractTemplateLight(LightEntity):
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
ATTR_HS_COLOR in kwargs
|
ATTR_HS_COLOR in kwargs
|
||||||
and (script := CONF_HS_ACTION) in self._registered_scripts
|
and (script := CONF_HS_ACTION) in self._action_scripts
|
||||||
):
|
):
|
||||||
hs_value = kwargs[ATTR_HS_COLOR]
|
hs_value = kwargs[ATTR_HS_COLOR]
|
||||||
common_params["hs"] = hs_value
|
common_params["hs"] = hs_value
|
||||||
@ -562,7 +560,7 @@ class AbstractTemplateLight(LightEntity):
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
ATTR_RGBWW_COLOR in kwargs
|
ATTR_RGBWW_COLOR in kwargs
|
||||||
and (script := CONF_RGBWW_ACTION) in self._registered_scripts
|
and (script := CONF_RGBWW_ACTION) in self._action_scripts
|
||||||
):
|
):
|
||||||
rgbww_value = kwargs[ATTR_RGBWW_COLOR]
|
rgbww_value = kwargs[ATTR_RGBWW_COLOR]
|
||||||
common_params["rgbww"] = rgbww_value
|
common_params["rgbww"] = rgbww_value
|
||||||
@ -581,7 +579,7 @@ class AbstractTemplateLight(LightEntity):
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
ATTR_RGBW_COLOR in kwargs
|
ATTR_RGBW_COLOR in kwargs
|
||||||
and (script := CONF_RGBW_ACTION) in self._registered_scripts
|
and (script := CONF_RGBW_ACTION) in self._action_scripts
|
||||||
):
|
):
|
||||||
rgbw_value = kwargs[ATTR_RGBW_COLOR]
|
rgbw_value = kwargs[ATTR_RGBW_COLOR]
|
||||||
common_params["rgbw"] = rgbw_value
|
common_params["rgbw"] = rgbw_value
|
||||||
@ -599,7 +597,7 @@ class AbstractTemplateLight(LightEntity):
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
ATTR_RGB_COLOR in kwargs
|
ATTR_RGB_COLOR in kwargs
|
||||||
and (script := CONF_RGB_ACTION) in self._registered_scripts
|
and (script := CONF_RGB_ACTION) in self._action_scripts
|
||||||
):
|
):
|
||||||
rgb_value = kwargs[ATTR_RGB_COLOR]
|
rgb_value = kwargs[ATTR_RGB_COLOR]
|
||||||
common_params["rgb"] = rgb_value
|
common_params["rgb"] = rgb_value
|
||||||
@ -611,7 +609,7 @@ class AbstractTemplateLight(LightEntity):
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
ATTR_BRIGHTNESS in kwargs
|
ATTR_BRIGHTNESS in kwargs
|
||||||
and (script := CONF_LEVEL_ACTION) in self._registered_scripts
|
and (script := CONF_LEVEL_ACTION) in self._action_scripts
|
||||||
):
|
):
|
||||||
return (script, common_params)
|
return (script, common_params)
|
||||||
|
|
||||||
@ -966,7 +964,7 @@ class LightTemplate(TemplateEntity, AbstractTemplateLight):
|
|||||||
assert name is not None
|
assert name is not None
|
||||||
|
|
||||||
color_modes = {ColorMode.ONOFF}
|
color_modes = {ColorMode.ONOFF}
|
||||||
for action_id, action_config, color_mode in self._register_scripts(config):
|
for action_id, action_config, color_mode in self._iterate_scripts(config):
|
||||||
self.add_script(action_id, action_config, name, DOMAIN)
|
self.add_script(action_id, action_config, name, DOMAIN)
|
||||||
if color_mode:
|
if color_mode:
|
||||||
color_modes.add(color_mode)
|
color_modes.add(color_mode)
|
||||||
@ -1180,7 +1178,7 @@ class TriggerLightEntity(TriggerEntity, AbstractTemplateLight):
|
|||||||
self._parse_result.add(key)
|
self._parse_result.add(key)
|
||||||
|
|
||||||
color_modes = {ColorMode.ONOFF}
|
color_modes = {ColorMode.ONOFF}
|
||||||
for action_id, action_config, color_mode in self._register_scripts(config):
|
for action_id, action_config, color_mode in self._iterate_scripts(config):
|
||||||
self.add_script(action_id, action_config, name, DOMAIN)
|
self.add_script(action_id, action_config, name, DOMAIN)
|
||||||
if color_mode:
|
if color_mode:
|
||||||
color_modes.add(color_mode)
|
color_modes.add(color_mode)
|
||||||
|
@ -280,7 +280,7 @@ class TemplateEntity(AbstractTemplateEntity):
|
|||||||
unique_id: str | None = None,
|
unique_id: str | None = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Template Entity."""
|
"""Template Entity."""
|
||||||
super().__init__(hass)
|
AbstractTemplateEntity.__init__(self, hass)
|
||||||
self._template_attrs: dict[Template, list[_TemplateAttribute]] = {}
|
self._template_attrs: dict[Template, list[_TemplateAttribute]] = {}
|
||||||
self._template_result_info: TrackTemplateResultInfo | None = None
|
self._template_result_info: TrackTemplateResultInfo | None = None
|
||||||
self._attr_extra_state_attributes = {}
|
self._attr_extra_state_attributes = {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user