From 9b26dad1aa8151559d313705dcf2547f2aacc217 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Fri, 12 Sep 2025 08:32:33 +0200 Subject: [PATCH] Fix: Ensure Home Assistant discovery messages are always retained Home Assistant requires MQTT discovery messages to be sent with the retained flag to properly discover devices. Previously, discovery messages were affected by the global 'enableRetain' setting, causing discovery to fail when retain was disabled for sensor data. This fix ensures discovery messages are always retained regardless of the global retain setting, while preserving the original behavior for regular sensor data. --- src/publisher/pubMqtt.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/publisher/pubMqtt.h b/src/publisher/pubMqtt.h index 721cc2ff..e62ce76f 100644 --- a/src/publisher/pubMqtt.h +++ b/src/publisher/pubMqtt.h @@ -238,6 +238,10 @@ class PubMqtt { if(!mCfgMqtt->enableRetain) retained = false; + // Home Assistant requires retained discovery messages + if(strncmp(subTopic, MQTT_DISCOVERY_PREFIX, strlen(MQTT_DISCOVERY_PREFIX)) == 0) + retained = true; + mClient.publish(mTopic.data(), qos, retained, payload); yield(); mTxCnt++;