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