36 lines
946 B
Python
36 lines
946 B
Python
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}") |