我想使用Digi XStick2 ZB
(通过USB连接并作为/dev/ttyUSB0
上的串行接口)作为一组ZigBee传感器和执行器(温湿度、接触传感器、漏水、电源插头,.)的ZigBee控制器。换句话说,我正在寻找配置mesh网络和与传感器/执行器通信的方法。
我找到了python xbee,并编写了一个简单的python脚本来与USB接口通信:
#!/usr/bin/python
import serial
import time
from xbee import ZigBee
def print_data(data):
print "Data received:", data
serial_port=serial.Serial('/dev/ttyUSB0', 9600)
zbee = ZigBee(serial_port, callback=print_data)
print "Sending some command"
zbee.send("at", frame='A', command='MY', parameter=None)
print "Waiting..."
while True:
try:
time.sleep(0.001)
except KeyboardInterrupt:
break
zbee.halt()
serial_port.close()
它起作用了,我得到了我的命令的一些回应:
$ ./test.py
Sending some command
Waiting...
Data received: {'status': '\x00', 'frame_id': '\x01', 'parameter': '\x00\x00', 'command': 'MY', 'id': 'at_response'}
但是我找不到关于所使用的协议(即我可以发送的消息的内容)的任何信息--我是否可以使用一些命令引用或协议定义?
或者,是否有更简单的方法(更高级别的库)?通过USB接口控制传感器?
发布于 2017-08-11 11:43:54
和往常一样,我问完后不久就找到了答案.我看上去XBee ZB支持两种模式:
引用如下:
此示例演示AT模式下的XBee操作。AT模式是“透明”模式的同义词。在AT模式下,发送到XBee模块的任何数据都将立即发送到由内存中的目标地址标识的远程模块。当模块处于AT模式时,用户或主机可以通过将模块置于命令模式,然后通过UART端口发送预定义的AT命令来配置该模块。当您不需要经常更改目标地址,或者您有一个非常简单的网络或简单的点对点通信时,这种模式非常有用。对于涉及节点与多个目标对话的大型网络,API模式更有用。在API模式下,不以串行方式发送AT命令,而是组装包含目标地址的数据包。API模式允许您更快地更改目标地址,因为无需输入命令模式。如果用户需要更改远程模块的配置,API模式也很有用。本项目以AT模式操作为重点。
文章包含指向两种模式的文档的链接:Guide.pdf?version=1&modificationDate=1380318639117&api=v2
下面是一个简短的例子:
#!/usr/bin/python
import serial
import time
from xbee import ZigBee
def print_data(data):
print "Data received:", data
serial_port=serial.Serial('/dev/ttyUSB0', 9600)
xbee = ZigBee(serial_port, callback=print_data)
xbee.send("at", frame='A', command='SH', parameter=None)
xbee.send("at", frame='A', command='SL', parameter=None)
while True:
try:
time.sleep(0.001)
except KeyboardInterrupt:
break
xbee.halt()
serial_port.close()
输出:
Data received: {'status': '\x00', 'frame_id': '\x01', 'parameter': '\x00\x01\x02\x03', 'command': 'SH', 'id': 'at_response'}
Data received: {'status': '\x00', 'frame_id': '\x01', 'parameter': '\x04\x05\x07\x07', 'command': 'SL', 'id': 'at_response'}
这将检索控制器的序列号(本例中为01020304050607
)。
希望它能帮到别人。
https://stackoverflow.com/questions/45633767
复制相似问题