1

私は、XBee シリーズ 2B 無線を含むプロジェクトに取り組んでおり、データ パケットがどのエンド デバイスから送信されているかを判断するためのアドバイスを使用できます。セットアップには、Raspberry Pi Model B で実行される Python 2.7 アプリケーションが含まれます。

Python-XBee 2.1.0 のドキュメントには次のように記載 されています。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ですATSLZigBeepython-xbee については、それらがオブジェクトのどこに格納されているかを十分に知りません。

追加情報:

ノード検出は、I/O サンプルの送信とは異なります。ホストがローカル XBee に ATND を送信すると、XBee モジュールはブロードキャスト検出メッセージを送信し、応答をホストに返します。ホストは、リモート モジュールからのアドレスと「ノード識別子」(ATNI 文字列) の応答を解析できます。

このアドレス リストから、ホストはATIOコマンドをリモート ノードに送信し、応答を解析できます。

私は Python-XBee ライブラリに詳しくないので、ノードの検出、ノード テーブルの管理、および検出されたノードへの「リモート AT コマンド」の送信を実装する方法がわかりません。

于 2013-10-16T21:30:32.453 に答える
1

xbee パケットは dict です

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 に答える