企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
* 导师视频讲解:[**去听课**](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技术支持说明:** >**1**.一般以自主学习为主 > **2**.可到官方问答社区中提问:[**去提问**](https://bbs.csdn.net/forums/zigbee) > **3**.工程师**会尽快**解答社区问题,但他们是一线开发,【**难以保证**】解答时效,解答辛苦,感谢理解! <br/> 协调器设备开发内容主要有一下这几部分: * 接收和处理属性数据 * 启用对应的宏定义 <br/> ## **接收和处理属性数据** 与读写命令类似,协调器在接收到上报信息后,就会发生系统事件ZCL\_INCOMING\_MSG。打开在zcl\_samplesw.c文件中的zdSampleSw\_event\_loop函数,可以找到ZCL\_INCOMING\_MSG的事件处理函数zclSamplesw\_ProcessIncomingMsg,其中的部分代码如下: ### ``` 1.static void zclSampleSw_ProcessIncomingMsg( zclIncomingMsg_t *pInMsg )   2.{   3.  switch ( pInMsg->zclHdr.commandID )   4.  {   5. ...... // 不展开 6. 7.#ifdef ZCL_REPORT   8. ...... // 不展开 9.    case ZCL_CMD_REPORT://属性上报 10.      zclSampleSw_ProcessInReportCmd( pInMsg ); //属性上报处理函数 11.      break;   12.#endif   13. ...... // 不展开 14.  }   15.  if ( pInMsg->attrCmd )   16.    osal_mem_free( pInMsg->attrCmd );   17.} ``` ### 其中的属性上报处理函数zclSampleSw\_ProcessInReportCmd,由笔者自定义,代码如下: ### ``` #ifdef ZCL_REPORT   static uint8 zclSampleSw_ProcessInReportCmd( zclIncomingMsg_t *pInMsg )   {   zclReportCmd_t *reportCmd;   uint8 i;   reportCmd = (zclReportCmd_t *)pInMsg->attrCmd;   for ( i = 0; i < reportCmd->numAttr; i++ )//reportCmd->numAttr为属性数量 {     if( pInMsg- >clusterId == ZCL_CLUSTER_ID_GEN_ON_OFF_SWITCH_CONFIG//Cluster ID && reportCmd->attrList[i].attrID == ATTRID_ON_OFF_SWITCH_TYPE)//属性ID {   int8 attrDat = *(reportCmd->attrList[i].attrData);//读取属性值 HalLcdWriteStringValue("Rx Value:", attrDat, 10, 4);//显示属性值 }   }   return ( TRUE );   }   #endif // ZCL_REPORT ``` <br/> ## **启用对应的宏定义** 最后,需要开启两个宏:ZCL\_REPORT\_DESTINATION\_DEVICE 和 ZCL\_REPORT,如下图所示。 ![](https://img.kancloud.cn/92/a2/92a290de624aff43e61c68d2861535cf_710x804.png =600x) <br/> <br/> ## **项目定制** * 如需项目定制开发,可扫码添加项目经理好友(注明“**项目定制**”) * 定制范围:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技术方案 * 善学坊官网:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非项目定制**勿扰**,此处**非**技术支持