#!/bin/python import argparse import json import paho.mqtt.client as mqtt import mixer from mixer import Mixer MQTT_SERVER_PORT = 1883 MQTT_TOPIC = "homeassistant/device/mixer" m: Mixer = None def on_connect(client, userdata, flags, reason_code, properties): print(f"Connected: {reason_code}") client.subscribe(MQTT_TOPIC) def on_message(client, userdata, msg): payload = msg.payload.decode() print(f"{msg.topic}: {payload}") j = json.loads(payload) match j["command"]: case "scene_recall": m.scene_recall(j["args"]["scene_id"]) case "shutdown": m.shutdown() def main(): parser = argparse.ArgumentParser(description="Allen & Heath Qu MQTT Remote Control") parser.add_argument("mixer_ip", help="IP of the mixer") parser.add_argument("mqtt_hostname", help="IP of the MQTT broker") args = parser.parse_args() print(f"Mixer IP: {args.mixer_ip}, MQTT broker hostname: {args.mqtt_hostname}") global m m = mixer.Mixer(args.mixer_ip) client = mqtt.Client(callback_api_version=mqtt.CallbackAPIVersion.VERSION2) client.on_connect = on_connect client.on_message = on_message client.connect(args.mqtt_hostname, MQTT_SERVER_PORT, 60) client.loop_forever() if __name__ == "__main__": main()