MQTT-FIX-T01: make main MQTT client lifecycle idempotent

This commit is contained in:
tliu93 committed 2026-10-11 23:34:13 +02:00
1 parent 48071685f1
commit 876754be56
8 files changed
+629 -76

No files matched your search

+6 -3
View File
@@ -169,9 +169,12 @@ def _run_scheduled_ha_state_publish() -> None:
session: Session = session_local()
try:
runtime_settings = build_runtime_settings(session, get_settings())
# Reconnect if MQTT is configured (in DB) but not yet connected.
if mqtt_manager.is_configured(runtime_settings) and not mqtt_manager.is_connected:
logger.info("_run_scheduled_ha_state_publish: MQTT configured but not connected — attempting connect.")
# Ensure the configured MQTT client is installed; the manager avoids
# replacing it while Paho is already retrying a transient disconnect.
if mqtt_manager.is_configured(runtime_settings):
# connect() is idempotent for the same settings and retains a Paho
# client while its own loop is retrying a transient disconnect.
logger.info("_run_scheduled_ha_state_publish: ensuring MQTT client is active.")
mqtt_manager.connect(runtime_settings)
publish_discovery(session)
publish_states(session)