Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ homeassistant/components/ipp/* @ctalkington
homeassistant/components/iqvia/* @bachya
homeassistant/components/irish_rail_transport/* @ttroy50
homeassistant/components/islamic_prayer_times/* @engrbm87
homeassistant/components/isy994/* @bdraco
homeassistant/components/izone/* @Swamp-Ig
homeassistant/components/jewish_calendar/* @tsvi
homeassistant/components/juicenet/* @jesserockz
Expand Down
29 changes: 26 additions & 3 deletions homeassistant/components/isy994/light.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@
from typing import Callable

from homeassistant.components.light import DOMAIN, SUPPORT_BRIGHTNESS, LightEntity
from homeassistant.helpers.restore_state import RestoreEntity
from homeassistant.helpers.typing import ConfigType

from . import ISY994_NODES, ISYDevice

_LOGGER = logging.getLogger(__name__)

ATTR_LAST_BRIGHTNESS = "last_brightness"


def setup_platform(
hass, config: ConfigType, add_entities: Callable[[list], None], discovery_info=None
Expand All @@ -21,13 +24,13 @@ def setup_platform(
add_entities(devices)


class ISYLightDevice(ISYDevice, LightEntity):
class ISYLightDevice(ISYDevice, LightEntity, RestoreEntity):
"""Representation of an ISY994 light device."""

def __init__(self, node) -> None:
"""Initialize the ISY994 light device."""
super().__init__(node)
self._last_brightness = self.brightness
self._last_brightness = None

@property
def is_on(self) -> bool:
Expand Down Expand Up @@ -56,7 +59,7 @@ def on_update(self, event: object) -> None:
# pylint: disable=arguments-differ
def turn_on(self, brightness=None, **kwargs) -> None:
"""Send the turn on command to the ISY994 light device."""
if brightness is None and self._last_brightness is not None:
if brightness is None and self._last_brightness:
Comment thread
balloob marked this conversation as resolved.
brightness = self._last_brightness
if not self._node.on(val=brightness):
_LOGGER.debug("Unable to turn on light")
Expand All @@ -65,3 +68,23 @@ def turn_on(self, brightness=None, **kwargs) -> None:
def supported_features(self):
"""Flag supported features."""
return SUPPORT_BRIGHTNESS

@property
def device_state_attributes(self):
"""Return the light attributes."""
return {ATTR_LAST_BRIGHTNESS: self._last_brightness}

async def async_added_to_hass(self) -> None:
"""Restore last_brightness on restart."""
await super().async_added_to_hass()

self._last_brightness = self.brightness or 255
last_state = await self.async_get_last_state()
if not last_state:
return

if (
ATTR_LAST_BRIGHTNESS in last_state.attributes
and last_state.attributes[ATTR_LAST_BRIGHTNESS]
):
self._last_brightness = last_state.attributes[ATTR_LAST_BRIGHTNESS]
2 changes: 1 addition & 1 deletion homeassistant/components/isy994/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
"name": "Universal Devices ISY994",
"documentation": "https://www.home-assistant.io/integrations/isy994",
"requirements": ["PyISY==1.1.2"],
"codeowners": []
"codeowners": ["@bdraco"]
}