diff --git a/homeassistant/components/light/rpi_gpio_pwm.py b/homeassistant/components/light/rpi_gpio_pwm.py index a09666e89cd..a3fe0f6b71e 100644 --- a/homeassistant/components/light/rpi_gpio_pwm.py +++ b/homeassistant/components/light/rpi_gpio_pwm.py @@ -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.""" diff --git a/requirements_all.txt b/requirements_all.txt index 9d39fd7f424..775bf5b6928 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -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