Zigbee 协调器配置终端进行电量余量定时报告,但实际未生效...
时间:10-02
整理:3721RD
点击:
协调器配置终端进行电量余量定时报告,协调器发送了配置数据,终端也回复了状态为成功,但终端却没有在配置的时间内进行属性汇报,请大神指点一下,
代码如下:
{ afAddrType_t dstAddr; zclCfgReportCmd_t * cfgReportCmd = osal_mem_alloc( sizeof ( zclCfgReportCmd_t ) + sizeof(zclCfgReportRec_t) ); static uint8 seqNum = 0; dstAddr.addr.shortAddr = pInMsg->srcAddr.addr.shortAddr; dstAddr.addrMode = afAddr16Bit; dstAddr.endPoint = pInMsg->srcAddr.endPoint; dstAddr.panId = pInMsg->srcAddr.panId; cfgReportCmd->numAttr = 1; cfgReportCmd->attrList[0].direction = 0; cfgReportCmd->attrList[0].attrID = ATTRID_POWER_CFG_BATTERY_PERCENTAGE_REMAINING; cfgReportCmd->attrList[0].dataType = ZCL_DATATYPE_UINT8; cfgReportCmd->attrList[0].minReportInt = 20; cfgReportCmd->attrList[0].maxReportInt = 40; cfgReportCmd->attrList[0].timeoutPeriod = 0; *cfgReportCmd->attrList[0].reportableChange = 0; zcl_SendConfigReportCmd( SAMPLEDOORLOCKCONTROLLER_ENDPOINT, (afAddrType_t *)&dstAddr, ZCL_CLUSTER_ID_GEN_POWER_CFG, cfgReportCmd, ZCL_FRAME_CLIENT_SERVER_DIR, FALSE, seqNum++ ); osal_mem_free(cfgReportCmd); }
下面是抓包的配置数据和收到的回复:
又发现一个问题,现在终端一直在发送Data Request,不知道是什么意思,是否是表示自己处于可接收数据状态,可随时接收协调器下发的配置信息?这样一直发送数据,不利于终端的节能啊。
求大神回复,看了别人的提问,帮自己解决了一些问题,在此也希望我的问题及大家的回复可以帮到更多的人!
你看下report change,意思是当report的数据之间的变化超过这个值的时候,再report,否则按照max interval来report
data request是指向父设备轮询取数据。如果你的协调器发送数据给节点不频繁的话,你可以把这个poll rate改大