Add support for restoring state to rpi_gpio_pwm (#19944)
parent
49cfebd903
commit
17dce6697f
|
@ -8,14 +8,15 @@ import logging
|
|||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.const import CONF_NAME, CONF_TYPE
|
||||
from homeassistant.const import CONF_NAME, CONF_TYPE, STATE_ON
|
||||
from homeassistant.components.light import (
|
||||
Light, ATTR_BRIGHTNESS, ATTR_HS_COLOR, ATTR_TRANSITION,
|
||||
SUPPORT_BRIGHTNESS, SUPPORT_COLOR, SUPPORT_TRANSITION, PLATFORM_SCHEMA)
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
import homeassistant.util.color as color_util
|
||||
from homeassistant.helpers.restore_state import RestoreEntity
|
||||
|
||||
REQUIREMENTS = ['pwmled==1.4.0']
|
||||
REQUIREMENTS = ['pwmled==1.4.1']
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -34,6 +35,7 @@ CONF_LED_TYPE_RGB = 'rgb'
|
|||
CONF_LED_TYPE_RGBW = 'rgbw'
|
||||
CONF_LED_TYPES = [CONF_LED_TYPE_SIMPLE, CONF_LED_TYPE_RGB, CONF_LED_TYPE_RGBW]
|
||||
|
||||
DEFAULT_BRIGHTNESS = 255
|
||||
DEFAULT_COLOR = [0, 0]
|
||||
|
||||
SUPPORT_SIMPLE_LED = (SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION)
|
||||
|
@ -95,7 +97,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
|||
add_entities(leds)
|
||||
|
||||
|
||||
class PwmSimpleLed(Light):
|
||||
class PwmSimpleLed(Light, RestoreEntity):
|
||||
"""Representation of a simple one-color PWM LED."""
|
||||
|
||||
def __init__(self, led, name):
|
||||
|
@ -103,7 +105,18 @@ class PwmSimpleLed(Light):
|
|||
self._led = led
|
||||
self._name = name
|
||||
self._is_on = False
|
||||
self._brightness = 255
|
||||
self._brightness = DEFAULT_BRIGHTNESS
|
||||
|
||||
async def async_added_to_hass(self):
|
||||
"""Handle entity about to be added to hass event."""
|
||||
await super().async_added_to_hass()
|
||||
last_state = await self.async_get_last_state()
|
||||
if last_state:
|
||||
self._is_on = (last_state.state == STATE_ON)
|
||||
self._brightness = last_state.attributes.get('brightness',
|
||||
DEFAULT_BRIGHTNESS)
|
||||
self._led.set(is_on=self._is_on,
|
||||
brightness=_from_hass_brightness(self._brightness))
|
||||
|
||||
@property
|
||||
def should_poll(self):
|
||||
|
@ -169,6 +182,14 @@ class PwmRgbLed(PwmSimpleLed):
|
|||
super().__init__(led, name)
|
||||
self._color = DEFAULT_COLOR
|
||||
|
||||
async def async_added_to_hass(self):
|
||||
"""Handle entity about to be added to hass event."""
|
||||
await super().async_added_to_hass()
|
||||
last_state = await self.async_get_last_state()
|
||||
if last_state:
|
||||
self._color = last_state.attributes.get('hs_color', DEFAULT_COLOR)
|
||||
self._led.set(color=_from_hass_color(self._color))
|
||||
|
||||
@property
|
||||
def hs_color(self):
|
||||
"""Return the color property."""
|
||||
|
|
|
@ -841,7 +841,7 @@ pushbullet.py==0.11.0
|
|||
pushetta==1.0.15
|
||||
|
||||
# homeassistant.components.light.rpi_gpio_pwm
|
||||
pwmled==1.4.0
|
||||
pwmled==1.4.1
|
||||
|
||||
# homeassistant.components.august
|
||||
py-august==0.7.0
|
||||
|
|
Loading…
Reference in New Issue