cancel
Showing results for 
Search instead for 
Did you mean: 

Zigbee reconnect problem

Pablo1610
Associate II

I'm trying to develop an application for zigbee for the stm32wb55, but i get some problems when I try to reconnect.

The configuration for the coordinator its the next parameters:

      - config.startupControl = ZbStartTypeForm;

      - config.extendedPanId = 0x400;

      - config.panId = 0x7171;

      - config.shortAddress = 0x0000;

      - config.networkManagerAddress = 0x7171;

The configuration for the End devices are the next parameters:

   config.startupControl = ZbStartTypeRejoin;

   config.panId = 0x7171;

   config.networkManagerAddress = 0x7171;

   config.shortAddress = 0x01;

   config.extendedPanId = 0x400;

The first time it performs the connection well. But, when the End Device lose the connection (reboot, or whatever it takes), it cannot recconect to the coordinator. I get the errors in the two pictures. Sometimes it tries to connect to another End Device board and other times tries to connect to 0x0 (coordinator), but it does not seem to work.

I do not know what I'm doing wrong with it, maybe I'm missing some configuration parameters or something more to try to recconect.

1 ACCEPTED SOLUTION

Accepted Solutions
Remy ISSALYS
ST Employee

Hello,

ZbZdoPermitJoinReq message has to been sent from the coordinator to allow permit join for an extra amount of time.

Best Regards

View solution in original post

5 REPLIES 5
Remy ISSALYS
ST Employee

Hello,

Here an extract of AN5506, Zigbee device network joining timeout:

After a device has set up or joining a Zigbee network, the time when another device is allowed to join to this device (coordinator or router for a Zigbee centralized network for example) is fixed.

As a result, after this delay, joining the network for a device is not permitted (Zigbee association permit value). This is also the case when a device is reset after this time.

In order for a device to join a Zigbee network when the permit join timeout is over, the Zigbee coordinator can allow a parent device (for instance a Zigbee router) to permit joining. This is done by sending a ZDO message to parent.

For the coordinator, it can sent a ZDO message to itself to allow permit join for an extra amount of time.

Note: Zigbee persistent data feature can also be used in order to keep stack parameters and be able to reconnect to a network (or setting up) after a reset/shutdown. 

In Zigbee application available in STM32CubeWB package, this timeout is fixed to 3 minute.

Best Regards

Hello,

But what kind of ZDO message has to been sent from the cordinator? A bind request: ZbZdoBindReq, a permit join: ZbZdoPermitJoinReq, network update: ZbZdoNwkUpdateReq?

Or whatever message that I sent from the coordinator to the Zigbee network should be enough?

Because there are lot of ZDO message options in the libraries.

Thanks,

Pablo

Remy ISSALYS
ST Employee

Hello,

ZbZdoPermitJoinReq message has to been sent from the coordinator to allow permit join for an extra amount of time.

Best Regards

Hi,

I have tried executing the following code every 60 seconds:

struct ZbZdoPermitJoinReqT req;
memset(&req, 0, sizeof(req));
 
req.destAddr=0xFFFC;
req.tcSignificance = true;
req.duration = 0xFE;
 
ZbZdoPermitJoinReq(zigbee_app_info.zb,&req,NULL,NULL);

 It looks like its working, so, thanks for your answer.

Best Regards,

Pablo

Hello,

I am facing the same issue as you, and I wanted to know in which part of the code you implemented this code. Also, is the destAddr the PanId of the coordinator? I am using the Zigbee_APS_Coord example. Thank you.

 

Best Regards,