From 9597cf59425453a1a6af277dcf8eb271636ac355 Mon Sep 17 00:00:00 2001 From: John Lancaster <32917998+jsl12@users.noreply.github.com> Date: Fri, 24 Nov 2023 15:43:44 -0600 Subject: [PATCH] aqara cube base --- apps/cubes/cube.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 apps/cubes/cube.py diff --git a/apps/cubes/cube.py b/apps/cubes/cube.py new file mode 100644 index 0000000..31e4b87 --- /dev/null +++ b/apps/cubes/cube.py @@ -0,0 +1,43 @@ +import json +from copy import deepcopy + +from appdaemon.plugins.mqtt.mqttapi import Mqtt + + +class AqaraCube(Mqtt): + def initialize(self): + self.set_namespace('mqtt') + topic = f'zigbee2mqtt/{self.args["cube"]}' + self.mqtt_subscribe(topic) + self.listen_event(self.handle_event, "MQTT_MESSAGE", topic=topic) + self.log(f'Listening for cube events on: {topic}') + + def handle_event(self, event_name, data, kwargs): + topic = data['topic'] + payload = json.loads(data['payload']) + action = payload['action'] + + if action == '': + return + elif (handler := getattr(self, f'handle_{action}', None)): + handler(payload) + else: + self.log(f'Unhandled cube action: {action}') + + def handle_rotate_right(self, payload): + self.log(f'{self.args["cube"]}: Rotate right') + + def handle_rotate_left(self, payload): + self.log(f'{self.args["cube"]}: Rotate left') + + def handle_slide(self, payload): + self.log(f'{self.args["cube"]}: Slide') + + def handle_flip180(self, payload): + self.log(f'{self.args["cube"]}: Flipped 180') + + def handle_flip90(self, payload): + self.log(f'{self.args["cube"]}: Flipped 90') + + def handle_shake(self, payload): + self.log(f'{self.args["cube"]}: Shake')