Я считаю, что вам нужен Серийный номер XBee, который является уникальным в глобальном масштабе 64-битным адресом, который идентифицирует это устройство.
Доступны две команды AT: SH и SL , которые дают старшие и младшие 32 бита серийного номера. В дистрибутиве xbee-arduino есть пример программы, которая печатает их значения: AtCommand.pde
Затем эта программа выполняет команду AI , которая возвращает байт, указывающий состояние последнего запроса на присоединение к сети. Это вернет 0x00
в случае успеха.
Устройство ZigBee также имеет 16-битный адрес (используйте команду MY ), который гарантированно будет уникальным только в своей сети. С модемами XBee в стабильной сети это не изменится, если не произойдет конфликт адресов, но вам, вероятно, будет лучше использовать полное 64-битное значение, определенное с помощью SH и SL .
Все эти команды предполагают, что XBee, который вас интересует, подключен напрямую к Arduino. Все они могут быть выполнены удаленно, используя RemoteATCommand
, но для этого требуется, чтобы вы передали последовательный номер удаленного модема, поэтому, если вы можете успешно выполнить вызов, то у вас уже был адрес.
Если интересующий вас XBee не подключен к Arduino, то вам нужно будет использовать команду ND (Node Discover) для сканирования сети. Я недостаточно знаком с API xbee-arduino, чтобы знать, делают ли они это доступным, но получение информации о каждом узле по мере его обнаружения требует немного больше работы.