Update FLUX_LED by adding Effects (#6083)

* Add FLUX_LED Effects

Add add the various supported FLUX_LED effects

* Correct Flux_LED Issues

* Whitespace Changes

* Feed the Hound

* Feed the hound better food
This commit is contained in:
dramamoose 2017-02-18 16:45:21 -07:00 committed by Adam Mills
parent e1cbd6b4c0
commit 003815c91a

View file

@ -12,8 +12,9 @@ import voluptuous as vol
from homeassistant.const import CONF_DEVICES, CONF_NAME, CONF_PROTOCOL
from homeassistant.components.light import (
ATTR_BRIGHTNESS, ATTR_RGB_COLOR, ATTR_EFFECT, EFFECT_RANDOM,
SUPPORT_BRIGHTNESS, SUPPORT_EFFECT, SUPPORT_RGB_COLOR, Light,
ATTR_BRIGHTNESS, ATTR_RGB_COLOR, ATTR_EFFECT, EFFECT_COLORLOOP,
EFFECT_RANDOM, SUPPORT_BRIGHTNESS, SUPPORT_EFFECT,
SUPPORT_RGB_COLOR, Light,
PLATFORM_SCHEMA)
import homeassistant.helpers.config_validation as cv
@ -32,6 +33,50 @@ SUPPORT_FLUX_LED = (SUPPORT_BRIGHTNESS | SUPPORT_EFFECT |
MODE_RGB = 'rgb'
MODE_RGBW = 'rgbw'
# List of Supported Effects which aren't already declared in LIGHT
EFFECT_RED_FADE = "red_fade"
EFFECT_GREEN_FADE = "green_fade"
EFFECT_BLUE_FADE = "blue_fade"
EFFECT_YELLOW_FADE = "yellow_fade"
EFFECT_CYAN_FADE = "cyan_fade"
EFFECT_PURPLE_FADE = "purple_fade"
EFFECT_WHITE_FADE = "white_fade"
EFFECT_RED_GREEN_CROSS_FADE = "rg_cross_fade"
EFFECT_RED_BLUE_CROSS_FADE = "rb_cross_fade"
EFFECT_GREEN_BLUE_CROSS_FADE = "gb_cross_fade"
EFFECT_COLORSTROBE = "colorstrobe"
EFFECT_RED_STROBE = "red_strobe"
EFFECT_GREEN_STROBE = "green_strobe"
EFFECT_BLUE_STOBE = "blue_strobe"
EFFECT_YELLOW_STROBE = "yellow_strobe"
EFFECT_CYAN_STROBE = "cyan_strobe"
EFFECT_PURPLE_STROBE = "purple_strobe"
EFFECT_WHITE_STROBE = "white_strobe"
EFFECT_COLORJUMP = "colorjump"
FLUX_EFFECT_LIST = [
EFFECT_COLORLOOP,
EFFECT_RANDOM,
EFFECT_RED_FADE,
EFFECT_GREEN_FADE,
EFFECT_BLUE_FADE,
EFFECT_YELLOW_FADE,
EFFECT_CYAN_FADE,
EFFECT_PURPLE_FADE,
EFFECT_WHITE_FADE,
EFFECT_RED_GREEN_CROSS_FADE,
EFFECT_RED_BLUE_CROSS_FADE,
EFFECT_GREEN_BLUE_CROSS_FADE,
EFFECT_COLORSTROBE,
EFFECT_RED_STROBE,
EFFECT_GREEN_STROBE,
EFFECT_BLUE_STOBE,
EFFECT_YELLOW_STROBE,
EFFECT_CYAN_STROBE,
EFFECT_PURPLE_STROBE,
EFFECT_WHITE_STROBE,
EFFECT_COLORJUMP]
DEVICE_SCHEMA = vol.Schema({
vol.Optional(CONF_NAME): cv.string,
vol.Optional(ATTR_MODE, default=MODE_RGBW):
@ -161,6 +206,11 @@ class FluxLight(Light):
"""Flag supported features."""
return SUPPORT_FLUX_LED
@property
def effect_list(self):
"""Return the list of supported effects."""
return FLUX_EFFECT_LIST
def turn_on(self, **kwargs):
"""Turn the specified or all lights on."""
if not self.is_on:
@ -183,6 +233,46 @@ class FluxLight(Light):
self._bulb.setRgb(random.randrange(0, 255),
random.randrange(0, 255),
random.randrange(0, 255))
elif effect == EFFECT_COLORLOOP:
self._bulb.setPresetPattern(0x25, 50)
elif effect == EFFECT_RED_FADE:
self._bulb.setPresetPattern(0x26, 50)
elif effect == EFFECT_GREEN_FADE:
self._bulb.setPresetPattern(0x27, 50)
elif effect == EFFECT_BLUE_FADE:
self._bulb.setPresetPattern(0x28, 50)
elif effect == EFFECT_YELLOW_FADE:
self._bulb.setPresetPattern(0x29, 50)
elif effect == EFFECT_CYAN_FADE:
self._bulb.setPresetPattern(0x2a, 50)
elif effect == EFFECT_PURPLE_FADE:
self._bulb.setPresetPattern(0x2b, 50)
elif effect == EFFECT_WHITE_FADE:
self._bulb.setPresetPattern(0x2c, 50)
elif effect == EFFECT_RED_GREEN_CROSS_FADE:
self._bulb.setPresetPattern(0x2d, 50)
elif effect == EFFECT_RED_BLUE_CROSS_FADE:
self._bulb.setPresetPattern(0x2e, 50)
elif effect == EFFECT_GREEN_BLUE_CROSS_FADE:
self._bulb.setPresetPattern(0x2f, 50)
elif effect == EFFECT_COLORSTROBE:
self._bulb.setPresetPattern(0x30, 50)
elif effect == EFFECT_RED_STROBE:
self._bulb.setPresetPattern(0x31, 50)
elif effect == EFFECT_GREEN_STROBE:
self._bulb.setPresetPattern(0x32, 50)
elif effect == EFFECT_BLUE_STOBE:
self._bulb.setPresetPattern(0x33, 50)
elif effect == EFFECT_YELLOW_STROBE:
self._bulb.setPresetPattern(0x34, 50)
elif effect == EFFECT_CYAN_STROBE:
self._bulb.setPresetPattern(0x35, 50)
elif effect == EFFECT_PURPLE_STROBE:
self._bulb.setPresetPattern(0x36, 50)
elif effect == EFFECT_WHITE_STROBE:
self._bulb.setPresetPattern(0x37, 50)
elif effect == EFFECT_COLORJUMP:
self._bulb.setPresetPattern(0x38, 50)
def turn_off(self, **kwargs):
"""Turn the specified or all lights off."""