mirror of
https://github.com/home-assistant/core.git
synced 2025-05-01 20:57:51 +00:00
Deprecate light constants (#132680)
* Deprecate light constants * Reference deprecated values in MQTT light * Reference deprecated values in test_recorder * Adjust * Adjust * Add specific test
This commit is contained in:
parent
97da8481d2
commit
1fbe880c5f
@ -186,16 +186,26 @@ ATTR_RGBW_COLOR = "rgbw_color"
|
|||||||
ATTR_RGBWW_COLOR = "rgbww_color"
|
ATTR_RGBWW_COLOR = "rgbww_color"
|
||||||
ATTR_XY_COLOR = "xy_color"
|
ATTR_XY_COLOR = "xy_color"
|
||||||
ATTR_HS_COLOR = "hs_color"
|
ATTR_HS_COLOR = "hs_color"
|
||||||
ATTR_COLOR_TEMP = "color_temp" # Deprecated in HA Core 2022.11
|
|
||||||
ATTR_KELVIN = "kelvin" # Deprecated in HA Core 2022.11
|
|
||||||
ATTR_MIN_MIREDS = "min_mireds" # Deprecated in HA Core 2022.11
|
|
||||||
ATTR_MAX_MIREDS = "max_mireds" # Deprecated in HA Core 2022.11
|
|
||||||
ATTR_COLOR_TEMP_KELVIN = "color_temp_kelvin"
|
ATTR_COLOR_TEMP_KELVIN = "color_temp_kelvin"
|
||||||
ATTR_MIN_COLOR_TEMP_KELVIN = "min_color_temp_kelvin"
|
ATTR_MIN_COLOR_TEMP_KELVIN = "min_color_temp_kelvin"
|
||||||
ATTR_MAX_COLOR_TEMP_KELVIN = "max_color_temp_kelvin"
|
ATTR_MAX_COLOR_TEMP_KELVIN = "max_color_temp_kelvin"
|
||||||
ATTR_COLOR_NAME = "color_name"
|
ATTR_COLOR_NAME = "color_name"
|
||||||
ATTR_WHITE = "white"
|
ATTR_WHITE = "white"
|
||||||
|
|
||||||
|
# Deprecated in HA Core 2022.11
|
||||||
|
_DEPRECATED_ATTR_COLOR_TEMP: Final = DeprecatedConstant(
|
||||||
|
"color_temp", "kelvin equivalent (ATTR_COLOR_TEMP_KELVIN)", "2026.1"
|
||||||
|
)
|
||||||
|
_DEPRECATED_ATTR_KELVIN: Final = DeprecatedConstant(
|
||||||
|
"kelvin", "ATTR_COLOR_TEMP_KELVIN", "2026.1"
|
||||||
|
)
|
||||||
|
_DEPRECATED_ATTR_MIN_MIREDS: Final = DeprecatedConstant(
|
||||||
|
"min_mireds", "kelvin equivalent (ATTR_MAX_COLOR_TEMP_KELVIN)", "2026.1"
|
||||||
|
)
|
||||||
|
_DEPRECATED_ATTR_MAX_MIREDS: Final = DeprecatedConstant(
|
||||||
|
"max_mireds", "kelvin equivalent (ATTR_MIN_COLOR_TEMP_KELVIN)", "2026.1"
|
||||||
|
)
|
||||||
|
|
||||||
# Brightness of the light, 0..255 or percentage
|
# Brightness of the light, 0..255 or percentage
|
||||||
ATTR_BRIGHTNESS = "brightness"
|
ATTR_BRIGHTNESS = "brightness"
|
||||||
ATTR_BRIGHTNESS_PCT = "brightness_pct"
|
ATTR_BRIGHTNESS_PCT = "brightness_pct"
|
||||||
@ -240,11 +250,11 @@ LIGHT_TURN_ON_SCHEMA: VolDictType = {
|
|||||||
vol.Exclusive(ATTR_BRIGHTNESS_STEP, ATTR_BRIGHTNESS): VALID_BRIGHTNESS_STEP,
|
vol.Exclusive(ATTR_BRIGHTNESS_STEP, ATTR_BRIGHTNESS): VALID_BRIGHTNESS_STEP,
|
||||||
vol.Exclusive(ATTR_BRIGHTNESS_STEP_PCT, ATTR_BRIGHTNESS): VALID_BRIGHTNESS_STEP_PCT,
|
vol.Exclusive(ATTR_BRIGHTNESS_STEP_PCT, ATTR_BRIGHTNESS): VALID_BRIGHTNESS_STEP_PCT,
|
||||||
vol.Exclusive(ATTR_COLOR_NAME, COLOR_GROUP): cv.string,
|
vol.Exclusive(ATTR_COLOR_NAME, COLOR_GROUP): cv.string,
|
||||||
vol.Exclusive(ATTR_COLOR_TEMP, COLOR_GROUP): vol.All(
|
vol.Exclusive(_DEPRECATED_ATTR_COLOR_TEMP.value, COLOR_GROUP): vol.All(
|
||||||
vol.Coerce(int), vol.Range(min=1)
|
vol.Coerce(int), vol.Range(min=1)
|
||||||
),
|
),
|
||||||
vol.Exclusive(ATTR_COLOR_TEMP_KELVIN, COLOR_GROUP): cv.positive_int,
|
vol.Exclusive(ATTR_COLOR_TEMP_KELVIN, COLOR_GROUP): cv.positive_int,
|
||||||
vol.Exclusive(ATTR_KELVIN, COLOR_GROUP): cv.positive_int,
|
vol.Exclusive(_DEPRECATED_ATTR_KELVIN.value, COLOR_GROUP): cv.positive_int,
|
||||||
vol.Exclusive(ATTR_HS_COLOR, COLOR_GROUP): vol.All(
|
vol.Exclusive(ATTR_HS_COLOR, COLOR_GROUP): vol.All(
|
||||||
vol.Coerce(tuple),
|
vol.Coerce(tuple),
|
||||||
vol.ExactSequence(
|
vol.ExactSequence(
|
||||||
@ -307,19 +317,29 @@ def preprocess_turn_on_alternatives(
|
|||||||
_LOGGER.warning("Got unknown color %s, falling back to white", color_name)
|
_LOGGER.warning("Got unknown color %s, falling back to white", color_name)
|
||||||
params[ATTR_RGB_COLOR] = (255, 255, 255)
|
params[ATTR_RGB_COLOR] = (255, 255, 255)
|
||||||
|
|
||||||
if (mired := params.pop(ATTR_COLOR_TEMP, None)) is not None:
|
if (mired := params.pop(_DEPRECATED_ATTR_COLOR_TEMP.value, None)) is not None:
|
||||||
|
_LOGGER.warning(
|
||||||
|
"Got `color_temp` argument in `turn_on` service, which is deprecated "
|
||||||
|
"and will break in Home Assistant 2026.1, please use "
|
||||||
|
"`color_temp_kelvin` argument"
|
||||||
|
)
|
||||||
kelvin = color_util.color_temperature_mired_to_kelvin(mired)
|
kelvin = color_util.color_temperature_mired_to_kelvin(mired)
|
||||||
params[ATTR_COLOR_TEMP] = int(mired)
|
params[_DEPRECATED_ATTR_COLOR_TEMP.value] = int(mired)
|
||||||
params[ATTR_COLOR_TEMP_KELVIN] = int(kelvin)
|
params[ATTR_COLOR_TEMP_KELVIN] = int(kelvin)
|
||||||
|
|
||||||
if (kelvin := params.pop(ATTR_KELVIN, None)) is not None:
|
if (kelvin := params.pop(_DEPRECATED_ATTR_KELVIN.value, None)) is not None:
|
||||||
|
_LOGGER.warning(
|
||||||
|
"Got `kelvin` argument in `turn_on` service, which is deprecated "
|
||||||
|
"and will break in Home Assistant 2026.1, please use "
|
||||||
|
"`color_temp_kelvin` argument"
|
||||||
|
)
|
||||||
mired = color_util.color_temperature_kelvin_to_mired(kelvin)
|
mired = color_util.color_temperature_kelvin_to_mired(kelvin)
|
||||||
params[ATTR_COLOR_TEMP] = int(mired)
|
params[_DEPRECATED_ATTR_COLOR_TEMP.value] = int(mired)
|
||||||
params[ATTR_COLOR_TEMP_KELVIN] = int(kelvin)
|
params[ATTR_COLOR_TEMP_KELVIN] = int(kelvin)
|
||||||
|
|
||||||
if (kelvin := params.pop(ATTR_COLOR_TEMP_KELVIN, None)) is not None:
|
if (kelvin := params.pop(ATTR_COLOR_TEMP_KELVIN, None)) is not None:
|
||||||
mired = color_util.color_temperature_kelvin_to_mired(kelvin)
|
mired = color_util.color_temperature_kelvin_to_mired(kelvin)
|
||||||
params[ATTR_COLOR_TEMP] = int(mired)
|
params[_DEPRECATED_ATTR_COLOR_TEMP.value] = int(mired)
|
||||||
params[ATTR_COLOR_TEMP_KELVIN] = int(kelvin)
|
params[ATTR_COLOR_TEMP_KELVIN] = int(kelvin)
|
||||||
|
|
||||||
brightness_pct = params.pop(ATTR_BRIGHTNESS_PCT, None)
|
brightness_pct = params.pop(ATTR_BRIGHTNESS_PCT, None)
|
||||||
@ -361,7 +381,7 @@ def filter_turn_on_params(light: LightEntity, params: dict[str, Any]) -> dict[st
|
|||||||
if not brightness_supported(supported_color_modes):
|
if not brightness_supported(supported_color_modes):
|
||||||
params.pop(ATTR_BRIGHTNESS, None)
|
params.pop(ATTR_BRIGHTNESS, None)
|
||||||
if ColorMode.COLOR_TEMP not in supported_color_modes:
|
if ColorMode.COLOR_TEMP not in supported_color_modes:
|
||||||
params.pop(ATTR_COLOR_TEMP, None)
|
params.pop(_DEPRECATED_ATTR_COLOR_TEMP.value, None)
|
||||||
params.pop(ATTR_COLOR_TEMP_KELVIN, None)
|
params.pop(ATTR_COLOR_TEMP_KELVIN, None)
|
||||||
if ColorMode.HS not in supported_color_modes:
|
if ColorMode.HS not in supported_color_modes:
|
||||||
params.pop(ATTR_HS_COLOR, None)
|
params.pop(ATTR_HS_COLOR, None)
|
||||||
@ -443,7 +463,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa:
|
|||||||
and ColorMode.COLOR_TEMP not in supported_color_modes
|
and ColorMode.COLOR_TEMP not in supported_color_modes
|
||||||
and ColorMode.RGBWW in supported_color_modes
|
and ColorMode.RGBWW in supported_color_modes
|
||||||
):
|
):
|
||||||
params.pop(ATTR_COLOR_TEMP)
|
params.pop(_DEPRECATED_ATTR_COLOR_TEMP.value)
|
||||||
color_temp = params.pop(ATTR_COLOR_TEMP_KELVIN)
|
color_temp = params.pop(ATTR_COLOR_TEMP_KELVIN)
|
||||||
brightness = params.get(ATTR_BRIGHTNESS, light.brightness)
|
brightness = params.get(ATTR_BRIGHTNESS, light.brightness)
|
||||||
params[ATTR_RGBWW_COLOR] = color_util.color_temperature_to_rgbww(
|
params[ATTR_RGBWW_COLOR] = color_util.color_temperature_to_rgbww(
|
||||||
@ -453,7 +473,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa:
|
|||||||
light.max_color_temp_kelvin,
|
light.max_color_temp_kelvin,
|
||||||
)
|
)
|
||||||
elif ColorMode.COLOR_TEMP not in legacy_supported_color_modes:
|
elif ColorMode.COLOR_TEMP not in legacy_supported_color_modes:
|
||||||
params.pop(ATTR_COLOR_TEMP)
|
params.pop(_DEPRECATED_ATTR_COLOR_TEMP.value)
|
||||||
color_temp = params.pop(ATTR_COLOR_TEMP_KELVIN)
|
color_temp = params.pop(ATTR_COLOR_TEMP_KELVIN)
|
||||||
if color_supported(legacy_supported_color_modes):
|
if color_supported(legacy_supported_color_modes):
|
||||||
params[ATTR_HS_COLOR] = color_util.color_temperature_to_hs(
|
params[ATTR_HS_COLOR] = color_util.color_temperature_to_hs(
|
||||||
@ -500,8 +520,10 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa:
|
|||||||
params[ATTR_COLOR_TEMP_KELVIN] = color_util.color_xy_to_temperature(
|
params[ATTR_COLOR_TEMP_KELVIN] = color_util.color_xy_to_temperature(
|
||||||
*xy_color
|
*xy_color
|
||||||
)
|
)
|
||||||
params[ATTR_COLOR_TEMP] = color_util.color_temperature_kelvin_to_mired(
|
params[_DEPRECATED_ATTR_COLOR_TEMP.value] = (
|
||||||
params[ATTR_COLOR_TEMP_KELVIN]
|
color_util.color_temperature_kelvin_to_mired(
|
||||||
|
params[ATTR_COLOR_TEMP_KELVIN]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
elif ATTR_RGB_COLOR in params and ColorMode.RGB not in supported_color_modes:
|
elif ATTR_RGB_COLOR in params and ColorMode.RGB not in supported_color_modes:
|
||||||
rgb_color = params.pop(ATTR_RGB_COLOR)
|
rgb_color = params.pop(ATTR_RGB_COLOR)
|
||||||
@ -523,8 +545,10 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa:
|
|||||||
params[ATTR_COLOR_TEMP_KELVIN] = color_util.color_xy_to_temperature(
|
params[ATTR_COLOR_TEMP_KELVIN] = color_util.color_xy_to_temperature(
|
||||||
*xy_color
|
*xy_color
|
||||||
)
|
)
|
||||||
params[ATTR_COLOR_TEMP] = color_util.color_temperature_kelvin_to_mired(
|
params[_DEPRECATED_ATTR_COLOR_TEMP.value] = (
|
||||||
params[ATTR_COLOR_TEMP_KELVIN]
|
color_util.color_temperature_kelvin_to_mired(
|
||||||
|
params[ATTR_COLOR_TEMP_KELVIN]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
elif ATTR_XY_COLOR in params and ColorMode.XY not in supported_color_modes:
|
elif ATTR_XY_COLOR in params and ColorMode.XY not in supported_color_modes:
|
||||||
xy_color = params.pop(ATTR_XY_COLOR)
|
xy_color = params.pop(ATTR_XY_COLOR)
|
||||||
@ -544,8 +568,10 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa:
|
|||||||
params[ATTR_COLOR_TEMP_KELVIN] = color_util.color_xy_to_temperature(
|
params[ATTR_COLOR_TEMP_KELVIN] = color_util.color_xy_to_temperature(
|
||||||
*xy_color
|
*xy_color
|
||||||
)
|
)
|
||||||
params[ATTR_COLOR_TEMP] = color_util.color_temperature_kelvin_to_mired(
|
params[_DEPRECATED_ATTR_COLOR_TEMP.value] = (
|
||||||
params[ATTR_COLOR_TEMP_KELVIN]
|
color_util.color_temperature_kelvin_to_mired(
|
||||||
|
params[ATTR_COLOR_TEMP_KELVIN]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
elif ATTR_RGBW_COLOR in params and ColorMode.RGBW not in supported_color_modes:
|
elif ATTR_RGBW_COLOR in params and ColorMode.RGBW not in supported_color_modes:
|
||||||
rgbw_color = params.pop(ATTR_RGBW_COLOR)
|
rgbw_color = params.pop(ATTR_RGBW_COLOR)
|
||||||
@ -565,8 +591,10 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa:
|
|||||||
params[ATTR_COLOR_TEMP_KELVIN] = color_util.color_xy_to_temperature(
|
params[ATTR_COLOR_TEMP_KELVIN] = color_util.color_xy_to_temperature(
|
||||||
*xy_color
|
*xy_color
|
||||||
)
|
)
|
||||||
params[ATTR_COLOR_TEMP] = color_util.color_temperature_kelvin_to_mired(
|
params[_DEPRECATED_ATTR_COLOR_TEMP.value] = (
|
||||||
params[ATTR_COLOR_TEMP_KELVIN]
|
color_util.color_temperature_kelvin_to_mired(
|
||||||
|
params[ATTR_COLOR_TEMP_KELVIN]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
elif (
|
elif (
|
||||||
ATTR_RGBWW_COLOR in params and ColorMode.RGBWW not in supported_color_modes
|
ATTR_RGBWW_COLOR in params and ColorMode.RGBWW not in supported_color_modes
|
||||||
@ -589,8 +617,10 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa:
|
|||||||
params[ATTR_COLOR_TEMP_KELVIN] = color_util.color_xy_to_temperature(
|
params[ATTR_COLOR_TEMP_KELVIN] = color_util.color_xy_to_temperature(
|
||||||
*xy_color
|
*xy_color
|
||||||
)
|
)
|
||||||
params[ATTR_COLOR_TEMP] = color_util.color_temperature_kelvin_to_mired(
|
params[_DEPRECATED_ATTR_COLOR_TEMP.value] = (
|
||||||
params[ATTR_COLOR_TEMP_KELVIN]
|
color_util.color_temperature_kelvin_to_mired(
|
||||||
|
params[ATTR_COLOR_TEMP_KELVIN]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
# If white is set to True, set it to the light's brightness
|
# If white is set to True, set it to the light's brightness
|
||||||
@ -798,7 +828,7 @@ class Profiles:
|
|||||||
|
|
||||||
color_attributes = (
|
color_attributes = (
|
||||||
ATTR_COLOR_NAME,
|
ATTR_COLOR_NAME,
|
||||||
ATTR_COLOR_TEMP,
|
_DEPRECATED_ATTR_COLOR_TEMP.value,
|
||||||
ATTR_HS_COLOR,
|
ATTR_HS_COLOR,
|
||||||
ATTR_RGB_COLOR,
|
ATTR_RGB_COLOR,
|
||||||
ATTR_RGBW_COLOR,
|
ATTR_RGBW_COLOR,
|
||||||
@ -846,13 +876,13 @@ class LightEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
|||||||
{
|
{
|
||||||
ATTR_SUPPORTED_COLOR_MODES,
|
ATTR_SUPPORTED_COLOR_MODES,
|
||||||
ATTR_EFFECT_LIST,
|
ATTR_EFFECT_LIST,
|
||||||
ATTR_MIN_MIREDS,
|
_DEPRECATED_ATTR_MIN_MIREDS.value,
|
||||||
ATTR_MAX_MIREDS,
|
_DEPRECATED_ATTR_MAX_MIREDS.value,
|
||||||
ATTR_MIN_COLOR_TEMP_KELVIN,
|
ATTR_MIN_COLOR_TEMP_KELVIN,
|
||||||
ATTR_MAX_COLOR_TEMP_KELVIN,
|
ATTR_MAX_COLOR_TEMP_KELVIN,
|
||||||
ATTR_BRIGHTNESS,
|
ATTR_BRIGHTNESS,
|
||||||
ATTR_COLOR_MODE,
|
ATTR_COLOR_MODE,
|
||||||
ATTR_COLOR_TEMP,
|
_DEPRECATED_ATTR_COLOR_TEMP.value,
|
||||||
ATTR_COLOR_TEMP_KELVIN,
|
ATTR_COLOR_TEMP_KELVIN,
|
||||||
ATTR_EFFECT,
|
ATTR_EFFECT,
|
||||||
ATTR_HS_COLOR,
|
ATTR_HS_COLOR,
|
||||||
@ -1072,16 +1102,16 @@ class LightEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
|||||||
data[ATTR_MIN_COLOR_TEMP_KELVIN] = min_color_temp_kelvin
|
data[ATTR_MIN_COLOR_TEMP_KELVIN] = min_color_temp_kelvin
|
||||||
data[ATTR_MAX_COLOR_TEMP_KELVIN] = max_color_temp_kelvin
|
data[ATTR_MAX_COLOR_TEMP_KELVIN] = max_color_temp_kelvin
|
||||||
if not max_color_temp_kelvin:
|
if not max_color_temp_kelvin:
|
||||||
data[ATTR_MIN_MIREDS] = None
|
data[_DEPRECATED_ATTR_MIN_MIREDS.value] = None
|
||||||
else:
|
else:
|
||||||
data[ATTR_MIN_MIREDS] = color_util.color_temperature_kelvin_to_mired(
|
data[_DEPRECATED_ATTR_MIN_MIREDS.value] = (
|
||||||
max_color_temp_kelvin
|
color_util.color_temperature_kelvin_to_mired(max_color_temp_kelvin)
|
||||||
)
|
)
|
||||||
if not min_color_temp_kelvin:
|
if not min_color_temp_kelvin:
|
||||||
data[ATTR_MAX_MIREDS] = None
|
data[_DEPRECATED_ATTR_MAX_MIREDS.value] = None
|
||||||
else:
|
else:
|
||||||
data[ATTR_MAX_MIREDS] = color_util.color_temperature_kelvin_to_mired(
|
data[_DEPRECATED_ATTR_MAX_MIREDS.value] = (
|
||||||
min_color_temp_kelvin
|
color_util.color_temperature_kelvin_to_mired(min_color_temp_kelvin)
|
||||||
)
|
)
|
||||||
if LightEntityFeature.EFFECT in supported_features:
|
if LightEntityFeature.EFFECT in supported_features:
|
||||||
data[ATTR_EFFECT_LIST] = self.effect_list
|
data[ATTR_EFFECT_LIST] = self.effect_list
|
||||||
@ -1254,14 +1284,14 @@ class LightEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
|||||||
color_temp_kelvin = self.color_temp_kelvin
|
color_temp_kelvin = self.color_temp_kelvin
|
||||||
data[ATTR_COLOR_TEMP_KELVIN] = color_temp_kelvin
|
data[ATTR_COLOR_TEMP_KELVIN] = color_temp_kelvin
|
||||||
if color_temp_kelvin:
|
if color_temp_kelvin:
|
||||||
data[ATTR_COLOR_TEMP] = (
|
data[_DEPRECATED_ATTR_COLOR_TEMP.value] = (
|
||||||
color_util.color_temperature_kelvin_to_mired(color_temp_kelvin)
|
color_util.color_temperature_kelvin_to_mired(color_temp_kelvin)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
data[ATTR_COLOR_TEMP] = None
|
data[_DEPRECATED_ATTR_COLOR_TEMP.value] = None
|
||||||
else:
|
else:
|
||||||
data[ATTR_COLOR_TEMP_KELVIN] = None
|
data[ATTR_COLOR_TEMP_KELVIN] = None
|
||||||
data[ATTR_COLOR_TEMP] = None
|
data[_DEPRECATED_ATTR_COLOR_TEMP.value] = None
|
||||||
|
|
||||||
if color_supported(legacy_supported_color_modes) or color_temp_supported(
|
if color_supported(legacy_supported_color_modes) or color_temp_supported(
|
||||||
legacy_supported_color_modes
|
legacy_supported_color_modes
|
||||||
|
@ -18,9 +18,9 @@ from homeassistant.core import Context, HomeAssistant, State
|
|||||||
from homeassistant.util import color as color_util
|
from homeassistant.util import color as color_util
|
||||||
|
|
||||||
from . import (
|
from . import (
|
||||||
|
_DEPRECATED_ATTR_COLOR_TEMP,
|
||||||
ATTR_BRIGHTNESS,
|
ATTR_BRIGHTNESS,
|
||||||
ATTR_COLOR_MODE,
|
ATTR_COLOR_MODE,
|
||||||
ATTR_COLOR_TEMP,
|
|
||||||
ATTR_COLOR_TEMP_KELVIN,
|
ATTR_COLOR_TEMP_KELVIN,
|
||||||
ATTR_EFFECT,
|
ATTR_EFFECT,
|
||||||
ATTR_HS_COLOR,
|
ATTR_HS_COLOR,
|
||||||
@ -41,7 +41,7 @@ ATTR_GROUP = [ATTR_BRIGHTNESS, ATTR_EFFECT]
|
|||||||
|
|
||||||
COLOR_GROUP = [
|
COLOR_GROUP = [
|
||||||
ATTR_HS_COLOR,
|
ATTR_HS_COLOR,
|
||||||
ATTR_COLOR_TEMP,
|
_DEPRECATED_ATTR_COLOR_TEMP.value,
|
||||||
ATTR_COLOR_TEMP_KELVIN,
|
ATTR_COLOR_TEMP_KELVIN,
|
||||||
ATTR_RGB_COLOR,
|
ATTR_RGB_COLOR,
|
||||||
ATTR_RGBW_COLOR,
|
ATTR_RGBW_COLOR,
|
||||||
@ -129,7 +129,12 @@ async def _async_reproduce_state(
|
|||||||
if (cm_attr_state := state.attributes.get(cm_attr.state_attr)) is None:
|
if (cm_attr_state := state.attributes.get(cm_attr.state_attr)) is None:
|
||||||
if (
|
if (
|
||||||
color_mode != ColorMode.COLOR_TEMP
|
color_mode != ColorMode.COLOR_TEMP
|
||||||
or (mireds := state.attributes.get(ATTR_COLOR_TEMP)) is None
|
or (
|
||||||
|
mireds := state.attributes.get(
|
||||||
|
_DEPRECATED_ATTR_COLOR_TEMP.value
|
||||||
|
)
|
||||||
|
)
|
||||||
|
is None
|
||||||
):
|
):
|
||||||
_LOGGER.warning(
|
_LOGGER.warning(
|
||||||
"Color mode %s specified but attribute %s missing for: %s",
|
"Color mode %s specified but attribute %s missing for: %s",
|
||||||
|
@ -9,17 +9,17 @@ from typing import Any, cast
|
|||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.light import (
|
from homeassistant.components.light import (
|
||||||
|
_DEPRECATED_ATTR_COLOR_TEMP,
|
||||||
|
_DEPRECATED_ATTR_MAX_MIREDS,
|
||||||
|
_DEPRECATED_ATTR_MIN_MIREDS,
|
||||||
ATTR_BRIGHTNESS,
|
ATTR_BRIGHTNESS,
|
||||||
ATTR_COLOR_MODE,
|
ATTR_COLOR_MODE,
|
||||||
ATTR_COLOR_TEMP,
|
|
||||||
ATTR_COLOR_TEMP_KELVIN,
|
ATTR_COLOR_TEMP_KELVIN,
|
||||||
ATTR_EFFECT,
|
ATTR_EFFECT,
|
||||||
ATTR_EFFECT_LIST,
|
ATTR_EFFECT_LIST,
|
||||||
ATTR_HS_COLOR,
|
ATTR_HS_COLOR,
|
||||||
ATTR_MAX_COLOR_TEMP_KELVIN,
|
ATTR_MAX_COLOR_TEMP_KELVIN,
|
||||||
ATTR_MAX_MIREDS,
|
|
||||||
ATTR_MIN_COLOR_TEMP_KELVIN,
|
ATTR_MIN_COLOR_TEMP_KELVIN,
|
||||||
ATTR_MIN_MIREDS,
|
|
||||||
ATTR_RGB_COLOR,
|
ATTR_RGB_COLOR,
|
||||||
ATTR_RGBW_COLOR,
|
ATTR_RGBW_COLOR,
|
||||||
ATTR_RGBWW_COLOR,
|
ATTR_RGBWW_COLOR,
|
||||||
@ -115,15 +115,15 @@ MQTT_LIGHT_ATTRIBUTES_BLOCKED = frozenset(
|
|||||||
{
|
{
|
||||||
ATTR_COLOR_MODE,
|
ATTR_COLOR_MODE,
|
||||||
ATTR_BRIGHTNESS,
|
ATTR_BRIGHTNESS,
|
||||||
ATTR_COLOR_TEMP,
|
_DEPRECATED_ATTR_COLOR_TEMP.value,
|
||||||
ATTR_COLOR_TEMP_KELVIN,
|
ATTR_COLOR_TEMP_KELVIN,
|
||||||
ATTR_EFFECT,
|
ATTR_EFFECT,
|
||||||
ATTR_EFFECT_LIST,
|
ATTR_EFFECT_LIST,
|
||||||
ATTR_HS_COLOR,
|
ATTR_HS_COLOR,
|
||||||
ATTR_MAX_COLOR_TEMP_KELVIN,
|
ATTR_MAX_COLOR_TEMP_KELVIN,
|
||||||
ATTR_MAX_MIREDS,
|
_DEPRECATED_ATTR_MAX_MIREDS.value,
|
||||||
ATTR_MIN_COLOR_TEMP_KELVIN,
|
ATTR_MIN_COLOR_TEMP_KELVIN,
|
||||||
ATTR_MIN_MIREDS,
|
_DEPRECATED_ATTR_MIN_MIREDS.value,
|
||||||
ATTR_RGB_COLOR,
|
ATTR_RGB_COLOR,
|
||||||
ATTR_RGBW_COLOR,
|
ATTR_RGBW_COLOR,
|
||||||
ATTR_RGBWW_COLOR,
|
ATTR_RGBWW_COLOR,
|
||||||
|
@ -2623,17 +2623,34 @@ def test_all(module: ModuleType) -> None:
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
("constant_name", "constant_value"),
|
("constant_name", "constant_value", "constant_replacement"),
|
||||||
[("SUPPORT_BRIGHTNESS", 1), ("SUPPORT_COLOR_TEMP", 2), ("SUPPORT_COLOR", 16)],
|
[
|
||||||
|
("SUPPORT_BRIGHTNESS", 1, "supported_color_modes"),
|
||||||
|
("SUPPORT_COLOR_TEMP", 2, "supported_color_modes"),
|
||||||
|
("SUPPORT_COLOR", 16, "supported_color_modes"),
|
||||||
|
("ATTR_COLOR_TEMP", "color_temp", "kelvin equivalent (ATTR_COLOR_TEMP_KELVIN)"),
|
||||||
|
("ATTR_KELVIN", "kelvin", "ATTR_COLOR_TEMP_KELVIN"),
|
||||||
|
(
|
||||||
|
"ATTR_MIN_MIREDS",
|
||||||
|
"min_mireds",
|
||||||
|
"kelvin equivalent (ATTR_MAX_COLOR_TEMP_KELVIN)",
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"ATTR_MAX_MIREDS",
|
||||||
|
"max_mireds",
|
||||||
|
"kelvin equivalent (ATTR_MIN_COLOR_TEMP_KELVIN)",
|
||||||
|
),
|
||||||
|
],
|
||||||
)
|
)
|
||||||
def test_deprecated_support_light_constants(
|
def test_deprecated_light_constants(
|
||||||
caplog: pytest.LogCaptureFixture,
|
caplog: pytest.LogCaptureFixture,
|
||||||
constant_name: str,
|
constant_name: str,
|
||||||
constant_value: int,
|
constant_value: int | str,
|
||||||
|
constant_replacement: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test deprecated format constants."""
|
"""Test deprecated light constants."""
|
||||||
import_and_test_deprecated_constant(
|
import_and_test_deprecated_constant(
|
||||||
caplog, light, constant_name, "supported_color_modes", constant_value, "2026.1"
|
caplog, light, constant_name, constant_replacement, constant_value, "2026.1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -2663,3 +2680,61 @@ def test_deprecated_color_mode_constants_enums(
|
|||||||
import_and_test_deprecated_constant_enum(
|
import_and_test_deprecated_constant_enum(
|
||||||
caplog, light, entity_feature, "COLOR_MODE_", "2026.1"
|
caplog, light, entity_feature, "COLOR_MODE_", "2026.1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def test_deprecated_turn_on_arguments(
|
||||||
|
hass: HomeAssistant, caplog: pytest.LogCaptureFixture
|
||||||
|
) -> None:
|
||||||
|
"""Test color temp conversion in service calls."""
|
||||||
|
entity = MockLight("Test_ct", STATE_ON, {light.ColorMode.COLOR_TEMP})
|
||||||
|
setup_test_component_platform(hass, light.DOMAIN, [entity])
|
||||||
|
|
||||||
|
assert await async_setup_component(
|
||||||
|
hass, light.DOMAIN, {light.DOMAIN: {"platform": "test"}}
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
state = hass.states.get(entity.entity_id)
|
||||||
|
assert state.attributes["supported_color_modes"] == [light.ColorMode.COLOR_TEMP]
|
||||||
|
|
||||||
|
caplog.clear()
|
||||||
|
await hass.services.async_call(
|
||||||
|
"light",
|
||||||
|
"turn_on",
|
||||||
|
{
|
||||||
|
"entity_id": [entity.entity_id],
|
||||||
|
"color_temp": 200,
|
||||||
|
},
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
assert "Got `color_temp` argument in `turn_on` service" in caplog.text
|
||||||
|
_, data = entity.last_call("turn_on")
|
||||||
|
assert data == {"color_temp": 200, "color_temp_kelvin": 5000}
|
||||||
|
|
||||||
|
caplog.clear()
|
||||||
|
await hass.services.async_call(
|
||||||
|
"light",
|
||||||
|
"turn_on",
|
||||||
|
{
|
||||||
|
"entity_id": [entity.entity_id],
|
||||||
|
"kelvin": 5000,
|
||||||
|
},
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
assert "Got `kelvin` argument in `turn_on` service" in caplog.text
|
||||||
|
_, data = entity.last_call("turn_on")
|
||||||
|
assert data == {"color_temp": 200, "color_temp_kelvin": 5000}
|
||||||
|
|
||||||
|
caplog.clear()
|
||||||
|
await hass.services.async_call(
|
||||||
|
"light",
|
||||||
|
"turn_on",
|
||||||
|
{
|
||||||
|
"entity_id": [entity.entity_id],
|
||||||
|
"color_temp_kelvin": 5000,
|
||||||
|
},
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
_, data = entity.last_call("turn_on")
|
||||||
|
assert data == {"color_temp": 200, "color_temp_kelvin": 5000}
|
||||||
|
assert "argument in `turn_on` service" not in caplog.text
|
||||||
|
@ -9,17 +9,17 @@ import pytest
|
|||||||
|
|
||||||
from homeassistant.components import light
|
from homeassistant.components import light
|
||||||
from homeassistant.components.light import (
|
from homeassistant.components.light import (
|
||||||
|
_DEPRECATED_ATTR_COLOR_TEMP,
|
||||||
|
_DEPRECATED_ATTR_MAX_MIREDS,
|
||||||
|
_DEPRECATED_ATTR_MIN_MIREDS,
|
||||||
ATTR_BRIGHTNESS,
|
ATTR_BRIGHTNESS,
|
||||||
ATTR_COLOR_MODE,
|
ATTR_COLOR_MODE,
|
||||||
ATTR_COLOR_TEMP,
|
|
||||||
ATTR_COLOR_TEMP_KELVIN,
|
ATTR_COLOR_TEMP_KELVIN,
|
||||||
ATTR_EFFECT,
|
ATTR_EFFECT,
|
||||||
ATTR_EFFECT_LIST,
|
ATTR_EFFECT_LIST,
|
||||||
ATTR_HS_COLOR,
|
ATTR_HS_COLOR,
|
||||||
ATTR_MAX_COLOR_TEMP_KELVIN,
|
ATTR_MAX_COLOR_TEMP_KELVIN,
|
||||||
ATTR_MAX_MIREDS,
|
|
||||||
ATTR_MIN_COLOR_TEMP_KELVIN,
|
ATTR_MIN_COLOR_TEMP_KELVIN,
|
||||||
ATTR_MIN_MIREDS,
|
|
||||||
ATTR_RGB_COLOR,
|
ATTR_RGB_COLOR,
|
||||||
ATTR_RGBW_COLOR,
|
ATTR_RGBW_COLOR,
|
||||||
ATTR_RGBWW_COLOR,
|
ATTR_RGBWW_COLOR,
|
||||||
@ -66,8 +66,8 @@ async def test_exclude_attributes(recorder_mock: Recorder, hass: HomeAssistant)
|
|||||||
assert len(states) >= 1
|
assert len(states) >= 1
|
||||||
for entity_states in states.values():
|
for entity_states in states.values():
|
||||||
for state in entity_states:
|
for state in entity_states:
|
||||||
assert ATTR_MIN_MIREDS not in state.attributes
|
assert _DEPRECATED_ATTR_MIN_MIREDS.value not in state.attributes
|
||||||
assert ATTR_MAX_MIREDS not in state.attributes
|
assert _DEPRECATED_ATTR_MAX_MIREDS.value not in state.attributes
|
||||||
assert ATTR_SUPPORTED_COLOR_MODES not in state.attributes
|
assert ATTR_SUPPORTED_COLOR_MODES not in state.attributes
|
||||||
assert ATTR_EFFECT_LIST not in state.attributes
|
assert ATTR_EFFECT_LIST not in state.attributes
|
||||||
assert ATTR_FRIENDLY_NAME in state.attributes
|
assert ATTR_FRIENDLY_NAME in state.attributes
|
||||||
@ -75,7 +75,7 @@ async def test_exclude_attributes(recorder_mock: Recorder, hass: HomeAssistant)
|
|||||||
assert ATTR_MIN_COLOR_TEMP_KELVIN not in state.attributes
|
assert ATTR_MIN_COLOR_TEMP_KELVIN not in state.attributes
|
||||||
assert ATTR_BRIGHTNESS not in state.attributes
|
assert ATTR_BRIGHTNESS not in state.attributes
|
||||||
assert ATTR_COLOR_MODE not in state.attributes
|
assert ATTR_COLOR_MODE not in state.attributes
|
||||||
assert ATTR_COLOR_TEMP not in state.attributes
|
assert _DEPRECATED_ATTR_COLOR_TEMP.value not in state.attributes
|
||||||
assert ATTR_COLOR_TEMP_KELVIN not in state.attributes
|
assert ATTR_COLOR_TEMP_KELVIN not in state.attributes
|
||||||
assert ATTR_EFFECT not in state.attributes
|
assert ATTR_EFFECT not in state.attributes
|
||||||
assert ATTR_HS_COLOR not in state.attributes
|
assert ATTR_HS_COLOR not in state.attributes
|
||||||
|
Loading…
x
Reference in New Issue
Block a user