From b07d887d77b02e0095c03646a5e8dbf960d35f9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Fri, 11 Nov 2016 06:30:52 +0100 Subject: [PATCH] Add support for rgb light in led flux, fixes issue #4303 (#4332) --- homeassistant/components/light/flux_led.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/light/flux_led.py b/homeassistant/components/light/flux_led.py index 095733afd8e..9de4aa6b0fc 100644 --- a/homeassistant/components/light/flux_led.py +++ b/homeassistant/components/light/flux_led.py @@ -23,6 +23,7 @@ REQUIREMENTS = ['https://github.com/Danielhiversen/flux_led/archive/0.8.zip' _LOGGER = logging.getLogger(__name__) CONF_AUTOMATIC_ADD = 'automatic_add' +ATTR_MODE = 'mode' DOMAIN = 'flux_led' @@ -31,6 +32,8 @@ SUPPORT_FLUX_LED = (SUPPORT_BRIGHTNESS | SUPPORT_EFFECT | DEVICE_SCHEMA = vol.Schema({ vol.Optional(CONF_NAME): cv.string, + vol.Optional(ATTR_MODE, default='rgbw'): + vol.All(cv.string, vol.In(['rgbw', 'rgb'])), }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -48,6 +51,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): device = {} device['name'] = device_config[CONF_NAME] device['ipaddr'] = ipaddr + device[ATTR_MODE] = device_config[ATTR_MODE] light = FluxLight(device) if light.is_valid: lights.append(light) @@ -65,6 +69,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if ipaddr in light_ips: continue device['name'] = device['id'] + " " + ipaddr + device[ATTR_MODE] = 'rgbw' light = FluxLight(device) if light.is_valid: lights.append(light) @@ -82,6 +87,7 @@ class FluxLight(Light): self._name = device['name'] self._ipaddr = device['ipaddr'] + self._mode = device[ATTR_MODE] self.is_valid = True self._bulb = None try: @@ -132,7 +138,11 @@ class FluxLight(Light): if rgb: self._bulb.setRgb(*tuple(rgb)) elif brightness: - self._bulb.setWarmWhite255(brightness) + if self._mode == 'rgbw': + self._bulb.setWarmWhite255(brightness) + elif self._mode == 'rgb': + (red, green, blue) = self._bulb.getRgb() + self._bulb.setRgb(red, green, blue, brightness=brightness) elif effect == EFFECT_RANDOM: self._bulb.setRgb(random.randrange(0, 255), random.randrange(0, 255),