Fix: Incorporate unique serial number in preference's hash for multiple Sensirion sensors #5479
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.
What does this implement/fix?
Currently, the
sgp4x
,spg30
, andsen5x
components store the baseline values in the preferences using a hash derived from the compilation time. If you have multiple sensors on different I2C buses, then the same baseline preference will be used for each sensor. This PR changes it so that the hash computation uses the compilation time (so the baseline still resets with any new firmware) and each sensor's unique serial number.This PR isn't a breaking change, as the current behavior will already recompute the baseline after flashing a new firmware.
I have tested it locally with two SGP40 sensors. The
sgp30
andsen5x
components should also work, as the changes follow the same logic. The existing test cases already have the baseline stored (by default), so the modifications are tested at least through compilation.Types of changes
Related issue or feature (if applicable): not applicable
Pull request in esphome-docs with documentation (if applicable): not applicable
Test Environment
Example entry for
config.yaml
:Checklist:
tests/
folder).If user exposed functionality or configuration variables are added/changed: