Собираем простейшую zigbee-сеть, программируем под mbed, общаемся через mqtt

Оглавление

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:

Как все собрать и настроить

Когда все компоненты есть в наличии, можно приступать к сборке. Никаких хитростей и специальных условий для сборки нет, просто помещаем “малинку” в корпус, подключаем ее к источнику питания, а в любой свободный USB-порт устанавливаем стик.

1. Скачиваем уже знакомую утилиту balenaEtcher для записи образов на карты памяти. Есть версия для любой настольной операционной системы.

2. Загружаем образ системы для хаба, ссылку на который получите после приобретения любого из стиков SprutHub. Как видите, в цену “железки” заложены затраты на разработку и развитие такого непростого амбициозного проекта.

3. Подключаем карту памяти к компьютеру.

4. В приложении balenaEtcher выбираем загруженный образ SprutHub в качестве исходного файла и подключенную карту памяти в качестве целевого диска.

5. Нажимаем кнопку Flash и ждем несколько минут до окончания процесса записи и проверки образа.

6. После окончания процесса устанавливаем карту памяти в “малинку” и включаем микрокомпьютер.

7. Через пару минут после запуска хаб создаст специальную сеть Wi-Fi. Подключаемся к ней с компьютера или смартфона и в появившемся диалоговом окне предоставляем хабу доступ к домашней Wi-Fi сети.

8. Хаб сохранит параметры и перезагрузится, подключившись к указанному Wi-Fi.

9. Остается лишь перейти на специальную страницу настроек хаба (через браузер на любом устройстве в сети), создать учетную запись и активировать подключенный к хабу стик.

На этом процедура сборки и настройки хаба завершена. На весь процесс уйдет не более 15 минут. На моей памяти, это самый простой, понятный и быстрый способ создания хаба для умного дома.

Wi-Fi

Стандарт беспроводной передачи данных Wi-Fi был создан специально для объединения нескольких компьютеров в единую локальную сеть. Обычные проводные сети требуют прокладки множества кабелей через стены, потолки и перегородки внутри помещений. Также имеются определенные ограничения на расположение устройств в пространстве. Беспроводные сети Wi-Fi лишены этих недостатков: можно добавлять компьютеры и прочие беспроводные устройства с минимальными физическими, временными и материальными затратами. Для передачи информации беспроводные устройства Wi-Fi используют радиоволны из спектра частот, определенных стандартом IEEE 802.11. Существует четыре разновидности стандарта Wi-Fi (табл. 4). 802.11n поддерживает работу сразу в двух частотных диапазонах одновременно на четыре антенны. Суммарная скорость передачи данных при этом достигается 150–600 Мбит/с.

Таблица 4. Разновидности стандарта Wi-Fi
Стандарт 802.11b 802.11g 802.11a 802.11n
Количество используемых неперекрывающихся радиоканалов 3 3 3 11
Частотный диапазон, ГГц 2,4 2,4 5 2,4/5
Максимальная скорость передачи данных в радиоканале, Мбит/с 11 54 54 150–600

Плюсы и минусы

Сформулируем некоторые ключевые особенности стандарта Wi-Fi. К его достоинствам относятся:

  • высокая скорость передачи данных;
  • компактность;
  • большое разнообразие модулей под разные задачи;
  • высокий уровень стандартизации и совместимость между устройствами Wi-Fi разных производителей;
  • защита передаваемых данных.

Основные недостатки таковы:

  • большое энергопотребление и невозможность работы в течение длительного времени от автономных источников питания;
  • относительно высокая стоимость (по сравнению с Bluetooth и ZigBee).

Области применения

Характерные особенности стандарта Wi-Fi диктуют основные области его применения. Это:

  • Автомобильная электроника. Модули Wi-Fi могут применяться в системах мониторинга автотранспорта и в бортовых автомобильных системах, поскольку тут практически отсутствуют ограничения по потреблению энергии.
  • Системы удаленного управления и телеметрии. Модули Wi-Fi могут применяться наряду с модулями технологий Bluetooth, ZigBee, Short Range RF 434/868 МГц. Главные преимущества — высокая скорость передачи данных и высокий уровень стандартизации.
  • Компьютерная и офисная техника. Построение компьютерных сетей для обмена большими потоками данных с высоким уровнем безопасности.

