В этом примере показано, как использовать библиотеку Toolbox™ коммуникаций для протокола ZigBee ® для генерации и декодирования систем координат NET спецификации ZigBee [1].
Стандарт ZigBee задает сетевой (NET или NWK) и прикладной (APP или APL) слои для низкоскоростных беспроводных персональных сетей. Эти спецификации уровня NET и APP основаны на спецификациях PHY и MAC IEEE ® 802.15.4™ [2]. Устройства ZigBee находят применение в домашней автоматизации и сенсорных сетях и имеют большое значение для тренда Интернета вещей (IoT).
Зигби. Объект строения NETFrameConfig используется как при генерации, так и при декодировании систем координат ZigBee NET. Такие объекты описывают кадр NET-уровня и определяют его тип системы координат и все применимые свойства. Зигби. Функция NETFrameGenerator принимает zigbee. Объект NETFrameConfig, описывающий систему координат, и, опционально, полезную нагрузку NET-уровня (система координат уровня APP) в байтах (двух символов) и выходах системы координат NET в байтах. Зигби. Функция NETFrameDecoder принимает блок NET Protocol Data Unit (NPDU) в байтах и выводит zigbee. Объект NETFrameConfig, описывающий систему координат и, возможно, система координат в байтах. Пункт 3.3 в [1] описывает форматы систем координат.
В этом разделе декодируются системы координат NET, переданные с коммерческого радио ZigBee, обеспечивающего домашнюю автоматизацию и записанные с помощью B200-mini радио USRP ® и пакета поддержки Communications Toolbox для радио USRP ®.
Зигби. Функция NETFrameDecoder может декодировать системы координат данных ZigBee NET-уровня и заголовок типов систем координат net-command.
load zigbeeNETCaptures % netFrame [netConfig, netPayload] = zigbee.NETFrameDecoder(netFrame); netConfig
netConfig = NETFrameConfig with properties: FrameType: 'Data' ProtocolVersion: 'ZigBee 2007' SequenceNumber: 212 Addressing: SourceAddress: '0000' DestinationAddress: '35EA' IEEEAddressing: 'None' Security: Security: 1 DataEncryption: 0 MICLength: 0 KeyIdentifier: 'Network' ExtendedNonce: 1 FrameCounter: 193458 SecuritySourceAddress: '24FD5B00000014B6' KeySequence: 0 Routing: Radius: 30 DiscoverRoute: 1 SourceRouting: 1 RelayIndex: 0 RelayList: [0x4 char] Multicast: Multicast: 0
Обратите внимание, что декодирование NET-уровня указывает, что полезная нагрузка NET-уровня зашифрована (Security = true). Безопасность может использоваться как в сети, так и на прикладном слое; эта система координат использует защиту слоя сети. С одной стороны, поле DataEncryption является ложным в системе координат, и длина кода целостности сообщения (MIC) равна нулю, что указывает на то, что используется уровень безопасности # 0 и что полезная нагрузка не зашифрована. Однако, согласно стандарту ZigBee (пункт 4.4.1.2 в [1]), эти два поля перезаписываются значениями, локально сохраненными во время настройки сети. В этом случае эта система координат был защищаема уровнем безопасности # 5, что означает, что NET-полезная нагрузка зашифрована и что длина MIC составляет 32 бита.
Зигби. Функция NETFrameGenerator может сгенерировать небезопасные системы координат данных ZigBee NET-уровня. Объект строения может быть дополнительно настроен.
netConfig = zigbee.NETFrameConfig('SequenceNumber', 123, 'DestinationAddress', 'E568'); numOctets = 50; payload = dec2hex(randi([0 2^8-1], numOctets, 1), 2); netFrame = zigbee.NETFrameGenerator(netConfig, payload);
Можно дополнительно исследовать следующие функции генератора и декодирования, а также объект строения:
ZigBee Alliance, Технический документ ZigBee 053474r17, 2007
IEEE 802.15.4-2011 - Стандарт IEEE для местных и столичных сетей - Часть 15.4: Низкоскоростные беспроводные персональные сети (LR-WPAN)