From 4e62da9c8e131666fc5ff70b18c8be113f8a2dcd Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 4 Jan 2020 22:52:10 +0100 Subject: [PATCH] Improve WLED pure white support for RGBW (#30477) --- homeassistant/components/wled/light.py | 5 +++++ tests/components/wled/test_light.py | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/homeassistant/components/wled/light.py b/homeassistant/components/wled/light.py index 14340dfe39e..036753d024a 100644 --- a/homeassistant/components/wled/light.py +++ b/homeassistant/components/wled/light.py @@ -191,6 +191,11 @@ class WLEDLight(Light, WLEDDeviceEntity): hue, sat = self._color data[ATTR_COLOR_PRIMARY] = color_util.color_hsv_to_RGB(hue, sat, 100) + # On a RGBW strip, when the color is pure white, disable the RGB LEDs in + # WLED by setting RGB to 0,0,0 + if data[ATTR_COLOR_PRIMARY] == (255, 255, 255): + data[ATTR_COLOR_PRIMARY] = (0, 0, 0) + # Add requested or last known white value if ATTR_WHITE_VALUE in kwargs: data[ATTR_COLOR_PRIMARY] += (kwargs[ATTR_WHITE_VALUE],) diff --git a/tests/components/wled/test_light.py b/tests/components/wled/test_light.py index 357a600dd5b..3c439e71c90 100644 --- a/tests/components/wled/test_light.py +++ b/tests/components/wled/test_light.py @@ -193,3 +193,20 @@ async def test_rgbw_light( assert state.state == STATE_ON assert state.attributes.get(ATTR_HS_COLOR) == (28.874, 72.522) assert state.attributes.get(ATTR_WHITE_VALUE) == 100 + + await hass.services.async_call( + LIGHT_DOMAIN, + SERVICE_TURN_ON, + { + ATTR_ENTITY_ID: "light.wled_rgbw_light", + ATTR_RGB_COLOR: (255, 255, 255), + ATTR_WHITE_VALUE: 100, + }, + blocking=True, + ) + await hass.async_block_till_done() + + state = hass.states.get("light.wled_rgbw_light") + assert state.state == STATE_ON + assert state.attributes.get(ATTR_HS_COLOR) == (0, 0) + assert state.attributes.get(ATTR_WHITE_VALUE) == 100