Routing messages in Zigbee mesh

Dear everyone,

I'm new to Zigbee and Nordic development. I'm currently working on Zigbee on nrf52833. I must implement a mesh topology to prove self-healing and self-routing.

Here is my configuration :

I have three nrf52833. One running the network_coordinator sample, one running the template sample (configured as a router) and one running the light_bulb sample (configured as an end device).

My mesh starts well, thanks to the zdo mgmt_lqi command, I can see that my router (depth 1) see my coordinator and I can ping in both direction. I also know that my router is able to add my end device to the mesh (depth 2). So my mesh seems work perfectly.

My problem is when I try so send a zcl command or ping my end device from my coordinator : I get an error "Error: Request timed out". I guess the request can go through my router but I don't know why...

And I sometimes get this error : 

Has anyone ever experienced this problem ? Did I miss something in my Zigbee configuration ?

You may find in attachment a wireshark capture from my Sniffer.

Have a nice day

.wireshark_export.pcapng

Parents
  • Hello,

    Can you please send me the project that you have used as your template router? And did you do any other changes to the light bulb than setting:

    CONFIG_ZIGBEE_ROLE_ROUTER=n
    CONFIG_ZIGBEE_ROLE_END_DEVICE=y

    and removing the #error near the top of main.c triggering when CONFIG_ZIGBEE_ROLE_ROUTER is set to n?

    Your light bulb is a normal end device, and not a sleepy end device, right? How do you make the light bulb attach to the router and not the coordinator? And how do you send the ping commands between the devices? Is it triggered e.g. from a button press? Can you please send some snippets?

    Best regards,

    Edvin

Reply
  • Hello,

    Can you please send me the project that you have used as your template router? And did you do any other changes to the light bulb than setting:

    CONFIG_ZIGBEE_ROLE_ROUTER=n
    CONFIG_ZIGBEE_ROLE_END_DEVICE=y

    and removing the #error near the top of main.c triggering when CONFIG_ZIGBEE_ROLE_ROUTER is set to n?

    Your light bulb is a normal end device, and not a sleepy end device, right? How do you make the light bulb attach to the router and not the coordinator? And how do you send the ping commands between the devices? Is it triggered e.g. from a button press? Can you please send some snippets?

    Best regards,

    Edvin

Children
  • Dear Edvin,
    Thanks for you quick answer. I should have gone more in details, sorry.

    So I flashed my nrf with the template projet I found in the NCS in the samples/zigbee folder.

    To make my light_bulb an end device, I used this line :

    zb_set_network_ed_role(zb_get_channel_mask());

    And when I check with bdb role it's written "end device". That's the only thing I modified in the light_bulb settings.

    To answer your questions : 

    Your light bulb is a normal end device, and not a sleepy end device, right?

    Yes that's right, I didn't add this feature.

    How do you make the light bulb attach to the router and not the coordinator?

    I took away my light_bulb from my coordinator so that my light_bulb can only get commissioned by the router.

    And how do you send the ping commands between the devices?

    I send the ping commands in serial. My coordinator is connected in USB to my computer and I can wrote commands with puTTY.

    I only added in the prj.conf file these two lines to make sure I can use zcl commands :

    CONFIG_ZIGBEE_SHELL=y
    CONFIG_ZIGBEE_SHELL_ENDPOINT=10

    Also I saw this section in the nrf5 SDK documentation : 

    Implementing algorithm for overriding the handling of ZCL commands

    Do I need to implement something like this to enable routing in my mesh ?

    Kind regards,

    Romain

  • Hello Edvin,

    I fixed my issue using this post :

     RE: [Zigbee-mesh] How to initiate the route discovery manually? 

    It wasn't easy for me to understand how the routing was working in Zigbee but now it's clear.

    Again, thanks for your quick answer, I appreciate.

    Have a nice day.

    Romain

Related