From b0d9c1c3827e35a38d062dfbab0fd1c67384e69d Mon Sep 17 00:00:00 2001 From: coon Date: Thu, 25 Sep 2025 22:29:20 +0200 Subject: [PATCH] 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()