This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

New device joining via zigbee router

I am working on zigbee network.

ZB_DEFAULT_PERMIT_JOINING_DURATION = 0xFF,  this macro is defined in "zb_config_common.h" which indicates that network joining window won't close, means device can join at any time.

In my case after some time my end device or router won't joining to the network via router but joining via coordinator if I'll put those devices near by of coordinator.

What to configure by which devices can join the network via router too?

Parents
  • Hi,

    The coordinator is the one that has to open the network for nodes to join, but you should be able to join through a router, as the router forwards the request to the coordinator. Because of this, the router that forwards the request must be in range of the coordinator or other routers in order to forward the request.

    The commissioning period is by default 180 seconds, and is not affected by ZB_DEFAULT_PERMIT_JOINING_DURATION, but is set by ZB_BDBC_MIN_COMMISSIONING_TIME_S. You can open the network by calling bdb_start_top_level_commissioning(ZB_BDB_NETWORK_STEERING) on the coordinator. This is done in the light control example, where the coordinator reopen the network when button 1 is pressed.

    Best regards,

    Marte

  • What if I'll set ZB_BDBC_MIN_COMMISSIONING_TIME_S to 0xFF, then will network be opened permanently? 

  • Hi Marte,

    Can you please answer me that above point is possible or not? 

  • Hi,

    I'm sorry for the delay, I asked a colleague about this to make sure, and I also tested several things myself.

    My original assessment was incorrect. ZB_BDBC_MIN_COMMISSIONING_TIME_S doesn't affect the commissioning period, neither does any other of the defines in the SDK. This time is set in the ZBOSS stack, and can therefore not be changed. I tried changing ZB_ZGP_DEFAULT_COMMISSIONING_WINDOW as well, but that doesn't affect the network, merely the app alarm. This alarm is started with ZB_SCHEDULE_APP_ALARM, which will cause a callback to be executed after the timeout. This is for instance used to notify that network steering has finished by using the callback steering_finished(), which simply prints "Network steering finished" and turn off a LED.

    Since the commissioning period can't be changed, an option is to reopen the network every time network steering is finished. Permit joining will then be disabled only for a short time before the network reopen again, and it shouldn't be noticeable to the user, as the node that wants to join the network will look for a network to join for longer than the network is closed anyway. You can then use the network steering app alarm so that when you get notified that network steering is finished, you'll open the network again with ZB_SCHEDULE_APP_ALARM(steering_finished0ZB_TIME_ONE_SECOND * ZB_ZGP_DEFAULT_COMMISSIONING_WINDOW). You can find an example of how this is used in the light coordinator example.

    Best regards,

    Marte

Reply
  • Hi,

    I'm sorry for the delay, I asked a colleague about this to make sure, and I also tested several things myself.

    My original assessment was incorrect. ZB_BDBC_MIN_COMMISSIONING_TIME_S doesn't affect the commissioning period, neither does any other of the defines in the SDK. This time is set in the ZBOSS stack, and can therefore not be changed. I tried changing ZB_ZGP_DEFAULT_COMMISSIONING_WINDOW as well, but that doesn't affect the network, merely the app alarm. This alarm is started with ZB_SCHEDULE_APP_ALARM, which will cause a callback to be executed after the timeout. This is for instance used to notify that network steering has finished by using the callback steering_finished(), which simply prints "Network steering finished" and turn off a LED.

    Since the commissioning period can't be changed, an option is to reopen the network every time network steering is finished. Permit joining will then be disabled only for a short time before the network reopen again, and it shouldn't be noticeable to the user, as the node that wants to join the network will look for a network to join for longer than the network is closed anyway. You can then use the network steering app alarm so that when you get notified that network steering is finished, you'll open the network again with ZB_SCHEDULE_APP_ALARM(steering_finished0ZB_TIME_ONE_SECOND * ZB_ZGP_DEFAULT_COMMISSIONING_WINDOW). You can find an example of how this is used in the light coordinator example.

    Best regards,

    Marte

Children
No Data
Related