Skip to content

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

Description

@puddly

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions