Prefer using xy over hs when supported by light (#52883)
This commit is contained in:
parent
2ecfd74fa4
commit
fd6b5ed072
2 changed files with 36 additions and 6 deletions
|
@ -26,6 +26,7 @@ from homeassistant.components.light import (
|
||||||
)
|
)
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
|
from homeassistant.util.color import color_hs_to_xy
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
COVER_TYPES,
|
COVER_TYPES,
|
||||||
|
@ -189,6 +190,9 @@ class DeconzBaseLight(DeconzDevice, LightEntity):
|
||||||
data["ct"] = kwargs[ATTR_COLOR_TEMP]
|
data["ct"] = kwargs[ATTR_COLOR_TEMP]
|
||||||
|
|
||||||
if ATTR_HS_COLOR in kwargs:
|
if ATTR_HS_COLOR in kwargs:
|
||||||
|
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["hue"] = int(kwargs[ATTR_HS_COLOR][0] / 360 * 65535)
|
||||||
data["sat"] = int(kwargs[ATTR_HS_COLOR][1] / 100 * 255)
|
data["sat"] = int(kwargs[ATTR_HS_COLOR][1] / 100 * 255)
|
||||||
|
|
||||||
|
|
|
@ -371,6 +371,34 @@ async def test_light_state_change(hass, aioclient_mock, mock_deconz_websocket):
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"input,expected",
|
"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
|
( # Turn on light with short color loop
|
||||||
{
|
{
|
||||||
"light_on": False,
|
"light_on": False,
|
||||||
|
@ -811,9 +839,8 @@ async def test_groups(hass, aioclient_mock, input, expected):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hue": 45510,
|
|
||||||
"on": True,
|
"on": True,
|
||||||
"sat": 127,
|
"xy": (0.235, 0.164),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
( # Turn on group with short color loop
|
( # Turn on group with short color loop
|
||||||
|
@ -827,9 +854,8 @@ async def test_groups(hass, aioclient_mock, input, expected):
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hue": 45510,
|
|
||||||
"on": True,
|
"on": True,
|
||||||
"sat": 127,
|
"xy": (0.235, 0.164),
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
Loading…
Add table
Reference in a new issue