Add support for light color modes (#47720)
* Add support for light color modes * Update tests * Update comments * Fix bugs, add tests * Suppress lint errors * Don't suppress brightness when state is ambiguous * Improve reproduce_state + add tests * Add comment * Change COLOR_MODE_* constants, rename COLOR_MODE_DIMMER to COLOR_MODE_BRIGHTNESS * Fix tests * Tweaks
This commit is contained in:
parent
333e6a215a
commit
5f2326fb57
8 changed files with 897 additions and 39 deletions
|
@ -7,9 +7,12 @@ import pyzerproc
|
|||
from homeassistant import setup
|
||||
from homeassistant.components.light import (
|
||||
ATTR_BRIGHTNESS,
|
||||
ATTR_COLOR_MODE,
|
||||
ATTR_HS_COLOR,
|
||||
ATTR_RGB_COLOR,
|
||||
ATTR_SUPPORTED_COLOR_MODES,
|
||||
ATTR_XY_COLOR,
|
||||
COLOR_MODE_HS,
|
||||
SCAN_INTERVAL,
|
||||
SUPPORT_BRIGHTNESS,
|
||||
SUPPORT_COLOR,
|
||||
|
@ -96,6 +99,7 @@ async def test_init(hass, mock_entry):
|
|||
assert state.state == STATE_OFF
|
||||
assert state.attributes == {
|
||||
ATTR_FRIENDLY_NAME: "LEDBlue-CCDDEEFF",
|
||||
ATTR_SUPPORTED_COLOR_MODES: [COLOR_MODE_HS],
|
||||
ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS | SUPPORT_COLOR,
|
||||
ATTR_ICON: "mdi:string-lights",
|
||||
}
|
||||
|
@ -104,8 +108,10 @@ async def test_init(hass, mock_entry):
|
|||
assert state.state == STATE_ON
|
||||
assert state.attributes == {
|
||||
ATTR_FRIENDLY_NAME: "LEDBlue-33445566",
|
||||
ATTR_SUPPORTED_COLOR_MODES: [COLOR_MODE_HS],
|
||||
ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS | SUPPORT_COLOR,
|
||||
ATTR_ICON: "mdi:string-lights",
|
||||
ATTR_COLOR_MODE: COLOR_MODE_HS,
|
||||
ATTR_BRIGHTNESS: 255,
|
||||
ATTR_HS_COLOR: (221.176, 100.0),
|
||||
ATTR_RGB_COLOR: (0, 80, 255),
|
||||
|
@ -272,6 +278,7 @@ async def test_light_update(hass, mock_light):
|
|||
assert state.state == STATE_OFF
|
||||
assert state.attributes == {
|
||||
ATTR_FRIENDLY_NAME: "LEDBlue-CCDDEEFF",
|
||||
ATTR_SUPPORTED_COLOR_MODES: [COLOR_MODE_HS],
|
||||
ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS | SUPPORT_COLOR,
|
||||
ATTR_ICON: "mdi:string-lights",
|
||||
}
|
||||
|
@ -290,6 +297,7 @@ async def test_light_update(hass, mock_light):
|
|||
assert state.state == STATE_UNAVAILABLE
|
||||
assert state.attributes == {
|
||||
ATTR_FRIENDLY_NAME: "LEDBlue-CCDDEEFF",
|
||||
ATTR_SUPPORTED_COLOR_MODES: [COLOR_MODE_HS],
|
||||
ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS | SUPPORT_COLOR,
|
||||
ATTR_ICON: "mdi:string-lights",
|
||||
}
|
||||
|
@ -307,6 +315,7 @@ async def test_light_update(hass, mock_light):
|
|||
assert state.state == STATE_OFF
|
||||
assert state.attributes == {
|
||||
ATTR_FRIENDLY_NAME: "LEDBlue-CCDDEEFF",
|
||||
ATTR_SUPPORTED_COLOR_MODES: [COLOR_MODE_HS],
|
||||
ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS | SUPPORT_COLOR,
|
||||
ATTR_ICON: "mdi:string-lights",
|
||||
}
|
||||
|
@ -324,8 +333,10 @@ async def test_light_update(hass, mock_light):
|
|||
assert state.state == STATE_ON
|
||||
assert state.attributes == {
|
||||
ATTR_FRIENDLY_NAME: "LEDBlue-CCDDEEFF",
|
||||
ATTR_SUPPORTED_COLOR_MODES: [COLOR_MODE_HS],
|
||||
ATTR_SUPPORTED_FEATURES: SUPPORT_BRIGHTNESS | SUPPORT_COLOR,
|
||||
ATTR_ICON: "mdi:string-lights",
|
||||
ATTR_COLOR_MODE: COLOR_MODE_HS,
|
||||
ATTR_BRIGHTNESS: 220,
|
||||
ATTR_HS_COLOR: (261.429, 31.818),
|
||||
ATTR_RGB_COLOR: (202, 173, 255),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue