Hello.
I'm new developping ZigBee software and I have the FRDM-KW41Z microcontroller.
I've started with de router base device example and the end sleeping base device and it works fine.
Then I've add a new endpoint to the router following the instruction posted in the link below:
ZigBee 3.0: Adding Endpoint on KW41Z
Finally I tried to bind one of the new endpoint to an another router base device with no modifications but it doesn't work.
This is the only modification I've done apart from the changes to add the endpoint and define BDB_SUPPORT_FIND_AND_BIND_INITIATOR macro.
What am I doing wrong? Do I need to make any other changes to get the endpoints bounded?
Thank you so much.
PD: These are the debugging output from the console
/**********************************************************************************************************************/
Hi Alvaro,
I hope you are doing great.
Are you trying to bind the Router with the End Device?
By default, the Router Base Device is set as the Target and the End Device Sensor as the Initiator.
Please look at the ZigBee 3.0 Devices User Guide 2.2.4.1 Initiator Node
Once Finding and Binding has started, the initiator node searches for target endpoints by broadcasting an Identify Query command periodically with a period (in seconds) defined through the macro BDB_FB_RESEND_IDENTIFY_QUERY_TIME.
What is the time that you have set?
Did you capture the packets in the air?
Regards,
Mario
Hello Mario.
What I have is to MCUs. One of them is running the router base device example without modification and the other one is also running the same example but I've added a new endpoint following the instruction I mentioned above. The new endpoint has an On/Off cluster as a client wich is supposed to match with the On/Off server cluster in the main endpoint of the router base device example.
What I want is to bind the new endpoint I've created in one of the MCU with the original one in the other MCU. To do that, I've defined the
BDB_SUPPORT_FIND_AND_BIND_INITIATOR macro and I change the behaviour of the button number 2 to trigger find and bind as initiator with the new endpoint instead of trigger it as target.
I didn't defined the BDB_FB_RESEND_IDENTIFY_QUERY_TIME so I think it's set to default wich is 10 second.
I'm a collage student so I can't get a sniffer to watch packet traffic. I can only debug setting breakpoints with the IDE and message received by UART.
I can post the code if it's necessary.
Hi Alvaro,
You are right, The initiator has to support the Cluster as a client and the finding and binding process should look for devices that support the Cluster as a server.
In other words:
-The target should set the self-identify for some seconds.
-The Initiator will try to find the identifying devices query their capabilities and create bindings on those with matching operational clusters.
What is the status value that you are getting with the functions BDB_eFbTriggerAsInitiator and BDB_eFbTriggerAsTarget?
Did you bind the Coordinator with the Router previously?
Look at the next device Get Started with the USB-KW41Z, You could capture the packets in the air, in this case, you will be sure that the self-identify is for the time that you set.
Please let me know if the issue still happens
Regards,
Mario
Hi Mario.
I'm getting BDB_E_SUCCESS in both functions, as target and as initiator. The target seems to receive the messages from the initiator because it sends debug messages (shown in the picture "router base device" from above) but I don't know if the router isn't answering back correctly or the initiator doesn't catch the response because it trigger the BDB_EVENT_FB_NO_QUERY_RESPONSE event.
About the sniffer, I don't have that device. I only have two development board (FRDM-KW41Z) and I think it isn't possible to use it as a sniffer, right? I know it would be easier with a sniffer but it isn't on my hand... It's on my college ones.
Thank you.
Hi Alvaro,
This event indicates that the initiator did not receive an Identify Query response within BDB_FB_RESEND_IDENTIFY_QUERY_TIME (default value is 10) seconds.
You could increase the time.
However, you could print the binding table and you will check if the cluster has been added correctly.
Regards,
Mario