EQUIPMENT IDENTIFIER is wrong for Fluvius meters when other mbus devices are present #133
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
When other devices are present via the WMBus, the signature for the EQUIPMENT_IDENTIFIER will match not only the ID of the meter but also the IDs of the MBus devices.
Cause
The parser will try to add every match to the telegram (
telegram.add(obis_reference, dsmr_object)
), overwriting in each attempt the previously mapped EQUIPMENT_IDENTIFIER. Eventually, only the last match which will be set as ID.See
objects.py
line 33.Why does the test pass?
If one try to access the field as
telegram[obis.EQUIPMENT_IDENTIFIER]
the correct ID is captured. This is because the "raw" obis references are only saved for their first occurrence.See
objects.py
lines 42-43.This last type of access is used in
test_parse_fluvius.py
line 36, which passes:However, if the field is access with the mapping, it will not work:
Proposed fix
The easiest fix would be to change the telegram specification for the Fluvius meter in
telegram_specifications.py
line 148 fromto