From 10d19e99d14db04b68de21b02f2a840a74a0bb23 Mon Sep 17 00:00:00 2001 From: John Lancaster <32917998+jsl12@users.noreply.github.com> Date: Fri, 24 Nov 2023 14:49:18 -0600 Subject: [PATCH] scene detector --- apps/scene_detect.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 apps/scene_detect.py diff --git a/apps/scene_detect.py b/apps/scene_detect.py new file mode 100644 index 0000000..3b2c6ce --- /dev/null +++ b/apps/scene_detect.py @@ -0,0 +1,24 @@ +from appdaemon.plugins.hass.hassapi import Hass + +class SceneDetector(Hass): + def initialize(self): + self.scene_entity = self.args['scene'] if self.args['scene'].startswith('scene.') else f'scene.{self.args["scene"]}' + self.scene_entity = self.get_entity(self.scene_entity) + + self.listen_event(self.event_callback, event='call_service', domain='scene', service='turn_on') + self.log(f'Waiting for {self.scene_entity.friendly_name} to activate') + + def event_callback(self, event_name, data, cb_args): + entity_id = data['service_data']['entity_id'] + if entity_id == self.scene_entity.entity_id: + self.scene_detected() + + def scene_detected(self): + self.log(f'Detected scene activation: {self.scene_entity.friendly_name}') + + +class BedroomDetector(SceneDetector): + def scene_detected(self): + super().scene_detected() + app = self.get_app('bedroom') + app.cancel_motion_callback(new='off') \ No newline at end of file