Change entity helper interface
This commit is contained in:
parent
e3ba6be486
commit
951351139e
@ -54,10 +54,9 @@ class Entities(Base):
|
|||||||
|
|
||||||
class Entity:
|
class Entity:
|
||||||
def __init__(self, hass, entity):
|
def __init__(self, hass, entity):
|
||||||
self.entity = entity
|
self._entity = entity
|
||||||
self.domain, self.name = entity.split('.')
|
self._hass = hass
|
||||||
self.hass = hass
|
self._hass.listen_state(self._listener, entity=entity, attributes='all')
|
||||||
self.hass.listen_state(self._listener, entity=entity, attributes='all')
|
|
||||||
self._listeners = []
|
self._listeners = []
|
||||||
|
|
||||||
|
|
||||||
@ -73,27 +72,27 @@ class Entities(Base):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self):
|
||||||
return self.hass.get_state(self.entity)
|
return self._hass.get_state(self._entity)
|
||||||
@state.setter
|
@state.setter
|
||||||
def state(self, state):
|
def state(self, state):
|
||||||
self.hass.set_state(self.entity, state=state)
|
self._hass.set_state(self._entity, state=state)
|
||||||
|
|
||||||
@property
|
def __getattr__(self, key):
|
||||||
def attributes(self):
|
return self._hass.get_state(self._entity, attribute='all')['attributes'].get(key, None)
|
||||||
return self.hass.get_state(self.entity, attribute='all')['attributes']
|
def __setattr__(self, key, value):
|
||||||
|
if key.startswith('_'):
|
||||||
def __getitem__(self, key):
|
self.__dict__[key] = value
|
||||||
if key == 'state':
|
return
|
||||||
return self.state
|
d = self._hass.get_state(self._entity, attribute='all')['attributes']
|
||||||
else:
|
d[key] = value
|
||||||
return self.attributes.get(key, None)
|
self._hass.set_state(self._entity, attributes=d)
|
||||||
def __setitem__(self, key, value):
|
def __delattr__(self, key):
|
||||||
if key == 'state':
|
if key.startswith('_'):
|
||||||
self.state = value
|
del self.__dict__[key]
|
||||||
else:
|
return
|
||||||
d = self.attributes
|
d = self._hass.get_state(self._entity, attribute='all')['attributes']
|
||||||
d[key] = value
|
d[key] = ''
|
||||||
self.hass.set_state(self.entity, attributes=d)
|
self._hass.set_state(self._entity, attributes=d)
|
||||||
|
|
||||||
class LightEntity(Entities.Entity):
|
class LightEntity(Entities.Entity):
|
||||||
def __init__(self, hass, entity):
|
def __init__(self, hass, entity):
|
||||||
@ -105,9 +104,9 @@ class Entities(Base):
|
|||||||
@state.setter
|
@state.setter
|
||||||
def state(self, state):
|
def state(self, state):
|
||||||
if state == 'on':
|
if state == 'on':
|
||||||
self.hass.call_service('light/turn_on', entity_id = self.entity)
|
self._hass.call_service('light/turn_on', entity_id = self._entity)
|
||||||
elif state == 'off':
|
elif state == 'off':
|
||||||
self.hass.call_service('light/turn_off', entity_id = self.entity)
|
self._hass.call_service('light/turn_off', entity_id = self._entity)
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
super(Entities.LightEntity, self.__class__).state.fset(self, state)
|
super(Entities.LightEntity, self.__class__).state.fset(self, state)
|
||||||
|
@ -10,16 +10,17 @@ class HelloWorld(base.Entities, base.Timers):
|
|||||||
|
|
||||||
self.run_in('test1', self.after_time, 3)
|
self.run_in('test1', self.after_time, 3)
|
||||||
self.run_in('test2', self.after_time2, 5)
|
self.run_in('test2', self.after_time2, 5)
|
||||||
self.run_in(self.after_time2, 7)
|
# self.run_in(self.after_time2, 7)
|
||||||
self.cancel_timer('test2')
|
# self.cancel_timer('test2')
|
||||||
|
|
||||||
self.register_entity('taklampa', 'light.kontoret')
|
self.register_entity('taklampa', 'light.kontoret')
|
||||||
|
|
||||||
def after_time(self, kwargs):
|
def after_time(self, kwargs):
|
||||||
self.log("Running function")
|
self.log("Running function")
|
||||||
self.e['taklampa']['state'] = "off"
|
self.e['taklampa'].icon = "mdi:lamp"
|
||||||
self.log(f"State is {self.e['taklampa']['state']}")
|
self.log(f"State is {self.e['taklampa'].state}")
|
||||||
def after_time2(self, kwargs):
|
def after_time2(self, kwargs):
|
||||||
self.log("Running function2")
|
self.log("Running function2")
|
||||||
self.e['taklampa']['state'] = "on"
|
del self.e['taklampa'].icon
|
||||||
self.log(f"State is {self.e['taklampa']['state']}")
|
|
||||||
|
self.log(f"State is {self.e['taklampa'].state}")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user