From c84ff53b162767278c1e85587d4028167d0ae1ac Mon Sep 17 00:00:00 2001 From: coon Date: Thu, 25 Sep 2025 22:27:48 +0200 Subject: [PATCH 1/2] mqtt_client.py: subscribe to actual topic + require mqtt broker hostname via arg --- mqtt_client.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mqtt_client.py b/mqtt_client.py index 3ff7ed6..3b7e5b8 100644 --- a/mqtt_client.py +++ b/mqtt_client.py @@ -7,7 +7,6 @@ import paho.mqtt.client as mqtt import mixer from mixer import Mixer -MQTT_SERVER_ADDRESS = "localhost" MQTT_SERVER_PORT = 1883 MQTT_TOPIC = "homeassistant/device/mixer" @@ -16,7 +15,7 @@ m: Mixer = None def on_connect(client, userdata, flags, reason_code, properties): print(f"Connected: {reason_code}") - client.subscribe("#") + client.subscribe(MQTT_TOPIC) def on_message(client, userdata, msg): @@ -35,18 +34,20 @@ def on_message(client, userdata, msg): def main(): parser = argparse.ArgumentParser(description="Allen & Heath Qu MQTT Remote Control") - parser.add_argument("ip", help="IP of the mixer") + 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"IP: {args.ip}") + + print(f"Mixer IP: {args.mixer_ip}, MQTT broker hostname: {args.mqtt_hostname}") global m - m = mixer.Mixer(args.ip, mixer.MIXER_PORT) + 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(MQTT_SERVER_ADDRESS, MQTT_SERVER_PORT, 60) + client.connect(args.mqtt_hostname, MQTT_SERVER_PORT, 60) client.loop_forever() From b0d9c1c3827e35a38d062dfbab0fd1c67384e69d Mon Sep 17 00:00:00 2001 From: coon Date: Thu, 25 Sep 2025 22:29:20 +0200 Subject: [PATCH 2/2] hass_button_emulator.py: restructure + remove on_message handler + require hostname as arg --- hass_button_emulator.py | 52 +++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/hass_button_emulator.py b/hass_button_emulator.py index 9ec98c2..ef85604 100755 --- a/hass_button_emulator.py +++ b/hass_button_emulator.py @@ -2,33 +2,39 @@ import time import paho.mqtt.client as mqtt +import argparse import json import mqtt_client -def on_connect(client, userdata, flags, reason_code, properties): - print(f"Connected: {reason_code}") - client.subscribe("#") +def main(): + parser = argparse.ArgumentParser(description="Allen & Heath Qu MQTT event emulator") + parser.add_argument("mqtt_hostname", help="IP of the MQTT broker") + args = parser.parse_args() + + print(f"MQTT broker hostname: {args.mqtt_hostname}") + + def on_connect(client, userdata, flags, reason_code, properties): + print(f"Connected: {reason_code}") + client.subscribe("#") + + client = mqtt.Client(callback_api_version=mqtt.CallbackAPIVersion.VERSION2) + client.on_connect = on_connect + + client.connect(args.mqtt_hostname, mqtt_client.MQTT_SERVER_PORT, 60) + client.loop_start() + + j = json.dumps({"command": "scene_recall", "args": {"scene_id": 0}}) + # j = json.dumps({'command': 'shutdown'}) + + client.publish(mqtt_client.MQTT_TOPIC, payload=j, qos=0, retain=False) + + time.sleep(2) + + client.loop_stop() + client.disconnect() -def on_message(client, userdata, msg): - print(f"{msg.topic}: {msg.payload.decode()}") - - -client = mqtt.Client(callback_api_version=mqtt.CallbackAPIVersion.VERSION2) -client.on_connect = on_connect -client.on_message = on_message - -client.connect(mqtt_client.MQTT_SERVER_ADDRESS, mqtt_client.MQTT_SERVER_PORT, 60) -client.loop_start() - -j = json.dumps({"command": "scene_recall", "args": {"scene_id": 0}}) -# j = json.dumps({'command': 'shutdown'}) - -client.publish(mqtt_client.MQTT_TOPIC, payload=j, qos=0, retain=False) - -time.sleep(2) - -client.loop_stop() -client.disconnect() +if __name__ == "__main__": + main()