2017-08-11 18 views
0

ZigBeeセンサーとアクチュエータ(温度と湿度、接触センサー、水漏れ、電源プラグなど)のためのZigBeeコントローラーとしてDigi XStick2 ZB(USB経由で接続し、シリアルインターフェースとして/dev/ttyUSB0に表示) 。言い換えれば、メッシュネットワークを構成し、センサ/アクチュエータと通信する方法を探しています。xbee.send()経由で送信されるコマンドのプロトコルは何ですか?

私はpython xbeeを発見し、USBスティックと通信するための簡単なPythonスクリプトを書いた:「

$ ./test.py 
Sending some command 
Waiting... 
Data received: {'status': '\x00', 'frame_id': '\x01', 'parameter': '\x00\x00', 'command': 'MY', 'id': 'at_response'} 

しかし、私は次のことができます。

#!/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() 

それが動作する、と私は私の命令にいくつかの応答を取得使用されるプロトコル(すなわち、私が送ることができるメッセージの内容)について何かを見つける - 私が使用できるいくつかのコマンドリファレンスまたはプロトコル定義はありますか?

また、USBスティック経由でセンサを制御するための簡単な方法(高レベルライブラリ?)がありますか? ATモード

にいつものように

答えて

0

は、私がのXBee ZB 2つのモードをサポートしていますように私は見えます...すぐに尋ねた後、答えを見つけました見積もり:

この例では、ATモードでのXBee操作を示しています。 ATモードは は "透過"モードと同義です。 ATモードでは、 XBeeモジュールに送信されたデータは、すぐにメモリの宛先アドレス によって識別されるリモートモジュールに送信されます。モジュールがATモードのときは、ユーザまたはホストのマイクロコントローラが モジュールをコマンドモードにしてから、あらかじめ定義されたATコマンド をUARTポートに送信することによって、 を設定することができます。このモードは、 の宛先アドレスを頻繁に変更する必要がない場合や、非常に単純な ネットワークを持つ場合、または単純なポイントツーポイント通信の場合に便利です。ノードが複数のターゲットと通信する大規模なネットワーク の場合、APIモードはより多くの です。 APIモードでは、シリアルにATコマンドを送信するのではなく、宛先アドレスを含むデータ パケットが組み立てられます。 APIモード では、 コマンドモードを入力する必要がないため、宛先アドレスをより迅速に変更することができます。 APIモードは、 ユーザがリモートモジュールの設定を変更する必要がある場合にも便利です。この プロジェクトは、ATモード操作に焦点を当てています。

記事は、両方のモードのドキュメントへのリンクが含まれていますhttps://eewiki.net/download/attachments/24313921/XBee_ZB_User_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)。

誰かを助けることを願っています。

関連する問題