Migrate to voluptuous (#3282)
This commit is contained in:
parent
cc99d266b7
commit
f5df5615be
1 changed files with 45 additions and 38 deletions
|
@ -7,34 +7,59 @@ https://home-assistant.io/components/light.lifx/
|
||||||
import colorsys
|
import colorsys
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.light import (
|
from homeassistant.components.light import (
|
||||||
ATTR_BRIGHTNESS, ATTR_COLOR_TEMP, ATTR_RGB_COLOR, ATTR_TRANSITION,
|
ATTR_BRIGHTNESS, ATTR_COLOR_TEMP, ATTR_RGB_COLOR, ATTR_TRANSITION,
|
||||||
SUPPORT_BRIGHTNESS, SUPPORT_COLOR_TEMP, SUPPORT_RGB_COLOR,
|
SUPPORT_BRIGHTNESS, SUPPORT_COLOR_TEMP, SUPPORT_RGB_COLOR,
|
||||||
SUPPORT_TRANSITION, Light)
|
SUPPORT_TRANSITION, Light, PLATFORM_SCHEMA)
|
||||||
from homeassistant.helpers.event import track_time_change
|
from homeassistant.helpers.event import track_time_change
|
||||||
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
REQUIREMENTS = ['liffylights==0.9.4']
|
REQUIREMENTS = ['liffylights==0.9.4']
|
||||||
|
|
||||||
CONF_SERVER = "server" # server address configuration item
|
BYTE_MAX = 255
|
||||||
CONF_BROADCAST = "broadcast" # broadcast address configuration item
|
|
||||||
SHORT_MAX = 65535 # short int maximum
|
CONF_BROADCAST = 'broadcast'
|
||||||
BYTE_MAX = 255 # byte maximum
|
CONF_SERVER = 'server'
|
||||||
TEMP_MIN = 2500 # lifx minimum temperature
|
|
||||||
TEMP_MAX = 9000 # lifx maximum temperature
|
SHORT_MAX = 65535
|
||||||
TEMP_MIN_HASS = 154 # home assistant minimum temperature
|
|
||||||
TEMP_MAX_HASS = 500 # home assistant maximum temperature
|
TEMP_MAX = 9000
|
||||||
|
TEMP_MAX_HASS = 500
|
||||||
|
TEMP_MIN = 2500
|
||||||
|
TEMP_MIN_HASS = 154
|
||||||
|
|
||||||
SUPPORT_LIFX = (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_RGB_COLOR |
|
SUPPORT_LIFX = (SUPPORT_BRIGHTNESS | SUPPORT_COLOR_TEMP | SUPPORT_RGB_COLOR |
|
||||||
SUPPORT_TRANSITION)
|
SUPPORT_TRANSITION)
|
||||||
|
|
||||||
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
|
vol.Optional(CONF_SERVER, default=None): cv.string,
|
||||||
|
vol.Optional(CONF_BROADCAST, default=None): cv.string,
|
||||||
|
})
|
||||||
|
|
||||||
class LIFX():
|
|
||||||
|
# pylint: disable=unused-argument
|
||||||
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
|
"""Setup the LIFX platform."""
|
||||||
|
server_addr = config.get(CONF_SERVER)
|
||||||
|
broadcast_addr = config.get(CONF_BROADCAST)
|
||||||
|
|
||||||
|
lifx_library = LIFX(add_devices, server_addr, broadcast_addr)
|
||||||
|
|
||||||
|
# Register our poll service
|
||||||
|
track_time_change(hass, lifx_library.poll, second=[10, 40])
|
||||||
|
|
||||||
|
lifx_library.probe()
|
||||||
|
|
||||||
|
|
||||||
|
class LIFX(object):
|
||||||
"""Representation of a LIFX light."""
|
"""Representation of a LIFX light."""
|
||||||
|
|
||||||
def __init__(self, add_devices_callback,
|
def __init__(self, add_devices_callback, server_addr=None,
|
||||||
server_addr=None, broadcast_addr=None):
|
broadcast_addr=None):
|
||||||
"""Initialize the light."""
|
"""Initialize the light."""
|
||||||
import liffylights
|
import liffylights
|
||||||
|
|
||||||
|
@ -43,10 +68,7 @@ class LIFX():
|
||||||
self._add_devices_callback = add_devices_callback
|
self._add_devices_callback = add_devices_callback
|
||||||
|
|
||||||
self._liffylights = liffylights.LiffyLights(
|
self._liffylights = liffylights.LiffyLights(
|
||||||
self.on_device,
|
self.on_device, self.on_power, self.on_color, server_addr,
|
||||||
self.on_power,
|
|
||||||
self.on_color,
|
|
||||||
server_addr,
|
|
||||||
broadcast_addr)
|
broadcast_addr)
|
||||||
|
|
||||||
def find_bulb(self, ipaddr):
|
def find_bulb(self, ipaddr):
|
||||||
|
@ -66,8 +88,8 @@ class LIFX():
|
||||||
if bulb is None:
|
if bulb is None:
|
||||||
_LOGGER.debug("new bulb %s %s %d %d %d %d %d",
|
_LOGGER.debug("new bulb %s %s %d %d %d %d %d",
|
||||||
ipaddr, name, power, hue, sat, bri, kel)
|
ipaddr, name, power, hue, sat, bri, kel)
|
||||||
bulb = LIFXLight(self._liffylights, ipaddr, name,
|
bulb = LIFXLight(
|
||||||
power, hue, sat, bri, kel)
|
self._liffylights, ipaddr, name, power, hue, sat, bri, kel)
|
||||||
self._devices.append(bulb)
|
self._devices.append(bulb)
|
||||||
self._add_devices_callback([bulb])
|
self._add_devices_callback([bulb])
|
||||||
else:
|
else:
|
||||||
|
@ -104,20 +126,6 @@ class LIFX():
|
||||||
self._liffylights.probe(address)
|
self._liffylights.probe(address)
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=unused-argument
|
|
||||||
def setup_platform(hass, config, add_devices_callback, discovery_info=None):
|
|
||||||
"""Setup the LIFX platform."""
|
|
||||||
server_addr = config.get(CONF_SERVER, None)
|
|
||||||
broadcast_addr = config.get(CONF_BROADCAST, None)
|
|
||||||
|
|
||||||
lifx_library = LIFX(add_devices_callback, server_addr, broadcast_addr)
|
|
||||||
|
|
||||||
# Register our poll service
|
|
||||||
track_time_change(hass, lifx_library.poll, second=[10, 40])
|
|
||||||
|
|
||||||
lifx_library.probe()
|
|
||||||
|
|
||||||
|
|
||||||
def convert_rgb_to_hsv(rgb):
|
def convert_rgb_to_hsv(rgb):
|
||||||
"""Convert Home Assistant RGB values to HSV values."""
|
"""Convert Home Assistant RGB values to HSV values."""
|
||||||
red, green, blue = [_ / BYTE_MAX for _ in rgb]
|
red, green, blue = [_ / BYTE_MAX for _ in rgb]
|
||||||
|
@ -134,11 +142,10 @@ class LIFXLight(Light):
|
||||||
"""Representation of a LIFX light."""
|
"""Representation of a LIFX light."""
|
||||||
|
|
||||||
# pylint: disable=too-many-arguments
|
# pylint: disable=too-many-arguments
|
||||||
def __init__(self, liffy, ipaddr, name, power, hue,
|
def __init__(self, liffy, ipaddr, name, power, hue, saturation, brightness,
|
||||||
saturation, brightness, kelvin):
|
kelvin):
|
||||||
"""Initialize the light."""
|
"""Initialize the light."""
|
||||||
_LOGGER.debug("LIFXLight: %s %s",
|
_LOGGER.debug("LIFXLight: %s %s", ipaddr, name)
|
||||||
ipaddr, name)
|
|
||||||
|
|
||||||
self._liffylights = liffy
|
self._liffylights = liffy
|
||||||
self._ip = ipaddr
|
self._ip = ipaddr
|
||||||
|
@ -164,8 +171,8 @@ class LIFXLight(Light):
|
||||||
@property
|
@property
|
||||||
def rgb_color(self):
|
def rgb_color(self):
|
||||||
"""Return the RGB value."""
|
"""Return the RGB value."""
|
||||||
_LOGGER.debug("rgb_color: [%d %d %d]",
|
_LOGGER.debug(
|
||||||
self._rgb[0], self._rgb[1], self._rgb[2])
|
"rgb_color: [%d %d %d]", self._rgb[0], self._rgb[1], self._rgb[2])
|
||||||
return self._rgb
|
return self._rgb
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
Loading…
Add table
Reference in a new issue