Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 21 additions & 13 deletions homeassistant/components/light/limitlessled.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@
CONF_GROUPS = 'groups'
CONF_NUMBER = 'number'
CONF_VERSION = 'version'
CONF_FADE = 'fade'

DEFAULT_LED_TYPE = 'rgbw'
DEFAULT_PORT = 5987
DEFAULT_TRANSITION = 0
DEFAULT_VERSION = 6
DEFAULT_FADE = False

LED_TYPE = ['rgbw', 'rgbww', 'white', 'bridge-led']

Expand Down Expand Up @@ -58,6 +60,7 @@
vol.Optional(CONF_TYPE, default=DEFAULT_LED_TYPE):
vol.In(LED_TYPE),
vol.Required(CONF_NUMBER): cv.positive_int,
vol.Optional(CONF_FADE, default=DEFAULT_FADE): cv.boolean,
}
]),
},
Expand Down Expand Up @@ -112,7 +115,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
group_conf.get(CONF_NUMBER),
group_conf.get(CONF_NAME),
group_conf.get(CONF_TYPE, DEFAULT_LED_TYPE))
lights.append(LimitlessLEDGroup.factory(group))
lights.append(LimitlessLEDGroup.factory(group, {
'fade': group_conf[CONF_FADE]
}))
add_devices(lights)


Expand Down Expand Up @@ -152,25 +157,26 @@ def wrapper(self, **kwargs):
class LimitlessLEDGroup(Light):
"""Representation of a LimitessLED group."""

def __init__(self, group):
def __init__(self, group, config):
"""Initialize a group."""
self.group = group
self.repeating = False
self._is_on = False
self._brightness = None
self.config = config

@staticmethod
def factory(group):
def factory(group, config):
"""Produce LimitlessLEDGroup objects."""
from limitlessled.group.rgbw import RgbwGroup
from limitlessled.group.white import WhiteGroup
from limitlessled.group.rgbww import RgbwwGroup
if isinstance(group, WhiteGroup):
return LimitlessLEDWhiteGroup(group)
return LimitlessLEDWhiteGroup(group, config)
elif isinstance(group, RgbwGroup):
return LimitlessLEDRGBWGroup(group)
return LimitlessLEDRGBWGroup(group, config)
elif isinstance(group, RgbwwGroup):
return LimitlessLEDRGBWWGroup(group)
return LimitlessLEDRGBWWGroup(group, config)

@property
def should_poll(self):
Expand All @@ -196,15 +202,17 @@ def brightness(self):
def turn_off(self, transition_time, pipeline, **kwargs):
"""Turn off a group."""
if self.is_on:
pipeline.transition(transition_time, brightness=0.0).off()
if self.config[CONF_FADE]:
pipeline.transition(transition_time, brightness=0.0)
pipeline.off()


class LimitlessLEDWhiteGroup(LimitlessLEDGroup):
"""Representation of a LimitlessLED White group."""

def __init__(self, group):
def __init__(self, group, config):
"""Initialize White group."""
super().__init__(group)
super().__init__(group, config)
# Initialize group with known values.
self.group.on = True
self.group.temperature = 1.0
Expand Down Expand Up @@ -242,9 +250,9 @@ def turn_on(self, transition_time, pipeline, **kwargs):
class LimitlessLEDRGBWGroup(LimitlessLEDGroup):
"""Representation of a LimitlessLED RGBW group."""

def __init__(self, group):
def __init__(self, group, config):
"""Initialize RGBW group."""
super().__init__(group)
super().__init__(group, config)
# Initialize group with known values.
self.group.on = True
self.group.white()
Expand Down Expand Up @@ -301,9 +309,9 @@ def turn_on(self, transition_time, pipeline, **kwargs):
class LimitlessLEDRGBWWGroup(LimitlessLEDGroup):
"""Representation of a LimitlessLED RGBWW group."""

def __init__(self, group):
def __init__(self, group, config):
"""Initialize RGBWW group."""
super().__init__(group)
super().__init__(group, config)
# Initialize group with known values.
self.group.on = True
self.group.white()
Expand Down