This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

在ZHA中ACCESS_REPORTABLE Attribute Access Control 如何使用

Other Parts Discussed in Thread: Z-STACK

TI工程师,您好!在ZigBee开发的过程遇到ACCESS_REPORTABLE使用的问题:

协议栈版本:Z-Stack Home 1.2.2a.44539

我现在想实现这样的一个功能:当我发送一个控制开关开的命令给指定的开关设备,开关设备执行完开的命令后,将开关当前的开关状态上报给服务器。

我在switch工程中添加

swtich工程

{
ZCL_CLUSTER_ID_GEN_ON_OFF,
{ // Attribute record
ATTRID_ON_OFF,
ZCL_DATATYPE_UINT8,
ACCESS_CONTROL_READ|ZCL_SEND_ATTR_REPORTS,
(void *)&zclSampleSw_OnOff
}
},

在蒋代码下载到设备上后,控制并进行数据抓包分析,当zclSampleSw_OnOff改变后并没有Report。

现在弄不明白这个ACCESS_REPORTABLE在什么情况下使用,怎么样使用,是否有示例代码!

  • 在属性里面没有ZCL_SEND_ATTR_REPORTS这个说法,直接写ACCESS_CONTROL_READ就可以了。

    如果你想report 某个attribute,直接调用report attribute的api函数就可以了

    zcl_SendReportCmd( SAMPLETHERMOSTAT_ENDPOINT, &zclSampleThermostat_DstAddr,
    ZCL_CLUSTER_ID_HVAC_THERMOSTAT,
    pOutDemandReport, ZCL_FRAME_SERVER_CLIENT_DIR, TRUE, zclSampleThermostatSeqNum++ );

    你可以参考协议栈下面Thermostat例程

  • 不是可以把属性的权限写为“ACCESS_REPORTABLE”吗?如果属性具有这个权限,那属性是否能在数值变化时自动上报呢?会上报给谁?
  • 这个需要你是用ZCL函数或者BDB report . 会report给你绑定的设备上,可以在ZCLxxxx_processincomingMsg() 里面解析。至于是否可以进行report可以查阅ZCL v6 specification里面的属性说明。