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

Zigbee IAS Zone example

Hi,

I need help to clarify the API for IAS zone server.  If I can get example implementation,  it would be great.   

I have hard time understanding how zb_ias_zone_app_callback_t work.  There is no documentation on it.  Yes,  I found a link to it that just says.

typedef zb_ret_t(* 

zb_ias_zone_app_callback_t )(zb_uint8_t param, zb_uint16_t general_val)

and

zb_void_t zb_zcl_ias_zone_register_cb ( zb_uint8_t  endpoint,
zb_callback_t  process_result_cb,
zb_ias_zone_app_callback_t  general_cb 
)

Registry callbacks to get status of Zone Status Change Notification command.

Parameters
endpoint - local endpoint number
process_result_cb - notification sent callback function
general_cb

- general callback function

So,  Is the call back is called on Zone Status Change?   If it is only for Zone Status Change Notification,  Can you help to clarify the parameter ZB_ZCL_VALID_CIE_ADDR_SET that may be set on the call back?

Please let me know how I can get a good documentation on how the callbacks (the general_cb and process_result_cb in respect to IAS Zone Server.   

Thanks

Iman

  • Hi,

    I am sorry for the late reply. It looks like you can use this function to register a callback for to process the results for from the 'Zone Status Change Notification'. I think there is a typo and it should say 'Register' instead of 'Registry', if that makes more sense? I don't think it's necessary to register a callback unless you want to do something else after the notification is sent, since I don't see anything mention in the ZCL specification.
    I have given feedback to the developers about the need for an example implementation of the IAS zone cluster, it will perhaps come into the roadmap in the future but I can't make any promises. In the meantime if you have any more question I can try to help the best I can, if you have already partly implemented the cluster but are struggling you can share your code in here so I can test and help you debug at our side as well.

    BR,

    Marjeris

  • Hi Marjeris,

    Thanks for the help.  Please confirm that the callback is only used when you write ias zone client.  Is this correct?  If you write ias zone server, you are the one that change the status.   If this correct, so why a client need notification of ieee address change?

    Please clarify a scenario where you want to get notification for ZB_ZCL_VALID_CIE_ADDR_SET.  

    In my guess due to the lack of documentation, this notification is use full for ias zone server during pairing when ias cie set its own address to an ias server.  

    Please help with a specific example on the above example when you use it as ias server.

    Thanks

  • Hi,

    Sorry for the late reply. This function can be called by the IAS zone server in order to register internal application callbacks. You can register a callback for the Zone Status Change notification or register a general function callback with params zb_zcl_general_zb_params_e

    enum zb_zcl_general_cb_params_e
    {
     ZB_ZCL_VALID_CIE_ADDR_SET = 1,
     ZB_ZCL_CURR_ZONE_SENSITIVITY_LEVEL_SET = 2,
     ZB_ZCL_INIT_TEST_MODE = 3,
     ZB_ZCL_INIT_NORMAL_MODE = 4,
    };

    The Zone Status Change notification is generated spontaneously by the server once the Zone Status attribute changes, the documentation in ZCL spec mentions: "The Zone Status Change Notification command is generated when a change takes place in one or more bits of the ZoneStatus attribute" and is under 'Commands generated' by the IAS zone server.

  • You can register a callback for the Zone Status Change notification or register a general function callback with params zb_zcl_general_zb_params_e

    I think we may have some miss understanding.  in IAS Zone cluster,  A server generate Zone Status Change Notification command.  It does not listen to Zone Status Change Notification command.

    I am writing a IAS Zone.   So,  your suggestion is to write the ZoneStatus attribute.  Then,  the stack will automatically send Zone Status Change Notification command.  Please confirm that this is what you mean?  I am confused now.

    I tried your suggestion as follow.  

        newValue = 1;
        ZB_ZCL_SET_ATTRIBUTE(MULTI_SENSOR_ENDPOINT, 
                           ZB_ZCL_CLUSTER_ID_IAS_ZONE,    
                           ZB_ZCL_CLUSTER_SERVER_ROLE,  
                           ZB_ZCL_ATTR_IAS_ZONE_ZONESTATUS_ID,
                           (zb_uint8_t *)&newValue,                        
                           ZB_FALSE);

    I don't think the stack send out Zone Status Change Notification command.

    Thank you for the help.   I hope you can clarify.

    Thanks

    Iman

  • Hi,

    I am sorry for the late reply. Did you manage to see the Zone Status Change Notification on the sniffer traffic after updating the ZoneStatus attribute?

    iharyadi said:
    So,  your suggestion is to write the ZoneStatus attribute.  Then,  the stack will automatically send Zone Status Change Notification command.  Please confirm that this is what you mean?

     Yes, this is exactly what the ZCL specification says, the stack should send the Zone Status Change notification when the ZoneStatus attribute changes: "The Zone Status Change Notification command is generated when a change takes place in one or more bits of the ZoneStatus attribute".

    Best regards,

    Marjeris

Related