diff options
Diffstat (limited to 'light.py')
-rw-r--r-- | light.py | 78 |
1 files changed, 64 insertions, 14 deletions
@@ -1,26 +1,76 @@ -from homeassistant.components.light import LightEntity, ATTR_BRIGHTNESS, ATTR_COLOR_MODE -from driver import BekenConnection, makemsg +import homeassistant.helpers.config_validation as cv +import voluptuous as vol +from homeassistant.const import CONF_MAC +from .driver import BekenConnection, makemsg +from homeassistant.components.light import ( + LightEntity, + + SUPPORT_BRIGHTNESS, + SUPPORT_COLOR, + SUPPORT_WHITE_VALUE, + + ATTR_BRIGHTNESS, + ATTR_RGBW_COLOR, + + COLOR_MODE_RGBW, + PLATFORM_SCHEMA +) + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required("name"): cv.string, + vol.Required("address"): cv.string +}) + +SUPPORT_FEATURES_RGB = SUPPORT_BRIGHTNESS | SUPPORT_COLOR +SUPPORT_FEATURES_WHITE = SUPPORT_BRIGHTNESS + +def setup_platform(hass, config, add_entities, discovery_info=None): + add_entities([ BekenLight(name=config["name"], address=config["address"]) ]) class BekenLight(LightEntity): - def __init__(self): - self._state = { - "on": False, - "brightness": 100, - "lamp": "white", - "saturation": 0, - "hue": 0, - } + def __init__(self, **kwargs): + self._name = kwargs["name"] + self._address = kwargs["address"] + self._on = False + self._brightness = 255 + self._rgbw = (255, 255, 255, 255) # r, g, b, w + + @property + def color_mode(self): + return COLOR_MODE_RGBW + + @property + def supported_color_modes(self): + return set([ COLOR_MODE_RGBW ]) + + @property + def supported_features(self): + return SUPPORT_BRIGHTNESS | SUPPORT_COLOR | SUPPORT_WHITE_VALUE + + @property + def unique_id(self): + return self._address @property def name(self): - return "Beken LED" + return self._name @property def is_on(self): - return self._state['on'] + return self._on + + @property + def brightness(self): + return self._brightness + + @property + def rgbw_color(self): + return self._rgbw def turn_on(self, **kwargs): - self._state['on'] = True + self._on = True + self._brightness = kwargs.get(ATTR_BRIGHTNESS) + self._rgbw = kwargs.get(ATTR_RGBW_COLOR) def turn_off(self, **kwargs): - self._state['on'] = False + self._on = False |