mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Migrate google_assistant color_temp handlers to use Kelvin (#132997)
This commit is contained in:
parent
7dc31dec3b
commit
0e45ccb956
@ -553,15 +553,9 @@ class ColorSettingTrait(_Trait):
|
||||
response["colorModel"] = "hsv"
|
||||
|
||||
if light.color_temp_supported(color_modes):
|
||||
# Max Kelvin is Min Mireds K = 1000000 / mireds
|
||||
# Min Kelvin is Max Mireds K = 1000000 / mireds
|
||||
response["colorTemperatureRange"] = {
|
||||
"temperatureMaxK": color_util.color_temperature_mired_to_kelvin(
|
||||
attrs.get(light.ATTR_MIN_MIREDS)
|
||||
),
|
||||
"temperatureMinK": color_util.color_temperature_mired_to_kelvin(
|
||||
attrs.get(light.ATTR_MAX_MIREDS)
|
||||
),
|
||||
"temperatureMaxK": int(attrs.get(light.ATTR_MAX_COLOR_TEMP_KELVIN)),
|
||||
"temperatureMinK": int(attrs.get(light.ATTR_MIN_COLOR_TEMP_KELVIN)),
|
||||
}
|
||||
|
||||
return response
|
||||
@ -583,7 +577,7 @@ class ColorSettingTrait(_Trait):
|
||||
}
|
||||
|
||||
if light.color_temp_supported([color_mode]):
|
||||
temp = self.state.attributes.get(light.ATTR_COLOR_TEMP)
|
||||
temp = self.state.attributes.get(light.ATTR_COLOR_TEMP_KELVIN)
|
||||
# Some faulty integrations might put 0 in here, raising exception.
|
||||
if temp == 0:
|
||||
_LOGGER.warning(
|
||||
@ -592,9 +586,7 @@ class ColorSettingTrait(_Trait):
|
||||
temp,
|
||||
)
|
||||
elif temp is not None:
|
||||
color["temperatureK"] = color_util.color_temperature_mired_to_kelvin(
|
||||
temp
|
||||
)
|
||||
color["temperatureK"] = temp
|
||||
|
||||
response = {}
|
||||
|
||||
@ -606,11 +598,9 @@ class ColorSettingTrait(_Trait):
|
||||
async def execute(self, command, data, params, challenge):
|
||||
"""Execute a color temperature command."""
|
||||
if "temperature" in params["color"]:
|
||||
temp = color_util.color_temperature_kelvin_to_mired(
|
||||
params["color"]["temperature"]
|
||||
)
|
||||
min_temp = self.state.attributes[light.ATTR_MIN_MIREDS]
|
||||
max_temp = self.state.attributes[light.ATTR_MAX_MIREDS]
|
||||
temp = params["color"]["temperature"]
|
||||
max_temp = self.state.attributes[light.ATTR_MAX_COLOR_TEMP_KELVIN]
|
||||
min_temp = self.state.attributes[light.ATTR_MIN_COLOR_TEMP_KELVIN]
|
||||
|
||||
if temp < min_temp or temp > max_temp:
|
||||
raise SmartHomeError(
|
||||
@ -621,7 +611,10 @@ class ColorSettingTrait(_Trait):
|
||||
await self.hass.services.async_call(
|
||||
light.DOMAIN,
|
||||
SERVICE_TURN_ON,
|
||||
{ATTR_ENTITY_ID: self.state.entity_id, light.ATTR_COLOR_TEMP: temp},
|
||||
{
|
||||
ATTR_ENTITY_ID: self.state.entity_id,
|
||||
light.ATTR_COLOR_TEMP_KELVIN: temp,
|
||||
},
|
||||
blocking=not self.config.should_report_state,
|
||||
context=data.context,
|
||||
)
|
||||
|
@ -491,7 +491,7 @@ async def test_execute_request(hass_fixture, assistant_client, auth_header) -> N
|
||||
assert kitchen.attributes.get(light.ATTR_RGB_COLOR) == (255, 0, 0)
|
||||
|
||||
bed = hass_fixture.states.get("light.bed_light")
|
||||
assert bed.attributes.get(light.ATTR_COLOR_TEMP) == 212
|
||||
assert bed.attributes.get(light.ATTR_COLOR_TEMP_KELVIN) == 4700
|
||||
|
||||
assert hass_fixture.states.get("switch.decorative_lights").state == "off"
|
||||
|
||||
|
@ -1450,7 +1450,7 @@ async def test_sync_message_recovery(
|
||||
"light.bad_light",
|
||||
"on",
|
||||
{
|
||||
"min_mireds": "badvalue",
|
||||
"max_color_temp_kelvin": "badvalue",
|
||||
"supported_color_modes": ["color_temp"],
|
||||
},
|
||||
)
|
||||
|
@ -77,7 +77,7 @@ from homeassistant.const import (
|
||||
)
|
||||
from homeassistant.core import DOMAIN as HOMEASSISTANT_DOMAIN, HomeAssistant, State
|
||||
from homeassistant.core_config import async_process_ha_core_config
|
||||
from homeassistant.util import color, dt as dt_util
|
||||
from homeassistant.util import dt as dt_util
|
||||
from homeassistant.util.unit_conversion import TemperatureConverter
|
||||
|
||||
from . import BASIC_CONFIG, MockConfig
|
||||
@ -870,10 +870,10 @@ async def test_color_setting_temperature_light(hass: HomeAssistant) -> None:
|
||||
"light.bla",
|
||||
STATE_ON,
|
||||
{
|
||||
light.ATTR_MIN_MIREDS: 200,
|
||||
light.ATTR_MAX_COLOR_TEMP_KELVIN: 5000,
|
||||
light.ATTR_COLOR_MODE: "color_temp",
|
||||
light.ATTR_COLOR_TEMP: 300,
|
||||
light.ATTR_MAX_MIREDS: 500,
|
||||
light.ATTR_COLOR_TEMP_KELVIN: 3333,
|
||||
light.ATTR_MIN_COLOR_TEMP_KELVIN: 2000,
|
||||
"supported_color_modes": ["color_temp"],
|
||||
},
|
||||
),
|
||||
@ -906,7 +906,7 @@ async def test_color_setting_temperature_light(hass: HomeAssistant) -> None:
|
||||
assert len(calls) == 1
|
||||
assert calls[0].data == {
|
||||
ATTR_ENTITY_ID: "light.bla",
|
||||
light.ATTR_COLOR_TEMP: color.color_temperature_kelvin_to_mired(2857),
|
||||
light.ATTR_COLOR_TEMP_KELVIN: 2857,
|
||||
}
|
||||
|
||||
|
||||
@ -924,9 +924,9 @@ async def test_color_light_temperature_light_bad_temp(hass: HomeAssistant) -> No
|
||||
"light.bla",
|
||||
STATE_ON,
|
||||
{
|
||||
light.ATTR_MIN_MIREDS: 200,
|
||||
light.ATTR_COLOR_TEMP: 0,
|
||||
light.ATTR_MAX_MIREDS: 500,
|
||||
light.ATTR_MAX_COLOR_TEMP_KELVIN: 5000,
|
||||
light.ATTR_COLOR_TEMP_KELVIN: 0,
|
||||
light.ATTR_MIN_COLOR_TEMP_KELVIN: 2000,
|
||||
},
|
||||
),
|
||||
BASIC_CONFIG,
|
||||
|
Loading…
x
Reference in New Issue
Block a user