Zigbee SEDs fail to reconnect after mains power failure

I have a Zigbee test network consisting of ~30 mains-powered devices (almost all routers) plus ~15 battery powered SED light switches based on the nRF52840_dongle.

I noticed that after a mains power interruption, several of the SEDs quit talking to the network entirely.  When I sniffed the network I did not see periodic transmissions, or any transmissions at all in fact, from these devices.  When I pressed a button on the device to wake it up, it did wake up (I have them programmed to flash an LED), it did invoke user_input_indicate(), and it did invoke ZB_ZCL_ON_OFF_SEND_TOGGLE_REQ().  However, none of this generated Zigbee traffic.

After resetting the device, it was back to normal.  Also, this only affected about 25% of the SEDs on the network.  The others came back to life on their own after the outage.

Is there something I need to do to wake up the ZBOSS stack again after it loses connectivity?

Alternatively: is there a way for the application code to be notified of Zigbee traffic, so that it can trigger a watchdog reset if there hasn't been any activity for a while?

  • Hello,

    The person best fit to answer your questions are out of the office, we will look into it next week.

    Kenneth

  • Hi,

    Do you have a sniffer log when the mains power interruption happens? The SEDs should start looking for a new parent when they cannot reach their parent. If they are unable to reach any, then they will not be able to rejoin the network, which might be what is happening here. Are the SEDs affected by this out of range of any possible parent, while the other SEDs are in range?

    Best regards,

    Marte

  • I have a sniffer log from when the power returned, but not when the outage occurred.  It doesn't show any traffic from the "stuck" SEDs.

    > The SEDs should start looking for a new parent when they cannot reach their parent. If they are unable to reach any, then they will not be able to rejoin the network

    Is there logic that causes them to retry a while after they've failed to find a new parent node?  Any way to adjust this behavior or force a join reattempt on a timer?

    In the case of a mains power failure, all possible parents can potentially be offline for hours.  A tiny percentage of our end users may have a ZR on battery backup, but that isn't something we can count on.

  • Hi,

    Please try to get a sniffer log from when the outage occurs if possible.

    The SEDs will retry for a finite time, with longer and longer interval between each successive retry. This procedure can be restarted by calling user_input_indicate(). You will have to implement the logic for this in your application, for example that pressing a button, or holding a button down for a period of time, will call user_input_indicate().

    Best regards,

    Marte

  • I am already calling user_input_indicate() on every button press.  I saw this in the Zigbee samples and I followed their lead.

    It seems to work correctly in the sense that it wakes up the ZBOSS stack during normal (non outage) conditions.  But I'm not sure it is properly waking the stack after an outage.

    It seems like reported bugs in the ZBOSS stack have, so far, not gone anywhere.  So I could see two other possible alternatives here:

    1) Inform the app when there is periodic Zigbee activity, so that we can re-arm a watchdog timer.  If the switch falls off the network for an extended period of time, reset the device.

    2) Nordic can request ZOI Guest access so that we can see the source code and track down the bugs ourselves

    What do you think?

Related