Все перечисленные применения в одинаковой мере актуальны для России и других стран с достаточным уровнем технического оснащения.

Устройства Wi-Fi

Одним из наиболее популярных в России производителей модулей Wi-Fi является тайваньская компания WIZnet. В линейке ее продукции присутствует четыре их основных разновидности (табл. 5). Модуль WIZ610wi  был одной из первых разработок компании. В нем имеется богатый функционал, предоставляемый встроенным стеком Wi-Fi высокого уровня с поддержкой командного интерфейса. Но модуль имел некоторые технические проблемы: очень высокое энергопотребление, сильный нагрев во время работы и большое время загрузки после включения питания. Большинство этих проблем было устранено в модуле WIZ620wi , который, по сути, представляет собой улучшенную и усовершенствованную версию модуля WIZ610wi. Кроме того, WIZ620wi стал поддерживать Wi-Fi 802.11n (2,4 ГГц), на что не был способен его предшественник.

Таблица 5. Модули компании WIZnet
Модуль Описание Режимы Фото
Wiz610wi IEEE 802.11b/g 20 дБм; штырьковый разъем. Serial–Wi-Fi; точка доступа; узел беспроводной сети; шлюз.
Wiz620wi Доработанный и улучшенный аналог WIZ610wi. Не pin-to-pin. Serial–Wi-Fi; точка доступа; узел беспроводной сети; шлюз.
WizFi210 IEEE 802.11b/g
8 дБм; под пайку.
Только Serial–Wi-Fi.
WizFi220 Pin-to-pin аналог WizFi210, но с увеличенной мощностью (до 17 дБм). Только Serial–Wi-Fi.

Модуль WizFi210  — самый новый и самый перспективный в линейке. Функционал его ограничен только поддержкой режима работы Serial–Wi-Fi, благодаря чему удалось значительно снизить энергопотребление устройства. Добавлены режимы пониженного энергопотребления (в режиме Standby всего 5 мкА). По этим показателям модуль приближается к некоторым разновидностям модулей Bluetooth и даже ZigBee. Это еще один пример попытки нескольких беспроводных стандартов Short Range RF вступить в конкуренцию.

Модуль WizFi220 — полный аналог модуля WizFi210, но с увеличенной выходной мощностью. Дальность связи может достигать нескольких сотен метров, что позволит ему в ряде случаев конкурировать с модулями, поддерживающими радиосвязь в частотных диапазонах 434/868 МГц и с Bluetooth-модулем WT41 компании Bluegiga (табл. 3).

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 в борьбе за кошельки пользователей имитируют поддержку оборудования сторонних производителей, группы энтузиастов изучают стандарты протоколов и изобретают «альтернативные» всеядные программные и аппаратные решения для работы с устройствами Zigbee.

После того, как zigbee2mqtt набрал достаточную популярность, пользователи ощутили и недостатки «программных» шлюзов. Среди наиболее заметных можно выделить следующие:

  1. необходимость использования отдельного сервера или одноплатного компьютера raspberry или аналога;
  2. на одноплатном компьютере для работы USB устройств нужен хороший блок питания, необходимо предусмотреть охлаждение одноплатного компьютера, также требуется карта памяти хорошего качества с достаточным свободным местом. При использовании одного мини-компьютера для «программного» шлюза и системы управления умным домом, необходимо следить за наличием свободного места на карте памяти, которое может внезапно заполниться логами или другими файлами;
  3. загрузка и поддержка актуальности версий интерпретатора и библиотек Node.JS. Обновление версий zigbee2mqtt производится из консоли, при обновлении есть необходимость в создании резервной копии конфигурации и последующего обновления;
  4. отсутствие визуального интерфейса из коробки.

3 устройства Zigbee

1) Интеллектуальный датчик движения Philips Hue

Philips входит в альянс Zigbee Alliance, и этот интеллектуальный датчик движения легко интегрируется с остальной линейкой Hue, чтобы вы могли придать дополнительный импульс своему освещению.

