Fix: Ensure Home Assistant discovery messages are always retained #1854
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix: Ensure Home Assistant discovery messages are always retained
Problem
Home Assistant requires MQTT discovery messages to be sent with the
retainedflag set totruefor proper device discovery. Currently, the globalenableRetainsetting in MQTT configuration affects all messages, including discovery messages. When users disableenableRetainto prevent sensor values from being retained, Home Assistant discovery stops working because discovery messages are no longer retained.Solution
This PR modifies the
publish()function inpubMqtt.hto ensure that Home Assistant discovery messages (topics starting withhomeassistant/) are always sent withretained=true, regardless of the globalenableRetainsetting.Changes
pubMqtt.hlines 238-243retained=truefor discovery messages after the global retain checkTesting
enableRetainis disabledenableRetainsetting as beforeBackward Compatibility
This change is fully backward compatible. Users who have
enableRetainenabled will see no change in behavior. Users who have it disabled will now have working Home Assistant discovery without needing to enable retain for all messages.Fixes Home Assistant integration when
enableRetainis disabled.