ZBOSS: reporting of attributes that are not required to be reportable

In the past I was able to configure ZBOSS to report attributes that are not required to be reportable by the ZCL standard. For example, I'd like to report attribute 0x0001 in cluster 0x0201 (outdoor temperature of a thermostat). I was able to configure this by getting the attribute descriptor via zb_zcl_get_attr_desc_a and adding/or-ing ZB_ZCL_ATTR_ACCESS_REPORTING to its access field before starting the stack. Since I upgraded to nRF SDK 2.7.0 however, this does not work anymore. Is there a new way to configure attributes for reporting that I have missed?

Parents
  • Hi,

    The specification states that the OutdoorTemperature attribute supports read access, so you should be aware that making it reportable is outside of the specification.

    You can change the access of attributes by modifying the attribute description in the cluster files. In this case, it would be to add ZB_ZCL_ATTR_ACCESS_REPORTING to the ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_THERMOSTAT_OUTDOOR_TEMPERATURE_ID in zb_zcl_thermostat.h.

    #define ZB_SET_ATTR_DESCR_WITH_ZB_ZCL_ATTR_THERMOSTAT_OUTDOOR_TEMPERATURE_ID(data_ptr)           \
    {                                                                                                \
      ZB_ZCL_ATTR_THERMOSTAT_OUTDOOR_TEMPERATURE_ID,                                                 \
      ZB_ZCL_ATTR_TYPE_S16,                                                                          \
      ZB_ZCL_ATTR_ACCESS_READ_ONLY | ZB_ZCL_ATTR_ACCESS_REPORTING,                                   \
      (ZB_ZCL_NON_MANUFACTURER_SPECIFIC),                                                            \
      (void*) data_ptr                                                                               \
    }

    Best regards,
    Marte

  • Thanks for the reminder about this being outside of the specification. I assumed that the reportable flag is optional if not stated, but you're right, technically I have to mark this attribute as manufacturer-specific if I want to report it. After making that change I'm able to set a reporting configuration, but I get frequent but empty report-attribute commands instead of the expected ones. Not sure why it would do that, but I'm sure it's just another bug on my end.

Reply
  • Thanks for the reminder about this being outside of the specification. I assumed that the reportable flag is optional if not stated, but you're right, technically I have to mark this attribute as manufacturer-specific if I want to report it. After making that change I'm able to set a reporting configuration, but I get frequent but empty report-attribute commands instead of the expected ones. Not sure why it would do that, but I'm sure it's just another bug on my end.

Children
Related