Если вам действительно нужна широкая функциональность, вам нужно будет вложить деньги в Hue Bridge, но это выгодное вложение, позволяющее объединить интеллектуальное освещение, чтобы все работало в гармонии с минимальными усилиями с вашей стороны.

Ключевым преимуществом этого датчика является то, что движение гарантирует, что ваш свет немедленно загорится, поэтому вам больше не нужно спускаться вниз, чтобы перекусить в темноте. Тем не менее, вам не нужно, чтобы все огни горели ночью, поэтому выделенные дневной и ночной режимы позволяют настраивать яркость в зависимости от времени.

Благодаря питанию от батареи и без проводов вы можете установить этот изящный маленький датчик практически в любом месте с настройкой за считанные минуты.

Преимущества

  • Убедитесь, что ваши огни Hue включаются и выключаются автоматически
  • Встроенный датчик дневного света позволяет сэкономить на счетах за коммунальные услуги без ненужного включения света
  • Используйте голосовое управление с помощью устройств Alexa, Google Assistant или Apple HomeKit

2) Умная розетка Securifi Peanut Smart Plug

Недавно мы взглянули на лучшие умные розетки на рынке, но вот одна из них, которая проскользнула в сети, и это красавица с поддержкой Zigbee, которая позволяет удаленно управлять разнообразным набором устройств с помощью приложения Almond.

Хотя вам также нужен маршрутизатор Almond, вы можете обойти это, если у вас есть Echo Plus, поскольку он функционирует как концентратор Zigbee.

Наслаждайтесь дистанционным управлением всей бытовой техникой в ​​вашем доме и получите встроенное преимущество контроля за тем, как они потребляют энергию. Вскоре вы увидите, увеличивает ли ваша стиральная машина или сушилка ваши счета за коммунальные услуги, и вы сможете определить любые другие устройства, изменение в использовании которых может привести к сокращению ежемесячных расходов.

Вы можете взять на себя управление с помощью интуитивно понятного приложения Almond, но, в отличие от многих интеллектуальных устройств, вы также можете свободно использовать браузер Chrome, если хотите.

Хотя интеллектуальная розетка Securifi может быть не первой, что приходит на ум, это замечательное устройство Zigbee по удивительно разумной цене.

Преимущества

  • Превосходные возможности мониторинга энергии, чтобы вы могли сэкономить на счетах за электроэнергию
  • Выключайте игровую приставку для детей удаленно, когда им пора ложиться спать, или выключите кондиционер, не вставая с постели.
  • Запланируйте освещение, чтобы ваш дом выглядел занятым, когда вас нет, добавив ценный уровень безопасности

3) Подключаемый модуль Zigbee Centralite 3-Series

Этот плагин выполняет двойную функцию, так как он также расширит диапазон вашей сети Zigbee.

Если в вашем умном доме есть какая-то область, где вы испытываете проблемы с надежностью, все, что вам нужно сделать, это вставить несколько из них в розетки в этой области, начиная с концентратора, а затем двигаясь к ровной поверхности. Это может хорошо работать в многоэтажных домах и является экономически эффективным методом расширения зоны действия вашей сети Zigbee.

Вы также сможете использовать этот модуль для ламп и другой домашней техники, так что это универсальный и удобный в кармане комплект, идеально подходящий для любого умного дома Zigbee.

Преимущества

  • Работает со SmartThings или другими хабами с поддержкой Zigbee
  • Функционирует как повторитель / расширитель диапазона Zigbee, расширяя вашу ячеистую сеть, как описано выше.
  • Создавайте сцены и расписания с помощью всех совместимых устройств

Sending Device Commands~

You can send commands to a device or groups of devices similar to a normal Tasmota command. For example to turn on a light or switch off a plug.

Here is a list of supported commands, see below how to send any unlisted command.

