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在什么情况下使用,怎么样使用,是否有示例代码!
VV:
在属性里面没有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例程
user5288569:
回复 VV:
不是可以把属性的权限写为“ACCESS_REPORTABLE”吗?如果属性具有这个权限,那属性是否能在数值变化时自动上报呢?会上报给谁?
Alvin Chen:
回复 user5288569:
这个需要你是用ZCL函数或者BDB report . 会report给你绑定的设备上,可以在ZCLxxxx_processincomingMsg() 里面解析。至于是否可以进行report可以查阅ZCL v6 specification里面的属性说明。