Better listening for lights returning from unavailable
This commit is contained in:
parent
a38914e191
commit
c7282f05da
@ -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 = []
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user