remove simclient and update setup mode
This commit is contained in:
@@ -33,6 +33,7 @@ def main():
|
||||
# Fix für die veraltete API - explizit callback_api_version setzen
|
||||
client = mqtt.Client(callback_api_version=mqtt.CallbackAPIVersion.VERSION2)
|
||||
client.connect("mqtt", 1883)
|
||||
client.loop_start()
|
||||
|
||||
POLL_INTERVAL = 30 # Sekunden, Empfehlung für seltene Änderungen
|
||||
last_payloads = {} # group_id -> payload
|
||||
@@ -58,16 +59,25 @@ def main():
|
||||
topic = f"infoscreen/events/{gid}"
|
||||
payload = json.dumps(event_list)
|
||||
if last_payloads.get(gid) != payload:
|
||||
client.publish(topic, payload, retain=True)
|
||||
logging.info(f"Events für Gruppe {gid} gesendet: {payload}")
|
||||
result = client.publish(topic, payload, retain=True)
|
||||
if result.rc != mqtt.MQTT_ERR_SUCCESS:
|
||||
logging.error(
|
||||
f"Fehler beim Publish für Gruppe {gid}: {mqtt.error_string(result.rc)}")
|
||||
else:
|
||||
logging.info(
|
||||
f"Events für Gruppe {gid} gesendet: {payload}")
|
||||
last_payloads[gid] = payload
|
||||
# Entferne Gruppen, die nicht mehr existieren (optional: retained Message löschen)
|
||||
for gid in list(last_payloads.keys()):
|
||||
if gid not in groups:
|
||||
topic = f"infoscreen/events/{gid}"
|
||||
client.publish(topic, payload="[]", retain=True)
|
||||
logging.info(
|
||||
f"Events für Gruppe {gid} entfernt (leere retained Message gesendet)")
|
||||
result = client.publish(topic, payload="[]", retain=True)
|
||||
if result.rc != mqtt.MQTT_ERR_SUCCESS:
|
||||
logging.error(
|
||||
f"Fehler beim Entfernen für Gruppe {gid}: {mqtt.error_string(result.rc)}")
|
||||
else:
|
||||
logging.info(
|
||||
f"Events für Gruppe {gid} entfernt (leere retained Message gesendet)")
|
||||
del last_payloads[gid]
|
||||
time.sleep(POLL_INTERVAL)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user