Add support for rgb light in led flux, fixes issue #4303 (#4332)

This commit is contained in:
Daniel Høyer Iversen 2016-11-11 06:30:52 +01:00 committed by Paulus Schoutsen
parent 9bb94a4512
commit b07d887d77

View File

@ -23,6 +23,7 @@ REQUIREMENTS = ['https://github.com/Danielhiversen/flux_led/archive/0.8.zip'
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
CONF_AUTOMATIC_ADD = 'automatic_add' CONF_AUTOMATIC_ADD = 'automatic_add'
ATTR_MODE = 'mode'
DOMAIN = 'flux_led' DOMAIN = 'flux_led'
@ -31,6 +32,8 @@ SUPPORT_FLUX_LED = (SUPPORT_BRIGHTNESS | SUPPORT_EFFECT |
DEVICE_SCHEMA = vol.Schema({ DEVICE_SCHEMA = vol.Schema({
vol.Optional(CONF_NAME): cv.string, 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({ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
@ -48,6 +51,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
device = {} device = {}
device['name'] = device_config[CONF_NAME] device['name'] = device_config[CONF_NAME]
device['ipaddr'] = ipaddr device['ipaddr'] = ipaddr
device[ATTR_MODE] = device_config[ATTR_MODE]
light = FluxLight(device) light = FluxLight(device)
if light.is_valid: if light.is_valid:
lights.append(light) lights.append(light)
@ -65,6 +69,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
if ipaddr in light_ips: if ipaddr in light_ips:
continue continue
device['name'] = device['id'] + " " + ipaddr device['name'] = device['id'] + " " + ipaddr
device[ATTR_MODE] = 'rgbw'
light = FluxLight(device) light = FluxLight(device)
if light.is_valid: if light.is_valid:
lights.append(light) lights.append(light)
@ -82,6 +87,7 @@ class FluxLight(Light):
self._name = device['name'] self._name = device['name']
self._ipaddr = device['ipaddr'] self._ipaddr = device['ipaddr']
self._mode = device[ATTR_MODE]
self.is_valid = True self.is_valid = True
self._bulb = None self._bulb = None
try: try:
@ -132,7 +138,11 @@ class FluxLight(Light):
if rgb: if rgb:
self._bulb.setRgb(*tuple(rgb)) self._bulb.setRgb(*tuple(rgb))
elif brightness: 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: elif effect == EFFECT_RANDOM:
self._bulb.setRgb(random.randrange(0, 255), self._bulb.setRgb(random.randrange(0, 255),
random.randrange(0, 255), random.randrange(0, 255),