深圳市新一信息技术有限公司LOGO

EFR32平台, 如何解读CLI指令中的接收到的ZCL数据侦-ZigBee模块厂家

EFR32平台, 如何解读CLI指令中的接收到的ZCL数据侦-ZigBee模块厂家

CLI指令是Silicon Labs集成到zigbee协议栈当中的指令集,部分与ZCL指令相关的没有解析为可读字符串的。为了说明这部分不容易直接理解的指令,我们特别写下这篇应用笔记。

为了说明,我选一个有代表性的实例,按照实际执行的结果逐步进行说明。
最典型的指令,读远程目标设备的attribute 属性值。
读attribute指令为

zcl global read [cluster:2] [attributeId:2]
这里以读一个灯设备(Z3LightSoc)为例,目标是读取灯的开关状态,它的状态是基于ZCL控制, Cluster ID = 6, Attribute ID = 0。
因此生成发送数据buffer的CLI指令为

zcl global read 6 0
接下来使用发送数据指令send
send [id:2] [src-endpoint:1] [dst-endpoint:1]
send 0x644f 1 1
[0x644f] 表示灯设备的16位短地址, 第一个1为本地endpoint,即是该条数据在空中抓包可以看到src endpoint=1, 它必须是本地设备上已经生效的endpoint, 比如将指令随意改为 send 0x644f 3 1, CLI指令将返回失败。
在灯设备收到指令后,一般情况会应答数据,当连接电脑的zigbee设备收到数据时,也会从串口发送串口数据。这一段数据如下

T00000000:RX len 8, ep 01, clus 0x0006 (On/off) FC 08 seq 09 cmd 01 payload[00 00 00 10 00 ]
接收到数据是令人开心并绝望的,刚接触的开发者难予明白在文章最后的payload 是16进制数表示,它的意义并没有打印出来。这也是我们编写这篇短文的原因所在。
解析这部分是依据zigbee官方文档,Zigbee cluster lib,一个读属性应答包,它的报文解析格式为

报文解析格式

补充了以上的资料,我们再去看payload的内容,依次断开为

payload

在串口工作上完整的截图如下

串口工作

经过这样的完整的说明样例,希望可以让读者明了如何解读CLI接收指令。当然,这些都是根据文档而来,因此遇到任何不熟悉的数据包时,都可以查阅文档以寻求解决办法。

深圳市新一信息技术有限公司(Newbit Info)专业生产蓝牙模块、wifi模块、ZigBee模块等物联网模块,是一家以技术为核心,专注物联网射频通信领域,集合射频核心器件供应以及整体解决方案的高新技术企业。与国内外多家知名半导体厂商(Ti、SI、NORDIC、MAXSCEND)保持紧密合作。公司汇聚了一批在半导体和射频行业拥有多年经验的资深人士,技术领先、积累深厚,可为客户提供无线通信协议、无线通信模块、智能硬件解决方案、智能应用软件APP、云平台灯软硬件产品、产品设计和服务。特色的一站式服务方式可以帮助客户在最短时间内完成产品研制、生产,成就客户价值。