This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530: Assisted binding

Part Number: CC2530
Other Parts Discussed in Thread: Z-STACK,

Hi guys,

could you please help me to answer probably easy question for you.

If I want my end device to be able to accept binding requests and update its binding table then all I need to do is to add ZDO_BIND_UNBIND_REQUEST to compile options?

Is it correct? Or do I need to implement any handling of the binding requests or any other manual job? Or is it all done by z-stack.

I'm using Z-Stack 3.0.2

Thanks a lot!

  • Hello Peter Drozda,

    I hope you are well. You should have " ZDO_BIND_UNBIND_REQUEST" defined, as it falls under "Zigbee Device Object Bind Request", these are configured in the ZDConfig.h file, inside of a Z-Stack 3.0.2 CC2530 project. For information on how the binding table is formed please visit the Z-Stack overview pagethe table should be automatically updated. For information on the building table size you can reference the "Configuring Source Binding" section in the Z-Stack overview page.

    If you are using GenericApp several "ZDO_..." are left undefined, consult the Z-Stack 3.0.2\Documents\Z-Stack 3.0 Developer's Guide.pdf for information regarding the configuration. 

    A short description from how a binding table is formed:

    There are 3 ways to build a binding table:

    • Zigbee Device Object Bind Request – a commissioning tool can tell the device to make a binding record.

    • Zigbee Device Object End Device Bind Request – 2 devices can tell the coordinator that they would like to setup a binding table record. The coordinator will make the match up and create the binding table entries in the 2 devices.

    • Finding and Binding commissioning process for initiator devices.

    Thanks,
    Alex F

  • Hi Alex,

    thanks for the answer and detailed explanation. Yes I was especially interested in the option 1, where in my case the zigbee2mqtt server would initiate binding and send the request with all necessary attributes to fill the tables in both to-be-bound end devices. I just wasn't sure if there is anything left for programmer to do or if the process is automatically handled by the z-stack. My end device is based on sample switch project, I just stripped out everything related to UI and buttons and basically I want the device to join the network upon startup by extending the init method with the comissioning  request and then the device would wait until third party - z2m server sends binding request.. after that it should be able to e.g send on/off commands on interrupts I implement..

    One more thing is not completelly clear to me though..If I make my ZED join the existing network during initialization, I would suppose that it gets associated with the coordinator. Then later, when it receives the binding request and populates its binding table, how does ZED know that it should send the indirect addressed commands to the bound fellow ZED and not to coordinator? Is there a mechanism which decides based on the cluster in binding table, or how does the ZED know that it should use adress from binding table and not to send to coordinator anymore?

  • Yes, z-Stack should handle binding when coordinator sends binding request. After binding, device would have having destination address for binding cluster to send indirect messages.