MQTT-FIX-T01: make main MQTT client lifecycle idempotent
This commit is contained in:
1 parent
48071685f1
commit
876754be56
8 files changed
+629
-76
No files matched your search
+6
-3
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user