add username and password for mqtt
This commit is contained in:
@@ -12,4 +12,4 @@ services:
|
||||
- ./src:/app/src:ro
|
||||
network_mode: host
|
||||
extra_hosts:
|
||||
- host:192.168.2.200
|
||||
- host:192.168.2.150
|
||||
|
||||
21
src/main.py
21
src/main.py
@@ -13,7 +13,9 @@ import paho.mqtt.client as mqtt
|
||||
# -----------------------------
|
||||
MQTT_BROKER = os.getenv("MQTT_BROKER", "localhost")
|
||||
MQTT_PORT = int(os.getenv("MQTT_PORT", 1883))
|
||||
MQTT_TOPIC = os.getenv("MQTT_TOPIC", "goodwe/runtime")
|
||||
MQTT_TOPIC = os.getenv("MQTT_TOPIC", "goodwe")
|
||||
MQTT_USER = os.getenv("MQTT_USER", "goodwe")
|
||||
MQTT_PASSWORD = os.getenv("MQTT_PASSWORD", "goodwe")
|
||||
DISCOVERY_INTERVAL = int(os.getenv("DISCOVERY_INTERVAL", 60)) # seconds
|
||||
BROADCAST_SUBNET = os.getenv("BROADCAST_SUBNET", "192.168.1.255") # directed broadcast
|
||||
|
||||
@@ -32,7 +34,20 @@ logger = logging.getLogger("goodwe-daemon")
|
||||
# -----------------------------
|
||||
# MQTT CLIENT SETUP
|
||||
# -----------------------------
|
||||
|
||||
|
||||
def on_connect(client, userdata, flags, reason_code, properties):
|
||||
if reason_code == "Success":
|
||||
logger.info("MQTT connected and authenticated")
|
||||
else:
|
||||
raise RuntimeError(f"MQTT connect/auth failed: {reason_code}")
|
||||
|
||||
mqtt_client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2)
|
||||
mqtt_client.username_pw_set(
|
||||
username=MQTT_USER,
|
||||
password=MQTT_PASSWORD,
|
||||
)
|
||||
mqtt_client.on_connect = on_connect
|
||||
mqtt_client.connect(MQTT_BROKER, MQTT_PORT)
|
||||
mqtt_client.loop_start()
|
||||
|
||||
@@ -76,7 +91,9 @@ async def publish_runtime(ip):
|
||||
runtime = await read_runtime(ip)
|
||||
if runtime:
|
||||
payload = {"ip": ip, "data": runtime}
|
||||
mqtt_client.publish(MQTT_TOPIC, json.dumps(payload, default=json_serializer))
|
||||
result = mqtt_client.publish(MQTT_TOPIC, json.dumps(payload, default=json_serializer))
|
||||
if result.rc != mqtt.MQTT_ERR_SUCCESS:
|
||||
raise logger.warning(f"Publish failed: {result.rc}")
|
||||
logger.info(f"Published runtime for {ip}")
|
||||
|
||||
# -----------------------------
|
||||
|
||||
Reference in New Issue
Block a user