Что такое zigbee: устройства, протокол, скорость, технология
Содержание:
- ZigBee Documentation
- Радиомодуль
- ZigBee RF4CE
- 4. Usage
- Что такое протокол ZigBEE
- Софт для работы с ZigBee
- ZigBee Dongles and Chipsets
- Области применения
- Tuya Zigbee датчик температуры и влажности с LCD дисплеем TS0201
- NWK layer
- PHY
- Описание
- Безопасность ZigBee
- 6.2 Организация передачи данных на центральный узел сбора
- Приложения
- Начало работы
- Программное и аппаратное обеспечение
- PHY
- INFO
- MAC
- История
ZigBee Documentation
Some documentation used to create parts of this framework is copyright ZigBee Alliance, Inc. All rights Reserved. The following copyright notice is copied from the ZigBee documentation.
Elements of ZigBee Alliance specifications may be subject to third party intellectual property rights, including without limitation, patent, copyright or trademark rights (such a third party may or may not be a member of ZigBee). ZigBee is not responsible and shall not be held responsible in any manner for identifying or failing to identify any or all such third party intellectual property rights.
No right to use any ZigBee name, logo or trademark is conferred herein. Use of any ZigBee name, logo or trademark requires membership in the ZigBee Alliance and compliance with the ZigBee Logo and Trademark Policy and related ZigBee policies.
This document and the information contained herein are provided on an “AS IS” basis and ZigBee DISCLAIMS ALL WARRANTIES EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO (A) ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OF THIRD PARTIES (INCLUDING WITHOUT LIMITATION ANY INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENT, COPYRIGHT OR TRADEMARK RIGHTS) OR (B) ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN NO EVENT WILL ZIGBEE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND, IN CONTRACT OR IN TORT, IN CONNECTION WITH THIS DOCUMENT OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
All Company, brand and product names may be trademarks that are the sole property of their respective owners.
Радиомодуль
Для быстрого старта, когда нет желания или возможности разбираться с программным стеком ZigBee, стоит обратить внимание на модули ETRX357. Все модули имеют встроенную прошивку от производителя, которая позволяет работать с аналоговой и цифровой периферией, а также с сетевыми функциями, с помощью набора AT-команд
Для начала работы с радиомодулем достаточно подключить линии питания и линии TxD и RxD последовательного интерфейса UART.
В стандартную прошивку входит также ряд функций, которые могут вызываться по прерыванию от порта ввода/вывода, таймера/счетчика или при определенных событиях – подключение к сети или инициализация радиомодуля. Пример доступных функций:
- Переключение состояния порта ввода/вывода
- Отправка информации на узел сбора данных о состоянии 16 цифровых выводов радиомодуля, оцифрованных данных от подключенных датчиков и информацию об уровене напряжения питания
- Переход в активный режим или режим энергосбережения
- Открытие «прозрачного канала» с другим устройством в сети
Пару слов о «прозрачном канале». При переходе в данный режим вся информация, поступающая по интерфейсу UART на радиомодуль транслируется на интерфейс UART другого радиомодуля. Данный канал является двунаправленным, а также наследует преимущества технологии ZigBee – при наличии роутеров в сети не будет происходить потери данных в таком канале связи так как все пакеты «прозрачного канала» будут в случае необходимости автоматически ретранслироваться. За счет этого можно организовать канал связи с предельной дальностью в несколько километров.
ZigBee RF4CE
3 марта 2009 концерн RF4CE (Радиочастоты для бытовой электроники) согласился работать с альянсом ZigBee для совместного распространения стандартизированной спецификации, предназначенной для радиочастотного дистанционного управления. ZigBee RF4CE был разработан для широкого употребления в дистанционно управляемой аудио/видео продукции, такой как телевизоры и телеприставки. Это обещает множество преимуществ по сравнению с существующими техническими решениями для дистанционного управления, включая расширение связей, повышение надежности работы, расширенные возможности и гибкость, совместимость, и ухода от барьера прямой видимости.
4. Usage
var ZShepherd = require('zigbee-shepherd'); var shepherd = new ZShepherd('/dev/ttyUSB0'); // create a ZigBee server shepherd.on('ready', function () { console.log('Server is ready.'); // allow devices to join the network within 60 secs shepherd.permitJoin(60, function (err) { if (err) console.log(err); }); }); shepherd.start(function (err) { // start the server if (err) console.log(err); });
Interact with remote endpoints, here is a quick example:
// find the joined endpoint by its address and endpoint id var ep = shepherd.find('0x00124b0001ce4beb', 6); // returns undefined if not found // use foundation command to read attributes from a remote endpoint ep.foundation('genBasic', 'read', { attrId: 3 }, { attrId: 4 } , function (err, rsp) { if (!err) console.log(rsp); // [ // { attrId: 3, status: 0, dataType: 32, attrData: 0 }, // { attrId: 4, status: 0, dataType: 66, attrData: 'TexasInstruments' } // ] }); // or use the shorthand read() method to read a single attribute ep.read('genBasic', 'manufacturerName', function (err, data) { if (!err) console.log(data); // 'TexasInstruments' }); // use functional command to operate a remote endpoint ep.functional('genOnOff', 'toggle', {}, function (err, rsp) { if (!err) console.log(rsp); // { cmdId: 2, statusCode: 0 } });
Что такое протокол ZigBEE
ZigBee — один из протоколов, который используют для домашней автоматизации. Его поддержкой наделяют умные лампочки, беспроводные выключатели, датчики движения и прочие устройства, которые повышают комфорт. Но насколько они безопасны? В этой статье я расскажу, как устроен ZigBee, и покажу, при помощи каких устройств и программ возможно произвести взлом систем умного дома.
Почему в системах умного дома используется ZigBee?
Конечно, этот протокол не нов — стандарт появился еще в 2003 году. Сегодня есть более современные аналоги вроде LoRaWAN и RPMA, но ZigBee продолжает быть популярным. Почему? Взгляни на картинку.
Помимо дальности и скорости здесь учтена стоимость. И сразу видно, что ZigBee отлично сбалансирован и при невысокой цене дает приемлемые дальность действия и скорость передачи данных. Вряд ли тебе понадобится стримить видео в 4K на выключатель, а чтобы что-то сделать издалека, обычно используется подключенный к интернету хаб. Вот и получается, что ZigBee не сильно бьет по карману при создании умного дома и покрывает основные нужды.
К тому же более новые протоколы могут таить неприятные сюрпризы. Например, в разговорах о LoRa я уже несколько раз слышал от интеграторов, что при большом количестве устройств в сети могут начаться чудеса. Говорят, что на опрос сотни девайсов может уйти около часа.
Софт для работы с ZigBee
Далее небольшим списком перечислю, какие есть инструменты для взлома изучения ZigBee.
- KillerBee — в описании говорится, что это фреймворк и утилиты для атак на сети ZigBee и IEEE 802.15.4 networks. В списке поддерживаемого железа много всего устаревшего (например, Atmel RZ RAVEN USB Stick, который снят с производства). Заявлено, что есть поддержка Texas Instruments CC2531, но прошивка имеет статус beta и работает только на прослушивание трафика.
- Attify ZigBee Framework — считай, то же самое, что и KillerBee, но с графическим интерфейсом.
- SecBee — для работы требует Scapy-radio, KillerВee и GNU Radio block, а из железа подавай уже SDR — и, как пишет разработчик, лучше всего USRP.
- Z3sec — для полноценной работы тоже требует много дополнительных пакетов. Из железа поддерживается Ettus USRP или железо, совместимое с KillerBee.
Получается, что разнообразие только кажущееся — и обычно нужно либо дорогущее железо (SDR), либо старье вроде Atmel RZ RAVEN USB Stick. Поэтому я решил разработать свою утилиту — pwnrf. Работа еще не закончена, поэтому и внешний вид пока соответствующий.
Моя основная задумка — реализовать возможность собирать произвольные пакеты ZigBee/IEEE 802.15.4. Причем как валидные, где проверяются форматы, содержимое полей, так и произвольные фреймы, чтобы можно было искать логические ошибки. Ну и, конечно, утилита будет работать в режиме сниффера. Из железа планируется поддерживать CC2531, CC1352 либо любой другой трансивер, с которым можно связаться через UART/Serial.
ZigBee Dongles and Chipsets
The following table provides a summary of some of the dongles / chipsets that are available on the market and their support within the library. Receive sensitivity and transmit power are the main parameters affecting RF performance — it should be noted that regulations may reduce transmit power in some areas of the world and other factors can also impact performance.
Model | Support | Receive | Transmit | Antenna |
---|---|---|---|---|
Xbee XU-Z11 | Yes | -90dBm | +4.5dBm | Internal |
EM358 | Yes (EZSP) | -100dBm | +8.0dBm | Internal |
EFR32 | Yes (EZSP) | |||
EM358LR | Yes (EZSP) | -103dBm | +20.0dBm | Internal |
MGM111 | Yes (EZSP) | -99dBm | +10.0dBm | Internal |
RaspBee | Yes (CONBEE) | -105dBm | +8.7dBm | Internal |
ConBee | Yes (CONBEE) | -105dBm | +8.7dBm | Internal |
CC2530 | Yes (ZNP) | -97dBm | +4.5dBm | |
CC2531 | Yes (ZNP) | -97dBm | +4.5dBm | |
CC2538 | Yes (ZNP) | -97dBm | +7.0dBm | |
CC2650 | Yes (ZNP) | -100dBm | +5.0dBm | |
ATSAMR21 | No | -99dBm | +4.0dBm | |
JN5169 | No | -96dBm | +10.0dBm | |
HUSBZB-1 | Yes (EZSP) | Internal | ||
Telegesis ETRX3 | Yes (Telegesis) | Internal | ||
Qivicon Funkstick | Yes (Telegesis) | Internal |
- Receive: Defines the typical receive performance. A lower number is best.
- Transmit: Defines the maximum output power. A higher number is best.
Области применения
Основными областями применения технологии ZigBee являются беспроводные сенсорные сети, автоматизация жилья («Умный дом» и «Интеллектуальное здание»), медицинское оборудование, системы промышленного мониторинга и управления, а также бытовая электроника и «периферия» персональных компьютеров.
Способность к самоорганизации и самовосстановлению, ячеистая (mesh-) топология, защищённость, высокая помехоустойчивость, низкое энергопотребление и отсутствие необходимости получения частотного разрешения делают ZigBee-сеть подходящей основой для беспроводной инфраструктуры систем позиционирования в режиме реального времени (RTLS).
Tuya Zigbee датчик температуры и влажности с LCD дисплеем TS0201
Внешний вид и комплектация
На фото он выглядит больше, чем в реальности. Маленький и круглый. Диаметр 61.2 мм, толщина 23 мм. В комплекте датчик, инструкция, двусторонний скотч для крепления к вертикальным поверхностям и подставка для расположения на столе, полке или прикроватной тумбочке.
Вверху кнопка, которую в инструкции назвали «reset». Она нужна для сопряжения с координатором и для повторного измерения температуры и влажности.
Внизу отверстия для доступа воздуха к датчику.
С обратной стороны отсек для батареек. Для питания требуются две батарейки ААА, которых в комплекте нет.
Вставляем батарейки и датчик сразу же будет показывать текущую температуру и влажность воздуха, а также заряд батарей. LCD дисплей имеет хорошие углы обзора, все чётко читаемо со всех сторон.
Диапазон измерения температуры: от -10°С до +55°С. Диапазон измерения влажности: от 0% до 99%.
Подставка из такого же пластика, что и корпус датчика. Вставляется в предназначенное для нее отверстие довольно плотно и позволяет расположить датчик под удобным углом для чтения показаний.
Добавление к Tuya Smart
Добавим датчик температуры к Tuya Zigbee шлюзу. Для этого в приложении Tuya Smart переходим в Zigbee контроллер и жмем кнопку «Добавить» в самом низу.
Нам сообщат каким образом произвести сброс устройства, чтобы выполнить сопряжение со шлюзом.
В случае с этим датчиком температуры и влажности нужно нажать и удерживать кнопку в течение пяти секунд, пока не начнет мигать индикатор уровня сигнала рядом с индикацией батареи.
Жмем кнопку «Светодиод мигает» и будет выполнен поиск. Датчик сразу же определился и был сопряжен со шлюзом.
В своей карточке показывает температуру, влажность и уровень заряда батареи. Есть возможность смотреть графики за предыдущие периоды.
В настройках есть возможность переименовать датчик, изменить иконку, задать расположение, настроить автоматизации и выполнить обновление прошивки. Там же можно добавить датчик к сторонним сервисам, например, к Алексе.
Если включить функцию «Оффлайн-уведомление», то уведомление о том, что устройство не в сети будет отправлено через 8 часов.
Добавление в Home Assistant
Теперь добавим датчик к Home Assistant через Zigbee2Mqtt. Ставим permit_join в режим true и выполняем сброс настроек датчика, зажав верхнюю кнопку на пять секунд, пока не замигает индикатор уровня сигнала. Смотрим лог Zigbee2Mqtt:
В Zigbee2Mqtt датчик распознался как Temperature & humidity sensor with display (TS0201)
Переходим в Настройки > Интеграции > MQTT и находим карточку добавленного датчика.
Есть возможность мониторить температуру, влажность, уровень сигнала и уровень батареи.
NWK layer
Вот так выглядит фрейм во всей красе на уровне NWK. Не забываем, что раз мы уже тут, данные будут упакованы в Data Frame уровня MAC.
Как видишь, на уровне NWK тоже встречаются несколько разновидностей фреймов. Но прежде чем о них говорить, думаю, стоит осветить вопросы адресации в сетях ZigBee. Потому что тебя, наверное, уже терзают вопросы, что такое Dst Addr, Src IEEE Addr и тому подобные вещи.
Адресация в сетях ZigBee
Начнем, пожалуй, с PAN ID, или Personal Area Network ID. Он используется для логического отделения узлов одной сети ZigBee от узлов другой, если сети расположены на одной и той же территории либо работают на одном и том же канале.
EPIND — Extended PAN ID, глобальный 64-битный уникальный идентификатор. Используется для избегания конфликтов PAN ID.
Src/Dst Addr — собственно, адрес отправителя и получателя. Могут быть как короткими (16-битными), так и длинными (64-битными). Причем если 64-битный адрес используется на слое NWK, то это и будет как раз Src/Dst IEEE addr. Он считается уникальным для каждого приемопередатчика ZigBee.
Ну и чтобы лучше понимать устройство адресов, посмотрим часть дампа трафика в Wireshark.
Сейчас пока важно понять, что Src/Dst Addr на уровнях MAC и NWK — это одни и те же адреса. NWK Data frame — служит для передачи более высокоуровневых слоев
Тут все просто
NWK Data frame — служит для передачи более высокоуровневых слоев. Тут все просто.
NWK Cmd frame — как раз тут и творится основная «магия» маршрутизации данных, построения mesh-сети и подключения/отключения узлов.
Список основных команд представлен ниже.
Про Inter-PAN, увы, не скажу ничего, так как он загадочен. Его основная задача — пересылка данных между узлами, которые находятся в разных сетях, но документации по этой теме очень немного.
PHY
Итак, начнем изучение с PHY, физического уровня, и будем подниматься вверх по слоям.
ZigBee, а точнее, IEEE 802.15.4 может работать в трех частотных диапазонах.
И, как ты можешь заметить, если выбрать для него частоту 2,4 ГГц, то Wi-Fi и ZigBee могут начать мешать друг другу. Для уменьшения перекрестных помех между Wi-Fi и ZigBee лучше выбирать следующие каналы.
Что не может не радовать, в стандарте есть такое понятие, как ED — Energy Detection. Эта фича используется в координаторе умного дома, чтобы он выбирал канал, где меньше всего помех.
Общий вид посылки для PHY имеет следующий вид.
Если у тебя дома завалялся SDR и ты желаешь контролировать каждый-прекаждый битик в модуляции OQPSK, то тебе поможет вот эта схема.
Этот вид модуляции как раз и применяется на частоте 2,4 ГГц. А мы тем временем идем дальше выше по стеку протоколов, и нас ждет уровень MAC.
Описание
ZigBee — стандарт для набора высокоуровневых протоколов связи, использующих небольшие, маломощные цифровые трансиверы, основанный на стандарте IEEE 802.15.4-2006 для беспроводных персональных сетей, таких как, например, беспроводные наушники, соединённые с мобильными телефонами посредством радиоволн коротковолнового диапазона. Технология определяется спецификацией ZigBee, разработанной с намерением быть проще и дешевле, чем остальные персональные сети, такие как Bluetooth. ZigBee предназначен для радиочастотных устройств, где необходима длительная работа от батареек и безопасность передачи данных по сети.
Альянс ZigBee является органом, обеспечивающим и публикующим стандарты ZigBee, он также публикует профили приложений, что позволяет производителям изначальной комплектации создавать совместимые продукты. Текущий список профилей приложений, опубликованных, или уже находящихся в работе:
- Домашняя автоматизация
- Рациональное использование энергии (ZigBee Smart Energy 1.0/2.0)
- Автоматизация коммерческого строительства
- Телекоммуникационные приложения
- Персональный, домашний и больничный уход
- Игрушки
Сотрудничество между IEEE 802.15.4 и ZigBee подобно тому, что было между IEEE 802.11 и альянсом Wi-Fi. Спецификация ZigBee 1.0 была ратифицирована 14 декабря 2004 и доступна для членов альянса ZigBee. Сравнительно недавно, 30 октября 2007 г., была размещена спецификация ZigBee 2007. О первом профиле приложения — «Домашняя автоматизация» ZigBee, было объявлено 2 ноября 2007.
ZigBee работает в промышленных, научных и медицинских (ISM-диапазон) радиодиапазонах: 868 МГц в Европе, 915 МГц в США и в Австралии, и 2.4 ГГц в большинстве стран в мире (под большинством юрисдикций стран мира). Как правило, в продаже имеются чипы ZigBee, являющиеся объединёнными радио- и микроконтроллерами с размером Flash-памяти от 60К до 128К таких производителей, как Jennic JN5148, Freescale MC13213, Ember EM250, Texas Instruments CC2430, Samsung Electro-Mechanics ZBS240 и Atmel ATmega128RFA1. Радиомодуль также можно использовать отдельно с любым процессором и микроконтроллером. Как правило, производители радиомодулей предлагают также стек программного обеспечения ZigBee, хотя доступны и другие независимые стеки.
Так как ZigBee может активироваться (то есть переходить от спящего режима к активному) за 15 миллисекунд или меньше, задержка отклика устройства может быть очень низкой, особенно по сравнению с Bluetooth, для которого задержка, образующаяся при переходе от спящего режима к активному, обычно достигает трёх секунд.
Так как ZigBee большую часть времени находится в спящем режиме, уровень потребления энергии может быть очень низким, благодаря чему достигается длительная работа от батарей.
Первый выпуск стека сейчас известен под названием ZigBee 2004. Второй выпуск стека называется ZigBee 2006, и, в основном, заменяет структуру MSG/KVP, использующуюся в ZigBee 2004 вместе с «библиотекой кластеров». Стек 2004 года сейчас более или менее вышел из употребления.
Реализация ZigBee 2007 в настоящее время является текущей, она содержит два профиля стека, профиль стека № 1 (который называют просто ZigBee) для домашнего и мелкого коммерческого использования, и профиль стека № 2 (который называют ZigBee Pro). ZigBee Pro предлагает больше функций, таких как широковещание, маршрутизацию вида «многие-к-одному» и высокую безопасность с использованием симметричного ключа (SKKE), в то время как ZigBee (профиль стека № 1) занимает меньше места в оперативной и Flash-памяти. Оба профиля позволяют развернуть полномасштабную сеть с ячеистой топологией и работают со всеми профилями приложений ZigBee.
ZigBee 2007 полностью совместим с устройствами ZigBee 2006. Устройство ZigBee 2007 может подключаться и работать с сетью ZigBee 2006, и наоборот. В связи с наличием различий в опциях маршрутизации, устройства ZigBee Pro могут быть только конечными устройствами (ZEDs) сетей ZigBee 2006, и наоборот, устройства ZigBee 2006 и ZigBee 2007 могут быть только конечными устройствами в сети ZigBee Pro. При этом приложения, которые запускаются на устройствах, работают одинаково, независимо от реализации профиля стека.
Безопасность ZigBee
Когда заходит речь про безопасность ZigBee, многие источники говорят, что у ZigBee может быть либо централизованная система безопасности, либо децентрализованная — и что данные шифруются при помощи AES-128 на уровнях NWK и/или APL. Но очень часто почему-то забывают сказать, что так как ZigBee базируется на IEEE 802.15.4, этот стандарт тоже предоставляет кое-какие возможности в плане безопасности и дает возможность провести взлом систем умного дома по этому протоколу.
Когда выставлен третий бит в FC (Frame Control), у нас появляется дополнительный заголовок AUX Security Header, который, в свою очередь, определяет уровень безопасности (Security Level), а также включает в себя 32-битный счетчик, позволяющий исключить простейшие атаки типа replay. Про Security Level мы поговорим буквально через пару абзацев.
Распределенная модель
Распределенная модель безопасности считается менее надежной, но более простой в реализации.
Распределенная модель безопасности
Как видно, в этом случае могут быть только два типа устройств — роутеры и конечные устройства (end device). Роутеры могут создавать сеть и генерировать ключ к сети (network key). Чтобы устройства могли подключиться к такой сети, они должны иметь pre-configured link key.
Централизованная модель
Как понимаешь, посредственный уровень безопасности — не наш путь, поэтому при реализации умного дома лучше выбирать централизованную модель безопасности.
Централизованная модель безопасности
В этом случае координатор не только выполняет функции организации и построения сети, но также является центром доверия (Trust Center, TC). Он выбирает ключ шифрования для уровней NWK и APL и отвечает за подключение новых узлов.
Когда мы рассматривали фреймы NWK, ты мог обратить внимание на AUX NWK Header. Это как раз дополнительный заголовок, который появляется, если включено шифрование на уровне NWK
Формат фрейма с учетом шифрования представлен ниже.
AUX NWK Header появляется тогда, когда в заголовке Frame Control из NWK выставлен соответствующий бит.
Для уровня APL фрейм выглядит аналогичным образом.
Думаю, тебя уже давно мучает вопрос, что это за «уровень безопасности» (Security level) и знакомая аббревиатура MIC (Message Integrity Code). Ответ на этот вопрос дан в таблице ниже.
Как видишь, ZigBee и IEEE 802.15.4 позволяют использовать только проверку целостности полученного фрейма. Для этого как раз служит MIC — либо можно включить для фреймов шифрование AES-128.
6.2 Организация передачи данных на центральный узел сбора
Для того, чтобы спящие конечные устройства автоматически присылали данные на центральное устройство, воспользуемся встроенной функцией, которая может быть вызвана по прерыванию или событию. В нашей задаче мы хотим получать информацию о температуре через определенные интервалы времени. Поэтому необходимо воспользоваться одним из встроенных таймеров, который и будет вызывать встроенную функцию. Пусть прерывание от таймера/счетчика 7 будет возникать каждые 10 секунд. Для задания порога срабатывания таймера/счетчика 7 используется регистр S37. Пороговое значение в секундах определяется по следующей формуле:
Номер вызываемой по прерыванию от таймера/счетчика 7 функции записывается в регистр S38. Необходимая нам функция имеет номер 0110, которая отправляет данные о состоянии всех портов ввода/выывода, напряжении питания и оцифрованные значения АЦП на Sink-узел. Для того, чтобы она автоматически перезапускала таймер, необходимо старший бит (S38F) в регистре S38 установить в 1. Итоговое значение, которое необходимо записать – 8110. Об этой возможности встроенной прошивки можно почитать в документации. Ниже дана краткая информация о том, что такое Sink-узел.
Sink-узлы
Каждое устройство в сети ZigBee имеет собственный уникальный короткий идентификатор (PANID). Координатор всегда имеет короткий адрес 0000 и очень часто именно его делают центральным узлом сбора данных. Однако, бывают случаи, когда координатором является устройство, не имеющее внешних интерфейсов (UART, SPI и т.д.) и требуется отправлять данный с датчиков на какой-то другой узел. Одно из решений – в собственном приложении, взаимодействующем с модулями ETRX357, вручную задать адрес устройства, которое будет собирать и обрабатывать поступающую информацию. Недостатки данного подхода:
- если используется короткий идентификатор при отправке адресных сообщений с данными:
- устройство сбора данных может при определенных обстоятельствах покинуть сеть и при переподключении ему будет выдан новый идентификатор
- короткий идентификатор выдается при подключении узла к сети. В связи с этим могут возникнуть сложности с настройкой узлов, которые должны передавать пакеты данных на узел сбора данных
- если используется длинный идентификатор при отправке адресных сообщений с данными:
Для того, чтобы упростить механизм отправки данных на определенные узлы в сети, в стандартной прошивке модулей ETRX357 имеется специальная надстройка — стать Sink-узлом — которую может задействовать любой роутер в сети. Чтобы сделать роутер Sink-узлом, 4 бит в регистре S10 необходимо установить в единицу. Во всех узлах, которые используют встроенные функции, отправляющие данные на Sink, или же желающие использовать специальную команду для отправки сообщений на Sink, необходимо установить 8 бит в регистре S10 или использовать команду AT+SSINK для осуществления поиска ближайшего Sink-узла. Sink-устройство периодически отправляет широковещательные сообщения в сеть и все узлы, получившие его, делают запись в своей адресной таблице. В случае большой сети, вводят несколько Sink-узлов, которые принимают данные от ближайших соседей. Устройства, отправляющие данные на Sink-узел, автоматически выбирают наиболее подходящий узел сбора данных, используя информацию о качестве связи. Это позволяет разгрузить устройства сбора данных, а также предотвратить сбои в получении данных, так как в случае выхода из строя одного из Sink-узлов сеть автоматически перестроит маршруты.
После этого можно отправлять данные на Sink с помощью команды AT+SCAST:
Приложения
Протоколы ZigBee разработаны для использования во встроенных приложениях, требующих низкую скорость передачи данных и низкое энергопотребление. Цель ZigBee — это создание недорогой, самоорганизующейся сети с ячеистой топологией предназначенной для решения широкого круга задач. Сеть может использоваться в промышленном контроле, встроенных датчиках, сборе медицинских данных, оповещении о вторжении или задымлении, строительной и домашней автоматизации и т. д. Созданная в итоге сеть потребляет очень мало энергии — индивидуальные устройства согласно данным сертификации ZigBee позволяют энергобатареям работать два года.. Типовые области приложения:
- Домашние развлечения и контроль — рациональное освещение, продвинутый температурный контроль, охрана и безопасность, фильмы и музыка.
- Домашнее оповещение — датчики воды и энергии, мониторинг энергии, датчики задымления и пожара, рациональные датчики доступа и переговоров.
- Мобильные службы — мобильные оплата, мониторинг и контроль, охрана и контроль доступа, охрана здоровья и телепомощь.
- Коммерческое строительство — мониторинг энергии, HVAC, света, контроль доступа.
- Промышленное оборудование — контроль процессов, промышленных устройств, управление энергией и имуществом.
Существуют три различных типа устройств ZigBee.
- Координатор ZigBee (ZC) — наиболее ответственное устройство, формирует пути древа сети и может связываться с другими сетями. В каждой сети есть один координатор ZigBee. Он и запускает сеть от начала. Он хранит информацию о сети, выступает как доверенный центр и хранит ключи безопасности.
- Маршрутизатор ZigBee (ZR) — Маршрутизатор может выступать в качестве промежуточного маршрутизатора, передавая данные с других устройств. Он также может запускать функцию приложения.
- Конечное устройство ZigBee (ZED) — его функциональная нагруженность позволяет ему обмениваться информацией с материнским узлом (или координатором, или с маршрутизатором), он не может передавать данные с других устройств. Такое отношение позволяет узлу львиную часть времени пребывать в спящем состоянии, что позволяет экономить энергоресурс батарей. ZED требует минимальное количество памяти, и поэтому может быть дешевле в производстве, чем ZR или ZC.
Начало работы
После прошивки zigbee модуля и ESP32, при включении шлюза создается точка доступа zgwABCD, где ABCD — последние символы MAC-адреса ESP32. Далее необходимо с помощью телефона подключиться к новой точке доступа и ввести реквизиты вашей сети Wi-Fi.
После того, как вы подключитесь к шлюзу SLS Zigbee Gateway, вам необходимо зайти на страницу настроек GPIO микроконтроллера (из меню основной страницы Settings -> HW Setup) и выставить настройки портов GPIO. Ниже приведены настройки для круглой платы:
Если шлюз собран и прошит правильно, то на главной странице в разделе Zigbee вы должны увидеть Zigbee DeviceState: 9
Программное и аппаратное обеспечение
Программное обеспечение разработано с целью упрощения процесса построения небольших недорогих микропроцессоров. Радиоразработки, используемые в ZigBee тщательно оптимизированы, чтобы достичь низкой цены среди большого числа продукции этой линейки. Есть несколько аналоговых каскадов, где возможно используются цифровые контуры.
Хотя радиопередатчики сами по себе недороги, процесс квалификации ZigBee включает в себя полную проверку требований на физическом уровне. Такая подробная доводка физического уровня имеет многочисленные преимущества, так как все радиомодули, полученные из этого набора полупроводниковых элементов, будут обладать теми же RF-характеристиками. С другой стороны, если физический уровень будет не сертифицирован, неправильное функционирование может уменьшить длительность работы батарей в других устройствах, включённых в сеть ZigBee. Там где другие протоколы могут скрывать плохую чувствительность или другие скрытые проблемы, что проявляется в искажённой уменьшенной реакции ZigBee радио имеют жёсткие инженерные ограничения, касающиеся как энергопитания так и широты диапазона. Таким образом, радио проходят испытания сертифицированными лабораториями с указаниями пункта 6 из 802.15.4-2006 стандарта. Существуют решения, объединяющие микроконтроллер и радиопередатчик в одном корпусе, например микроконтроллеры серии STM32W от компании STMicroelectronics.
PHY
Итак, начнем изучение с PHY, физического уровня, и будем подниматься вверх по слоям.
INFO
Мы будем говорить о ZigBee, но ZigBee базируется на IEEE 802.15.4. Причем этот же стандарт взят за основу для WirelessHART и для ISA100.11a.
ZigBee, а точнее, IEEE 802.15.4 может работать в трех частотных диапазонах.
И, как ты можешь заметить, если выбрать для него частоту 2,4 ГГц, то Wi-Fi и ZigBee могут начать мешать друг другу. Для уменьшения перекрестных помех между Wi-Fi и ZigBee лучше выбирать следующие каналы.
Что не может не радовать, в стандарте есть такое понятие, как ED — Energy Detection. Эта фича используется в координаторе умного дома, чтобы он выбирал канал, где меньше всего помех.
Общий вид посылки для PHY имеет следующий вид.
Если у тебя дома завалялся SDR и ты желаешь контролировать каждый-прекаждый битик в модуляции OQPSK, то тебе поможет вот эта схема.
Этот вид модуляции как раз и применяется на частоте 2,4 ГГц. А мы тем временем идем дальше выше по стеку протоколов, и нас ждет уровень MAC.
MAC
Общий вид MAC-фреймов представлен ниже.
Как видишь, Frame Control отвечает за тип пакета данных (Beacon, Ack, Cmd, Data), тип адресации, а также наличие шифрования.
Теперь поговорим о каждом фрейме данных чуть подробнее.
Data Frame — один из самых простых фреймов. В нем передаются данные протоколов, которые работают поверх IEEE 802.15.4. Получается, что ты можешь взять за основу IEEE 802.15.4 и разработать протокол для своих нужд.
ACK Frame — фрейм подтверждения. Увы, мы живем в неидеальном мире, где бывает много помех, а при передаче по радиоканалу тем более. Поэтому необходимо подтверждать принятые данные.
Здесь Sequence Number указывает на то, какой фрейм из пришедших ранее мы подтверждаем.
MAC Cmd frame в той или иной степени отвечает за «организацию сети» на уровне 802.15.4.
Ниже представлены команды, которые могут тебе встретиться.
FFD — Full-function Device — это координатор сети, та самая главная «железка», которая организовывает сеть ZigBee.
RFD — Reduced-function Device — не столь важное устройство, как координатор, выполняет функции роутера при пересылке пакетов. Beacon frame — об этом фрейме стоит поговорить подробнее
Beacon frame — об этом фрейме стоит поговорить подробнее.
Так как мы передаем данные по радиоканалу и у нас есть несколько устройств, эти устройства должны как-то определять, в какой момент можно передавать данные, а когда занята несущая и стоит подождать. Поэтому в сетях ZigBee/IEEE 802.15.4 есть два способа передачи данных: режимы Beacon и NonBeacon.
Для передачи данных в режиме NonBeacon используется так называемый unslotted CSMA-CA channel access mechanism. По моему опыту, он используется редко.
Наиболее частый случай — использование режима Beacon. В этом случае координатор отправляет так называемые маячки (beacons), на основе которых остальные устройства синхронизируются и передают данные.
Общий вид передачи данных в этом режиме представлен ниже.
Во фрейме Beacon указывается, сколько будет slotted CSMA-CA, будет ли доступ без конкуренции и последует ли Inactive portion — время, когда конечные устройства смогут со спокойной совестью уйти в спячку для продления работы от батарейки.
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!
Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя!
Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
История
- Сети, образованные по протоколу ZigBee, начали рассматриваться с 1998, когда многие установщики осознали, что протоколы Wi-Fi и Bluetooth стали неподходящими для многих приложений. В частности, многие инженеры увидели необходимость в самоорганизуемых ad-hoc сетях.
- Стандарт IEEE 802.15.4 был создан в мае 2003.
- Летом 2003 главный поставщик ячеистых сетей Philips Semiconductors прекратил инвестиции. Однако Philips Lighting продолжил участие со стороны данной корпорации, которая осталась покровителем (промоутером) в составе совета директоров альянса ZigBee.
- О создании альянса ZigBee было объявлено в 2004. В следующем году число его членов удвоилось и выросло до более чем 100 компаний в 22 странах. К апрелю 2005 число участников достигло более 150 компаний и к декабрю 2005 до 200 компаний.
- Спецификации ZigBee были ратифицированы 14 декабря 2004.
- Альянс ZigBee объявляет о доступности для общественности Спецификации 1.0 13 июня 2005 года (известный сейчас как спецификация ZigBee 2004).
- Альянс ZigBee объявляет о завершении и немедленной готовности членов расширенной версии стандарта ZigBee сентября 2006, известной сейчас как спецификация ZigBee 2006.
- В течение последнего квартала 2007 года расширенная спецификация ZigBee — ZigBee Pro Feature Set была завершена.