diff --git a/appdaemon/apps/helpers/entities.py b/appdaemon/apps/helpers/entities.py index cf895e5..1f66f05 100644 --- a/appdaemon/apps/helpers/entities.py +++ b/appdaemon/apps/helpers/entities.py @@ -43,6 +43,7 @@ class Entities(base.Base): 'input_select': InputSelectEntity, }.get(domain, Entity) self.e[name] = controller(self, entity, managed, default, attributes) + return self.e[name] class Entity: @@ -52,8 +53,9 @@ class Entity: self.entity_id = entity self.domain, self.name = entity.split('.') self._managed = managed - self.manager = hass.get_app('entity_manager') if managed else {} - self._state = self.manager.get(entity, state) + manager = hass.get_app('entity_manager') if managed else {} + self.manager = manager + self._state = manager.get(entity, state) self._laststate = None self._attributes = attributes self._listeners = [] diff --git a/appdaemon/apps/timed_lights.py b/appdaemon/apps/timed_lights.py index 4a6bb94..1ab62ea 100644 --- a/appdaemon/apps/timed_lights.py +++ b/appdaemon/apps/timed_lights.py @@ -4,12 +4,12 @@ class OutsideLights(Entities): def initialize(self): super().initialize() for l in self.args['lights']: - self.register_entity(l, l) + e = self.register_entity(l, l) + e.listen(self.found, {'entity': e}) + self.listen_event(self.update, 'TOD_TOD') self.run_in(lambda *_: self.update(None, None, None), 2) - for l in self.args['lights']: - self.listen_event(self.found, l, old="unavailable") def update(self, event, data, kwarg): self.state = self.get_app('timeofday').dark @@ -21,11 +21,14 @@ class OutsideLights(Entities): self.e[l].state = self.state self.e[l].push() - def found(self, entity, attribute, old, new, kwargs): + def found(self, old, new, kwarg): + entity = kwarg.get('entity', None) + if not entity: return; + if old == "unavailable": - self.log(f"{entity} showed up, setting to {self.state}") - self.e[entity].state = self.state - self.e[entity].push() + self.log(f"{entity.entity_id} showed up, setting to {self.state}") + entity.state = self.state + entity.push() class DecorativeLights(OutsideLights): def update(self, event, data, kwarg):