你好,
在我的应用程序中,我试图实现网络发现功能。我在一个数字网格工作,我想找到网络中的所有节点。出于测试目的,我使用了连接控制台的XCTU。

在XCTU中,我使用uart连接到mac地址为0x0013A2004125E0F5的设备。我在网络中找到的另一个rf模块是0x0013A20040FCDD56。

我试图追溯XCTU所做的工作,以找到这一个模块。下面是发现的控制台会话:

07-21 2017 12:38:32.351,-,API, " NODE2,0013A2004125E0F5,XBee Pro DigiMesh 2.4,8073,COM9 - 9600/8/N/1/N,3 "

07-21-2017 12:32:13.635, 0,发送,7 e0004085b4e54fa
07-21-2017 12:32:13.661, 1 RECV 7 e0007885b4e54000082f8
07-21-2017 12:32:13.699 2发送7 e000408024e4463
07-21-2017 12:32:26.036 3 RECV 7 e001e88024e4400fffe0013a20040fcdd56204e4f44453300fffe0100c105101e57
07-21-2017 12:32:26.050 4发送7 e000f175c0013a20040fcdd56fffe02523fd8
07-21-2017 12:32:26.106 5 RECV 7 e000f975c0013a20040fcdd56fffe523f0258
发送07-21-2017 12:32:26.120,6日,7 e000f175d0013a20040fcdd56fffe02254300
07-21-2017 12:32:26.186 7 RECV 7 e0010975d0013a20040fcdd56fffe2543000181
发送07-21-2017 12:32:26.200,8日,7 e000f175e0013a20040fcdd56fffe024856c9
07-21-2017 12:32:26.256 9 RECV 7 e0011975e0013a20040fcdd56fffe485600184ce7
发送07-21-2017 12:32:26.270,10日,7 e000f175f0013a20040fcdd56fffe025652be
RECV 07-21-2017 12:32:26.337, 11日,7 e0011975f0013a20040fcdd56fffe56520080734d
发送07-21-2017 12:32:26.352,12日,7 e000f17600013a20040fcdd56fffe024150d4
RECV 07-21-2017 12:32:26.407, 13日,7 e001097600013a20040fcdd56fffe4150000056

为了清晰起见,这里是Pastebin:https://pastebin.com/kCgNWxJ4

如果我没理解错的话,这个过程是这样的:

  • XCTU为我的设备设置NT(13秒)
  • XCTU设置(网络发现开始)
  • ND的调任来了。这里我不知道如何解码AT命令参数:

Ff fe ---- 00 13 a2 00 41 25 e0 ab ---- 20 4e 4f 44 45 31 00 Ff fe 01 00 c1 05 10 1e

我清楚地看到那里有找到的设备的mac地址,但其他字节是什么,它们代表什么?另外,如果发现了不止一个装置会发生什么?

  • XCTU发送R?(到远端设备),并接收到无效的命令回答-什么是R?在命令吗?我在Digimesh数据表中找不到。
  • XCTU发送%C(到远程设备)并得到答案,但在这里我也找不到%C命令是什么。

最后,XCTU从外部设备读取硬件和软件版本,并设置API模式。

总结一下:什么是“R”?和“%C”AT命令,ND响应的格式是什么?如何解码发现的设备?我将感激所有的帮助。

PS:我使用的是XBee PRO S1模块。

ND上报的数据如下:

parent_网络地址(2字节)(总是0xFFFE)

parent_网络地址(2字节)

DEVICE_TYPE(1字节:0 =协调器,1 =路由器,2 =终端设备)

STATUS(1字节:保留)

PROFILE_ID(2字节)

MANUFACTURER_ID(2字节)

数字设备类型(4字节。根据NO设置可选包含。)

上一跳的RSSI(1字节)。根据NO设置可选包含。)

但是你的解释没有包括MAC地址和设备ID,它们就在那里。据我所知是这样的:

parent_网络地址(2字节)(总是0xFFFE)
MAC_ADDRESS(8字节)
DEVICE_ID(最大20字节)

我不知道剩下的字节是什么。你能理解吗?

7E001E88024E4400FFFE0013A20040FCDD56204E4F44453300FFFE0100C105101E57条下来:

Ff fe 00 13 a2 00 40 fc dd 56 20 4e 4f 44 45 33 00 Ff fe 01 00 c1 05 10 1e

这是休耕:

parent_网络地址fffe
64位地址00 13 A2 00 40 FC DD 56
网络地址DD 56
DEVICE_TYPE 20
状态4 e
Profile_id 4f 44
MANUFACTURER_ID
数字设备类型(4字节。根据NO设置可选包含)00 FF FE 01
上一跳的RSSI(1字节)。根据NO设置可选包含

我想我看到了问题,你正在使用显式框架。这将增加一些数据帧中没有记录的字节。诸如源端点和目标端点、概要ID (C015)和其他一些项。

综上所述,准确的模式是什么?因为它仍然不匹配。设备ID出现在mac之后。这似乎还是不对。请再看一遍整个画面:

7e 00 1f 88 5e 4e 44 00 ff fe 00 13 a2 00 41 25 e0 b6 4e 4f 44 45 31 32 33 00 ff fe 01 00 c1 05 10 1e 2b

在这里,我逐字节地剥离了它:https://pastebin.com/15vpfX0E

有8个未知字节。

64位源地址

MSB 4

0 x00

5

0 * 13

6

0 xa2

7

0 x00

8

0 x40

9

0 x74

10

0 x02

LSB 11

0 xac

保留

12

0 xff
13

以0 xfe

接收选项

14

0 xc2

保留

15

0 xff

16

以0 xfe

64位远程地址

MSB 17

0 x00

18

0 * 13

19

0 xa2

20.

0 x00

21

0 x40

22

0 x74

23

0 x02
LSB 24

0 xac

倪字符串

25

0 x20

26

0 x00

保留

27

0 xff

28

以0 xfe

设备类型

29

0 x01

源事件

30.

0 x01

Digi Profile ID

31

0 xc1之前

32

0 x05

Digi制造商ID

33

0 x10

34

0 x1e

数字DD值

(可选)

35

0 x00

36

0 x0c

37

0 x00

38

0 x00

RSSI(可选)

39

0 x2e

校验和

40

0 x33

你能重新格式化吗?

你能把答案改写一下吗?事情搞砸了。

FF FE父网络地址
00 13 A2 00 41 25 E0 B6 64位地址
4E 4F 44 45 31 32 33 00 NI取值
FF FE网络地址
01设备类型
00状态
C1 05配置ID
10制造商ID
1 e RSSI

谢谢你的回答,其他字段有描述吗?
如果我理解正确,设备类型代表路由器,API或终端设备?
我认为状态0x00是OK的,但其他标志是什么?
我不知道什么是配置文件ID。
制造商ID固定吗?
RSSI到底是哪个信息的强度?发送者最后收到的是什么?
到目前为止谢谢你,我将感激你进一步的帮助。

是的,配置文件ID和制造商ID字段是固定的。它们都是用于Zigbee应用程序的,为了兼容性而被保留下来。