如何使用python digi-xbee库向xbee设备发送远程AT命令

时间:2018-03-03 20:31:28

标签: python xbee

正如标题所说,我正在寻找一种方法将AT命令发送到远程xbee并读取响应。 我的代码是在python中,我使用的是digi-xbee库。

另一个问题:我使用AT命令的目的是获取该远程xbee设备的节点ID,当最后一个向我发送消息时,我不想对网络进行全面扫描,我只是想获得它的节点ID,显然节点id不会进入帧内。所以我不得不向它发送一个AT命令,所以他把它的节点ID发回给我。如果您有任何可能有用的建议,请告诉我,我们可以提供任何有用的建议。

PS。我试图在回调函数中使用read_device_info(),该函数在收到数据时启动,但它没有工作。它在函数之外工作但不在内部!

提前致谢

2 个答案:

答案 0 :(得分:0)

当您收到消息时,您会收到一个xbee_message对象,首先您必须定义一个数据接收回调函数并将其添加到设备。在该消息中,您调用remote_device_get_64bit_addr()。

答案 1 :(得分:0)

有一种向远程Xbee发送命令的方法:首先,连接到本地XBee,然后将命令发送到本地Xbee,以便本地Xbee可以将remote_command发送到远程XBee。

以下是详细信息:

  1. 创建命令的字节数组。例如:

我的命令是:7E 00 10 17 01 00 13 A2 00 41 47 XX XX FF FE 02 50 32 05 C5,使用XCTU生成。将远程XBee的引脚DIO12设置为digital out, high [5]是一个远程AT命令。创建一个原始字节数组。

  

raw = bytearray([0x7E,0x00,0x10,0x17,0x01,0x00,0x13,0xA2,0x00,0x41,0x47,0xXX,0xXX, 0xFF,0xFE,0x02,0x50,0x32,0x05,0xC5])

  1. 创建数据包:使用from digi.xbee.packets.common import RemoteATCommandPacket
  

ATpacket = RemoteATCommandPacket.create_packet(raw, OperatingMode.API_MODE)

  1. 将数据包发送到本地XBee:
  

device.send_packet(ATpacket)

奖金:创建数据包的更简单方法:

  

ATpacket = RemoteATCommandPacket(1,XBee16BitAddress.from_hex_string("0013A2004147XXXX"),XBee16BitAddress.from_hex_string("FFFE"),2,"P2",bytearray([0x05]))