- Подключить все! Делаем экстремально дешевый хаб для устройств ZigBee и Z-Wave
- Содержание статьи
- Выбираем и прошиваем железо
- Xakep #235. Возрождение эксплоит-китов
- Ставим сервер zigbee-shepherd на Raspberry Pi Zero W
- Работаем с выключателями Xiaomi из zigbee-shepherd
- Увязываем наше решение с другими
- Zigbee 101: руководство для начинающих
- Что такое Zigbee?
- Что нового в Zigbee 3.0
- Зачем это нужно?
- Много ли устройств Zigbee?
- Zigbee USB устройства (стики)
- Zigbee шлюзы
- Что по экосистемам?
- Как там с программной поддержкой?
- Что выбрать: Wi-Fi, Bluetooth, ZigBee или Z-Wave?
- С чего начать, если вы новичок?
- Вместо заключения
Подключить все! Делаем экстремально дешевый хаб для устройств ZigBee и Z-Wave
Содержание статьи
Поводом для того, чтобы смешать дома умные устройства разных производителей, может быть желание сэкономить, выбирая наиболее выгодные варианты, или наоборот — стремление взять все самое лучшее. Но чаще всего ответ более прозаичный: «так вышло». Сначала ты покупаешь лампочки и датчики движения Philips, а потом обнаруживаешь, что, к примеру, умных розеток эта компания не делает вовсе, а тебе позарез нужна одна из них.
Опять же, если ты выбрал Xiaomi (а предложение этой компании — одно из самых выгодных), то тебя ждет хаб с китайским софтом, подключенный к фирменному сервису. С точки зрения безопасности — далеко не самый лучший вариант.
В этой статье я покажу, как сконструировать универсальный хаб на основе Raspberry Pi Zero W и экстремально дешевого контроллера. А поможет мне в этом программа под названием zigbee-shepherd. Она поддерживает множество устройств ZigBee, в том числе и выключатели Xiaomi на батарейках серии Aqara, и позволяет писать скрипты на JavaScript.
Выбираем и прошиваем железо
Сначала нужно определиться, на каком железе собирать хаб. В принципе, ты можешь взять что угодно (хоть свой основной компьютер, если ты его не выключаешь), но Raspberry Pi Zero W — это сверхкомпактный, дешевый и достаточно производительный вариант.
Микрокомпьютер Raspberry Pi Zero W
Xakep #235. Возрождение эксплоит-китов
Zigbee-shepherd совместим с чипами ZigBee производства Texas Instrument CC2530 и CC2531. У TI есть референсный USB-стик CC2531 USB Evaluation Module Kit за 49 долларов, но есть и полная документация и схемы по сборке такого стика, поэтому будет несложно найти в Поднебесной такой же стик, но за 7 долларов.
Фирменный стик Texas Instrument на чипе CC2531
Для работы стика с zigbee-shepherd потребуется файл прошивки с GitHub, а чтобы ее зашить, понадобится программатор CC Debugger за 49 долларов или его китайская копия за 12.
Texas Instrument CC Debugger
Прошивают USB-стик с помощью официальной утилиты TI SmartRF Flash Programmer. Чтобы все заработало, нужно подключить CC Debugger в один порт компьютера, стик ZigBee — в другой и шлейфом соединить их между собой.
Подключение CC Debugger к стику ZigBee для прошивки
В настройках программатора выбираем прошиваемое устройство (1), прошивку (2), задаем нужные действия (3) и прошиваем (4).
SmartRF Flash Programmer для прошивки стика ZigBee
Проверить, что USB-стик удачно прошился и работает, можно, подключив его к Raspberry Pi Zero W и выполнив команду
Устройство будет отображаться в системе как ttyACM0.
При подключении стика появляется устройство ttyACM0
Ставим сервер zigbee-shepherd на Raspberry Pi Zero W
Установка zigbee-shepherd и сопутствующих пакетов будет проводиться на последней версии ОС Raspbian для Raspberry Pi Zero W — Stretch.
Zigbee-shepherd написан на JavaScript и работает на Node.js. Для начала ставим Node.js:
Для установки расширений из npm нужно установить утилиты для сборки:
И сама установка zigbee-shepherd:
Проверить, правильно ли работает zigbee-shepherd, можно, запустив скрипт zigbee-server.js . Во время работы скрипт выводит информацию о каждом этапе добавления устройства и время выполнения операции.
Запускаем zigbee-shepherd в режиме отладки:
Debug-вывод при добавлении устройства ZigBee
На этапе разработки скрипта для Node.js всегда используй отладочный режим. Вывод при этом более подробный, легче отловить ошибки, а zigbee-shepherd показывает все данные, которые он отправляет и получает.
Работаем с выключателями Xiaomi из zigbee-shepherd
Первым делом следует добавить устройство ZigBee в сеть. Для этого сначала нужно сбросить его настройки на заводские и тем самым удалить информацию о предыдущей сети, если оно было добавлено прежде. Комбинация сброса и добавления устройства для выключателей Xiaomi Aqara следующая: зажать кнопку на пять секунд, пока светодиоды не начнут мигать, после чего отпустить и ждать, когда закончится процесс добавления. Если включен дебаг, то при добавлении устройства выводится подробный лог. Добавление устройства может занять до одной минуты.
После добавления устройства важно еще правильно с ним работать. Zigbee-shepherd не предоставляет веб-интерфейса для добавления устройств и управления ими, вместо этого мощный JS API позволяет получить полный контроль над любым устройством и написать собственную систему автоматизации.
В вики есть полное описание всех функций. Но чтобы быстрее разобраться с ними, нужно понимать программную структуру устройства.
IEEE address. Каждое устройство ZigBee имеет уникальный 48-битный MAC-адрес, он зашит в девайс, и сбросить его невозможно. По MAC-адресу можно обращаться к устройству и получать информацию о нем.
Endpoint. В устройстве может быть несколько функций, например датчик температуры и влажности или выключатель с двумя кнопками. Для каждой функции устройства создается отдельный Endpoint.
Clusters. Группа команд, которые можно отправлять устройству. Например, команда genOnOff включает или выключает устройство, а если это лампа с диммером, то команда genLevelCtrl позволит задать уровень яркости.
Attributes. У устройства можно запросить его текущее состояние, обратившись в интересующий Cluster. Например, командой genOnOff можно узнать состояние атрибута onOff — оно может быть 0 или 1.
Выключатель Xiaomi Aqara с одной кнопкой имеет следующую структуру:
Чтобы обрабатывать нажатие кнопки, нужно отловить сообщение от выключателя. Делается это с помощью события ind . Изменим код следующим образом:
При нажатии кнопки придет сообщение:
- msg.endpoints[0].device.ieeeAddr — MAC-адрес устройства;
- msg.endpoints[0].epId — канал (endpoint) устройства;
- msg.data — ID кластера и атрибут, в данном случае выключатель прислал команду genOnOff:0 .
Если проверять эти данные, то, нажимая на кнопку выключателя, можно будет управлять другими устройствами ZigBee по определенному алгоритму. Например, при каждом нажатии включать-выключать или только выключать группу устройств.
Zigbee-shepherd полностью поддерживает работу с диммируемыми лампами Ikea Trådfri и Philips Hue, поэтому для примера можно настроить простой алгоритм включения лампы с помощью выключателя Xiaomi Aqara. Добавляем в код обработчик нажатия кнопки и включение лампы Ikea Trådfri на максимальную яркость:
Увязываем наше решение с другими
Zigbee-shepherd использует инфраструктуру Node.js, поэтому можно реализовать управление любыми объектами, для которых есть соответствующие библиотеки. Например, протокол MQTT дает возможность интеграции со многими системами домашней автоматизации, такими как OpenHub и Home Assistant. Для последней существует готовый проект на GitHub.
Многие хабы и самостоятельные устройства Wi-Fi вроде розеток поддерживают управление через запросы HTTP. Команды можно узнать из документации, либо подглядеть в веб-интерфейсе хаба умного дома, либо проанализировать трафик от мобильного приложения.
Z-Wave-контроллер RaZberry имеет хорошо документированный HTTP API, поэтому не составит труда написать запрос на выключение света. Для отправки HTTP-запросов требуется установить библиотеку request:
Добавляем в код поддержку HTTP-запросов и сам запрос на выключение света:
Минимальная домашняя автоматизации готова! В 26 строках кода запускается сервер ZigBee, отслеживается нажатие кнопки и исполняется команда управления светодиодной лампой или команда HTTP. Если подключить фреймворк веб-приложений для Node.js (например, express), то можно реализовать полноценный HTTP API для работы с устройствами ZigBee.
Zigbee-shepherd позволяет добавить к уже существующей домашней автоматизации на KNX, Z-Wave или Wi-Fi недорогие устройства ZigBee, которых с каждым годом выпускается все больше.
Источник
Zigbee 101: руководство для начинающих
Что такое Zigbee?
Zigbee — технология, которая основана на радио стандарте IEEE 802.15.4 и предназначена для стандартизации маломощных M2M устройств разных производителей. Из особенностей сети можно выделить высокую отказоустойчивость, длительный срок службы конечных устройств от одной батареи, поддержку большого количества подключений и совместную работу устройств разных производителей.
Из особенностей архитектуры сети: поддержка топологии mesh, обязательное наличие координатора и, необязательное, роутера. Больше об архитектуре сети здесь.
ZigBee предусматривает передачу информации в радиусе от 5 до 75 (на открытой местности до 200) метров с максимальной скоростью 250 кбит/с. Поддерживает работу в 27 каналах трех частотных диапазонов:
2,4 ГГц (16 каналов)
915 МГц (10 каналов)
868 МГц (1 канал)
Занимательный факт:
Согласно одной из версий, название ZigBee происходит от зигзагообразного танца пчел, которым они указывают своим соседям путь к следующему источнику пищи, аналогично, как и пакеты данных стандарта должны найти свой путь в mesh сети.
Что нового в Zigbee 3.0
Direct binding, или прямое соединение позволяет конечным устройствам разных производителей работать напрямую без участия координатора и роутера. Это позволяет гибко настраивать сценарии поведения устройств и увеличить скорость срабатывания.
Green Power — набор технологий, которые минимизируют использование ресурсов батареи устройством, а также могут ее собирать за счет кинетической, световой, и тепловой энергии. Немного непонятно звучит; говоря иначе, переключатель сможет передать сообщение за счет того, что вы к нему прикоснулись. Детальнее тут
Унификация. Раньше существовало множество так называемых профилей. Например, Home Automation, Building Automation, Health. Zigbee 3.0 — это единый профиль приложений.
Обратная совместимость со всеми продуктами выпущенными до v3.0
Зачем это нужно?
Если кратко — для измерения показаний и автоматизации. Сфер применения этой автоматизации много. И хотя в последнее время прослеживается тенденция унификации, технология поддерживает различные профили, которые делятся по сфере применения. Вот некоторые из них.
Home Automation — управление домашними устройствами и создание сценариев.
Remote Control — управление устройствами дистанционного управления.
Smart Energy — контроль и автоматизация доставки и использования энергии.
Green Power — поддержка устройств генерации электроэнергии.
Light Link — управление освещением.
Health Care — управление устройств медицинского и около медицинского (браслеты измерения показаний, кнопки “sos”) назначения.
Много ли устройств Zigbee?
Приблизительно 2600 устройств (список сертифицированных устройств). Стоит уточнить, что в большинстве случаев каждый производитель имеет свое приложения для подключения только своих устройств, но, используя стороннее программное обеспечение, их можно подружить. Об этом ниже.
Средняя цена одного конечного устройства варьируется в районе 10$.
Вот пример конечных устройств нескольких популярных производителей:
Xiaomi Aqara — около 50 устройств разного назначения.
Philips Hue — около 100 устройств, (большинство светильники),
Ikea trådfri — около 40 устройств (большинство светильники),
Tuya — около 30 устройств,
SONOFF — около 10 недорогих реле.
Zigbee USB устройства (стики)
Для чего нужны Zigbee стики?
Если вы используете стороннее решение, стик удобно использовать как координатор сети, подключив к компьютеру как роутер, чтобы достичь отдаленных от координатора мест.
Вот пример нескольких популярных устройств:
cc2530/2531 — дешевый и популярный стик. Неплохой выбор для начинающих. Из минусов: небольшой радиус покрытия (10-15 м без антенны) и ограничения по количеству подключаемых устройств.
cc2538 стик разработанный энтузиастами проекта modkam.ru. По сравнению с 2531, обладает большим радиусом действия и не имеет ограничений по количеству подключений (тесты показали больше 200 устройств).
deCONZ Conbee стик также поддерживает большое количество систем умного дома. Из минусов родной прошивки — иногда отваливаются конечные устройства.
Sprut.stick (в бета тестировании) координатор от проекта Sprut.AI на основе модулей EFR32MG12 или MGM12P32F1024. Обладает отличными характеристиками мощности, поддерживает большое количество устройств, также постепенно добавляются новые. Детальнее 1 2 3
Также примеры менее популярных:
nRF52840 Dongle — универсальный стик с поддержкой Bluetooth 5, Bluetooth mesh, Thread, ZigBee, 802.15.4 и ANT и удобной средой разработки.
Zigbee шлюзы
Готовые решения
Xiaomi/Aquara три самых популярных устройства — Xiaomi Gateway 2 и 3 версии и Aqara Hub. Gateway 2 не совместим с homekit и имеет 3 версию протокола Zigbee. Третья версия имеет на борту Zigbee 3.0 и Bluetooth Mesh 5.0. С дополнительными различиями поможет разобраться краткий ролик.
Менее популярные zigbee концентраторы просто перечислю
Orvibo
livolo
Wemo
Vera
Fibaro
Zigbee+ Zvawe
Athom Homey
Hubitat Elevation
Wink hub 2
SmartThings Hub
VeraPlus
DIY, или сделай сам
SLS шлюз — Устройство на основе СС2538+СС2592 и ESP32-Wrover-B, а также прошивка. Поддерживает Zigbee 3.0 и в отличие от Xiaomi он не ограничен одной экосистемой. А в отличие от стиков CC2531, CC2538 и Deconz — он является готовым устройством и может работать как самостоятельно, так и в системе домашней автоматизации Home Assistant. На данный момент поддерживается 113 устройств. Видео обзор
ZESP32 — это прошивка для шлюза Xiaomi Gateway. Точно так же как и SLS он рассчитан на подключение Zigbee устройств разных производителей. Основная концепция — упрощение добавления нового устройства в сеть при помощи изменяемых шаблонов.
cc25хх + компьютер удобный вариант если у вас уже имеется raspberry pi, или старенький пк, который будет выступать в роли сервера. В этом случае вы можете выбрать любую удобную систему домашней автоматизации, о которых ниже.
Что по экосистемам?
Apple home — программное решение от Apple. Количество поддерживаемых устройств невелико, но функционал можно расширить с помощью homebridge и aqara hub. Вы можете использовать Apple home в домашней сети используя только Iphone и хаб (Zigbee), но для удаленного управления нужен домашний центр в роли которого могут выступать iPad (iOS 10 или выше), HomePod, или Apple TV.
Google home — также не работает с Zigbee устройствами напрямую, но имеет совместимость с Alexa.
Amazon ассистенты Echo Show, Spot и Plus умеют работать напрямую поскольку имеют встроенный zigbee координатор. Тем не менее проблемой является ограниченное количество совместимых устройств и непопулярность решения в странах СНГ.
Xiaomi/Aqara — шлюзы компаний Xiaomi и Aqara поддерживают только свои zigbee устройства. В отличие от Xiaomi Gateway у Aqara Hub не предусмотрена возможность интеграции с альтернативными системами домашней автоматизации.
Samsung SmartThings позиционируется как универсальный хаб. Работает с большим количеством устройств Z-Wave и Zigbee. Пользователи часто жалуются на падение облака (отсутствие подключения к серверу) и отсутствие интереса в развитии проекта со стороны разработчиков.
Яндекс дом. Диалоги Яндекс Станции и для телефона это разные вещи. Для колонки диалогов меньше, они примитивные. Заявлена поддержка ZigBee и Bluetooth устройств, но не работает с ними напрямую. Многие сценарии зависят от наличия интернет соединения, но решением может быть подключение сторонних контроллеров умного дома, например с помощью yandex2mqtt.
Как там с программной поддержкой?
Для удобства разделю программные решения на категории.
Домашняя автоматизация
Homebridge сервер NodeJS, для интеграции устройств без поддержки HomeKit.
ioBroker открытая система автоматизации, разработанная на платформе NodeJS
HomeAssistant система с открытым кодом с акцентом на конфиденциальность.
OpenHAB opensource проект с акцентом на удобство настройки
MajorDoMo система интеграции с открытым кодом.
Dashboard
RoboDomo фреймворк, на MQTT с привлекательным графическим интерфейсом.
node-red-dashboard модуль node-red для создания панели управления, интегрируется в
Интеграция
Zigbee2mqtt это программа-мост, что позволяет использовать вместе устройства разных поставщиков, транслируя команды zigbee в mqtt.
MQTT Explorer удобный mqtt клиент
Разработка
IAR Embedded Workbench среда с дружественным интерфейсом и поддержкой большого количества микроконтроллеров
Simplicity Studio IDE и набор инструментов для разработки приложений на базе процессоров Silicon Labs
SimpleLink SDK среда разработки для чипов разработки Texas Instruments, включающий API, TI-RTOS и прочее.
Red-node блочный инструмент программирования для соединения аппаратных устройств, API и онлайн-сервисов.
Тестирование и аудит
KillerBee — инструмент для тестирования Zigbee сетей.
SecBee — тестирование реализаций ZigBee на проблемы безопасности.
Z3sec — основная цель фреймворка тестирование сертифицированных устройств, реализующие ZigBee Light Link (ZLL), или стандарт ZigBee 3.0.
pwnrf — инструмент для тестирования безопасности в сетях Wi-Fi, Bluetooth и Zigbee.
Что выбрать: Wi-Fi, Bluetooth, ZigBee или Z-Wave?
На рынке существуют десятки IOT технологий, но самыми популярными решениями являются Wi-Fi, Bluetooth, ZigBee и Z-Wave.
WiFi очень популярная технология, она удобна и идеальна для голосовых помощников, систем видеонаблюдения, телевизоров, или в случае если у вас небольшое количество умных устройств. Но WiFi сильно энерго затратен и если умных устройств десятки, или сотни постоянно заряжать их проблематично. К тому же WiFi роутер не рассчитан на большое количество подключений. Конечно есть решения и на такой случай, но тогда цена развертывания сети вырастет в разы. WiFi имеет единую точку отказа — роутер.
Bluetooth LE (Low Energy) не менее популярная технология с низким энергопотреблением, что позволяет более года не менять батарейку и высокой скоростью передачи 1-2 Мбит. Имеет функцию маячка (настраиваемое поведение устройств при приближении) и работает с устройствами напрямую. Из минусов работа в диапазоне 2,4 ГГц, и небольшой радиус действия в помещении с другими устройствами. Также большинство BLE устройств работают по принципу «точка-точка», что плохо подходит для создания продвинутых сценариев автоматизации. Но решением данной проблемы можно считать спецификацию Bluetooth mesh.
ZigBee открытый стандарт с низким энергопотреблением конечных устройств (1-2 года), поддержкой ячеистой (mesh) топологии, высокой помехоустойчивостью, хорошей масштабируемостью (в теории до 65000 узлов) и большим проникновением на рынок. Из минусов: Zigbee работает в загружённом диапазоне 2,4 ГГц, что при сильных помехах может привести к снижению помехоустойчивости, и уменьшению радиуса действия. Каждый производитель создает отдельное приложение для поддержки только своих продуктов. Но как по мне самый большой минус это то, что устройства разных производителей не могут “общаться» между собой “из коробки”. Их можно объединить при использовании стороннего ПО, но отсутствие общих решений приводит к относительно высокому порогу вхождения. Альянс знает об этих проблемах и для устранения работает над DotDot и Connected Home over IP.
Z-Wave — зарекомендовавший себя закрытый стандарт. Обладает высоким уровнем совместимости устройств, низким энергопотреблением, поддержкой ячеистой топологии, имеет стабильный сигнал в диапазоне 800–900 МГц, что позволяет лучше огибать препятствия (чем больше длина волны (ниже частота), тем лучше она преодолевает препятствия). Поддерживает до 232 устройств в одной сети и скорость до 100 кбит/с. Из недостатков стоит указать, что в разных странах для устройств малого радиуса действия выделены разные частоты. И устройства созданные для одной страны могут быть несовместимы для другой. Также Z-Wave несколько дороже ZigBee устройств.
С чего начать, если вы новичок?
Если вы пытаетесь выбрать на чем построить свой умный дом начните с этой занимательной схемы. Также лично для меня вдохновляющими была статья Дом Дурачок 2.0
Если у вас возникают трудности в настройке своего умного дома, вы можете попросить совета в группе SmartHome
Если вы хотите купить SLS шлюз и другие Zigbee устройства вам в Zigberu
Обсуждение устройств, прошивок и прочего софта, работающего с Zigbee — Вокруг да около Zigbee и
Zigbee
Вместо заключения
Тяжело сказать кто победит в войне протоколов умного дома. Zigbee не лишен недостатков, имеет сильных конкурентов, но вместе с тем его сильная сторона это большое заинтересованное сообщество (Zigbee Альянс, энтузиастов и гиков). Интерес к Zigbee проявляют как именитые бренды, так и молодые компании.
Стоит отметить, что не существует универсального решения на все случаи жизни. Выбирайте, то что подходит именно вам, именно в вашем случае. WiFi и Bluetooth хотя и громоздки, но есть случаи, когда их использование оправдано.
Источник