Получение данных от нескольких конечных точек XBee Series 2B

Я работаю над проектом, который включает в себя радиостанции XBee Series 2B, и мог бы воспользоваться некоторыми советами относительно определения того, с какого конечного устройства поступают пакеты данных. Установка включает приложение Python 2.7, работающее на Raspberry Pi Model B.

В документации Python-XBee 2.1.0 указано: Устройства ZigBee расширяют это поведение, включая автоматический анализ «ND», «Обнаружение узла», ответы на команды AT. Поле параметра ответа 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 содержат указанное выше поле параметра.

Является ли source_addr == 16-битным параметром MY конечной точки радио?

Можно ли получить с помощью:

ser = serial.Serial('/dev/ttyUSB0', 9600)
xbee = ZigBeer(ser)
myID = xbee.source_addr

Спасибо!


person RoboArch    schedule 16.10.2013    source источник


Ответы (2)


Я думаю, что образцы ввода-вывода являются ответами на удаленную команду ATIO, поэтому они будут следовать формату удаленного ответа AT и включать короткий и длинный адрес.

В модуле XBee короткий адрес — ATMY, а длинный адрес — это комбинация ATSH и ATSL. Я недостаточно хорошо знаю python-xbee, чтобы сказать, где они хранятся в объекте ZigBee.

Дополнительная информация:

Обнаружение узлов отличается от отправки образцов ввода-вывода. Когда хост отправляет ATND на свой локальный XBee, модуль XBee отправляет широковещательное сообщение об обнаружении и передает ответы обратно на хост. Хост может проанализировать ответ на наличие адресов и «идентификатора узла» (строка ATNI) от удаленного модуля.

Из этого списка адресов хост может отправлять ATIO команд удаленным узлам и анализировать ответы.

Я не знаком с библиотекой Python-XBee, поэтому не знаю, как она реализует обнаружение узлов, управление таблицей узлов и отправку «удаленных AT-команд» обнаруженным узлам.

person tomlogic    schedule 16.10.2013
comment
Спасибо за ответ. Это соответствует документации, но мой вопрос больше о том, как программно получить доступ к этой информации с помощью Python2.7/Python-XBee2.1.0 Lib. - person RoboArch; 18.10.2013
comment
Я обновил свой ответ дополнительной (надеюсь, полезной) информацией. Я недостаточно хорошо знаю библиотеку Python-XBee, чтобы предоставлять образцы кода. - person tomlogic; 21.10.2013

Пакет xbee - это дикт

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()

Чтобы получить доступ к данным как к диктовке:

source_address_long = packet['parameter']['source_addr_long']

Надеюсь это поможет.

person bullet117    schedule 20.11.2013