aboutsummaryrefslogtreecommitdiff
path: root/light.py
diff options
context:
space:
mode:
Diffstat (limited to 'light.py')
-rw-r--r--light.py78
1 files changed, 64 insertions, 14 deletions
diff --git a/light.py b/light.py
index c443728..6b5961f 100644
--- a/light.py
+++ b/light.py
@@ -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