added sensors

This commit is contained in:
John Lancaster
2023-04-18 00:00:12 -05:00
parent f953d01094
commit 35a4a3fd0e

View File

@@ -1,6 +1,5 @@
from dataclasses import dataclass, field from dataclasses import dataclass, field
from datetime import datetime, timedelta from datetime import datetime, timedelta
from html import entities
from typing import List from typing import List
from appdaemon.entity import Entity from appdaemon.entity import Entity
@@ -69,7 +68,9 @@ class ControllerMotion(ControllerEntities):
except Exception: except Exception:
self.off_duration = timedelta() self.off_duration = timedelta()
self.sync_state() if self.current_state:
self.room.activate()
self.listen_motion_off() self.listen_motion_off()
self.listen_motion_on() self.listen_motion_on()
@@ -77,18 +78,6 @@ class ControllerMotion(ControllerEntities):
def current_state(self) -> bool: def current_state(self) -> bool:
return any(e.get_state() == 'on' for e in self.entities) 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): def listen_motion_on(self):
self.listen_state( self.listen_state(
callback=self.callback_motion_on, 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.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]}') self.log(f'Listening for state {[e.friendly_name for e in self.entities]}')
for entity in self.entities: self.run_every(callback=self.update_sensors, start='now', interval=5.0)
self.handle_state_change(entity=entity, new=entity.get_state())
def handle_state_change(self, entity=None, attribute=None, old=None, new=None, kwargs=None): def handle_state_change(self, entity=None, attribute=None, old=None, new=None, kwargs=None):
if new == 'on': if new == 'on':
@@ -191,10 +179,18 @@ class ControllerDaylight(ControllerEntities):
return valid return valid
def ongoing_adjustment(self, kwargs): def ongoing_adjustment(self, kwargs):
self.log(f'Ongoing adjustment')
settings = self.adjuster.current_settings settings = self.adjuster.current_settings
valid = self.matching_state(entity_id=kwargs['entity']) valid = self.matching_state(entity_id=kwargs['entity'])
if not valid: if not valid:
self.turn_on(entity_id=kwargs['entity'], **settings) self.turn_on(entity_id=kwargs['entity'], **settings)
self.log(f'Adjusted {self.friendly_name(kwargs["entity"])} with {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'})