Prefer using xy over hs when supported by light (#52883)

pull/52912/head
Robert Svensson 2021-07-12 08:17:50 +02:00 committed by GitHub
parent 2ecfd74fa4
commit fd6b5ed072
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 6 deletions

View File

@ -26,6 +26,7 @@ from homeassistant.components.light import (
)
from homeassistant.core import callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.util.color import color_hs_to_xy
from .const import (
COVER_TYPES,
@ -189,8 +190,11 @@ class DeconzBaseLight(DeconzDevice, LightEntity):
data["ct"] = kwargs[ATTR_COLOR_TEMP]
if ATTR_HS_COLOR in kwargs:
data["hue"] = int(kwargs[ATTR_HS_COLOR][0] / 360 * 65535)
data["sat"] = int(kwargs[ATTR_HS_COLOR][1] / 100 * 255)
if COLOR_MODE_XY in self._attr_supported_color_modes:
data["xy"] = color_hs_to_xy(*kwargs[ATTR_HS_COLOR])
else:
data["hue"] = int(kwargs[ATTR_HS_COLOR][0] / 360 * 65535)
data["sat"] = int(kwargs[ATTR_HS_COLOR][1] / 100 * 255)
if ATTR_XY_COLOR in kwargs:
data["xy"] = kwargs[ATTR_XY_COLOR]

View File

@ -371,6 +371,34 @@ async def test_light_state_change(hass, aioclient_mock, mock_deconz_websocket):
@pytest.mark.parametrize(
"input,expected",
[
( # Turn on light with hue and sat
{
"light_on": True,
"service": SERVICE_TURN_ON,
"call": {
ATTR_ENTITY_ID: "light.hue_go",
ATTR_HS_COLOR: (20, 30),
},
},
{
"on": True,
"xy": (0.411, 0.351),
},
),
( # Turn on light with XY color
{
"light_on": True,
"service": SERVICE_TURN_ON,
"call": {
ATTR_ENTITY_ID: "light.hue_go",
ATTR_XY_COLOR: (0.411, 0.351),
},
},
{
"on": True,
"xy": (0.411, 0.351),
},
),
( # Turn on light with short color loop
{
"light_on": False,
@ -811,9 +839,8 @@ async def test_groups(hass, aioclient_mock, input, expected):
},
},
{
"hue": 45510,
"on": True,
"sat": 127,
"xy": (0.235, 0.164),
},
),
( # Turn on group with short color loop
@ -827,9 +854,8 @@ async def test_groups(hass, aioclient_mock, input, expected):
},
},
{
"hue": 45510,
"on": True,
"sat": 127,
"xy": (0.235, 0.164),
},
),
],