- Подключаем новый Xiaomi Gateway 3 к Home Assistant без паяльника и смс
- Введение
- Bluetooth
- Zigbee
- Xiaomi
- Xiaomi Gateway 3
- BLE Gateway
- Планы
- Собираем DIY шлюз для Zigbee устройств
- Вступление
- Самостоятельная сборка шлюза
- Начало работы
- Сопряжение устройств
- Интеграция с системами умного дома
- Настройка автоматизаций
- Примеры использования
Подключаем новый Xiaomi Gateway 3 к Home Assistant без паяльника и смс
Новый хаб от Xiaomi с поддержкой технологий Zigbee 3, Bluetooth Mesh, HomeKit и его подключение к достаточно популярной системе умного дома — Home Assistant, интересует?
Введение
Устройства умного дома можно встретить на разных беспроводных протоколах.
Важно понимать, что поверх каждого протокола производители устройств накладывают что-то своё. А это значит, что нельзя выбрать какой-то один протокол и все устройства всех фирм будут автоматически поддерживаться.
Чаще всего новички выбирают устройства на технологии Wi-Fi. Ведь Wi-Fi роутер сегодня есть у всех. Умным устройством можно пользоваться сразу после покупки. Но тут есть нюанс: в количестве устройств слабость Wi-Fi. Роутеры от провайдеров в большинстве своём тот ещё хлам, способный справиться с 1-2 десятками устройств. И пять новых умных лампочек могут быть проблемой для всей сети.
Здесь выходом будет хороший двухдиапазонный роутер. Весь умный дом можно повесить на диапазон 2.4 ГГц, а мультимедиа-устройства (смартфоны, ноутбуки, телевизоры, колонки) на 5 ГГц.
Bluetooth
Устройства на Bluetooth новички выбирают так же охотно, ведь сегодня смартфоны есть почти у всех. Проблема в том, что дальность Bluetooth весьма ограничена. Уже из соседней комнаты вы не сможете посмотреть температуру на датчике или включить чайник или лампочку.
В таких случаях производители рекомендуют покупать BLE Gateway. Это устройство, которое будет посредником между Bluetooth и серверами производителя. Здесь уже далеко не все пользователи соглашаются на дополнительные траты и лишнюю железку в доме.
Некоторые производители встраивают возможности BLE Gateway в камеры и лампы, закрывая проблему лишних затрат и лишнего устройства в доме.
Zigbee
От этой технологии новички отказываются чаще всего из-за необходимости приобретать дополнительное устройство-посредник, ведь ничего работающего с Zigbee в их доме скорее всего нет. Некоторые производители встраивают поддержку этой технологии в умные колонки и, на мой взгляд, это очень интересный ход.
Дополнительную проблему составляет, что каждый такой Gateway поддерживает только дочерние устройства своего производителя. Купив устройства Philips Hue, IKEA, Sonoff, Xiaomi и Tuya, вы, скорее всего, должны будете докупить пять Gateway соответственно.
Эта технология заслуживает внимания по следующим причинам:
- Беспроводные датчики довольно маленькие и в последнее время не такие и дорогие: 500 рублей за простейший датчик или кнопку — это реальность, Xiaomi и AliExpress сделали своё дело.
- Беспроводные датчики могут продержаться на одной батарее несколько лет, без шуток — лет!
- В количестве Zigbee устройств их сила: технология поддерживает Mesh, проводные устройства, скорее всего, будут ретрансляторами сигнала между Gateway и удалёнными датчиками, заодно снимая нагрузку с самого Gateway.
- Технология поддерживает прямое управление в обход Gateway, можно связать кнопку и лампочку. В случае выхода Gateway из строя управление светом продолжит работать. Правда далеко не все кнопки это умеют.
Xiaomi
Фирма Xiaomi сделала многое для продвижения технологии Zigbee в альтернативных системах умного дома. Их старенький Xiaomi Gateway 2 (DGNWG02LM, lumi.gateway.v3) имел на борту «режим разработчика», который открывал локальный протокол доступа к управлению Zigbee устройствами этого шлюза. Интеграции этого протокола есть в множестве open source систем.
В евро-версии этого шлюза Xiaomi Gateway EU (DGNWG05LM, lumi.gateway.mieu01), а также в обновлённой версии Xiaomi Gateway 3 (ZNDMWG03LM, lumi.gateway.mgl03) этого протокола нет.
Обновлённая версия шлюза получила новый чип на Zigbee 3 (EFR32MG1B), а также поддержку технологии Bluetooth Mesh и HomeKit. В HomeKit поддерживаются не все устройства, будьте внимательны.
Xiaomi Gateway 3
В отличие от всех остальных шлюзов, обновлённая версия имеет уникальную особенность: на ней программно можно открыть Telnet-доступ. Доступ открывается только при наличии Mi Home токена, так что всё вполне секьюрно.
В этом шлюзе стоит чип серии EFR32 от фирмы Silicon Labs. Те в свою очередь поставляют вместе с чипом набор SDK. В составе SDK есть MQTT-транспорт, обеспечивающий доступ к Zigbee проколу из любого ПО, установленного как на шлюзе, так и за его пределами.
По умолчанию MQTT-брокер не доступен извне, но у нас ведь теперь есть Telnet!
В брокере есть два корневых топика: это «сырые» данные Zigbee и обработанные данные от Xiaomi. Я решил взять за основу обработанные данные. Там атрибуты устройств хоть и описаны псевдокодами, но в них всё же проще разобраться человеку, ничего не понимающему в Zigbee.
В итоге получился такой вот компонент для Home Assistant — XiaomiGateway3.
Он автоматически включает Telnet и публичный MQTT, используя токен Mi Home.
Сейчас токен нужно получать нехитрым образом (инструкция в readme). Но в будущем я планирую добавить получение токена с серверов Xiaomi, используя аккаунт Mi Home. Ведь недавно в сети появилась рабочая реализация авторизации в их облаке.
Сейчас компонент получает список устройств и последние значения их атрибутов с Хаба. Но в дальнейшем я планирую добавить получение списка устройств из облака. Там есть пользовательские названия всех устройств.
BLE Gateway
С этим пришлось повозиться. Работа с Bluetooth-устройствами не отражается в MQTT. Зато все данные отражаются в консоли. Поэтому компонент подключается к хабу через Telnet отдельным потоком, перезапускает утилиту работы с Bluetooth и читает её вывод в реальном времени. Это самый стабильный способ, что я нашёл. В syslog данные от этой утилиты попадают с перебоями. Моих знаний Linux не хватает, чтоб понять, почему так происходит.
Первым делом компонент научился поддерживать стандартный набор Bluetooth-устройств Xiaomi: датчики температуры, анализаторы почвы и освещенности, фумигатор.
А пару дней назад в нём появилась поддержка умных Bluetooth-замков. На сегодняшний день это единственный из известных мне способов подключить BLE-умный замок Xiaomi в альтернативную систему умного дома.
Чайника у меня нет, но присылайте логи — добавлю и его. Правда чайники Xiaomi не поддерживают функцию удалённого включения, это большой минус.
BLE-устройства и их атрибуты отображаются по мере поступления данных. Когда появится поддержка облака — полный список BLE устройств с их моделями, именами и последними посланными данными можно будет получить оттуда. Такая информация на хабе не хранится.
Поддержка Bluetooth Mesh ламп пока в разработке. Работа с ними сильно отличается от BLE-устройств.
Планы
Нужно отладить работу хаба со всем списком официально поддерживаемых Zigbee-устройств. Добавить возможность настройки «тонких» параметров:
- настройки хаба: например, мощность (и её можно сильно увеличить!),
- изменение настроек дочерних устройств: режим логических кнопок на выключателях, чувствительность датчика вибрации и многое другое.
Нужно добавить поддержку облака для получения токена хаба и полного списка Zigbee и Bluetooth-устройств.
Нужно добавить поддержку Bluetooth Mesh ламп.
И самое главное — добавить поддержку устройств других производителей. Да, это возможно. Мне удалось подключить все сторонние устройства, что у меня были, и управлять ими. Такие устройства не отображаются в Mi Home и HomeKit. Но управлять ими можно с помощью «сырых» Zigbee-команд.
Для понимания полного масштаба проблемы такой поддержки загляните в исходники замечательного проекта zigbee2mqtt: devices, fromZigbee, toZigbee.
Почти каждое устройство требует свой собственный обработчик. В случае с Xiaomi Gateway 3 и официально поддерживаемыми устройствами — роль такого обработчика выполняет софт хаба.
Другие мои разработки можно найти на GitHub. Среди русскоговорящей аудитории наиболее популярный проект — YandexStation. Глобально очень хорошо себя зарекомендовал SonoffLAN. Но, думаю, XiaomiGateway3 его легко обгонит. За развитием этого и других моих проектов можно следить на моём канале Telegram.
Источник
Собираем DIY шлюз для Zigbee устройств
Вступление
Пока крупные производители конечных устройств Zigbee в борьбе за кошельки пользователей имитируют поддержку оборудования сторонних производителей, группы энтузиастов изучают стандарты протоколов и изобретают «альтернативные» всеядные программные и аппаратные решения для работы с устройствами Zigbee.
Наибольший толчок развития DIY шлюзам дал проект zigbee2mqtt. На момент написания заметки в проекте реализована поддержка 785 устройства от 140 производителей.
Поиск показал наличие интересных конкурентных проектов AqaraHub(написан на с, похоже, что развитие приостановлено, последний коммит был 5 месяцев назад), нативная поддержка в ioBroker (проект ведет наш соотечественник Киров Илья), нативная поддержка в Home-assistant (поддержка появилась после появления библиотеки zigpy, активно развивается, но пока далека от совершенства). Обзор программных шлюзов хорошо разобран в интернете, имеется множество статей, желающий найдет информацию по тэгам в конце статьи.
После того, как zigbee2mqtt набрал достаточную популярность, пользователи ощутили и недостатки «программных» шлюзов. Среди наиболее заметных можно выделить следующие:
- необходимость использования отдельного сервера или одноплатного компьютера raspberry или аналога;
- на одноплатном компьютере для работы USB устройств нужен хороший блок питания, необходимо предусмотреть охлаждение одноплатного компьютера, также требуется карта памяти хорошего качества с достаточным свободным местом. При использовании одного мини-компьютера для «программного» шлюза и системы управления умным домом, необходимо следить за наличием свободного места на карте памяти, которое может внезапно заполниться логами или другими файлами;
- загрузка и поддержка актуальности версий интерпретатора и библиотек Node.JS. Обновление версий zigbee2mqtt производится из консоли, при обновлении есть необходимость в создании резервной копии конфигурации и последующего обновления;
- отсутствие визуального интерфейса из коробки.
Все указанные недостатки были отмечены группой энтузиастов, которые постарались на базе доступных для заказа на Aliexpress комплектующих разработать альтернативный DIY Zigbee шлюз. Использование аппаратного шлюза должно уменьшить количество сбоев, связанных с работой операционной системы и сделать более надежное решение, которое можно использовать из коробки. Для поддержки оборудования была написана прошивка SLS Zigbee Gateway, которая распространятся бесплатно. В настоящее время полноценно поддерживается работа более 100 видов устройств, список постоянно расширяется.
Ведется работа по наполнению и актуализации руководства по использованию шлюза. Уже сейчас реализована возможность использования сценариев на языке lua (доступны функции работы с сервером MQTT, вызов url методом POST или GET, изменение состояний устройств в зависимости от состояний устройств). Для интеграции с системами умного дома доступен поддерживаемыми почти всеми системами протокол MQTT. Для ускорения интеграции устройств шлюза в системы умного дома, структура топиков полностью соответствует структуре zigbee2mqtt.
Для интеграции с MajorDoMo разработано дополнение. Интеграция с Home-assistant описана в инструкции. В скором времени будет реализован механизм discovery для home-assistant. Также доступен вариант управления устройствами шлюза через HTTP API. В среднесрочной перспективе будет реализована работа с оборудованием BLE.
Стоит отметить, что имеются альтернативные прошивки и решения, имеющие в основе похожее причины для создания DIY шлюза. Ведется аналогичный проект на том же оборудовании по названием ZESP. К сожалению, обновления проекта Zesp для ESP32 свободно не распространяются, поэтому оценить текущую функциональность не представляется возможным.
Также команда авторов прошивки Tasmota запустила проект реализации подобного шлюза на базе микроконтроллера ESP8266 и трансивера сс2530.
Самостоятельная сборка шлюза
В качестве аппаратной начинки шлюза используется современный микроконтроллер ESP32-WROVER-B от Espressif, который согласно даташиту с сайта производителя может одновременно работать с WiFi и BLE, имеет достаточный для работы шлюза объем оперативной памяти и хорошую производительность. Еще одной полезной особенностью данного чипа является доступность написания кода в Arduino IDE или PlatformIO, а также его цена.
Работоспособность протокола Zigbee обеспечивает трансивер от Texas Instruments сс2538 с усилителем сс2592. Пользователем @Jager_f было проведено тестирование дальности связи беспроводной кнопки от компании Xiaomi, которое показа показало до 800 метров уверенного приема на открытой местности.
Главным преимуществом трансивера является многофункциональность. Он может работать как через встроенную эмуляцию USB, так и через UART. Для использования UART была написана прошивка.
Более подробно информация по перепрошивке разобрана в статье Прошиваем СС2538 с помощью J-Link на сайте modkam.ru.
Также существуют готовые модификации плат для Raspberry через UART.
Схема подключения ESP32 и сс2538 сс2592 указана на рисунке:
Готовые герберы и файлы для заказа плат можно взять на сайте modkam.ru
Отличную видео-инструкцию по сборке шлюза подготовил Руслан Надыршин на своем канале «Электроника в объективе»
Имеется «альтернативный» (прямоугольный) вариант платы от @vofkindt
Также SLS Zigbee шлюз можно собрать на базе ESP32 и устаревшего модуля сс2530. Производительность старого чипа от TI сильно отстает от сс2538, поэтому рекомендуется их использовать только для ознакомления. Более подробная информация представлена в начале обсуждения темы по ссылке.
Готовые шлюзы, собранные энтузиастами, можно приобрести в группе в telegram
Начало работы
После прошивки zigbee модуля и ESP32, при включении шлюза создается точка доступа zgwABCD, где ABCD — последние символы MAC-адреса ESP32. Далее необходимо с помощью телефона подключиться к новой точке доступа и ввести реквизиты вашей сети Wi-Fi.
После того, как шлюз подключился к сети, в настройках вашего маршрутизатора можно уточнить его ip адрес. Интерфейс управления может быть доступен на 80 порту по адресу, который выдал маршрутизатор, например http://192.168.1.93.
После того, как вы подключитесь к шлюзу SLS Zigbee Gateway, вам необходимо зайти на страницу настроек GPIO микроконтроллера (из меню основной страницы Settings -> HW Setup) и выставить настройки портов GPIO. Ниже приведены настройки для круглой платы:
Если шлюз собран и прошит правильно, то на главной странице в разделе Zigbee вы должны увидеть Zigbee DeviceState: 9 [OK]
Сопряжение устройств
Добавление устройств zigbee осуществляется при включении режима сопряжения. Его можно осуществлять через меню Zigbee -> Join, либо командами mqtt или http (информацию можете найти в документации). Новые сопряженные устройства будут появляться нарастающим итогом, пока включен режим сопряжения.
Список всех сопряженных устройств можно открыть через меню Zigbee -> Devices
Можно посмотреть карту сети Zigbee -> Map
Интеграция с системами умного дома
Интеграция с системами умного дома доступна по mqtt или http. Структура топиков mqtt соответствует описанию zigbee2mqtt. Настроить адрес вашего mqtt брокера можно на странице Settings -> Link Setup -> MQTT SETUP
Дальнейшие шаги по интеграции с системами умного дома описаны в соответствующих инструкциях (Majordomo, home-assistant)
Настройка автоматизаций
В шлюзе SLS Zigbee Gateway доступны следующие виды автоматизаций:
Примеры использования
Оборудование самого популярного в СНГ китайского брэнда Xiaomi поддерживается шлюзом почти в полном объеме. К сожалению почти все оборудование этого брэнда (за исключением оборудования новой серии на zigbee 3) не поддерживает Binding согласно стандарта, т.е. не может работать автономно, без координатора. Как раз для таких случаев был создан вариант автоматизации на шлюзе SLS — SimpleBind. Он позволяет настроить автоматизацию внутри одной сети Zigbee, где решение об изменении состояния будет принимать шлюз SLS на основе простейших инструкций.
Ниже на скрине указан пример правила управления устройством (реле KS-SM001 от Ksentry Electronics) в зависимости от нажатия правой кнопки двухкнопочного пульта WXKG02LM от Xiaomi.
Датчики движения, дыма, открытия двери и другие можно настроить аналогичным образом. Более подробные сведения об использовании функции SimpleBind можно прочесть в описании функционала.
Оборудование компании Ikea, Philips, Nue, Gledopto, Trust и др. производителей имеют прошивки с поддержкой необходимых кластеров. Это позволяет настроить прямые автоматизации. Например круглый магнитный пульт IKEA ICTC-G-1 может самостоятельно без использования шлюза управлять почти всеми видами доступных ламп zigbee. Такая автоматизация на основе прописанных в прошивке устройств кластеров называется Binding. Обычно шлюз (координатор) настраивает связи устройств, далее устройства общаются между собой без использования координатора. Описание методов настройки связей устройств указаны в руководстве. С помощью Binding удалось настроить управление всеми лампами Ikea, Trust, Philips и даже лампочку Aqara ZNLDP12LM. Ниже на скрине пример привязки круглого пульта-диммера икея (беспроводной реостат) к имеющимся лампочкам zigbee.
После нажатия Bind каждая из ламп может менять яркость при вращении пульта-реостата.
Источник