【XBEE手册】API操作
@(ZigBee)[ZigBee, XBEE手册]
[转载
请注明出处,谢谢!]
API帧格式
固件支持两种API操作模式:没有转义字符和转义字符。使用AP命令启用任一模式:
- AP = 1:API操作。
- AP = 2:API操作(具有转义字符 - 仅在UART上可用)。
API数据帧结构因选择的模式而异。
API操作(AP参数= 1)
下表显示启用AP = 1 时的数据帧结构:
帧字段 | 字节 | 描述 |
---|---|---|
起始分隔符 | 1 | 0x7E |
长度 | 2 - 3 | 最高有效位(Most Significant Byte),最低有效位(Least Significant Byte) |
数据帧 | 4 - n | API特定的结构 |
校验 | n + 1 | 1个字节 |
固件默认丢弃在起始分隔符之前接收的任何数据。如果设备未正确接收帧或校验失败,则设备将回复指示故障类型的状态帧。
API操作 - 使用转义字符(AP参数= 2)
该模式仅适用于UART,不适用于SPI串行端口。 下表显示启用AP = 2 时的数据帧结构:
帧字段 | 字节 | 描述 |
---|---|---|
起始分隔符 | 1 | 0x7E |
长度 | 2 - 3 | 最高有效位(Most Significant Byte),最低有效位(Least Significant Byte) (如果需要,字符会被转义) |
帧数据 | 4 - n | API特定的结构(如果需要,字符会被转义) |
校验 | n + 1 | 1个字节(如果需要,字符会被转义) |
转义字符
发送或接收UART数据帧时,必须转义(标记)特定数据值,以免它们干扰数据帧排序。要转义干扰数据字节,需插入0x7D,后跟着要转义字节与0x20进行异或运算的结果。
需要转义的数据字节:
字节 | 描述 |
---|---|
0x7E | 帧分隔符 |
0x7D | 转义符号 |
0x11 | XON |
0x13 | XOFF |
示例
:在转义干扰字节之前的原始串行数据:
0x7E 0x00 0x02 0x23 0x11 0xCB
需要转义0x11,这会产生以下帧:
0x7E 0x00 0x02 0x23 0x7D 0x31 0xCB
注意:
在前面的示例中,原始数据的长度(不包括校验)是0x0002,未转义数据的校验(不包括帧分隔符和长度)计算如下:
0xFF - (0x23 + 0x11)=(0xFF - 0x34)= 0xCB。
长度
Length:双字节,指示帧的数据字段(不包括起始分隔符,长度和校验)中包含的总字节数,
帧数据
该字段包含设备接收或发送的信息。帧数据的结构取决于API帧的用途:
cmdID帧(API标识符)指示哪些API消息包含cmdData帧(特定于标识符的数据)。设备发送多字节值大端格式。
XBee /XBee-PRO Zigbee RF模块支持以下API帧:
API帧名称 | API ID |
---|---|
AT命令 | 0x08 |
AT命令 - 队列参数值 | 0x09 |
Zigbee传输请求 | 0x10 |
显式寻址Zigbee命令帧 | 0x11 |
远程命令请求 | 0x17 |
创建源路由 | 0x21 |
AT命令响应 | 0x88 |
调制解调器状态 | 0x8A |
Zigbee传输状态 | 0x8B |
Zigbee接收数据包(AO = 0) | 0x90 |
Zigbee显式Rx指标(AO = 1) | 0x91 |
Zigbee I / O数据采样Rx指示器 | 0x92 |
XBee传感器读取指示器(AO = 0) | 0x94 |
节点识别指示符(AO = 0) | 0x95 |
远程命令响应 | 0x97 |
扩展调制解调器状态 | 0x98 |
无线固件更新状态 | 0xA0 |
路线记录指示器 | 0xA1 |
多对一路由请求指示符 | 0xA3 |
计算并验证校验
为了测试数据完整性,设备计算并验证非转义数据的校验。
要计算API帧的校验:
- 添加数据包的所有字节,除了起始分隔符0x7E和长度(第二个和第三个字节)。
- 仅预留结果中最低的8位。
- 从0xFF中减去此数量。
要验证API帧的校验:
- 添加包括校验在内的所有字节; 不包括分隔符和长度。
- 如果校验正确,则最右边的最后两位数等于0xFF。
例
请考虑以下示例数据包:7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F B8 +
字节(S) | 描述 |
---|---|
7E | 起始分隔符 |
00 0A | 长度字节 |
01 | API标识符 |
01 | API帧ID |
50 01 | 目标址低 |
00 | 选项字节 |
48 65 6C 6C 6F | 数据包 |
B8 | 校验 |
要计算校验,可以求和数据包的所有字节,不包括帧分隔符7E和长度(第二个和第三个字节):
7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F B8
求和这些十六进制字节
01 + 01 + 50 + 01 + 00 + 48 + 65 + 6C + 6C + 6F = 247
如果API数据包由不正确的校验组成,则XBee / XBee-PRO Zigbee RF模块将认为该数据包无效并将忽略该数据。
要验证API数据包的校验,请求和所有字节,包括校验(不包括分隔符和长度),如果正确,则总和的最后两个最右边的数字将等于FF。
01 + 01 + 50 + 01 + 00 + 48 + 65 + 6C + 6C + 6F + B8 = 2FF
API示例
示例:
创建API AT命令帧以配置允许加入的设备(将NJ设置为0xFF)。
帧应如下所示:
0x7E 0x00 0x05 0x08 0x01 0x4E 0x4A 0xFF 5F
其中
0x0005 =长度
0x08 = AT命令API帧类型
0x01 =帧ID(设置为非零值)
0x4E4A = AT命令(NJ)
0xFF =命令设置的值
0x5F =校验
校验计算为[0xFF - (0x08 + 0x01 + 0x4E + 0x4A + 0xFF)]
示例:
发送ND命令以发现PAN中的设备。
帧应如下所示:
0x7E 0x00 0x04 0x08 0x01 0x4E 0x44 0x64
其中:
0x0004 =长度
0x08 = AT命令API帧类型
0x01 =帧ID(设置为非零值)
0x4E44 = AT命令(ND)
0x64 =校验
校验计算为[0xFF - (0x08 + 0x01 + 0x4E + 0x44)]
示例:
向协调器发送远程命令,将AD1 / DIO1设置为数字输入(D1 = 3)并应用更改以强制进行I / O更新。
API远程命令框应如下所示:
0x7E 0x00 0x10 0x17 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFE 0x02 0x44 0x31 0x03 0x70
其中:
0x10 =长度(16个字节,不包括校验)
0x17 =远程命令API帧类型
0x01 =帧ID
0x0000000000000000 =协调器的地址(如果已知,可以用协调器的实际64位地址替换)
0xFFFE = 16位目标地址
0x02 =应用更改(远程命令选项)
0x4431 = AT命令(D1)
0x03 =命令参数(参数也可以发送为0x0003或0x00000003)0x70 =校验
API串行交换
用户可以使用“帧ID”字段来关联传出帧和相关响应。
AT命令
下图显示了在发送AT命令请求以读取或设置设备参数时在串行接口上发生的API帧交换。用户可以在请求中设置帧ID为0来禁用响应。
发送和接收RF数据
下图显示了在将RF数据发送到另一个设备时在UART接口上进行的API帧交换。除非在TX请求中将帧ID设置为0,否则始终在数据传输结束时发送发送状态帧。如果数据包无法传输到目标,则发送状态帧指示失败的原因。
接收的数据帧类型(0x90或0x91)由AO命令确定。
远程AT命令
下图显示了在发送远程AT命令时在串行接口上进行的API帧交换。如果远程设备未收到远程命令,则设备不会通过串行接口发送远程命令响应帧。
源路由
下图显示了在发送源路由传输时在串行端口发生的API帧交换。
设备注册
下图显示了在将加入设备注册到信任中心时在串行接口上进行的API帧交换。
帧描述
AT命令帧 - 0x08
描述
使用此帧进行查询或设置本地设备上的参数。此API命令在运行命令后应用更改。用户可以通过发送没有参数值字段的0x08 AT命令帧来查询参数值(双字节AT命令后面紧跟帧校验)。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x08 |
AT命令 | 5-6 | 命令名:两个用于标识AT命令的ASCII字符。 |
参数值 | 7-n | 如果存在,则指示设置给定寄存器所请求的参数值。如果没有字符,则查询寄存器。 |
例
以下示例说明了修改设备的NJ参数值时的AT命令帧。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | 1 (MSB) 2 (LSB) | 0x00 0x04 |
帧类型 | 3 | 0x08 |
帧ID | 4 | 0x52(R) |
AT命令 | 5 6 | 0x4E(N) 0x4A(J) |
参数值(可选) | ||
校验 | 7 | 0x0D |
AT命令 - 队列参数值帧 - 0x09
描述
此帧允许用户查询或设置设备参数。与AT命令(0x08)帧相反,此帧将对新参数值放入队列,执行以下命令之一后才会应用新参数:
- AT命令(0x08的)帧 (对于API类型)
- AC命令
查询参数值时,0x09帧的行为与0x08帧相同。设备立即返回寄存器查询,而不是对它们放入队列。此命令的响应也是AT命令响应帧(0x88)。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x09 |
帧ID | 4 | 标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。 |
AT命令 | 5-6 | 命令名:两个用于标识AT命令的ASCII字符。 |
参数值 | 7-n | 如果存在,则指示设置给定寄存器所请求的参数值。如果没有字符,查询寄存器。 |
例
以下示例发送命令将波特率(BD)更改为115200波特,但不立即应用更改。设备继续以先前的波特率运行,直到用户应用更改。
注意:
在此示例中,用户可以将参数作为零填充的2字节或4字节值发送。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | 1 (MSB) 2 (LSB) | 0x00 0x05 |
帧类型 | 3 | 0x09 |
帧ID | 4 | 0x01 |
AT命令 | 5 6 | 0x42(B) 0x44(D) |
参数值 | 7 | 0x07(BD 7 = 115200波特) |
校验 | 8 | 0x68 |
发送请求帧 - 0x10
描述
该帧使设备将有效载荷数据作为RF包发送到特定目标。
- 对于广播传输,将64位目标地址设置为0x000000000000FFFF。要访问协调器,可将64位地址设置为0并将16位地址设置为0xFFFE,或将64位地址设置为协调器的64位地址,将16位地址设置为0x0000。
- 对于所有其他传输,正确设置16位地址有助于提高传输到多个目标时的性能。如果不知道16位地址,请将此字段设置为0xFFFE(未知)。如果成功,则发送状态帧(0x8B)表示发现的16位地址。
用户可以将广播半径设置为0到NH。如果设置为0,则NH的值指定广播半径(推荐)。此参数仅用于广播传输。
用户可以使用NP命令读取最大有效负载字节数。
注意:
使用源路由可将源路由中每个中间跃点的RF有效负载减少两个字节。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x10 |
帧ID | 4 | 标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。 |
64位目标地址 | 5-12 | 目标设备的64位地址。先高位(MSB)后低位(LSB)。 (默认)协调器= 0x0000000000000000 广播= 0x000000000000FFFF |
16位目标网络地址 | MSB 13 LSB 14 | 目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。 |
广播半径 | 15 | 设置广播传输可以发生的最大跳数。如果设置为0,则广播半径设置为最大跃点值。 |
选项 | 16 | 0x01 - 禁用重试 0x20 - 启用APS加密(如果EE = 1) 0x40 - 使用此目标的扩展传输超时 启用APS加密会将RF有效负载字节的最大数量减少4(低于NP报告的值)。 设置扩展超时位会导致堆栈设置目标地址的扩展传输超时。请参阅传输,寻址和路由。 所有未使用和不支持的位必须设置为0。 |
射频数据 | 17-N | 数据发送到目标设备。 |
例
该示例显示了如果禁用转义(AP = 1),目标地址为0x0013A200 40014011和有效负载“TxData1B”,如何将传输发送到设备。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x16 |
帧类型 | 3 | 0x10 |
帧ID | 4 | 0x01 |
64位目标地址 | MSB 5 6 7 8 9 10 11 LSB 12 | 0x00 0x13 0xA2 0x00 0x40 0x0A 0x01 0x27 |
16位目标网络地址 | MSB 13 LSB 14 | 0xFF 0xFE |
广播半径 | 15 | 0x00 |
选项 | 16 | 0x40 |
射频数据 | 17 18 19 20 21 22 23 24 | 0x54 0x78 0x44 0x61 0x74 0x61 0x30 0x41 |
校验 | 25 | 0x13 |
将传输发送到协调器,而不指定协调器的64位地址。API传输请求帧应如下所示:
0x7E 0x00 0x16 0x10 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF
0xFE 0x00 0x00 0x54 0x78 032 0x43 0x6F 0x6F 0x72 0x64 0xFC
其中0x16 =长度(不包括校验的22个字节)
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x16 |
帧类型 | 3 | 0x10 |
帧ID | 4 | 0x01 |
64位目标地址 | MSB 5 6 7 8 9 10 11 LSB 12 | 0x00 0x13 0xA2 0x00 0x40 0x0A 0x01 0x27 |
16位目标网络地址 | MSB 13 LSB 14 | 0xFF 0xFE |
广播半径 | 15 | 0x00 |
选项 | 16 | 0x40 |
有效负载数据(Tx2Coord) | 17 18 19 20 21 22 23 24 | 0x54 0x78 0x32 0x43 0x6F 0x6F 0x72 0x64 |
校验 | 25 | 0xFC |
显式寻址命令帧 - 0x11
描述
此帧类似于传输请求(0x10),但它还要求用户指定应用程序层寻址字段:端点,群集ID和配置文件ID。
此帧需设备使用特定的源和目标端点,群集ID和配置文件ID,将有效负载数据作为RF数据包发送到特定目标。
- 对于广播传输,将64位目标地址设置为0x000000000000FFFF。要访问协调器,可将64位地址设置为0并将16位地址设置为0xFFFE,或将64位地址设置为协调器的64位地址,将16位地址设置为0x0000。
- 对于所有其他传输,正确设置16位地址有助于提高传输到多个目标时的性能。如果不知道16位地址,请将此字段设置为0xFFFE(未知)。如果成功,则发送状态帧(0x8B)表示发现的16位地址。
用户可以将广播半径设置为0到NH到0xFF。如果设置为0,则NH的值指定广播半径(推荐)。此参数仅用于广播传输。
用户可以使用NP命令读取最大有效负载字节数。
注意:
使用源路由将使源路由中每个中间跃点的RF有效负载减少两个字节。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x11 |
帧ID | 4 | 标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。 |
64位目标地址 | 5-12 | 目标设备的64位地址。先高位(MSB)后低位(LSB)。 (默认)协调器= 0x0000000000000000 广播= 0x000000000000FFFF |
16位目标网络地址 | MSB 13 LSB 14 | 目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。 |
源端点 | 15 | 传输的源端点。 |
目标端点 | 16 | 传输的目标端点。 |
群集ID | 17-18 | 传输中使用的群集ID。 |
配置文件ID | 19-20 | 传输中使用的配置文件ID。 |
广播半径 | 21 | 设置广播传输可以发生的最大跳数。如果设置为0,则广播半径设置为最大跃点值。 |
选项 | 22 | 支持传输选项的Bitfield。支持的值包括以下内容: 0x01 - 禁用重试 0x04 - 间接寻址 0x08 - 组播寻址 0x20 - 启用APS加密(如果EE = 1) 0x40 - 使用此目标的扩展传输超时 启用APS加密会将RF有效负载字节的最大数量减少4(低于NP报告的值)。 设置扩展超时位会导致堆栈设置目标地址的扩展传输超时。请参阅传输,寻址和路由。 所有未使用和不支持的位必须设置为0。 |
射频数据 | 23-N | 数据发送到目标设备。 |
例
以下示例将数据传输发送到设备:
- 64位地址:0x00
- 源端点:0xA0
- 目标端点:0xA1
- 群集ID:0x1554
- 配置文件ID:0xC105
- 有效载荷:TxData
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x1A |
帧类型 | 3 | 0x11 |
帧ID | 4 | 0x01 |
64位目标地址 | MSB 5 6 7 8 9 10 11 LSB 12 | 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 |
16位目标网络地址 | MSB 13 LSB 14 | 0xFF 0xFE |
源端点 | 15 | 0xA0 |
目标端点 | 16 | 0xA1 |
群集ID | 17 18 | 0x15 0x54 |
配置文件ID | 19 20 | 0xC1 0x05 |
广播半径 | 21 | 0x00 |
选项 | 22 | 0x00 |
有效负载数据 | 23 24 25 26 27 28 | 0x54 0x78 0x44 0x61 0x74 0x61 |
校验 | 29 | 0x3A |
远程AT命令请求帧 - 0x17
描述
用于在远程设备上查询或设置设备参数。要使远程设备上的参数更改生效,必须通过设置“Apply Changes”选项位或通过向远程发送AC命令来应用更改。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x17 |
帧ID | 4 | 标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。 |
64位目标地址 | 5-12 | 目标设备的64位地址。先高位(MSB)后低位(LSB)。 (默认)协调器= 0x0000000000000000 |
16位目标网络地址 | MSB 13 LSB 14 | 目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。 |
远程命令选项 | 15 | Bitfield启用各种远程命令选项。支持的值包括: 0x01 - 禁用ACK 0x40 - 使用此目标的扩展传输超时。设置扩展超时位会导致堆栈设置目标地址的扩展传输超时。 有关更多信息,请参阅传输,寻址和路由。 |
AT命令 | 16-17 | 命令名:两个用于标识命令的ASCII字符。 |
命令参数 | 18-n | 如果存在,则指示设置给定寄存器所请求的参数值。如果没有字符,查询寄存器。 |
例
以下示例发送远程命令:
在此示例中,远程设备的64位地址是0x0013A200 40401122。 目标16位地址未知。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x10 |
帧类型 | 3 | 0x17 |
帧ID | 4 | 0x01 |
64位目标地址 | MSB 5 6 7 8 9 10 11 LSB 12 | 0x00 0x13 0xA2 0x00 0x40 0x40 0x11 0x22 |
16位目标网络地址 | MSB 13 LSB 14 | 0xFF 0xFE |
远程命令选项 | 15 | 0x02(应用更改) |
AT命令 | 16 17 | 0x42(B) 0x48(H) |
命令参数 | 18 | 0x01 |
校验 | 29 | 0xF5 |
创建源路由 - 0x21
描述
此帧在设备中创建源路由。源路由指定数据包遍历从源到目标的完整路由。为获得最佳结果,请使用具有多对一路由的源路由。
此帧类型没有响应帧。生成源路由时要小心。格式不正确的帧将被无线电静默拒绝或导致意外结果。
注意:
创建源路由时,需要64位和16位目标地址。这些是在设备收到路由记录指示符(0xA1)帧时获得的。
格式
下表提供了帧的内容。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x21 |
帧ID | 4 | 始终设为0 |
64位目标地址 | 5-12 | 目标设备的64位地址。先高位(MSB)后低位(LSB)。 (默认)协调器= 0x0000000000000000 广播=0x000000000000FFFF |
16位目标网络地址 | MSB 13 LSB 14 | 目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。 |
路线命令选项 | 15 | 设为0 |
地址数量 | 16 | 源路由中的地址数(源和目标除外)。如果此数字为0或大于源路由表大小(40),则设备将以静默方式丢弃此API帧。但是,设备会丢弃一个超过11个中间跳的帧。 |
地址1 | 17 18 | 目标的邻居 |
地址2(更靠近源) | 19 20 | 中间跃点的地址 |
地址3 | 21 22 | 源的邻居 |
例
用户必须从目标的邻居开始订购中间跃点地址,并且更靠近源。
假设在A和E之间找到路由,如以下示例所示。
A’B’C’D’E
如果设备E具有0x0013A200 40401122的64位地址和0x3344的16位地址,并且设备B,C和D具有以下16位地址:
B = 0xAABB C = 0xCCDD D = 0xEEFF
此示例显示如何发送创建源路由帧以在A和E之间建立源路由。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x14 |
帧类型 | 3 | 0x21 |
帧ID | 4 | 0x00 |
64位目标地址 | MSB 5 6 7 8 9 10 11 LSB 12 | 0x00 0x13 0xA2 0x00 0x40 0x40 0x11 0x22 |
16位目标网络地址 | MSB 13 LSB 14 | 0x33 0x44 |
远程命令选项 | 15 | 0x00 |
地址数量 | 16 | 0x03 |
地址1 | 17 18 | 0xEE 0xFF |
地址2(更靠近源) | 19 20 | 0xCC 0xDD |
地址3 | 21 22 | 0xAA 0xBB |
校验 | 23 | 0x01 |
AT命令响应帧 - 0x88
描述
设备发送此帧以响应AT命令(0x08或0x09)帧。一些命令发送回多个帧; 例如,ND命令。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x88 |
帧ID | 4 | 标识要报告的串行端口数据帧。如果在命令模式下帧ID = 0,则设备不会给出AT命令响应。 |
AT命令 | 5-6 | 命令名:两个用于标识命令的ASCII字符。 |
命令状态 | 7 | 0 =正常 1 =错误 2 =无效命令 3 =无效参数 4 = Tx失败 |
命令数据 | 二进制格式的寄存器数据。如果主机设置了寄存器,则设备不会返回该字段。 |
例
如果在帧ID为0x01的本地设备上更改BD参数,并且参数有效,则用户会收到以下响应。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x05 |
帧类型 | 3 | 0x88 |
帧ID | 4 | 0x01 |
AT命令 | 5 6 | 0x42(B) 0x44(D) |
命令状态 | 7 | 0x00 |
命令数据 | (没有命令数据意味着参数已经设置而不用查询) | |
校验 | 8 | 0xF0 |
调制解调器状态帧 - 0x8A
描述
设备会发送此帧以响应特定条件。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x8A |
状态 | 4 | 0x00 =硬件复位 0x01 =看门狗定时器复位 0x02 =加入的网络(路由器和终端设备) 0x03 =解除关联 0x06 =协调器已启动 0x07 =网络安全密钥已更新 0x0D =超出电压限制 (仅限PRO) 0x11 =正在进行加入时调制解调器配置已更改 0x80 + = Ember Zigbee堆栈错误 |
例
当设备启动时,它将返回以下API帧。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x02 |
帧类型 | 3 | 0x8A |
状态 | 4 | 0x06 |
校验 | 5 | 0x6F |
发送状态帧 - 0x8B
描述
当发送请求(0x10,0x11)完成时,设备从串行接口发送发送状态消息。此消息指示传输请求是否成功或是否失败。
注意:
即使传输失败,也不会确认广播传输并始终返回0x00的状态。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x8B |
帧ID | 4 | 始终设为0 |
16位目标网络地址 | 5 6 | 传送数据包的16位网络地址(如果成功)。如果不成功,则该地址为0xFFFD(目标地址未知) |
传输重试次数 | 7 | 发生的应用程序传输重试次数 |
邮寄状态 | 8 | 0x00 =成功 0x01 = MAC ACK失败 0x02 = CCA失败 0x15 =目标端点无效 0x21 =网络ACK失败 0x22 =未加入网络 0x23 =回邮(Self-addressed,自己发消息传给自己) 0x24 =未找到地址 0x25 =找不到路由 0x26 =广播源无法听到邻居中继该消息 0x2B =无效的绑定表索引 0x2C =资源错误缺少可用缓冲区,定时器等。 0x2D =使用APS传输尝试广播 0x2E =尝试使用APS传输进行单播,但EE = 0 0x32 =资源错误缺少可用缓冲区,定时器等。 0x74 =数据有效负载太大 0x75 =未请求间接消息 |
发现状态 | 9 | 0x00 =没有发现开销 0x01 =地址发现 0x02 =路由发现 0x03 =地址和路由 0x40 =扩展超时发现 |
例
在以下示例中,目标设备使用16位地址0x7D84报告单播数据传输成功。传输可能已经发送,16位地址设置为0x7D84或0xFFFE。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x07 |
帧类型 | 3 | 0x8B |
帧ID | 4 | 0x01 |
16位目标网络地址 | MSB 5 LSB 6 | 0x7D 0x84 |
传输重试次数 | 7 | 0x00 |
邮寄状态 | 8 | 0x00 |
发现状态 | 9 | 0×01 |
校验 | 10 | 0x71 |
接收数据包帧 - 0x90
描述
当配置有标准API Rx指示符(AO = 0)的设备收到RF数据包时,它会使用此消息类型将其发送出串行接口。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x90 |
64位源地址 | 4-11 | 发件人的64位地址。先高位(MSB)后低位(LSB) |
16位源网络地址 | MSB 12 LSB 13 | 发件人的16位地址。 |
接收选项 | 14 | 0x01 - 数据包已确认 0x02 - 数据包是广播数据包 0x20 - 使用APS加密加密的数据包 注意可以组合选项值。例如,0x20和0x01显示为0x21。其他可能的值:x00,0x21,0x22,0x60,0x61,0x62。 |
收到的数据 | 15-N | 设备接收的RF数据。 |
例
在以下示例中,具有64位地址0x0013A200 40522BAA的设备将单播数据传输发送到具有有效负载RxData的远程设备。如果接收设备上的AO = 0,则将以下帧发送到其串行接口。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x12 |
帧类型 | 3 | 0x90 |
64位源地址 | MSB 4 5 6 7 8 9 10 LSB 11 | 0x00 0×13 0xA2 0x00 0x40 0×52 0x2B 0xAA |
16位源网络地址 | MSB 12 LSB 13 | 0x7D 0x84 |
接收选项 | 14 | 0x01 - 数据包已确认 |
收到的数据 | 15 16 17 18 19 20 | 0×52 0x78 0×44 0x61 0x74 0x61 |
校验 | 21 | 0x0D |
显式Rx指示符帧 - 0x91
描述
当配置有显式API Rx指示符(AO = 1)的设备收到RF数据包时,它会使用此消息类型将其发送出串行接口。
注意:
如果发送请求帧 - 0x10发送到AO=1的设备,则接收设备接收具有源端点(SE),目标端点(DE)和群集ID(CI)值的0x91帧,而不是在透传模式下在发送设备上设置的值。
必须使用群集ID和端点来标识发生的交易类型。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x91 |
64位源地址 | 4-11 | 发件人的64位地址。先高位(MSB)后低位(LSB),如果发送方的64位地址未知,则设置为0xFFFFFFFFFFFFFFFF(未知的64位地址)。 |
16位源网络地址 | MSB 12 LSB 13 | 发件人的16位地址。 |
源端点 | 15 | 启动传输的源端点。如果用 发送请求帧 - 0x10 的方式从源发送数据时,则显示默认值。如果用 显式寻址命令帧 - 0x11 的方式从源发送数据,或者如果使用非默认值,则显示非默认值,否则保留默认值。 |
目标端点 | 16 | 消息发送到的目标的端点。如果用 发送请求帧 - 0x10 的方式从源发送数据时,则显示默认值。如果用 显式寻址命令帧 - 0x11 的方式从源发送数据,或者如果使用非默认值,则显示非默认值,否则保留默认值。 |
群集ID | 17-18 | 帧所指向的群集ID。如果用 发送请求帧 - 0x10 的方式从源发送数据时,则显示默认值。如果用 显式寻址命令帧 - 0x11 的方式从源发送数据,或者如果使用非默认值,则显示非默认值,否则保留默认值。 |
配置文件ID | 19-20 | 帧所指向的配置文件ID。 |
接收选项 | 20 | 0x01 - 数据包已确认 0x02 - 数据包是广播数据包 0x20 - 使用APS加密的数据包 |
收到的数据 | 21-N | 收到的RF数据 |
例
在以下示例中,具有64位地址0x0013A200 40522BAA的设备将广播数据传输(具有有效负载RxData)发送到的远程设备。
如果设备发送传输:
- 源端点和目标端点为0xE0
- 群集ID = 0x2211
- 配置文件ID = 0xC105
如果接收设备上的AO = 1,它会从其串行接口发送以下帧。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x18 |
帧类型 | 3 | 0x91 |
64位目标地址 | MSB 4 5 6 7 8 9 10 LSB 11 | 0x00 0×13 0xA2 0x00 0x40 0×52 0x2B 0xAA |
16位目标网络地址 | MSB 12 LSB 13 | 0x7D 0x84 |
源端点 | 14 | 0xE0 |
目标端点 | 15 | 0xE0 |
群集ID | 16 17 | 0x22 0x11 |
配置文件ID | 18 19 | 0xC1 0x05 |
接收选项 | 20 | 0x02 - 数据包是广播数据包 |
收到的数据 | 21 22 23 24 25 26 | 0×52 0x78 0×44 0x61 0x74 0x61 |
校验 | 27 | 0x52 |
数据采样Rx指示帧 - 0x92
描述
当设备从远程设备接收I / O样本帧时,它使用此帧类型将样本发送出串行端口(当AO = 0时)。只有在API模式下运行的设备才会将I / O样本发送出串口。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x92 |
64位源地址 | 4-11 | 发件人的64位地址。先高位(MSB)后低位(LSB) |
16位源网络地址 | MSB 12 LSB 13 | 发件人的16位地址。先高位(MSB)后低位(LSB) |
接收选项 | 14 | 位字段: 0x01 =数据包已确认 0x02 =数据包是广播数据包 忽略所有其他位 |
样本数量 | 15 | 有效负载中包含的样本集数量。 始终设为1。 |
数字信道掩码 | 16-17 | 位掩码字段,指示远程控制器上的哪些数字I / O线启用了采样(如果有)。 bit 0 = DIO0 位1 = DIO1 第2位= DIO2 第3位= DIO3 第4位= DIO4 第5位= DIO5 第6位= DIO6 第7位= DIO7 第8位= DIO8 第9位= DIO9 第10位= DIO10 第11位= DIO11 第12位= DIO12 bit 13 = DIO13 第14位= DIO14 bit 15 = N / A. 例如,0x002F的数字信道掩码意味着DIO 0,1,2,3和5被启用为数字I / O. |
模拟信道掩码 | 18 | 位掩码字段,指示远程控制器上的哪些模拟I / O线启用了采样(如果有)。 bit 0 = AD0 / DIO0 bit 1 = AD1 / DIO1 bit 2 = AD2 / DIO2 bit 3 = AD3 / DIO3 bit 7 =电源电压(使用V +命令启用) |
数字样本(如果包含) | 19-20 | 如果样本集包含任何数字I / O线(数字信道掩码> 0),则这两个字节包含所有已启用数字I / O线的样本。未启用采样的DIO线返回0.这两个字节中的位映射与数字信道掩码字段中的位相同。 |
模拟样本 | 21-22 | 如果样本集包含任何模拟I / O线(模拟信道掩码> 0),则每个使能的模拟输入都会返回一个2字节值,表示该输入的A / D测量值。模拟样本按顺序从ADO / DIO0到AD3 / DIO3进行排序。 |
例
在以下示例中,设备从具有64位序列号0x0013A20040522BAA和16位地址0x7D84的移除设备接收带有模拟和数字I / O的I / O示例。
如果将引脚AD1 / DIO1用作模拟输入,则将AD2 / DIO2和DIO4用作数字输入(当前为高电平),并将AD3 / DIO3用作数字输出(低电平),I / O采样将显示在API示例中下表。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x14 |
帧类型 | 3 | 0x92 |
64位目标地址 | MSB 4 5 6 7 8 9 10 LSB 11 | 0x00 0×13 0xA2 0x00 0x40 0×52 0x2B 0xAA |
16位目标网络地址 | MSB 12 LSB 13 | 0x7D 0x84 |
接收选项 | 14 | 0x01 =数据包已确认 |
样本数量 | 15 | 0x01 |
数字信道掩码 | 16 17 | 0x01 0x00 |
模拟信道掩码 | 18 | 0x02 |
数字样本 | 19 20 | 0x00 0x14 |
模拟样本 | 21 22 | 0x02 0x25 |
校验 | 23 | 0xF5 |
XBee传感器读取指示器 - 0x94
描述
当设备接收传感器样本(来自Digi 1线传感器适配器)时,使用此消息类型(当AO = 0时)将其发送出串行端口。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x94 |
64位源地址 | 4-11 | 发件人的64位地址。先高位(MSB)后低位(LSB) |
16位源网络地址 | MSB 12 LSB 13 | 发件人的16位地址。先高位(MSB)后低位(LSB) |
接收选项 | 14 | 位字段: 0x01 =数据包已确认 0x02 =数据包是广播数据包 |
1线传感器 | 15 | 0x01 = A / D传感器读取 0x02 =温度传感器读数 0x60 =存在水(模块CD引脚低电平) |
A/D值 | 16 17 18 19 20 21 22 23 | 表示四个A / D传感器(A,B,C,D)中每个传感器的两个字节值。 如果未找到A / D,则设置为0xFFFFFFFFFFFFFFFF。 |
温度读取 | 24 25 | 表示从数字温度计读取的双字节值(如果存在)。如果未找到,则设置为0xFFFF |
例
假设设备从64位地址0x0013A200 40522BAA和16位地址0xDD6C的设备接收1线传感器样本。如果传感器样本来自1线湿度传感器,则API帧可能如下所示(如果AO = 0):
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x17 |
帧类型 | 3 | 0x94 |
64位源地址 | MSB 4 5 6 7 8 9 10 LSB 11 | 0x00 0×13 0xA2 0x00 0x40 0×52 0x2B 0xAA |
16位源网络地址 | MSB 12 LSB 13 | 0xDD 0x6C |
接收选项 | 14 | 0x01 =数据包已确认 |
1线传感器 | 15 | 0x03(0x01 |
A/D值 | 16 17 18 19 20 21 22 23 | 0x00 0×02 0x00 0xCE 0x00 0xEA 0x00 0×52 |
温度读取 | 24 25 | 0x01 0x6A |
校验 | 26 | 0x8B |
为方便起见,我们将A / D和温度读数标记为AD0,AD1,AD2,AD3和T. 使用此示例中的数据:
AD0 = 0x0002
AD1 = 0x00CE
AD2 = 0x00EA
AD3 = 0x0052
T = 0x016A
要将这些值转换为温度和湿度值,应使用以下等式。
温度(°C)=(T / 16),T <2048
= - (T&0x7FF)/ 16,T> = 2048
Vsupply =(AD2 * 5.1)/ 255
Voutput =(AD3 * 5.1)/ 255
相对湿度=((Voutput / Vsupply) - 0.16)/(0.0062)
真湿度=相对湿度/(1.0546 - (0.00216 *温度(°C)))查看样本数据,我们得到:
Vsupply =(234 * 5.1 / 255)= 4.68
Voutput =(82 * 5.1 / 255)= 1.64温度=(362/16)= 22.625°C
相对H =(161.2903 ((1.64 / 4.68) - 0.16))= 161.2903 (0.19043)= 30.71%
真H =(30.71 /(1.0546 - (0.00216 * 22.625)))=(30.71 / 1.00573)= 30.54%
节点识别指示帧 - 0x95
描述
设备在以下情况下接收此帧:
- 它发送节点识别消息以识别自身
- AO = 0
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x95 |
64位源地址 | 4-11 | 发件人的64位地址。先高位(MSB)后低位(LSB) |
16位源网络地址 | MSB 12 LSB 13 | 发件人的16位地址。先高位(MSB)后低位(LSB) |
接收选项 | 14 | 位字段: 0x01 =数据包已确认 0x02 =数据包是广播数据包 |
远程设备16位地址 | 15-16 | 设置为远程设备的16位网络地址。如果未知则设置为0xFFFE。 |
远程设备64位地址 | 17-24 | 表示发送节点标识指示帧的远程设备的64位地址。 |
NI字符串 | 25-26 | 远程设备上的节点标识符字符串。NI字符串以NULL字节(0x00)终止。 |
父16位地址 | 27-28 | 父节点16位地址 |
设备类型 | 29 | 0 =协调器 1 =路由器 2 =终端设备 |
来源事件 | 30 | 1 =通过节点标识按钮事件发送的帧(参见D0(AD0 / DIO0配置)) 2 =加入事件后发送的帧(参见JN(加入通知))。 3 =发生电源循环事件后发送的帧(参见JN(加入通知))。 |
Diji配置文件ID | 31-32 | 设置为Digi的应用程序配置文件ID。 |
Diji制造商 | 33-34 | 设置为Diji的制造商ID |
例
如果按下具有64位地址0x0013A200407402AC的远程设备上的调试按钮,并且默认NI字符串发送节点标识,则网络上的所有设备都会收到以下节点标识指示符:
具有64位地址0x0013A200407402AC且默认NI字符串的远程设备,按下其调试按钮,发送节点标识,网络上的所有设备都会收到以下节点标识指示符:
如果按下具有64位地址0x0013A200 40522BAA,16位地址0x7D84和默认NI字符串的远程路由器设备上的调试按钮,网络上的设备将接收节点标识指示符:
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x20 |
帧类型 | 3 | 0x95 |
64位源地址 | MSB 4 5 6 7 8 9 10 LSB 11 | 0x00 0×13 0xA2 0x00 0x40 0×52 0x2B 0xAA |
16位源网络地址 | MSB 12 LSB 13 | 0x7D 0x84 |
接收选项 | 14 | 0x02 =数据包是广播数据包 |
远程设备16位地址 | 15 16 | 0x7D 0x84 |
远程设备64位地址 | 17 18 19 20 21 22 23 24 | 0x00 0×13 0xA2 0x00 0x40 0×52 0x2B 0xAA |
NI字符串 | 25 26 | 0x20 0x00 |
父16位地址 | 27 28 | 0xFF 0xFE |
设备类型 | 29 | 0x01 |
来源事件 | 30 | 0x01 =通过节点标识按钮事件发送的帧(参见D0(AD0 / DIO0配置)) |
Diji配置文件ID | 31 32 | 0xC1 0x05 |
Diji制造商 | 33 34 | 0x1E 0x1B |
远程命令响应帧 - 0x97
描述
如果设备响应远程命令请求(0x17)帧而接收到该帧,则设备从串行接口发送AT命令响应(0x97)帧。
某些命令(例如ND命令)可能会发送回多个帧。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x97 |
帧ID | 4 | 这与传递给请求的值相同。 |
64位源(远程)地址 | 5-12 | 返回此响应的远程设备的地址。 |
16位源(远程)地址 | MSB 13 LSB 14 | 设置为返回此响应的远程设备的16位网络地址。 如果未知则设置为0xFFFE。 |
AT命令 | 15-16 | 命令名:两个用于标识命令的ASCII字符。 |
命令状态 | 17 | 0 =好的 1 =错误 2 =无效命令 3 =无效参数 4 =远程命令传输失败 |
命令参数 | 18-n | 二进制格式的寄存器数据。如果设置了寄存器,则设备不会返回此字段。 |
例
如果设备向具有64位地址0x0013A200 40522BAA的远程设备发送远程命令以查询SL命令,并且如果帧ID = 0x55,则响应将类似于以下示例。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x13 |
帧类型 | 3 | 0x97 |
帧ID | 4 | 0x55 |
64位源(远程)地址 | MSB 5 6 7 8 9 10 11 LSB 12 | 0x00 0×13 0xA2 0x00 0x40 0×52 0x2B 0xAA |
16位源(远程)地址 | MSB 13 LSB 14 | 0x7D 0x84 |
AT命令 | 15 16 | 0x53 0x4C |
命令状态 | 17 | 0x00 |
命令参数 | 18 19 20 21 | 0x40 0×52 0x2B 0xAA |
校验 | 22 | 0xF4 |
扩展调制解调器状态帧 - 0x98
描述
如果启用“详细加入”选项 (DC10),设备串行发送跟踪消息,以描述在关联期间设备内部发生的情况。
警告!
此选项用于诊断目的。使用4x5A / 7x5A或更高版本时,当设备在命令模式下运行时,将禁用详细加入消息。在该修订之前,详细加入消息中穿插着串行通信。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 抵消 | 描述 |
---|---|---|
帧类型 | 3 | 0x98 |
状态代码 | 4 | 有关状态代码说明,请参阅下表。 |
状态数据 | 5 | 该字段的长度因状态代码而异。 |
例
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x03 |
校验 | 3 | 0x5C |
状态代码说明
下表按状态码顺序描述了各种详细加入(Verbose Join)跟踪消息。”透传模式字符串“列显示了在命令模式下运行Verbose Join时显示的字符串。“描述”列提供了每个特定消息的更详细说明。当状态数据附带消息时,“状态数据”列将显示如何将十六进制字符串解析为字段。每个字段的字节数出现在括号“()”中。
状态代码 | 透明模式字符串 | 描述 | 状态数据 | 描述 |
---|---|---|---|---|
0x00 | 重新加入 | 正在开始加入尝试 | rejoinState(1) | rejoinState是连接尝试的计数 |
0x01 | 堆栈状态 | 显示状态和声明 | EmberStatus(1)——————————— emberNetworkState(1) | 0x00 - 没有网络 0x01 - 正在加入 0x02 - 已加入 0x03 - 已加入(没有父母) 0x04 - 离开 —————————————————————————————- 0x90 - 网络已启动并准备接收/发送。 0x91 - 网络已关闭且无法接收/传输。 0x94 - 加入尝试失败。 0x96 - 移动失败后,节点尝试重新建立与网络的联系。 0x98 - 由于Zigbee 2006与Zigbee PRO 2007不兼容而导致路由器失败。尝试加入作为终端设备。 0x99 - 网络ID已更改。 0x9A - PAN ID已更改。 0x9B - 信道已更改。 0xAB - 响应信标请求未收到信标。 |
0x02 | 正在加入 | 正在进行连接请求 | radioChannel(1) ——————————— radioTxPower(1) ——————————— panid(2) ——————————— extendedPanId(8) | 信道号范围从11到26(0x0B到0x1A)。 ——————————— 发送功率的低电平有符号字节值,值范围从0xC9到0x05(含)。 ——————————— 16位4med’网络,或路由器/终端设备加入的网络。 —————————————————————————————- 网络的64位PAN标识符。 |
0x03 | 已加入 | 已加入(协调器 - “已构建”) | ||
0x04 | 信标响应 | 从相邻节点接收的响应于信标请求的数据 | ZS [stackProfile](1) ——————————— extendedPanId(8) ——————————— allowingJoin(1) ——————————— radioChannel(1) ——————————— panid(2) ——————————— RSSI(1) ——————————— lqi | 见ZS(Zigbee Stack Profile)。 —————————————————————————————- 网络的64位PAN标识符 —————————————————————————————- 0x00 - 不允许加入其网络 0x01 - 允许加入其网络 —————————————————————————————- 信道号范围从11到26(0x0B到0x1A) —————————————————————————————- 用于网络的16位PAN标识符 —————————————————————————————- 以dBm为单位测量的最大相对信号强度指标值 ———————————————————— 链接质量指标 |
0×05 | 拒绝ZS | 不是连接候选者,因为ZS与信标响应中给出的不匹配。 | ||
0×06 | 拒绝ID | 不是连接候选者,因为配置的pan ID与信标响应中给出的不匹配。 | ||
0×07 | 拒绝NJ | 不是连接候选者,因为它不允许连接。 | ||
0x08 | panID匹配 | 带搜索选项(DO80)的JV / NW找到了匹配的网络。 | panid(2) | 用于网络的16位PAN标识符 |
0×09 | 拒绝LQIRSSI | 具有搜索选项(DO80)候选者的JV / NW被拒绝,因为该信标响应弱于先前的信标响应。 | ||
0x0A | 信标保存 | 该信标响应是连接请求的合适候选者 | radioChannel(1) ——————————— radioTxPower(1) ——————————— panid(2) ——————————— extendedPanId(8) | 信道号范围从11到26(0x0B到0x1A)。 ——————————— 发送功率的低电平有符号字节值,值范围从0xC9到0x05(含)。 ——————————— 16位4med’网络,或路由器/终端设备加入的网络。 —————————————————————————————- 网络的64位PAN标识符。 |
0x0B | AI | AI值已经改变 | AIStatusCode(1) | 请参阅AI命令的说明 |
0x0C | 允许加入 | NJ设置(允许加入持续时间)已更改 | value(1) | 请参阅NJ(节点加入时间)命令的说明。 |
0x0D | 扫描 | 主动扫描已经开始。 | ChannelMask(4) | 由SC设置驱动的32位值,其中位位置11到26显示为即将进行的主动扫描启用哪些信道。请参阅SC(扫描信道)的说明。 |
0x0E | 扫描错误 | 主动扫描期间发生错误。 | StatusCode(1) | |
0x0F | 加入请求 | 对表单/联接的高级请求。 | ||
0x10 | 拒绝LQI | 因为LQI比已经保存的信标更糟糕而拒绝 | lqi(1) | 链接质量指标 |
0x11 | 拒绝RSSI | 因为RSSI比已经保存的信标更糟糕而被拒绝 | RSSI(1) | 相对信号强度指标 |
0×12 | 拒绝(cmdL ast) | 因为它与最后关联的网络匹配而被拒绝。 | ||
0×13 | 拒绝(cmdS ave) | 因为它与已保存的信标响应匹配而被拒绝。 | ||
0×14 | 拒绝强度 | 在第一/最佳阶段期间,响应弱于已经保存的信标响应。 | ||
0x16 | 重置DC80 | 启用DC80后,如果在60秒内未收到可加入的信标响应,则重置。 | ||
0x18 | 扫描信道 | 正在信道上扫描 | radioChannel(1) | 信道号范围从11到26(0x0B到0x1A) |
0x19 | 扫描模式 | 显示有序关联的阶段。 | mode(1) | 0:first / best candidate 1:按extpanid排序关联,然后按渠道排序 |
0x1A | 扫描初始化 | 开始扫描 | channel(1) ——————————— TxPower(1) | 正在扫描的信道 —————————————————————————————- 低电平无线电发射功率设置 |
0x1D | 能量扫描 - 信道掩模 | 开始能量扫描 | SC掩码(4) | 扫描信道掩码 |
0x1E | 能量扫描 - 能量 | 信道能量观察到了 | 能量(16) | SC中每个信道的能量水平 |
0x1F | PanIdScan - 无线电信道 | Pan Id Scan在信道上开始 | 信道(1) | 广播信道 |
0x20 | FormNetwork - 参数 | 正在启动一个网络 | radioChannel(1) ——————————— radioTxPower(1) ——————————— panid(2) ——————————— extendedPanId(8) | 信道号范围从11到26(0x0B到0x1A)。 ——————————— 发送功率的低电平有符号字节值,值范围从0xC9到0x05(含)。 ——————————— 16位4med’网络,或路由器/终端设备加入的网络。 —————————————————————————————- 网络的64位PAN标识符。 |
0x21 | 发现KE端点 | 寻找关键建立端点 | ||
0x22 | KE端点 | 找到关键设施终点 | 端点(1) | 端点号 |
以下示例显示了在AT命令模式下启用Verbose Join的成功连接过程。
注意
注释包含在跟踪消息中以解释内容,并以省略号“…”开头。
+++OK
atid3151 OK
...配置的pan标识符已在atdc10中更改
OK
...详细联接启用atac
OK
...对配置应用更改V AI - 搜索父级:FF
...搜索已经开始
V AI - Searching for Parent:FF
......然后重新开始
V Scanning:03FFF800
...信道11到25由Active Search的SC设置启用。
V Beacon Rsp:0000000000000042A6010B949AC8FF
... ZS(0),extendedPanId(00000000000042A6),允许加入(1),无线电信道(0x0B),panid(949A),rssi(C8),lqi(FF)
V Reject ID
...信标响应的extendedPanId与此广播的ID设置3151不匹配
V Beacon Rsp:0200000000000002AB010C55D2B2DB
... ZS(2),extendedPanId(00000000000002AB),允许加入(1),无线电信道(0x0C),panid(55D2),rssi(B2),lqi(DB)
V Reject ZS
...信标响应的ZS与此无线电的ZS设置0x00不匹配
V Beacon Rsp:000000000000003151010EE29FDFFF
V Beacon Saved:0E05E29F0000000000003151
...这个信标响应可以作为连接候选者
V Joining:0E05E29F0000000000003151
...发送连接请求
V Stack Status: joined, network up 0290
...我们已加入,网络正常,我们可以发送和传输
V Joined:
V AI - Association Succeeded:00
无线固件更新状态 - 0xA0
描述
无线固件更新状态(Over-the-Air Firmware Update Status)帧提供固件更新传输尝试状态的指示。通过具有64位地址0x0013A200403E0750和16位地址0x0000的更新器,将查询命令(0x01 0x51)发送到具有64位地址0x0013A200 40522BAA的目标,生成以下预期响应。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0xA0 |
64位源(远程)地址 | 4-11 | 返回此响应的远程设备的地址。 |
16位目标地址 | MSB 12 LSB 13 | 更新器设备的16位地址。 |
接收选项 | 14 | 0x01 - 数据包已确认。 0x02 - 数据包是广播。 |
Bootloader消息类型 | 15 | 0x06 - 确认 0x15 - NACK 0x40 - 没有Mac ACK 0x51 - 查询(如果目标上的引导加载程序未激活则接收) 0x52 - 查询响应 |
块编号 | 16 | 更新请求中使用的块编号。如果不适用,设置为0。 |
64位目标地址 | 17-N | 正在更新的远程设备的64位地址(目标)。 |
例
如果查询请求返回0x15(NACK)状态,则目标可能正在等待固件更新映像。如果在大约75秒内没有向其发送消息,则目标将超时并接受新的查询消息。
如果查询返回0x51(QUERY)状态,则目标的引导加载程序不活动,并且不会响应查询消息。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x16 |
帧类型 | 3 | 0xA0 |
64位源(远程)地址 | 4 5 6 7 8 9 10 11 | 0x00 0×13 0xA2 0x00 0x40 0x3E 0×07 0x50 |
16位目标地址 | MSB 12 LSB 13 | 0x00 0x00 |
接收选项 | 14 | 0x01 - 数据包已确认 |
Bootloader消息类型 | 15 | 0x52 - 查询响应 |
块编号 | 16 | 0x00 - 如果不适用,设置为0。 |
64位目标地址 | 17 18 19 20 21 22 23 24 | 0x00 0×13 0xA2 0x00 0x40 0×52 0x2B 0xAA |
校验 | 25 | 0x66 |
路由记录指示器 - 0xA1
描述
只要设备发送Zigbee路由记录命令,就会收到路由记录指示符。设备使用路由记录指示符和多对一路由为网络中的设备创建源路由。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0xA1 |
64位源(远程)地址 | 4-11 | 启动路由记录的设备的64位地址。先高位(MSB)后低位(LSB)。 |
16位源(更新器)地址 | MSB 12 LSB 13 | 启动路由记录的设备的16位地址。 |
接收选项 | 14 | 0x01 - 数据包已确认。 0x02 - 数据包是广播。 |
地址数量 | 15 | 源路由中的地址数(源和目标除外)。 |
地址1 | 16 17 | 目标的邻居 |
地址2(更靠近源) | 18 19 | 中间跃点的地址 |
… | ||
地址n | 源的邻居 |
例
假设设备E发送路由记录,该路由记录遍历到数据收集器设备A的多个跃点,如以下示例所示。
ABCDE
如果设备E具有0x0013A200 40401122和0x3344的64位和16位地址,并且设备B,C和D具有以下16位地址:
B = 0xAABB C = 0xCCDD D = 0xEEFF
数据收集器将上述API帧发送出其串行端口。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x13 |
帧类型 | 3 | 0xA1 |
64位源(远程)地址 | MSB 4 5 6 7 8 9 10 11 | 0x00 0×13 0xA2 0x00 0x40 0×40 0x11 0x22 |
16位源(更新器)地址 | MSB 12 LSB 13 | 0x33 0x44 |
接收选项 | 14 | 0x01 - 数据包已确认 |
地址数量 | 15 | 0x03 |
地址1 | 16 17 | 0xEE 0xFF |
地址2(更靠近源) | 18 19 | 0xCC 0xDD |
地址3 | 20 21 | 0xAA 0xBB |
校验 | 22 | 0x80 |
多对一路由请求指示符 - 0xA3
描述
当收到多对一路由请求时,多对一路由请求指示帧从串行端口发出。
格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0xA3 |
64位源(远程)地址 | 4-11 | 发送多对一路由请求的设备的64位地址。先高位(MSB)后低位(LSB)。 |
16位源地址 | MSB 12 LSB 13 | 发起多对一路由请求的设备的16位地址。 |
保留 | 14 | 设为0 |
例
假设具有64位地址0x0013A200 40401122和16位地址0x0000的设备发送多对一路由请求。所有运行API模式并接收多对一广播的远程路由器都会从其串行端口发送以下示例API帧。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x13 |
帧类型 | 3 | 0xA1 |
64位源(远程)地址 | MSB 4 5 6 7 8 9 10 11 | 0x00 0×13 0xA2 0x00 0x40 0×40 0x11 0x22 |
16位源址 | MSB 12 LSB 13 | 0x00 0x00 |
校验 | 14 | 0xF4 |
使用API发送ZDO命令
Zigbee规范将Zigbee设备对象(ZDO)定义为Zigbee设备配置文件的一部分。这些对象提供管理和映射Zigbee网络以及在Zigbee设备上发现服务的功能。在开发Zigbee产品时,通常需要ZDO,该产品可在公共配置文件(如家庭自动化或智能能源)中进行互操作,或者与其他供应商的Zigbee设备进行通信时。用户还可以使用ZDO执行多种管理功能,例如频率捷变(能量检测和信道更改 - 管理网络更新请求),发现路由(管理路由请求)和邻居(管理LQI请求)以及管理设备连接(管理离开和许可加入请求)。
下表显示了一些具有各自群集标识符的具代表性的ZDO。每个ZDO命令都有一个定义的有效负载。有关详细信息,请参阅Zigbee规范的Zigbee设备配置文件部分。
ZDO命令 | 群集ID |
---|---|
网络地址请求 | 0x0000 |
IEEE地址请求 | 0x0001 |
节点描述符请求 | 0x0002 |
简单描述符请求 | 0x0004 |
活动端点请求 | 0x0005 |
匹配描述符请求 | 0x0006 |
管理LQI请求 | 0x0031 |
管理路由请求 | 0x0032 |
管理请假 | 0x0034 |
管理许可加入申请 | 0x0036 |
管理网络更新请求 | 0x0038 |
使用显式寻址命令帧 - 0x11将ZDO命令发送到网络中的设备。使用Explicit Transmit API帧发送ZDO命令需要对数据有效负载字段进行一些格式化。
使用API发送ZDO命令时,ZDO命令(API有效负载)中的所有多字节值(例如,u16,u32和64位地址)必须以小端字节顺序发送,才能正确执行命令在远程设备上。
要使API XBee接收ZDO响应,请将AO命令设置为1以启用显式接收API帧。
下表显示了如何使用显式传输帧发送“Active Endpoints”请求以发现具有16位地址0x1234的设备上的活动端点。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x11 |
帧ID | 4 | 标识数据帧以便主机的与后续传输状态相关联。如果设置为0,则设备不会从串行端口发送响应。 |
64位目标地址 | 5-12 | 先高位(MSB)后低位(LSB)。目标设备的64位地址(大端字节顺序)。对于单播传输,设置为目标设备的64位地址,或设置为0x0000000000000000以向协调器发送单播。广播设置为0x000000000000FFFF。 |
16位目标网络地址 | 13 - 14 | 先高位(MSB)后低位(LSB)。目标设备的16位地址(大端字节顺序)。设置为0xFFFE进行广播,或者如果16位地址未知。 |
源端点 | 15 | 对于ZDO传输,设置为0x00(端点0是ZDO端点)。 |
目标端点 | 16 | 对于ZDO传输,设置为0x00(端点0是ZDO端点)。 |
群集ID | 17-18 | 设置为与要发送的ZDO命令对应的群集ID。0x0005 =活动端点请求 |
配置文件ID | 19-20 | 对于ZDO传输,设置为0x0000(配置文件ID 0x0000是支持ZDO的Zigbee设备配置文件)。 |
广播半径 | 21 | 设置广播传输可以遍历的最大跃点数。如果设置为0,则设备将传输半径设置为网络最大跳数值。 |
传输选项 | 22 | 所有位必须设置为0。 |
有效负载数据 | 23-25 | ZDO命令所需的有效负载。所有多字节ZDO参数值(u16,u32,64位地址)必须以小端字节顺序发送。活动端点请求包括以下有效负载:[16位NwkAddrOfInterest]注意: API示例(0x1234)中的16位地址以小端字节顺序(0x3412)发送。 |
例
以下示例显示如何使用显式传输帧发送“Active Endpoints”请求以发现16位地址为0x1234的设备上的活动端点。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x17 |
帧类型 | 3 | 0x11 |
帧ID | 4 | 0x01 |
64位目标地址 | MSB 5 6 7 8 9 10 11 LSB 12 | 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xFF |
16位目标网络地址 | MSB 13 LSB 14 | 0xFF 0xFE |
源端点 | 15 | 0x00 |
目标端点 | 16 | 0x00 |
群集ID | 17 18 | 0x00 0x05 |
配置文件ID | 19 20 | 0x00 0x00 |
广播半径 | 21 | 0x00 |
选项 | 22 | 0x00 |
有效负载数据 - 交易序列号 | 23 | 0x01 |
有效负载数据 - ZDO有效负载 | 24 25 | 0x34 0x12 |
校验 | 29 | 0xA6 |
使用API发送Zigbee群集库(ZCL)命令
Zigbee群集库定义了一组可在多个Zigbee配置文件中支持的属性和命令(群集)。在开发Zigbee产品时,通常需要ZCL命令,该产品将在公共配置文件(如家庭自动化或智能能源)中进行互操作,或者与其他供应商的Zigbee设备进行通信时。不是为公共配置文件或互操作性应用程序设计的应用程序可以跳过本节。
下表显示了一些具有各自属性和命令代表性的群集。
群集(群集ID) | 属性(属性ID) | 群集ID |
---|---|---|
基本(0x0000) | 应用版本(0x0001) 硬件版本(0x0003) 型号标识符(0x0005) | 重置为默认值(0x00) |
识别(0x0003) | 识别时间(0x0000) | 识别(0x00) 识别查询(0x01) |
时间(0x000A) | 时间(0x0000) 时间状态(0x0001) 时区(0x0002) | |
温控器(0x0201) | 本地温度(0x0000) 占用率(0x0002) | 设定点升/降(0x00) |
ZCL定义了许多可在任何配置文件上支持的配置文件范围的命令,也称为通用命令。这些命令包括以下内容。
命令(命令ID) | 描述 |
---|---|
读属性(0x00) | 用于读取远程设备上的一个或多个属性。 |
读取属性响应(0x01) | 生成以响应读取属性命令。 |
写属性(0x02) | 用于更改远程设备上的一个或多个属性。 |
写属性响应(0x04) | 响应write属性命令发送。 |
配置报告(0x06) | 用于配置设备以自动报告其一个或多个属性的值。 |
报告属性(0x0A) | 用于在满足报表条件时报告属性。 |
发现属性(0x0C) | 用于发现远程设备上的属性标识符。 |
发现属性响应(0x0D) | 响应discover attributes命令发送。 |
使用显式寻址命令帧 - 0x11将ZCL命令发送到网络中的设备。使用Explicit Transmit API帧发送ZCL命令需要对数据有效负载字段进行一些格式化。
当使用API发送ZCL命令时,必须以小端字节顺序发送ZCL命令(API Payload)中的所有多字节值(例如,u16,u32,64位地址),以便正确执行命令远程设备。
注意:
发送ZCL命令时,将AO命令设置为1以启用显式接收API帧。这提供了每个接收到的数据包的源64位和16位地址,群集ID,配置文件ID和端点信息的指示。需要此信息才能正确解码接收的数据。
下表显示了如何使用显式传输帧从具有64位地址0x0013A200 40401234(未知的16位地址)的设备读取硬件版本属性。此示例使用任意源和目标端点。硬件版本属性(属性ID 0x0003)是基本群集(群集ID 0x0000)的一部分。读属性通用命令ID为0x00。
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x11 |
帧ID | 4 | 标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。 |
64位目标地址 | 5-12 | 目标设备的64位地址。先高位(MSB)后低位(LSB)。 (默认)协调器= 0x0000000000000000 广播= 0x000000000000FFFF |
16位目标网络地址 | MSB 13 LSB 14 | 目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。 |
源端点 | 15 | 设置为发送设备上的源端点(任意选择0x41)。 |
目标端点 | 16 | 设置为远程设备上的目标端点(任意选择0x42)。 |
群集ID | 17-18 | 设置为与要发送的ZCL命令对应的集群ID。0x0000 =基本群集。 |
配置文件ID | 19-20 | 设置为设备支持的配置文件ID(任意选择0xD123)。 |
广播半径 | 21 | 设置广播传输可以发生的最大跳数。如果设置为0,则广播半径设置为最大跃点值。 |
选项 | 22 | 所有位必须设置为0。 |
负载数据 - ZCL帧头 | 23 —- 24 —- 25 | 帧控制。Bitfield,用于定义ZCL命令中的命令类型和其他相关信息。有关更多信息,请参阅ZCL规范。 ———————————————————————————————————– 交易序列号。用于将ZCL命令与ZCL响应相关联的序列号。(硬件版本响应将此字节作为响应中的序列号包括在内。)任意选择值0x01。 —————————————————————————————- 命令ID。由于帧控制“帧类型”位是00,因此该字节指定一般命令。命令ID 0x00是读取属性命令。 |
负载数据 - ZCL有效负载 | 26 | “读取属性”命令的有效负载是正在读取的属性标识符列表。注意 16位属性ID(0x0003)以小端字节顺序(0x0300)发送。必须以小端字节顺序发送所有多字节ZCL报头和有效负载值。 |
27 | 0xFF减去从偏移3到该字节的8位字节总和。 |
例
在此示例中,帧控制字段(偏移23)构造如下:
Name | 位 | 示例值描述 |
---|---|---|
帧类型 | 0-1 | 00 - 命令在整个配置文件中起作用。 |
制造商特定 | 2 | 0 - ZCL帧头中省略了制造商代码字段。 |
方向 | 3 | 0 - 命令从客户端发送到服务器端。 |
禁用默认响应 | 4 | 0 - 未禁用默认响应。 |
保留的 | 5-7 | 设为0。 |
有关更多信息,请参阅Zigbee Cluster Library规范。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x19 |
帧类型 | 3 | 0x11 |
帧ID | 4 | 0x01 |
64位目标地址 | MSB 5 6 7 8 9 10 11 LSB 12 | 0x00 0×13 0xA2 0x00 0x40 0×40 0x12 0x34 |
16位目标网络地址 | MSB 13 LSB 14 | 0xFF 0xFE |
源端点 | 15 | 0x41 |
目标端点 | 16 | 0x42 |
群集ID | 17 18 | 0x00 0x00 |
配置文件ID | 19 20 | 0xD1 0x23 |
广播半径 | 21 | 0x00 |
选项 | 22 | 0x00 |
负载数据 - ZCL帧头 | 23 24 25 | 0x00 - 帧控制 0x01 - 交易序列号 0x00 - 命令ID |
负载数据 - ZCL有效负载 | 26 | 0x03 - 属性ID |
27 | 0x00 | |
校验 | 29 | 0xFA |
使用API发送公共配置文件命令
用户可以使用显式传输API帧(0x11)使用XBee API发送公共配置文件(如智能能源和家庭自动化)命令。使用Explicit Transmit API帧发送公共配置文件命令需要对数据有效负载字段进行一些格式化。大多数公共配置文件命令适合Zigbee群集库(ZCL)体系结构,如使用API发送Zigbee群集库(ZCL)命令中所述。
下表显示了如何使用显式传输API帧在版本14 Smart Energy规范中的智能能源配置文件(配置文件ID 0x0109)中发送需求响应和加载控制消息(群集ID 0x701)。设备发送“加载控制事件”消息(命令ID 0x00)并发送到64位地址为0x0013A200 40401234且16位地址为0x5678的设备。该活动将立即开始,为热水器和智能电器启动1分钟的负载控制事件。
注意:
发送公共配置文件命令时,请将AO命令设置为1以启用显式接收API帧。这提供了每个接收到的数据包的源64位和16位地址,群集ID,配置文件ID和端点信息的指示。需要此信息才能正确解码接收的数据。
帧特定数据
帧数据字段 | 偏移 | 描述 |
---|---|---|
帧类型 | 3 | 0x11 |
帧ID | 4 | 标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。 |
64位目标地址 | 5-12 | 目标设备的64位地址。先高位(MSB)后低位(LSB)。 (默认)协调器= 0x0000000000000000 广播= 0x000000000000FFFF |
16位目标网络地址 | MSB 13 LSB 14 | 目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。 |
源端点 | 15 | 设置为发送设备上的源端点(任意选择0x41)。 |
目标端点 | 16 | 设置为远程设备上的目标端点(任意选择0x42)。 |
群集ID | 17-18 | 设置为与要发送的ZCL命令对应的集群ID。0x0701 = 需求响应和负载控制集群ID |
配置文件ID | 19-20 | 设置为设备支持的配置文件ID。0x0109 = 智能能源配置文件ID。 |
广播半径 | 21 | 设置广播传输可以发生的最大跳数。如果设置为0,则广播半径设置为最大跃点值。 |
选项 | 22 | 所有位必须设置为0。 |
负载数据 - ZCL帧头 | 23 —- 24 —- 25 | 帧控制。Bitfield,用于定义ZCL命令中的命令类型和其他相关信息。有关更多信息,请参阅ZCL规范。 ———————————————————————————————————– 交易序列号。用于将ZCL命令与ZCL响应相关联的序列号。(硬件版本响应将此字节作为响应中的序列号包括在内。)任意选择值0x01。 —————————————————————————————- 命令ID。由于帧控制“帧类型”位为01,因此该字节指定了特定于群集的命令。需求响应和负载控制集群中的命令ID 0x00是加载控制事件命令。有关更多信息,请参阅Smart Energy规范。 |
负载数据 - ZCL有效负载 | 26-48 | 见下表 |
(以下均为ZCL有效负载)
ZCL有效负载 | 偏移 | 描述 |
---|---|---|
发行人事件ID | 26-29 | 4字节的唯一标识符。注意 4字节ID以小端字节顺序(0x78563412)发送。此示例中的事件ID(0x12345678)是任意选择的。 |
设备类 | 30-31 | 此位编码字段表示与负载控制事件关联的设备类。位值0x0014可实现智能家电和热水器。注意 2字节位字段值以little endian字节顺序发送。 |
公用事业登记组 | 32 | 用于标识设备类中的设备子组。0x00对所有组进行寻址。 |
开始时间 | 33-36 | |
持续时间(分钟) | 37-38 | 必须以小端字节顺序发送此2字节值。 |
临界水平 | 39 | 指示事件的关键性级别。在此示例中,级别是“自愿的”。 |
冷却温度 | 40 | 冷却设定点对应的偏移量。值0xFF表示不使用温度偏移值。 |
加热温度偏移 | 41 | 加热设定点对应的偏移量。值0xFF表示不使用温度偏移值。 |
冷却温度设定点 | 42-43 | 要求冷却设定点在0.01摄氏度。值0x8000表示此事件中未使用设定点字段。注意 0x80000以小端字节顺序发送。 |
加热温度设定点 | 44-45 | 要求加热设定点在0.01摄氏度。值0x8000表示此事件中未使用设定点字段。注意 0x80000以小端字节顺序发送。 |
平均负载调整百分比 | 46 | 最大能耗限制。值0x80表示未使用该字段。 |
占空比 | 47 | 定义最大占空比。值0xFF表示在此事件中不使用占空比。 |
工作循环事件控制 | 48 | 描述事件选项的位图。 |
例
在此示例中,帧控制字段(偏移23)构造如下:
Name | 位 | 示例值描述 |
---|---|---|
帧类型 | 0-1 | 01 - 命令特定于群集 |
制造商特定代号 | 2 | 0 - ZCL帧头中省略了制造商代码字段。 |
方向 | 3 | 1 - 该命令从服务器端发送到客户端。 |
禁用默认响应 | 4 | 0 - 未禁用默认响应 |
保留的 | 5-7 | 设为0。 |
有关更多信息,请参阅Zigbee群集库规范。
帧数据字段 | 偏移 | 例 |
---|---|---|
起始分隔符 | 0 | 0x7E |
长度 | MSB 1 LSB 2 | 0x00 0x2E |
帧类型 | 3 | 0x11 |
帧ID | 4 | 0x00 |
64位目标地址 | MSB 5 6 7 8 9 10 11 LSB 12 | 0x00 0×13 0xA2 0x00 0x40 0×40 0x12 0x34 |
16位目标网络地址 | MSB 13 LSB 14 | 0x56 0x78 |
源端点 | 15 | 0x41 |
目标端点 | 16 | 0x42 |
群集ID | 17 18 | 0x07 0x01 |
配置文件ID | 19 20 | 0x01 0x09 |
广播半径 | 21 | 0x00 |
选项 | 22 | 0x00 |
负载数据 - ZCL帧头 | 23 24 25 | 0x09 - 帧控制 0x01 - 交易序列号 0x00 - 命令ID |
负载数据 - ZCL有效负载 | 26-48 | 见下表 |
校验 | 49 | 0x5B |
ZCL有效负载 | 偏移 | 描述 |
---|---|---|
发行人事件ID | 26 27 28 29 | 0x78 0x56 0x34 0x12 |
设备类 | 30 31 | 0x14 0x00 |
公用事业登记组 | 32 | 0x00 |
开始时间 | 33 34 35 36 | 0x00 0x00 0x00 0x00 |
持续时间(分钟) | 37 38 | 0x01 0x00 |
临界水平 | 39 | 0x04 |
冷却温度 | 40 | 0xFF |
加热温度偏移 | 41 | 0xFF |
冷却温度设定点 | 42 43 | 0x00 0x80 |
加热温度设定点 | 44 45 | 0x00 0x80 |
平均负载调整百分比 | 46 | 0x80 |
占空比 | 47 | 0xFF |
工作循环事件控制 | 48 | 0x00 |