import json import os import paho.mqtt.publish as publish import sys # Retrieve broker parameters from shared config or environment variables MQTT_HOST = os.getenv("MQTT_HOST", "localhost") MQTT_PORT = int(os.getenv("MQTT_PORT", 8884)) MQTT_USER = os.getenv("MQTT_USER", None) MQTT_PASS = os.getenv("MQTT_PASS", None) def send_command(topic: str = "cmd/all", payload: dict | str = None): """ Publishes an MQTT command payload to a given topic. """ if payload is None: payload = {} if isinstance(payload, dict): payload_str = json.dumps(payload) else: payload_str = str(payload) auth = None if MQTT_USER: auth = {"username": MQTT_USER, "password": MQTT_PASS or ""} publish.single( topic=topic, payload=payload_str, hostname=MQTT_HOST, port=MQTT_PORT, auth=auth ) print(f"[MQTT] Published command to '{topic}': {payload_str}")