我想知道如何使用TI zstack读取本地和远程zigbee设备上的某些属性以及如何将其值放入uart。我是zstack初学者。我设法使用uart和usb转换器并可以将数据发送到我的电脑。所以我需要知道如何获取属性数据。我已经阅读了api手册,但没有理解如何使用zcl_SendRead函数。感谢。
答案 0 :(得分:0)
按照" 3.3发送阅读" " Z-Stack ZCL API.pdf"这应包含足够的信息,以便将读取attr发送到正确的目标设备。 readCmd的内容是属性ID的数组,特定于您要读取的属性。您需要查阅ZCL规范或设备文档以确定正确的Attr ID和群集ID。
发送读取attr的示例如下所示。它从短地址0x1234和端点0x1的设备读取ATTRID_MS_TEMPERATURE_MEASURED_VALUE属性(来自ZCL_CLUSTER_ID_MS_TEMPERATURE_MEASUREMENT集群)。
afAddrType_t dstAddr;
dstAddr.addrMode = afAddr16Bit;
dstAddr.addr.shortAddr = 0x1234; //set this to correct address
dstAddr.addr.endPoint = 0x1; // set this to correct ep
zclReadCmd_t *cmd = osal_mem_alloc((sizeof zclReadCmd_t) + sizeof(uint16));
cmd->numAttr = 1;
cmd->attrID[0] = ATTRID_MS_TEMPERATURE_MEASURED_VALUE;
zcl_SendRead( SAMPLETHERMOSTAT_ENDPOINT, &dstAddr,
ZCL_CLUSTER_ID_MS_TEMPERATURE_MEASUREMENT,
&cmd, ZCL_FRAME_CLIENT_SERVER_DIR,
hdr->fc.disableDefaultRsp, hdr->transSeqNum );
发送此命令后,您需要处理收到的响应,您会注意到这些函数包含在ZStack示例应用程序中但未填充,例如SampleSwitch应用程序具有zclSampleSw_ProcessInReadRspCmd()函数,这将被调用处理读取attr响应,您需要填充它以执行您想要对响应执行的操作。
此致 TC