Command Parameters Cluster number
Power or or or : On or or or : Off or : Toggle 0x0006
Dimmer : Dimmer value255 is normally considered as invalid, and may be converted to 254 0x0008
DimmerUp : no parameter. Increases dimmer by 10% 0x0008
DimmerDown : no parameter. Decreases dimmer by 10% 0x0008
DimmerStop : no parameter. Stops any running increase of decrease of dimmer. 0x0008
ResetAlarm : (to be documented later) 0x0009
ResetAllAlarms : no parameter, (to be documented later) 0x0009
Hue : change Hue value 0x0300
Sat : change Sat value 0x0300
HueSat : change both Hue and Sat values 0x0300
Color : change the color using coordinates 0x0300
CT : change the white color-temperature in mireds 0x0300
Shutter : send any Shutter command (prefer the commands below) 0x0102
ShutterOpen : no parameter, open shutter 0x0102
ShutterClose : no parameter, close shutter 0x0102
ShutterStop : no parameter, stop shutter movement 0x0102
ShutterLift : move shutter to a specific position in percent%=open, %=closed 0x0102
ShutterTilt : move the shutter to the specific tilt position in percent 0x0102

The format of the command is following:

whereidentifies the target and can be a shortaddr , a longaddr or a friendly name .   is the command and its parameters from the table.

If the device has been correctly paired and its endpoints recorded by Z2T, you shouldn’t need to specify a target endpoint. You can use an option parameter if Z2T can’t find the correct endpoint or if you want to change from the default endpoint.

Low-level Commands

There is a special syntax if you want to send arbitrary commands: where has the following syntax:

: send a non-cluster specific command for cluster id , command id and payload .

Example

Send a Read command (0x00) to the general cluster (0x0000) for attribute ManufId (0x0005). Note: all values are little-endian.

Or use ‘!’ instead of ‘_’ to specify cluster-specific commands:

: send a cluster specific command for cluster id , command id and payload .

Example

Send a Dimmer command (0x04) from Level Control cluster (0x0008) with payload being: Dimmer value 0x80, and transition time of 1 second (0x000A = 10 tenths of seconds).

Of course the latter example could be simply:

Обязательно ли придерживаться единого протокола связи?

Во-первых, в вашем умном доме вполне возможно использовать устройства Zigbee и Z-Wave.

Достаточное количество устройств будет работать с обоими протоколами, даже если они не взаимодействуют напрямую. Хаб Samsung SmartThings, как и хаб Wink, поддерживает Zigbee и Z-Wave. Техника GE, умные замки Yale и термостаты Honey также хорошо сочетаются с обоими большими Z.

Таким образом, хотя не обязательно придерживаться одного протокола связи, если вы планируете построить подключенный дом с устройствами из обеих конюшен, стоит удвоить концентратор, который поддерживает оба, иначе вы столкнетесь с проблемами.

Основные особенности Zigbee

  • Single-Mesh сеть: Каждое устройство в сети Zigbee выступает в качестве ретранслятора. Это позволяет передавать сигнал от устройства к устройству и устраняет необходимость связи с концентратором. Вы получите неограниченное количество переходов между устройствами в вашей экосистеме. Вы можете включить 65 000 устройств в сеть Zigbee, что делает ее ведущим в своем классе протоколом связи в этом отношении.
  • Безопасность: защищенные 128-битными симметричными ключами сети Zigbee очень безопасны. Используемый стандарт шифрования также используется банками и государственными учреждениями.
  • Требования к низкому энергопотреблению: в отличие от Wi-Fi или Bluetooth, Zigbee работает экономно. Это становится все более важным, чем больше интеллектуальных устройств с батарейным питанием вы встраиваете в свою экосистему. Zigbee требует даже меньше энергии, чем Z-Wave, что делает его самым мощным инструментом для интеллектуальных дверных замков и других устройств, отключение которых может иметь катастрофические последствия.
  • Сигнал: У вас есть офис на улице в саду вашего умного дома? Может быть, у вас есть гараж или хозяйственная постройка, где вам нужен сигнал. Вы получите сигнал в помещении на расстоянии около 40 футов от радио Zigbee. На это могут сильно повлиять стены, потолки и другие обычные бытовые препятствия. В худшем случае дальность действия может быть уменьшена до ничтожных 10 футов.
  • Надежность: вы можете рассчитывать на надежный сигнал от устройств Zigbee и создаваемой ими ячеистой сети.

Радиомодуль

