I tried to create manufacturer-specific cluster reporting but it's not working. I got the 0x86 error. What is wrong?
If you are getting the 0x86 error which is EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE, most likely you have not set up the manufacturer code. For the manufacturer specific cluster, you need to set the manufacturer code before you send the "zcl global send-me-a-report ..." command, so that the correct manufacturer code can be set in the ZCL frame control for the next command. Otherwise, the manufacturer code information is missing in the command and the stack could not find a match between the requested cluster/attribute and what is known at the endpoint. So if your reporting sending side is node A and your reporting receiving side is node B, you can set up reporting on node A with these steps:
1. Create binding, for example using the CLI "zdo bind ..." 2. Set the manufacturer code, for example "zcl mfg-code 0x1002" 3. Send the command to request reporting; "zcl global send-me-a-report ..." and "send ..."
Make sure you do not miss step 2. You could also do all the above using API calls in the code instead of CLI.
Alternatively, you could also do these steps on node B. By the way, in case you were wondering about the naming "send-me-a-report", it doesn't matter if you do it on the sending side or receiving side. The direction of the reporting is determined by the binding which you specify in step 1.
Knowledge Base Articles
ZigBee and Thread
How about read Manufacturer-Specific Cluster Attribute? When I read manu-spec cluster attribute, it also response 0x86(EMBER_ZCL_STATUS_UNSUPPORTED_ATTRIBUTE) , and I have not found where to set mfg code in emberAfFillCommandGlobalClientToServerReadAttributes() command?