Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug Report]: VZM31-SN - 0x01020208 - ZHA: Wrong attribute write response is received inconsistently #1

Open
puddly opened this issue Apr 10, 2023 · 0 comments

Comments

@puddly
Copy link

puddly commented Apr 10, 2023

What product is the bug report for?

Blue Series 2-1 Switch (VZM31-SN)

FW Version

0x01020208

Hub

ZHA

Bug Report Details

See home-assistant/core#85610 for the original issue.

When changing the "Smart bulb mode" attribute, sometimes the switch responds with the wrong type of response.

Correct (90% of the time):

# Request
2023-04-10 14:06:34.336 DEBUG (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=True, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), manufacturer=4655, tsn=101, command_id=<GeneralCommand.Write_Attributes: 2>, *direction=<Direction.Server_to_Client: 0>)
2023-04-10 14:06:34.337 DEBUG (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Sending request: Write_Attributes(attributes=[Attribute(attrid=0x0034, value=TypeValue(type=Bool, value=<Bool.true: 1>))])

# Response
2023-04-10 14:06:34.470 DEBUG (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Received ZCL frame: b'\x1c/\x12e\x04\x00'
2023-04-10 14:06:34.471 DEBUG (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=True, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), manufacturer=4655, tsn=101, command_id=4, *direction=<Direction.Client_to_Server: 1>)
2023-04-10 14:06:34.471 DEBUG (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Decoded ZCL frame: Inovelli_VZM31SN_Cluster:Write_Attributes_rsp(status_records=[WriteAttributesStatusRecord(status=<Status.SUCCESS: 0>)])

Incorrect (10% of the time):

# Request
2023-04-10 14:04:03.633 DEBUG (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=True, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), manufacturer=4655, tsn=81, command_id=<GeneralCommand.Write_Attributes: 2>, *direction=<Direction.Server_to_Client: 0>)
2023-04-10 14:04:03.634 DEBUG (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Sending request: Write_Attributes(attributes=[Attribute(attrid=0x0034, value=TypeValue(type=Bool, value=<Bool.false: 0>))])

# Response
2023-04-10 14:04:03.779 DEBUG (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Received ZCL frame: b'\x1c/\x12Q\x0b\x02\x00\x00'
2023-04-10 14:04:03.779 DEBUG (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=True, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), manufacturer=4655, tsn=81, command_id=11, *direction=<Direction.Client_to_Server: 1>)
2023-04-10 14:04:03.780 DEBUG (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Decoded ZCL frame: Inovelli_VZM31SN_Cluster:Default_Response(command_id=2, status=<Status.SUCCESS: 0>)
2023-04-10 14:04:03.780 WARNING (MainThread) [zigpy.zcl] [0x6D04:1:0xfc31] Data remains after deserializing ZCL frame: b'\x00'

The Zigbee spec requires that an attribute write request be responded to with an attribute write response, not a ZCL default response.

How To Reproduce

Join a switch via Home Assistant's ZHA integration and toggle the "Smart bulb mode" toggle a bunch of times. It will eventually happen:

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant