【XBEE手册】API操作



API帧格式

固件支持两种API操作模式:没有转义字符和转义字符。使用AP命令启用任一模式:

  • AP = 1:API操作。
  • AP = 2:API操作(具有转义字符 - 仅在UART上可用)。

API数据帧结构因选择的模式而异。

API操作(AP参数= 1)
下表显示启用AP = 1 时的数据帧结构:

帧字段字节描述
起始分隔符10x7E
长度2 - 3最高有效位(Most Significant Byte),最低有效位(Least Significant Byte)
数据帧4 - nAPI特定的结构
校验n + 11个字节

固件默认丢弃在起始分隔符之前接收的任何数据。如果设备未正确接收帧或校验失败,则设备将回复指示故障类型的状态帧。

API操作 - 使用转义字符(AP参数= 2)
该模式仅适用于UART,不适用于SPI串行端口。 下表显示启用AP = 2 时的数据帧结构:

帧字段字节描述
起始分隔符10x7E
长度2 - 3最高有效位(Most Significant Byte),最低有效位(Least Significant Byte) (如果需要,字符会被转义)
帧数据4 - nAPI特定的结构(如果需要,字符会被转义)
校验n + 11个字节(如果需要,字符会被转义)

转义字符
发送或接收UART数据帧时,必须转义(标记)特定数据值,以免它们干扰数据帧排序。要转义干扰数据字节,需插入0x7D,后跟着要转义字节与0x20进行异或运算的结果。

需要转义的数据字节:

字节描述
0x7E帧分隔符
0x7D转义符号
0x11XON
0x13XOFF

示例:在转义干扰字节之前的原始串行数据:
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帧的校验:

  1. 添加数据包的所有字节,除了起始分隔符0x7E和长度(第二个和第三个字节)。
  2. 仅预留结果中最低的8位。
  3. 从0xFF中减去此数量。

要验证API帧的校验:

  1. 添加包括校验在内的所有字节; 不包括分隔符和长度。
  2. 如果校验正确,则最右边的最后两位数等于0xFF。


请考虑以下示例数据包:7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F B8 +

字节(S)描述
7E起始分隔符
00 0A长度字节
01API标识符
01API帧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 =校验
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

校验计算为[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 =校验
 
 
  • 1
  • 2
  • 3
  • 4
  • 5

校验计算为[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 =校验
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

API串行交换

用户可以使用“帧ID”字段来关联传出帧和相关响应。

AT命令
下图显示了在发送AT命令请求以读取或设置设备参数时在串行接口上​​发生的API帧交换。用户可以在请求中设置帧ID为0来禁用响应。
enter image description here

发送和接收RF数据
下图显示了在将RF数据发送到另一个设备时在UART接口上进行的API帧交换。除非在TX请求中将帧ID设置为0,否则始终在数据传输结束时发送发送状态帧。如果数据包无法传输到目标,则发送状态帧指示失败的原因。

接收的数据帧类型(0x90或0x91)由AO命令确定。
enter image description here

远程AT命令
下图显示了在发送远程AT命令时在串行接口上​​进行的API帧交换。如果远程设备未收到远程命令,则设备不会通过串行接口发送远程命令响应帧。
enter image description here

源路由
下图显示了在发送源路由传输时在串行端口发生的API帧交换。
enter image description here

设备注册
下图显示了在将加入设备注册到信任中心时在串行接口上​​进行的API帧交换。
enter image description here

帧描述

AT命令帧 - 0x08

描述
使用此帧进行查询或设置本地设备上的参数。此API命令在运行命令后应用更改。用户可以通过发送没有参数值字段的0x08 AT命令帧来查询参数值(双字节AT命令后面紧跟帧校验)。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x08
AT命令5-6命令名:两个用于标识AT命令的ASCII字符。
参数值7-n如果存在,则指示设置给定寄存器所请求的参数值。如果没有字符,则查询寄存器。


以下示例说明了修改设备的NJ参数值时的AT命令帧。

帧数据字段偏移
起始分隔符00x7E
长度1 (MSB)
2 (LSB)
0x00
0x04
帧类型30x08
帧ID40x52(R)
AT命令5
6
0x4E(N)
0x4A(J)
参数值(可选)
校验70x0D

AT命令 - 队列参数值帧 - 0x09

描述
此帧允许用户查询或设置设备参数。与AT命令(0x08)帧相反,此帧将对新参数值放入队列,执行以下命令之一后才会应用新参数:

  • AT命令(0x08的)帧 (对于API类型)
  • AC命令

查询参数值时,0x09帧的行为与0x08帧相同。设备立即返回寄存器查询,而不是对它们放入队列。此命令的响应也是AT命令响应帧(0x88)。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x09
帧ID4标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。
AT命令5-6命令名:两个用于标识AT命令的ASCII字符。
参数值7-n如果存在,则指示设置给定寄存器所请求的参数值。如果没有字符,查询寄存器。


以下示例发送命令将波特率(BD)更改为115200波特,但不立即应用更改。设备继续以先前的波特率运行,直到用户应用更改。

注意:在此示例中,用户可以将参数作为零填充的2字节或4字节值发送。

帧数据字段偏移
起始分隔符00x7E
长度1 (MSB)
2 (LSB)
0x00
0x05
帧类型30x09
帧ID40x01
AT命令5
6
0x42(B)
0x44(D)
参数值70x07(BD 7 = 115200波特)
校验80x68

发送请求帧 - 0x10

描述
该帧使设备将有效载荷数据作为RF包发送到特定目标。

  • 对于广播传输,将64位目标地址设置为0x000000000000FFFF。要访问协调器,可将64位地址设置为0并将16位地址设置为0xFFFE,或将64位地址设置为协调器的64位地址,将16位地址设置为0x0000。
  • 对于所有其他传输,正确设置16位地址有助于提高传输到多个目标时的性能。如果不知道16位地址,请将此字段设置为0xFFFE(未知)。如果成功,则发送状态帧(0x8B)表示发现的16位地址。

用户可以将广播半径设置为0到NH。如果设置为0,则NH的值指定广播半径(推荐)。此参数仅用于广播传输。
用户可以使用NP命令读取最大有效负载字节数。

注意:使用源路由可将源路由中每个中间跃点的RF有效负载减少两个字节。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x10
帧ID4标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。
64位目标地址5-12目标设备的64位地址。先高位(MSB)后低位(LSB)。
(默认)协调器= 0x0000000000000000
广播= 0x000000000000FFFF
16位目标网络地址MSB 13
LSB 14
目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。
广播半径15设置广播传输可以发生的最大跳数。如果设置为0,则广播半径设置为最大跃点值。
选项160x01 - 禁用重试
0x20 - 启用APS加密(如果EE = 1)
0x40 - 使用此目标的扩展传输超时
启用APS加密会将RF有效负载字节的最大数量减少4(低于NP报告的值)。
设置扩展超时位会导致堆栈设置目标地址的扩展传输超时。请参阅传输,寻址和路由。
所有未使用和不支持的位必须设置为0。
射频数据17-N数据发送到目标设备。


该示例显示了如果禁用转义(AP = 1),目标地址为0x0013A200 40014011和有效负载“TxData1B”,如何将传输发送到设备。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x16
帧类型30x10
帧ID40x01
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
广播半径150x00
选项160x40
射频数据17
18
19
20
21
22
23
24
0x54
0x78
0x44
0x61
0x74
0x61
0x30
0x41
校验250x13

将传输发送到协调器,而不指定协调器的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个字节)

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x16
帧类型30x10
帧ID40x01
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
广播半径150x00
选项160x40
有效负载数据(Tx2Coord)17
18
19
20
21
22
23
24
0x54
0x78
0x32
0x43
0x6F
0x6F
0x72
0x64
校验250xFC

显式寻址命令帧 - 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帧格式。

帧数据字段偏移描述
帧类型30x11
帧ID4标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。
64位目标地址5-12目标设备的64位地址。先高位(MSB)后低位(LSB)。
(默认)协调器= 0x0000000000000000
广播= 0x000000000000FFFF
16位目标网络地址MSB 13
LSB 14
目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。
源端点15传输的源端点。
目标端点16传输的目标端点。
群集ID17-18传输中使用的群集ID。
配置文件ID19-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
帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x1A
帧类型30x11
帧ID40x01
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
源端点150xA0
目标端点160xA1
群集ID17
18
0x15
0x54
配置文件ID19
20
0xC1
0x05
广播半径210x00
选项220x00
有效负载数据23
24
25
26
27
28
0x54
0x78
0x44
0x61
0x74
0x61
校验290x3A

远程AT命令请求帧 - 0x17

描述
用于在远程设备上查询或设置设备参数。要使远程设备上的参数更改生效,必须通过设置“Apply Changes”选项位或通过向远程发送AC命令来应用更改。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x17
帧ID4标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。
64位目标地址5-12目标设备的64位地址。先高位(MSB)后低位(LSB)。
(默认)协调器= 0x0000000000000000
16位目标网络地址MSB 13
LSB 14
目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。
远程命令选项15Bitfield启用各种远程命令选项。支持的值包括:
0x01 - 禁用ACK
0x40 - 使用此目标的扩展传输超时。设置扩展超时位会导致堆栈设置目标地址的扩展传输超时。
有关更多信息,请参阅传输,寻址和路由。
AT命令16-17命令名:两个用于标识命令的ASCII字符。
命令参数18-n如果存在,则指示设置给定寄存器所请求的参数值。如果没有字符,查询寄存器。


以下示例发送远程命令:

在此示例中,远程设备的64位地址是0x0013A200 40401122。 目标16位地址未知。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x10
帧类型30x17
帧ID40x01
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
远程命令选项150x02(应用更改)
AT命令16
17
0x42(B)
0x48(H)
命令参数180x01
校验290xF5

创建源路由 - 0x21

描述
此帧在设备中创建源路由。源路由指定数据包遍历从源到目标的完整路由。为获得最佳结果,请使用具有多对一路由的源路由。

此帧类型没有响应帧。生成源路由时要小心。格式不正确的帧将被无线电静默拒绝或导致意外结果。

注意:创建源路由时,需要64位和16位目标地址。这些是在设备收到路由记录指示符(0xA1)帧时获得的。

格式
下表提供了帧的内容。

帧数据字段偏移描述
帧类型30x21
帧ID4始终设为0
64位目标地址5-12目标设备的64位地址。先高位(MSB)后低位(LSB)。
(默认)协调器= 0x0000000000000000
广播=0x000000000000FFFF
16位目标网络地址MSB 13
LSB 14
目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。
路线命令选项15设为0
地址数量16源路由中的地址数(源和目标除外)。如果此数字为0或大于源路由表大小(40),则设备将以静默方式丢弃此API帧。但是,设备会丢弃一个超过11个中间跳的帧。
地址117
18
目标的邻居
地址2(更靠近源)19
20
中间跃点的地址
地址321
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之间建立源路由。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x14
帧类型30x21
帧ID40x00
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
远程命令选项150x00
地址数量160x03
地址117
18
0xEE
0xFF
地址2(更靠近源)19
20
0xCC
0xDD
地址321
22
0xAA
0xBB
校验230x01

AT命令响应帧 - 0x88

描述
设备发送此帧以响应AT命令(0x08或0x09)帧。一些命令发送回多个帧; 例如,ND命令。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x88
帧ID4标识要报告的串行端口数据帧。如果在命令模式下帧ID = 0,则设备不会给出AT命令响应。
AT命令5-6命令名:两个用于标识命令的ASCII字符。
命令状态70 =正常
1 =错误
2 =无效命令
3 =无效参数
4 = Tx失败
命令数据二进制格式的寄存器数据。如果主机设置了寄存器,则设备不会返回该字段。


如果在帧ID为0x01的本地设备上更改BD参数,并且参数有效,则用户会收到以下响应。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x05
帧类型30x88
帧ID40x01
AT命令5
6
0x42(B)
0x44(D)
命令状态70x00
命令数据(没有命令数据意味着参数已经设置而不用查询)
校验80xF0

调制解调器状态帧 - 0x8A

描述
设备会发送此帧以响应特定条件。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x8A
状态40x00 =硬件复位
0x01 =看门狗定时器复位
0x02 =加入的网络(路由器和终端设备)
0x03 =解除关联
0x06 =协调器已启动
0x07 =网络安全密钥已更新
0x0D =超出电压限制 (仅限PRO)
0x11 =正在进行加入时调制解调器配置已更改
0x80 + = Ember Zigbee堆栈错误


当设备启动时,它将返回以下API帧。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x02
帧类型30x8A
状态40x06
校验50x6F

发送状态帧 - 0x8B

描述
当发送请求(0x10,0x11)完成时,设备从串行接口发送发送状态消息。此消息指示传输请求是否成功或是否失败。

注意:即使传输失败,也不会确认广播传输并始终返回0x00的状态。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x8B
帧ID4始终设为0
16位目标网络地址5
6
传送数据包的16位网络地址(如果成功)。如果不成功,则该地址为0xFFFD(目标地址未知)
传输重试次数7发生的应用程序传输重试次数
邮寄状态80x00 =成功
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 =未请求间接消息
发现状态90x00 =没有发现开销
0x01 =地址发现
0x02 =路由发现
0x03 =地址和路由
0x40 =扩展超时发现


在以下示例中,目标设备使用16位地址0x7D84报告单播数据传输成功。传输可能已经发送,16位地址设置为0x7D84或0xFFFE。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x07
帧类型30x8B
帧ID40x01
16位目标网络地址MSB 5
LSB 6
0x7D
0x84
传输重试次数70x00
邮寄状态80x00
发现状态90×01
校验100x71

接收数据包帧 - 0x90

描述
当配置有标准API Rx指示符(AO = 0)的设备收到RF数据包时,它会使用此消息类型将其发送出串行接口。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x90
64位源地址4-11发件人的64位地址。先高位(MSB)后低位(LSB)
16位源网络地址MSB 12
LSB 13
发件人的16位地址。
接收选项140x01 - 数据包已确认
0x02 - 数据包是广播数据包
0x20 - 使用APS加密加密的数据包
注意可以组合选项值。例如,0x20和0x01显示为0x21。其他可能的值:x00,0x21,0x22,0x60,0x61,0x62。
收到的数据15-N设备接收的RF数据。


在以下示例中,具有64位地址0x0013A200 40522BAA的设备将单播数据传输发送到具有有效负载RxData的远程设备。如果接收设备上的AO = 0,则将以下帧发送到其串行接口。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x12
帧类型30x90
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
接收选项140x01 - 数据包已确认
收到的数据15
16
17
18
19
20
0×52
0x78
0×44
0x61
0x74
0x61
校验210x0D

显式Rx指示符帧 - 0x91

描述
当配置有显式API Rx指示符(AO = 1)的设备收到RF数据包时,它会使用此消息类型将其发送出串行接口。

注意:如果发送请求帧 - 0x10发送到AO=1的设备,则接收设备接收具有源端点(SE),目标端点(DE)和群集ID(CI)值的0x91帧,而不是在透传模式下在发送设备上设置的值。

必须使用群集ID和端点来标识发生的交易类型。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x91
64位源地址4-11发件人的64位地址。先高位(MSB)后低位(LSB),如果发送方的64位地址未知,则设置为0xFFFFFFFFFFFFFFFF(未知的64位地址)。
16位源网络地址MSB 12
LSB 13
发件人的16位地址。
源端点15启动传输的源端点。如果用 发送请求帧 - 0x10 的方式从源发送数据时,则显示默认值。如果用 显式寻址命令帧 - 0x11 的方式从源发送数据,或者如果使用非默认值,则显示非默认值,否则保留默认值。
目标端点16消息发送到的目标的端点。如果用 发送请求帧 - 0x10 的方式从源发送数据时,则显示默认值。如果用 显式寻址命令帧 - 0x11 的方式从源发送数据,或者如果使用非默认值,则显示非默认值,否则保留默认值。
群集ID17-18帧所指向的群集ID。如果用 发送请求帧 - 0x10 的方式从源发送数据时,则显示默认值。如果用 显式寻址命令帧 - 0x11 的方式从源发送数据,或者如果使用非默认值,则显示非默认值,否则保留默认值。
配置文件ID19-20帧所指向的配置文件ID。
接收选项200x01 - 数据包已确认
0x02 - 数据包是广播数据包
0x20 - 使用APS加密的数据包
收到的数据21-N收到的RF数据


在以下示例中,具有64位地址0x0013A200 40522BAA的设备将广播数据传输(具有有效负载RxData)发送到的远程设备。

如果设备发送传输:

  • 源端点和目标端点为0xE0
  • 群集ID = 0x2211
  • 配置文件ID = 0xC105

如果接收设备上的AO = 1,它会从其串行接口发送以下帧。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x18
帧类型30x91
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
源端点140xE0
目标端点150xE0
群集ID16
17
0x22
0x11
配置文件ID18
19
0xC1
0x05
接收选项200x02 - 数据包是广播数据包
收到的数据21
22
23
24
25
26
0×52
0x78
0×44
0x61
0x74
0x61
校验270x52

数据采样Rx指示帧 - 0x92

描述
当设备从远程设备接收I / O样本帧时,它使用此帧类型将样本发送出串行端口(当AO = 0时)。只有在API模式下运行的设备才会将I / O样本发送出串口。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x92
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示例中下表。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x14
帧类型30x92
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
接收选项140x01 =数据包已确认
样本数量150x01
数字信道掩码16
17
0x01
0x00
模拟信道掩码180x02
数字样本19
20
0x00
0x14
模拟样本21
22
0x02
0x25
校验230xF5

XBee传感器读取指示器 - 0x94

描述
当设备接收传感器样本(来自Digi 1线传感器适配器)时,使用此消息类型(当AO = 0时)将其发送出串行端口。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x94
64位源地址4-11发件人的64位地址。先高位(MSB)后低位(LSB)
16位源网络地址MSB 12
LSB 13
发件人的16位地址。先高位(MSB)后低位(LSB)
接收选项14位字段:
0x01 =数据包已确认
0x02 =数据包是广播数据包
1线传感器150x01 = 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):

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x17
帧类型30x94
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
接收选项140x01 =数据包已确认
1线传感器150x03(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
校验260x8B

为方便起见,我们将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帧格式。

帧数据字段偏移描述
帧类型30x95
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位地址
设备类型290 =协调器
1 =路由器
2 =终端设备
来源事件301 =通过节点标识按钮事件发送的帧(参见D0(AD0 / DIO0配置))
2 =加入事件后发送的帧(参见JN(加入通知))。
3 =发生电源循环事件后发送的帧(参见JN(加入通知))。
Diji配置文件ID31-32设置为Digi的应用程序配置文件ID。
Diji制造商33-34设置为Diji的制造商ID


如果按下具有64位地址0x0013A200407402AC的远程设备上的调试按钮,并且默认NI字符串发送节点标识,则网络上的所有设备都会收到以下节点标识指示符:

具有64位地址0x0013A200407402AC且默认NI字符串的远程设备,按下其调试按钮,发送节点标识,网络上的所有设备都会收到以下节点标识指示符:

如果按下具有64位地址0x0013A200 40522BAA,16位地址0x7D84和默认NI字符串的远程路由器设备上的调试按钮,网络上的设备将接收节点标识指示符:

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x20
帧类型30x95
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
接收选项140x02 =数据包是广播数据包
远程设备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
设备类型290x01
来源事件300x01 =通过节点标识按钮事件发送的帧(参见D0(AD0 / DIO0配置))
Diji配置文件ID31
32
0xC1
0x05
Diji制造商33
34
0x1E
0x1B

远程命令响应帧 - 0x97

描述
如果设备响应远程命令请求(0x17)帧而接收到该帧,则设备从串行接口发送AT命令响应(0x97)帧。

某些命令(例如ND命令)可能会发送回多个帧。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30x97
帧ID4这与传递给请求的值相同。
64位源(远程)地址5-12返回此响应的远程设备的地址。
16位源(远程)地址MSB 13
LSB 14
设置为返回此响应的远程设备的16位网络地址。 如果未知则设置为0xFFFE。
AT命令15-16命令名:两个用于标识命令的ASCII字符。
命令状态170 =好的
1 =错误
2 =无效命令
3 =无效参数
4 =远程命令传输失败
命令参数18-n二进制格式的寄存器数据。如果设置了寄存器,则设备不会返回此字段。


如果设备向具有64位地址0x0013A200 40522BAA的远程设备发送远程命令以查询SL命令,并且如果帧ID = 0x55,则响应将类似于以下示例。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x13
帧类型30x97
帧ID40x55
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
命令状态170x00
命令参数18
19
20
21
0x40
0×52
0x2B
0xAA
校验220xF4

扩展调制解调器状态帧 - 0x98

描述
如果启用“详细加入”选项 (DC10),设备串行发送跟踪消息,以描述在关联期间设备内部发生的情况。

警告!此选项用于诊断目的。使用4x5A / 7x5A或更高版本时,当设备在命令模式下运行时,将禁用详细加入消息。在该修订之前,详细加入消息中穿插着串行通信。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段抵消描述
帧类型30x98
状态代码4有关状态代码说明,请参阅下表。
状态数据5该字段的长度因状态代码而异。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x03
校验30x5C
状态代码说明

下表按状态码顺序描述了各种详细加入(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不是连接候选者,因为它不允许连接。
0x08panID匹配带搜索选项(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标识符。
0x0BAIAI值已经改变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中每个信道的能量水平
0x1FPanIdScan - 无线电信道Pan Id Scan在信道上开始信道(1)广播信道
0x20FormNetwork - 参数正在启动一个网络radioChannel(1)
———————————
radioTxPower(1)
———————————
panid(2)
———————————
extendedPanId(8)
信道号范围从11到26(0x0B到0x1A)。
———————————
发送功率的低电平有符号字节值,值范围从0xC9到0x05(含)。
———————————
16位4med’网络,或路由器/终端设备加入的网络。
—————————————————————————————-
网络的64位PAN标识符。
0x21发现KE端点寻找关键建立端点
0x22KE端点找到关键设施终点端点(1)端点号

以下示例显示了在AT命令模式下启用Verbose Join的成功连接过程。

注意注释包含在跟踪消息中以解释内容,并以省略号“…”开头。

+++OK
atid3151 OK

...配置的pan标识符已在atdc10中更改

OK

...详细联接启用atac

OK

...对配置应用更改V AI - 搜索父级:FF

...搜索已经开始

V AI - Searching for Parent:FF

......然后重新开始

V Scanning:03FFF800

...信道1125由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
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

无线固件更新状态 - 0xA0

描述
无线固件更新状态(Over-the-Air Firmware Update Status)帧提供固件更新传输尝试状态的指示。通过具有64位地址0x0013A200403E0750和16位地址0x0000的更新器,将查询命令(0x01 0x51)发送到具有64位地址0x0013A200 40522BAA的目标,生成以下预期响应。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30xA0
64位源(远程)地址4-11返回此响应的远程设备的地址。
16位目标地址MSB 12
LSB 13
更新器设备的16位地址。
接收选项140x01 - 数据包已确认。
0x02 - 数据包是广播。
Bootloader消息类型150x06 - 确认
0x15 - NACK
0x40 - 没有Mac ACK
0x51 - 查询(如果目标上的引导加载程序未激活则接收)
0x52 - 查询响应
块编号16更新请求中使用的块编号。如果不适用,设置为0。
64位目标地址17-N正在更新的远程设备的64位地址(目标)。


如果查询请求返回0x15(NACK)状态,则目标可能正在等待固件更新映像。如果在大约75秒内没有向其发送消息,则目标将超时并接受新的查询消息。

如果查询返回0x51(QUERY)状态,则目标的引导加载程序不活动,并且不会响应查询消息。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x16
帧类型30xA0
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
接收选项140x01 - 数据包已确认
Bootloader消息类型150x52 - 查询响应
块编号160x00 - 如果不适用,设置为0。
64位目标地址17
18
19
20
21
22
23
24
0x00
0×13
0xA2
0x00
0x40
0×52
0x2B
0xAA
校验250x66

路由记录指示器 - 0xA1

描述
只要设备发送Zigbee路由记录命令,就会收到路由记录指示符。设备使用路由记录指示符和多对一路由为网络中的设备创建源路由。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30xA1
64位源(远程)地址4-11启动路由记录的设备的64位地址。先高位(MSB)后低位(LSB)。
16位源(更新器)地址MSB 12
LSB 13
启动路由记录的设备的16位地址。
接收选项140x01 - 数据包已确认。
0x02 - 数据包是广播。
地址数量15源路由中的地址数(源和目标除外)。
地址116
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帧发送出其串行端口。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x13
帧类型30xA1
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
接收选项140x01 - 数据包已确认
地址数量150x03
地址116
17
0xEE
0xFF
地址2(更靠近源)18
19
0xCC
0xDD
地址320
21
0xAA
0xBB
校验220x80

多对一路由请求指示符 - 0xA3

描述
当收到多对一路由请求时,多对一路由请求指示帧从串行端口发出。

格式
下表提供了帧的内容。有关帧结构的详细信息,请参阅API帧格式。

帧数据字段偏移描述
帧类型30xA3
64位源(远程)地址4-11发送多对一路由请求的设备的64位地址。先高位(MSB)后低位(LSB)。
16位源地址MSB 12
LSB 13
发起多对一路由请求的设备的16位地址。
保留14设为0


假设具有64位地址0x0013A200 40401122和16位地址0x0000的设备发送多对一路由请求。所有运行API模式并接收多对一广播的远程路由器都会从其串行端口发送以下示例API帧。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x13
帧类型30xA1
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
校验140xF4

使用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的设备上的活动端点。

帧数据字段偏移描述
帧类型30x11
帧ID4标识数据帧以便主机的与后续传输状态相关联。如果设置为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端点)。
群集ID17-18设置为与要发送的ZDO命令对应的群集ID。0x0005 =活动端点请求
配置文件ID19-20对于ZDO传输,设置为0x0000(配置文件ID 0x0000是支持ZDO的Zigbee设备配置文件)。
广播半径21设置广播传输可以遍历的最大跃点数。如果设置为0,则设备将传输半径设置为网络最大跳数值。
传输选项22所有位必须设置为0。
有效负载数据23-25ZDO命令所需的有效负载。所有多字节ZDO参数值(u16,u32,64位地址)必须以小端字节顺序发送。活动端点请求包括以下有效负载:[16位NwkAddrOfInterest]
注意: API示例(0x1234)中的16位地址以小端字节顺序(0x3412)发送。


以下示例显示如何使用显式传输帧发送“Active Endpoints”请求以发现16位地址为0x1234的设备上的活动端点。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x17
帧类型30x11
帧ID40x01
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
源端点150x00
目标端点160x00
群集ID17
18
0x00
0x05
配置文件ID19
20
0x00
0x00
广播半径210x00
选项220x00
有效负载数据 - 交易序列号230x01
有效负载数据 - ZDO有效负载24
25
0x34
0x12
校验290xA6

使用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。

帧数据字段偏移描述
帧类型30x11
帧ID4标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。
64位目标地址5-12目标设备的64位地址。先高位(MSB)后低位(LSB)。
(默认)协调器= 0x0000000000000000
广播= 0x000000000000FFFF
16位目标网络地址MSB 13
LSB 14
目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。
源端点15设置为发送设备上的源端点(任意选择0x41)。
目标端点16设置为远程设备上的目标端点(任意选择0x42)。
群集ID17-18设置为与要发送的ZCL命令对应的集群ID。0x0000 =基本群集。
配置文件ID19-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报头和有效负载值。
270xFF减去从偏移3到该字节的8位字节总和。


在此示例中,帧控制字段(偏移23)构造如下:

Name示例值描述
帧类型0-100 - 命令在整个配置文件中起作用。
制造商特定20 - ZCL帧头中省略了制造商代码字段。
方向30 - 命令从客户端发送到服务器端。
禁用默认响应40 - 未禁用默认响应。
保留的5-7设为0。

有关更多信息,请参阅Zigbee Cluster Library规范。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x19
帧类型30x11
帧ID40x01
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
源端点150x41
目标端点160x42
群集ID17
18
0x00
0x00
配置文件ID19
20
0xD1
0x23
广播半径210x00
选项220x00
负载数据 - ZCL帧头23
24
25
0x00 - 帧控制
0x01 - 交易序列号
0x00 - 命令ID
负载数据 - ZCL有效负载260x03 - 属性ID
270x00
校验290xFA

使用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和端点信息的指示。需要此信息才能正确解码接收的数据。

帧特定数据

帧数据字段偏移描述
帧类型30x11
帧ID4标识数据帧以便主机与后续ACK相关联。如果设置为0,则设备不发送响应。
64位目标地址5-12目标设备的64位地址。先高位(MSB)后低位(LSB)。
(默认)协调器= 0x0000000000000000
广播= 0x000000000000FFFF
16位目标网络地址MSB 13
LSB 14
目标设备的16位地址。如果地址未知或发送广播,则设置为0xFFFE。
源端点15设置为发送设备上的源端点(任意选择0x41)。
目标端点16设置为远程设备上的目标端点(任意选择0x42)。
群集ID17-18设置为与要发送的ZCL命令对应的集群ID。0x0701 = 需求响应和负载控制集群ID
配置文件ID19-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有效负载偏移描述
发行人事件ID26-294字节的唯一标识符。
注意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-101 - 命令特定于群集
制造商特定代号20 - ZCL帧头中省略了制造商代码字段。
方向31 - 该命令从服务器端发送到客户端。
禁用默认响应40 - 未禁用默认响应
保留的5-7设为0。

有关更多信息,请参阅Zigbee群集库规范。

帧数据字段偏移
起始分隔符00x7E
长度MSB 1
LSB 2
0x00
0x2E
帧类型30x11
帧ID40x00
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
源端点150x41
目标端点160x42
群集ID17
18
0x07
0x01
配置文件ID19
20
0x01
0x09
广播半径210x00
选项220x00
负载数据 - ZCL帧头23
24
25
0x09 - 帧控制
0x01 - 交易序列号
0x00 - 命令ID
负载数据 - ZCL有效负载26-48见下表
校验490x5B
ZCL有效负载偏移描述
发行人事件ID26
27
28
29
0x78
0x56
0x34
0x12
设备类30
31
0x14
0x00
公用事业登记组320x00
开始时间33
34
35
36
0x00
0x00
0x00
0x00
持续时间(分钟)37
38
0x01
0x00
临界水平390x04
冷却温度400xFF
加热温度偏移410xFF
冷却温度设定点42
43
0x00
0x80
加热温度设定点44
45
0x00
0x80
平均负载调整百分比460x80
占空比470xFF
工作循环事件控制480x00
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值