From 6b8c57441feb95f179eee86295a2fea7336948f5 Mon Sep 17 00:00:00 2001 From: coon Date: Fri, 26 Sep 2025 22:41:48 +0200 Subject: [PATCH 1/2] mqtt_client.py: add subparser for scene_recall and shutdown --- mqtt_client.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mqtt_client.py b/mqtt_client.py index 3b7e5b8..3f96c78 100644 --- a/mqtt_client.py +++ b/mqtt_client.py @@ -36,6 +36,18 @@ 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") + + subparsers = parser.add_subparsers( + dest="command", required=True, help="Available commands" + ) + + subparsers.add_parser("shutdown", help="Shut down the mixer") + + scene_parser = subparsers.add_parser("scene_recall", help="Recall a specific scene") + scene_parser.add_argument( + "scene_number", type=int, choices=range(0, 100), help="Scene number to recall" + ) + args = parser.parse_args() print(f"Mixer IP: {args.mixer_ip}, MQTT broker hostname: {args.mqtt_hostname}") From 0a791ca48ccdcc904a6600a7641221260ae5fc29 Mon Sep 17 00:00:00 2001 From: coon Date: Fri, 26 Sep 2025 23:09:13 +0200 Subject: [PATCH 2/2] mqtt_client.py: add auto discovery for home assistant --- mqtt_client.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/mqtt_client.py b/mqtt_client.py index 3f96c78..12a7f04 100644 --- a/mqtt_client.py +++ b/mqtt_client.py @@ -2,20 +2,44 @@ import argparse import json +import time import paho.mqtt.client as mqtt import mixer from mixer import Mixer + MQTT_SERVER_PORT = 1883 -MQTT_TOPIC = "homeassistant/device/mixer" +MQTT_DISCOVERY_TOPIC = "homeassistant/button/mixer/config" +MQTT_COMMAND_TOPIC = "livingroom/voc/allen_heath_qu16_mixer" m: Mixer = None +def mqtt_autodiscovery(client): + j = json.dumps( + { + "name": "Reset Settings", + "command_topic": MQTT_COMMAND_TOPIC, + "command_template": '{"command": "scene_recall", "args": {"scene_id": 0}}', + "device": { + "name": "Mischpult", + "model": "Qu-16", + "manufacturer": "Allen & Heath", + "suggested_area": "livingroom", + "identifiers": "Mischpult", + }, + "unique_id": "mischpult_reset_settings", + } + ) + + client.publish(MQTT_DISCOVERY_TOPIC, payload=j, qos=0, retain=False) + + def on_connect(client, userdata, flags, reason_code, properties): print(f"Connected: {reason_code}") - client.subscribe(MQTT_TOPIC) + client.subscribe(MQTT_COMMAND_TOPIC) + mqtt_autodiscovery(client) def on_message(client, userdata, msg):