1

我正在从事一个涉及 XBee 系列 2B 无线电的项目,并且可以使用一些建议来确定数据包来自哪个终端设备。该设置包括在 Raspberry Pi Model B 上运行的 Python 2.7 应用程序。

Python-XBee 2.1.0 文档指出: ZigBee 设备扩展了这种行为,包括自动解析“ND”、节点发现、AT 命令响应。ND AT 响应的参数字段将采用以下格式:

{"source_addr": two bytes,
"source_addr_long": eight bytes,
"node_identifier": string,
"parent_address": two bytes,
"device_type": one byte,
"status": one byte,
"profile_id": two bytes,
"manufacturer": two bytes,
}

我认为这意味着 ZigBee 的 I/O 示例消息包含上述参数字段。

source_addr == 是端点收音机的 16 位 MY 参数吗?

可以通过以下方式获得:

ser = serial.Serial('/dev/ttyUSB0', 9600)
xbee = ZigBeer(ser)
myID = xbee.source_addr

谢谢!

4

2 回答 2

1

我认为 I/O 样本是对远程ATIO命令的响应,因此它们将遵循远程 AT 响应的格式,并包含一个短地址和长地址。

在 XBee 模块上,短地址是ATMY,长地址是 和 的ATSH组合ATSL。我不太了解 python-xbee 来说明它们在ZigBee对象中的存储位置。

附加信息:

节点发现不同于发送 I/O 样本。当主机向其本地 XBee 发送 ATND 时,XBee 模块发送一个广播发现消息并将响应传递回主机。主机可以解析来自远程模块的地址和“节点标识符”(ATNI 字符串)的响应。

从这个地址列表中,主机可以向ATIO远程节点发送命令并解析响应。

我对 Python-XBee 库不熟悉,所以不知道它是如何实现节点发现、管理节点表以及向发现的节点发送“远程 AT 命令”的。

于 2013-10-16T21:30:32.453 回答
1

xbee 数据包是一个字典

from xbee import ZigBee 
import serial

ser = serial.Serial('/dev/ttyAMA0', 9600)
xbee_conn=ZigBee(ser)
xbee_conn.at(command='ND')
while True:
    try:
        packet = xbee.wait_read_frame()
        print packet
    except KeyboardInterrupt:
        break
ser.close()

要获取数据,请将其作为 dict 访问:

source_address_long = packet['parameter']['source_addr_long']

希望这可以帮助。

于 2013-11-20T23:26:45.750 回答