Для быстрого старта, когда нет желания или возможности разбираться с программным стеком ZigBee, стоит обратить внимание на модули ETRX357. Все модули имеют встроенную прошивку от производителя, которая позволяет работать с аналоговой и цифровой периферией, а также с сетевыми функциями, с помощью набора AT-команд

Для начала работы с радиомодулем достаточно подключить линии питания и линии TxD и RxD последовательного интерфейса UART.

В стандартную прошивку входит также ряд функций, которые могут вызываться по прерыванию от порта ввода/вывода, таймера/счетчика или при определенных событиях – подключение к сети или инициализация радиомодуля. Пример доступных функций:

  • Переключение состояния порта ввода/вывода
  • Отправка информации на узел сбора данных о состоянии 16 цифровых выводов радиомодуля, оцифрованных данных от подключенных датчиков и информацию об уровене напряжения питания
  • Переход в активный режим или режим энергосбережения
  • Открытие «прозрачного канала» с другим устройством в сети

Пару слов о «прозрачном канале». При переходе в данный режим вся информация, поступающая по интерфейсу UART на радиомодуль транслируется на интерфейс UART другого радиомодуля. Данный канал является двунаправленным, а также наследует преимущества технологии ZigBee – при наличии роутеров в сети не будет происходить потери данных в таком канале связи так как все пакеты «прозрачного канала» будут в случае необходимости автоматически ретранслироваться. За счет этого можно организовать канал связи с предельной дальностью в несколько километров.

Устройства

Множество крупных производителей наладили выпуск Zigbee устройств:

  1. Xiaomi.
  2. Sonoff.
  3. Philips.
  4. IKEA.

Рассмотрим интересные и нужные решения, которые обязательны в рамках умного дома.

Управляемый блок подсветки IKEA

Топ бренд мебели IKEA предлагает для контроля подсветкой использовать источники питания с управлением ZigBee. Серия называется TRADFRI. В комплект можно докупить лампочки, пульты. Подобный блок имеет несколько выходов под светильники. В целом, это устройство — настоящий диммер, но выполнен немного в иной интерпретации.

Сенсор

Датчики или сенсоры всегда были неотъемлемой частью любой автоматизации. Например, датчик открытия двери (окна) или датчик движения, управляемый непосредственно контроллером через систему умного дома. С их помощью можно реализовать различную логику работы отдельно взятых устройств, каналов или всей системы в целом.

Выключатель

Сенсорный выключатель LIVOLO работает с технологией типа Mesh. Подведение нейтрали он не требует. То есть его можно подключать в подрозетник, где не подведен ноль. Он запитывается фантомным способом через нагрузку и питается этим током. Задняя часть выполнена под европейский подрозетник, поэтому проблем с установкой быть не должно.

Реле

Xiaomi с линейкой устройств Aqara выпускает двухканальные реле с контролем энергопотребления. Позволяет настраивать работу каждого канала, делая работу любых электроприборов умной.  Антенна для сигнала большая, но совершенно не мешает. Также, как и корпус, который без проблем прячется в подрозетник.

Диммер

С помощью диммера, имеющего выход в сеть Zigbee, можно удаленно, или с применением какой-либо логики, уменьшать или увеличивать яркость света. В качестве типового решения хорошим устройством будет Dimmer EcoDim.

Чтобы данные устройства от разных производителей можно было объединить в единую сеть умного дома Zigbee, необходимо использовать координатор, типа zigbee2mqtt.

Zigbee Binding~

Binding allows a device to send command to another device in the same Zigbee network, without any additional logic. For example, you can set a remote to control directly a group of lights, without any rules on the coordinator. The coordinator will still receive all commands.

Example of direct binding

This command links the device that will send all commands for cluster (On/off cluster) frome endpoint to the target device on endpoint .

Example of group binding

This command links the device that will send all commands for cluster (On/off clustre) and from endpoint to the group .

Reponse in case of success

Example: IKEA remote and IKEA Light

IKEA remotes only support 1 group and can be linked to a light only via group numbers (no direct binding).

  1. Add the light to group 100

  2. Bind the remote to group 100. Note: you need to press a button on the remote right before sending this command to make sure it’s not in sleep mode