simplification and don't add trackers when lights is []

This commit is contained in:
Bas Nijholt 2020-09-15 22:59:54 +02:00
commit 7b79096abc

View file

@ -334,24 +334,26 @@ class AdaptiveSwitch(SwitchEntity, RestoreEntity):
async def async_added_to_hass(self):
"""Call when entity about to be added to hass."""
async_track_state_change(
self.hass,
self._unpack_light_groups(self._lights),
self._light_state_changed,
to_state="on",
)
track_kwargs = dict(hass=self.hass, action=self._state_changed)
if self._sleep_entity is not None:
sleep_kwargs = dict(track_kwargs, entity_ids=self._sleep_entity)
async_track_state_change(**sleep_kwargs, to_state=self._sleep_state)
async_track_state_change(**sleep_kwargs, from_state=self._sleep_state)
if self._disable_entity is not None:
if self._lights:
async_track_state_change(
**track_kwargs,
entity_ids=self._disable_entity,
from_state=self._disable_state,
self.hass,
self._unpack_light_groups(self._lights),
self._light_state_changed,
to_state="on",
from_state="off",
)
track_kwargs = dict(hass=self.hass, action=self._state_changed)
if self._sleep_entity is not None:
sleep_kwargs = dict(track_kwargs, entity_ids=self._sleep_entity)
async_track_state_change(**sleep_kwargs, to_state=self._sleep_state)
async_track_state_change(**sleep_kwargs, from_state=self._sleep_state)
if self._disable_entity is not None:
disable_kwargs = dict(track_kwargs, entity_ids=self._disable_entity)
async_track_state_change(
**disable_kwargs, from_state=self._disable_state
)
async_track_state_change(**disable_kwargs, to_state=self._disable_state)
last_state = await self.async_get_last_state()
if last_state and last_state.state == STATE_ON:
@ -569,9 +571,7 @@ class AdaptiveSwitch(SwitchEntity, RestoreEntity):
)
def _should_adjust(self):
if not self.is_on:
return False
if self._is_disabled():
if not self._lights or not self.is_on or self._is_disabled():
return False
return True
@ -587,12 +587,11 @@ class AdaptiveSwitch(SwitchEntity, RestoreEntity):
await asyncio.wait(tasks)
async def _light_state_changed(self, entity_id, from_state, to_state):
assert to_state.state == "on"
if from_state is None or from_state.state != "on":
_LOGGER.debug(_difference_between_states(from_state, to_state))
await self._update_lights(
lights=[entity_id], transition=self._initial_transition, force=True
)
assert to_state.state == "on" and from_state.state == "off"
_LOGGER.debug(_difference_between_states(from_state, to_state))
await self._update_lights(
lights=[entity_id], transition=self._initial_transition, force=True
)
async def _state_changed(self, entity_id, from_state, to_state):
_LOGGER.debug(_difference_between_states(from_state, to_state))