diff --git a/apps/apps.yaml b/apps/apps.yaml index 8c61483..46ef9bf 100644 --- a/apps/apps.yaml +++ b/apps/apps.yaml @@ -19,4 +19,15 @@ scene_detect: module: scene_detect class: MotionCanceller scene: in_bed - app: bedroom \ No newline at end of file + app: bedroom + +leaving: + module: leaving + class: Leaving + person: person.john + apps: + - living_room + - bedroom + - kitchen + - bathroom + - closet \ No newline at end of file diff --git a/apps/leaving.py b/apps/leaving.py new file mode 100644 index 0000000..1c65ff1 --- /dev/null +++ b/apps/leaving.py @@ -0,0 +1,18 @@ +from appdaemon.adapi import ADAPI + +class Leaving(ADAPI): + def initialize(self): + self.listen_state(self.handle_state_change, entity_id=self.args['person']) + + def handle_state_change(self, entity, attribute, old, new, kwargs): + self.log(f'Changed state {old} -> {new}') + if old == 'home' and new != 'home': + self.turn_everything_off() + + def turn_everything_off(self): + for app_name in self.args['apps']: + try: + self.get_app(app_name).deactivate(cause='leaving') + except Exception as e: + self.log(f'{type(e).__name__}: {e}') + continue