This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Zigbee stop network steering

Hi

I'm working on a Zigbee network, and I want to have a few End Devices (ZED) connect to a Coordinator (ZC). And it's fine, I got that working by using the zigbee_default_signal_handler().

I'm using nRF52840DK.

Now, I need to have the feature to stop a ZC from adding new devices to the network, because I want to have multiple ZC devices in the same area, that will have their own ZEDs added to the network. Basically, I want to press a button on the nRF52840 DK and the ZC will start looking for new ZEDs, and when I press another button, no new devices will get added after that.

Note: I can assume that ZCs will not overlap in the end device adding intervals because I will be pressing the buttons on all of the ZCs, and I will be powerin on the ZEDs one by one and let them join a network.

One thing I tried is the following:
I have added the following case statement inside the zboss_signal_handler():

case ZB_BDB_SIGNAL_FORMATION:
            /*Skip*/
            break;

in order to stop the bdb_start_top_level_commissioning(ZB_BDB_NETWORK_STEERING);

And then I added the following code to the button callback:

NRF_LOG_INFO("Start network steering");
comm_status = bdb_start_top_level_commissioning(ZB_BDB_NETWORK_STEERING);
ZB_COMM_STATUS_CHECK(comm_status);

The procedure from above allows me to control when I want to start adding the new ZEDs.

I tried adding the following to another button's callback in order to stop the adding of the new devices, but it didn't work:

NRF_LOG_INFO("Start network steering");
comm_status = bdb_start_top_level_commissioning(ZB_BDB_COMMISSIONING_STOP);
ZB_COMM_STATUS_CHECK(comm_status);

Does anyone know how can I achieve this? I'm open to different implementations, this was just the first thing that came to my mind.

Also, is there a way to add the devices based on the RSSI? This may be an option for me, I could do the following also:

if(new_device_rssi > rssi_threshold)
    ** add device to the network
else
    ** remove device from the network

Best regards

Emir

Parents
  • Hi Emir,

    You can close the network by calling the function zb_bdb_close_network().

    There is no way to add device based on RSSI as far as I am aware of, but if you only want certain devices to be able to join the network you can use install code.

    Best regards,

    Marte

  • Hi Marte
    Thank you for the reply.
    This function seems like it could work for me.
    Unfortunately, my firmware is based on the v4.1.0 SDK, and it seems like the function you mentioned is added in the 4.2.0 SDK.

    I've tried looking for an equivalent in the SDK I'm using, but I couldn't find it.

    Is there an equivalent you are aware of? Or should I consider migrating to the new SDK?

    Best regard

    Emir

Reply
  • Hi Marte
    Thank you for the reply.
    This function seems like it could work for me.
    Unfortunately, my firmware is based on the v4.1.0 SDK, and it seems like the function you mentioned is added in the 4.2.0 SDK.

    I've tried looking for an equivalent in the SDK I'm using, but I couldn't find it.

    Is there an equivalent you are aware of? Or should I consider migrating to the new SDK?

    Best regard

    Emir

Children
No Data
Related