Coordinator endpoint

Hello, I developed for my customer, a ZigBee coordinator in last 2019, using nRF5 SDK for Thread and Zigbee v3.2.0.
I has installed many sistems on field, equipped witn several battery powered sensors (door, motion, occupancy ...) and mains powered actuators (bulbs and smart plug).
I have only one endpoint # 64 configured on my coordinator, and now I need to add a second endpoint to receive the info from some end-node that sends to fixed endpoint #255
How can I add it?
Thanks for help

Abele

Parents
  • abe said:
    and on _agent_ep_handler_255 I can process all data received on endpoint 255, that's right?

    Yes, if my understanding is correct then, if the correct clusters are configured, you should receive it on that endpoint handler.

    abe said:
    ZB_AF_SET_ENDPOINT_HANDLER (ZIGBEE_ADRI_ENDPOINT_255, _agent_ep_handler_255);

    Are you using 255 as the actual endpoint number here? Maybe that is the issue. You have to use between 1 and 240.

    Regards,

    Elfving

  • I apologize for the long delay ... I was busy with other works ..
    To sumarize ... I have a Sonoff Zigbee 3.0 end node that sends IAS Alarm info to coordinator using endpoint #255 It even sends all other infos (battery level and voltage, ...) to coordinator endpoint #64 (as configured by my code)
    Here below the declaration to configure the two endpoints:

    I also tried to add this to declare macro

    But I have error!

    How can I add this endpoint to my coordinator?
    I need to make it able to receive from Sonoff end node!

    Many thanks for help!

    Abele

  • Hi Elfving

    any news for me?
    Thanks!

    Abele

  • abe said:

    In any case, now I try the init_multi_ep_fixers(); as you sent me, but I have some build errors:

    Once again I am not sure if that is necessary, try without it first. My coworker did manage to do it without that. 

    abe said:
    This seems a configuration for end-node, but I'm using the Coordinator.

    Ah, right. I should've tried that immediately.

    abe said:

    On my coordinator the callback for endpoint #64 is never invoked if the end-node sends to endpoint #255

    Maybe you need the right cluster implemented there. Though are you seeing the same issue when trying it on another end node?

    Regards,

    Elfving

  • Hi

    it is not a cluster issue, if I use an end-node that sends info of cluster 500 to endpoint #64 of my coordinator, it works well (we have some hundred of this type end-nodes on the field)
    Now we tried with Sonoff, and it sends same info of cluster 500 but to endpoint 255 (image here below)

  • abe said:
    it is not a cluster issue, if I use an end-node that sends info of cluster 500 to endpoint #64 of my coordinator, it works well (we have some hundred of this type end-nodes on the field)

    I see.

    By the way, was your app based on the cli agent? Or are you just basing your endpoint handler on the cli_agent_ep_handler?

    Regards,

    Elfving

  • Yes, I started from CLI Agent (the only coordinator example available on the SDK 3.2), and my endpoint handler is  based on cli_agent_ep_handler

    Abele

Reply Children
  • I am sorry to hear that. 

    Just to summarize what we've found out this far: Receiving a message on EP 255 on a coordinator shouldn't be a problem. I used to think that there could be an issue receiving messages on multiple end points on SDK 3.2, but now I've gotten that tested as well so that should be fine. So the message should be received using EP 255, but only for clusters and attributes implemented on the device itself.

    This is from the documentation I've linked to:

    Every endpoint implements a set of clusters. Clusters implement the device functionality, such as attributes to store the state and the commands for various operations.

    Zigbee devices are characterized by a set of clusters that have mandatory and optional attributes. Application can either use predefined device declaration (for example, IAS Zone device) or define its own set of clusters and endpoints.

    Clusters appropriate for a single device type such as a sensor or a light bulb are organized into an addressable container that is called an endpoint.

    We can also have a look at the spec

    "deliver a copy of the message to the endpoints supporting the cluster indicated in the APS"

    It seems that you would have to have the appropriate cluster on one of the endpoints in the coordinator. Find what sort of message this sensor is sending, what clusters and attributes this sensor needs and add it to the coordinator (see "declaring cluster" here). I guess it is annoying that this is multiple systems already in the field and not something in development. Could consider doing this update with a DFU? 

    abe said:

    Yes, I started from CLI Agent (the only coordinator example available on the SDK 3.2), and my endpoint handler is  based on cli_agent_ep_handler

    The light control sample also has a light coordinator sample, which I think is the recommended starting point.

    Regards,

    Elfving

  • Hello Elfving,

    I'm sorry, but where in the SDK3.2 light coordinator I can find "cluster" settings?
    I don't see the clusters definitions on main.c of light_coordinator, I'm not able to find these declarations
    Instead, in light_bulb main.c I find clusters declarations:

    I try to further explain and summarize my case.
    I also see that on CLI Agent Example there are no cluster declaration, only endpoint.
    If you use CLI agent example on SDK 3.2, it works it with a light bulb or (as in my use case ) with IAS zone devices (end-node)
    You only need:
    - write IAS CIE security
    - bind to coordinator endpoint the end node clusters from which the coordinator shall receive info
    That's all.
    Then, on my coordinator developed starting from CLI Agent example, this method are working well: all the end-nodes binded sends ALL info's to the Coordinator Endpoint (in my case #64)
    I'm speaking of IAS zone end-nodes manufactured by:
    - Heiman
    - Aqara
    - Neo
    - Tuya
    - Sonoff (not all type)

    From some of SONOFF IAS sensor, the alarm status (also if correctly binded to the endpoint of my coordinator), sends these info to ENDPOINT 255
    But this history is already known by you
    What I need is, using CLI Agent example on SDK 3.2: how on cli_agent_endpoint_handler callback could receive data sent from END-NODES at TWO Endpoint #64 and # 255?
    That's all, if I could have this source code then I should integrate on my cooridnator and try it with the Sonoff end-node described before
    My customer asks me if it's best to leave NRF52840 ... but I'd rather avoid this
    Thanks folr help
    Abele

Related