lib/tuya: tuyaTz.datapoints wrongly updates { state: } object #8233
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.
After looking more into the behavior reported in Koenkk/zigbee2mqtt#24425, it happens only for Tuya devices and its not an error in Zigbee2MQTT itself.
Problem:
When publishing a
set
message with multiple properties specified, the tuzaTz.datapoints default converter fails to update the state correctly.tuyaTz.datapoints loops through the properties in the current message (because ConverterSet is called only once.
However when it builds the state object to return it uses the
key
parameter of the main call, not the loop variableattr
.This causes the values to be overwritten in the state object under the same
key
.For example:
Leads to state:
And
to
This PR resolves the issue by correctly using the
attr
loop variable to build the return state.Note: The device values were set correctly, however the state in Zigbee2MQTT did not reflect the device state due to the wrong return value.