# -*- coding: utf-8 -*- import os import json import paho.mqtt.client as mqtt from datetime import datetime # MQTT-Broker und Topics der Sensoren BROKER = os.getenv("MQTT_BROKER", "mosquitto") SENSOR_TOPICS = ["zigbee2mqtt/SNZB_Temp1", "zigbee2mqtt/Aquara"] def on_message(client, userdata, msg): # Nur unsere Sensoren verarbeiten if msg.topic not in SENSOR_TOPICS: return ts = datetime.now().strftime("%Y-%m-%d %H:%M:%S") try: data = json.loads(msg.payload.decode()) temp = data.get("temperature") humidity = data.get("humidity") battery = data.get("battery") output = f"[{ts}] {msg.topic}:" if temp is not None: output += f" Temp={temp}°C" if humidity is not None: output += f" Humidity={humidity}%" if battery is not None: output += f" Battery={battery}%" print(output) except json.JSONDecodeError: print(f"[{ts}] {msg.topic}: {msg.payload.decode()}") client = mqtt.Client(client_id="", protocol=mqtt.MQTTv311) client.on_message = on_message client.connect(BROKER, 1883, 60) # Alle Sensoren abonnieren for topic in SENSOR_TOPICS: client.subscribe(topic) print(f"Listening on {BROKER} / {', '.join(SENSOR_TOPICS)}") client.loop_forever()