fix: use from_le_bytes in Real32Bit #36
Merged
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.
One more thing I hit during my testing, only one of our heatmeters did return temperatures using Real32Bit encoding, the decoded value was wrong. This was fixed by using litte-endian byte order instead of big.
As far I can tell pymeterbus uses little-endian too:
https://github.com/ganehag/pyMeterBus/blob/d1a7552c9adcf52a59d04c9812478d496c191c89/meterbus/telegram_field.py#L64
It uses struct.unpack function with reading the documentation:
https://docs.python.org/3/library/struct.html#byte-order-size-and-alignment
"Native byte order is big-endian or little-endian, depending on the host system. For example, Intel x86, AMD64 (x86-64), and Apple M1 are little-endian"
So that would mean running it on most systems would be little-endian (and running it on big-endian systems would lead to a bug :D).