私の設定で何が問題なのかを知ることができたら幸いです。ノードRED v0.17.3のRaspberry Pi 3でXBee APIフレームを読み取ることができません。
私は2つのスクリプト、MACからXEEのAPIフレームパケットを送信するものを(書いたラズベリーパイへのTX/RXポートを経由して、私のMacと接続された一方にUSB経由で接続された一方3.
、ジグビーノードに持っています)とパケットを読み取るもの(piへ)。 2つのスクリプトはpython-xbeeライブラリに基づいています。
import serial
from xbee import XBee, ZigBee
serial_port = serial.Serial('/dev/serial0', 9600)
xbee = ZigBee(serial_port, escaped=True)
while True:
try:
# Receive AT packet
parameter = xbee.wait_read_frame()
print 'parameter='
print parameter
except KeyboardInterrupt:
break
serial_port.close()
最初のスクリプトの出力がされ、次の(送信者):パイで
import serial
from xbee import XBee, ZigBee
serial_port = serial.Serial('/dev/tty.usbserial-A5025UGJ', 9600)
xbee = ZigBee(serial_port, escaped=True)
# coordinator = 00 13 A2 00 40 8B B1 5A
while True:
try:
# Send AT packet
xbee.send('tx',frame_id='A', dest_addr_long='\x00\x13\xA2\x00\x40\x8B\xB1\x5A', data='test')
parameter = xbee.wait_read_frame()
print 'parameter='
print parameter
except KeyboardInterrupt:
break
serial_port.close()
:
Mac上で -
スクリプトは、以下の通りです。 '\ x00'、 'frame_id': 'A'、 'deliver_status': '\ x00'、 'dest_addr': '\ x00 \ x00'、 'd' iscover_status ': '\のX00'、 'ID': 'tx_status'}
2番目のスクリプトの出力は、以下の(受信機)は:= {
パラメータ' source_addr_long ':' '\' x '\ x19 \ x13 \ x13 \ x13 \ x18 \ x18 \ x01 '}
ノードレッド0.17.3を起動し、デバッグ出力モジュールに接続されたシリアル入力モジュールを使用すると、新しい行はchar "\ n"を基にしています。ポートはスクリプト(/ dev/serial0)と同じです。
:[ { "id": "e6aa5379.9fd8c", "type": "debug", "z": "35e84ae.5ae88b6", "name": "", "active": true, "console": "false", "complete": "true", "x": 432.5, "y": 213, "wires": [] }, { "id": "63563843.bba178", "type": "serial in", "z": "35e84ae.5ae88b6", "name": "", "serial": "fbf0b4fa.9b2918", "x": 209.5, "y": 201, "wires": [ [ "e6aa5379.9fd8c" ] ] }, { "id": "fbf0b4fa.9b2918", "type": "serial-port", "z": "", "serialport": "/dev/serial0", "serialbaud": "9600", "databits": "8", "parity": "none", "stopbits": "1", "newline": "\\n", "bin": "false", "out": "char", "addchar": false } ]
は、私が「5000ミリ秒のtimeour後に」スプリットを設定し、ノード「シリアル」の設定を変更し、「バイナリバッファ」をお届けした場合、これは、デバッグビューでの結果であり、
[126,0,125,49,144,0,125,51,162,0,64,139,177,76,163,25,1,112,114,111,118,97,13]
誰のXBee APIフレームで入力を分割するための正しい方法を見つける方法を知っていますか?
データは、/ r(改行または10)でなく/ r(戻り値または13)で終了するように見えます。 – hardillb
こんにちは@hardillb、ZigBee APIフレームの最後の文字がチェックサム。 Pythonスクリプトのようにエスケープする方法はありますか? 'xbee = ZigBee(シリアルポート、エスケープ= True)' それ以外の場合は、タイムアウト機能を使用する必要があります。 –
OK、おそらくnpmでノードを探してZigbeeフレームを展開し、新しいノード-REDノードを作成します。 – hardillb