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

[nRF52840 with zigbee] How to append user data append to HA profile ?

Hi,

I am developing a system similar to door lock system.

In our system, user data should transmit from ZED(or ZR) to ZC.

So i modified the ZB_ZCL_ON_OFF_SEND_REQ macro to add user data.

With wireshark, packet size is ok (includes the user data bytes).

But i cannot extract appended user data at ZC side.(Light On/Off command can be parsed successfully).

I am using HA profile.

Give some clues.

Thanks.

#define my_ZB_ZCL_ON_OFF_SEND_REQ(                                                         \
    buffer, addr, dst_addr_mode, dst_ep, ep, prof_id, dis_default_resp, command_id, cb) \
{                                                                                       \
  zb_uint8_t* ptr = ZB_ZCL_START_PACKET_REQ(buffer)                                     \
  ZB_ZCL_CONSTRUCT_SPECIFIC_COMMAND_REQ_FRAME_CONTROL(ptr, dis_default_resp)            \
  ZB_ZCL_CONSTRUCT_COMMAND_HEADER_REQ(ptr, ZB_ZCL_GET_SEQ_NUM(), command_id);           \
  ZB_ZCL_PACKET_PUT_DATA8(ptr, 0xab);  \
  ZB_ZCL_PACKET_PUT_DATA8(ptr, 0xcd);  \
  ZB_ZCL_PACKET_PUT_DATA8(ptr, 0xef);  \
  ZB_ZCL_PACKET_PUT_DATA8(ptr, 0x01);  \
  ZB_ZCL_PACKET_PUT_DATA8(ptr, 0xaa);  \
  ZB_ZCL_FINISH_PACKET(buffer, ptr)                                                     \
  ZB_ZCL_SEND_COMMAND_SHORT(                                                            \
      buffer, addr, dst_addr_mode, dst_ep, ep, prof_id, ZB_ZCL_CLUSTER_ID_ON_OFF, cb);  \
}

Parents
  • Hi,

    Could you explain a bit more about why you are not able to extract the appended user data? How are you implementing this right now?

    Since the payload is not what is expected for an on/off cluster you need to register an endpoint handler to intercept every frame coming to the endpoint and parse the data yourself.

    You can take a look at how it's handled in the zigbee_cli_cmd_attr.c file in the CLI example, as we handle reading attributes the same way.

    Best regards,

    Marjeris

  • Examples are not many. So i just think that data will be followed to  data8.

    I just dumped after data8 and not found.

    Maybe my appended data is not copied to call back parameter field.

    As you suggested, i will reference zigbee_cli_cmd_attr.c

    Thanks.

    -------------------------------------------------------------

    if (cluster_id == ZB_ZCL_CLUSTER_ID_ON_OFF)
    {
    uint8_t value = p_device_cb_param->cb_param.set_attr_value_param.values.data8;

    uint8_t *p = (uint8_t *)&p_device_cb_param->cb_param.set_attr_value_param.values.data8; // I access like this..but failed.

Reply
  • Examples are not many. So i just think that data will be followed to  data8.

    I just dumped after data8 and not found.

    Maybe my appended data is not copied to call back parameter field.

    As you suggested, i will reference zigbee_cli_cmd_attr.c

    Thanks.

    -------------------------------------------------------------

    if (cluster_id == ZB_ZCL_CLUSTER_ID_ON_OFF)
    {
    uint8_t value = p_device_cb_param->cb_param.set_attr_value_param.values.data8;

    uint8_t *p = (uint8_t *)&p_device_cb_param->cb_param.set_attr_value_param.values.data8; // I access like this..but failed.

Children
No Data
Related