Problem with zigbee-multi-switch DTH handling catchall status messages

Hi

I’m reporting a problem of zigbee-multi-switch DTH regarding On/Off status packet of OnOff Cluster.

This problem is the side effect of the change made for CHAD-5501.
[CHAD-5501][zigbee multi switch] Need Exception handling for eZEX multi switch by inasail · Pull Request #44306 · SmartThingsCommunity/SmartThingsPublic (github.com)

OnOff status packet is usually sent with clusterID=0x0006, attrID=0x0000
But, some of the devices send their status packet with catchall packet, as reply to the on/off commands sent from the ST hub.

I have zemismart 3 gang wall switch, and this device sends status packets like below.

catchall: 0104 0006 03 01 0000 00 9118 00 00 0000 0B 01 0000

There are lots of other devices that sends catchall packet for On/Off status, not only the Zemismart device that I’m using. Below is the link where you could find lots of devices using catchall messages in OnOff cluster.
Search results for ‘“catchall: 0104 0006”’ - SmartThings Community

Basically,

zigbee.getEvent(description)

returns on/off event correctly with the catchall packets like above, and there was no problem before.

But because of the modification made for CHAD-5501,

if (eventDescMap && eventDescMap?.attrId == "0000") {//0x0000 : OnOff attributeId

the catchall message gets lossed by the above if statement, because catchall messages don’t have attrId value.

Below is the modification that I’ve made to the source code.

if (eventDescMap && (eventDescMap?.attrId == "0000" || eventDescMap?.command == "0B"))

Thank you.

1 Like

This catchall message is actually zigbee “Default Response command with the code SUCCESS”.

When you send On command to the device, and the device successfully executed the On command, which means the device is successfully turned on, then this Default Response command is sent from the device.

I think this needs to be handled properly in the zigbee-multi-switch DTH without loss.

if (eventDescMap && (eventDescMap?.attrId == "0000" || eventDescMap?.command == "0B"))

Command == “0B” means default response.


Hi, @iquix. I’ve reported this to the corresponding team. I’ll let you know about the progress.

2 Likes