added sensors
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime, timedelta
|
||||
from html import entities
|
||||
from typing import List
|
||||
|
||||
from appdaemon.entity import Entity
|
||||
@@ -69,7 +68,9 @@ class ControllerMotion(ControllerEntities):
|
||||
except Exception:
|
||||
self.off_duration = timedelta()
|
||||
|
||||
self.sync_state()
|
||||
if self.current_state:
|
||||
self.room.activate()
|
||||
|
||||
self.listen_motion_off()
|
||||
self.listen_motion_on()
|
||||
|
||||
@@ -77,18 +78,6 @@ class ControllerMotion(ControllerEntities):
|
||||
def current_state(self) -> bool:
|
||||
return any(e.get_state() == 'on' for e in self.entities)
|
||||
|
||||
def sync_state(self,
|
||||
entity=None,
|
||||
attribute=None,
|
||||
old=None,
|
||||
new=None,
|
||||
kwargs=None):
|
||||
self.log(f'Syncing state, current state: {self.current_state}')
|
||||
if self.current_state:
|
||||
self.room.activate()
|
||||
else:
|
||||
self.room.deactivate()
|
||||
|
||||
def listen_motion_on(self):
|
||||
self.listen_state(
|
||||
callback=self.callback_motion_on,
|
||||
@@ -162,8 +151,7 @@ class ControllerDaylight(ControllerEntities):
|
||||
self.listen_state(callback=self.handle_state_change, entity_id=[e.entity_id for e in self.entities])
|
||||
self.log(f'Listening for state {[e.friendly_name for e in self.entities]}')
|
||||
|
||||
for entity in self.entities:
|
||||
self.handle_state_change(entity=entity, new=entity.get_state())
|
||||
self.run_every(callback=self.update_sensors, start='now', interval=5.0)
|
||||
|
||||
def handle_state_change(self, entity=None, attribute=None, old=None, new=None, kwargs=None):
|
||||
if new == 'on':
|
||||
@@ -191,10 +179,18 @@ class ControllerDaylight(ControllerEntities):
|
||||
return valid
|
||||
|
||||
def ongoing_adjustment(self, kwargs):
|
||||
self.log(f'Ongoing adjustment')
|
||||
settings = self.adjuster.current_settings
|
||||
valid = self.matching_state(entity_id=kwargs['entity'])
|
||||
if not valid:
|
||||
self.turn_on(entity_id=kwargs['entity'], **settings)
|
||||
self.log(f'Adjusted {self.friendly_name(kwargs["entity"])} with {settings}')
|
||||
# else:
|
||||
# self.log(f'Already valid')
|
||||
|
||||
def update_sensors(self, kwargs):
|
||||
for key, val in self.adjuster.current_settings.items():
|
||||
id = f'sensor.{self.name}_{key}'
|
||||
self.set_state(
|
||||
entity_id=id, state=val,
|
||||
attributes={
|
||||
'friendly_name': f'Daylight, {key}, {self.name}',
|
||||
'state_class': 'measurement'})
|
||||
|
||||
Reference in New Issue
Block a user