fix(utils): handle case-insensitive enum values in getFromLookupByValue #11238
+8
−0
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.
Problem
Some Sonoff TH sensors (SNZB-02D, SNZB-02LD, SNZB-02WD, SNZB-02DR2) with newer firmware (v8960+) send
temperature_unitsas"Celsius"or"Fahrenheit"(capitalized) instead of"celsius"or"fahrenheit"(lowercase).This causes Home Assistant to reject the value with an error like:
Invalid option for select.office_th_sensor_temperature_units: 'Celsius' (valid options: ['celsius', 'fahrenheit'])Solution
Added a case-insensitive key matching fallback in
getFromLookupByValue(). When the device sends a string value that doesn't match any lookup value exactly, the function now checks if the string matches any lookup key case-insensitively and returns the correctly-cased key."Celsius"→ returns"celsius"✅"Fahrenheit"→ returns"fahrenheit"✅Affected Devices
Testing
The fix is backward compatible - existing numeric value handling remains unchanged.