Статья

Интегрируем zigbee2mqtt на XIAOMI gateway hub

- - (-)

Входные данные

Xiaomi gateway DGNWG05LM на базе nxp imx6 процессора (подходят aqara этого поколения).Возможность получить root и установить openwrt (как это сделать).256 мб флеш и ОЗУ памяти.Zigbee модуль на базе nxp JN5169.Желание получить автономный шлюз с работающим zigbee, а не звонок и моргание светодиодами.

Европейская версия шлюза часто поставляется в комплекте Mi Smart sensor set (код DGNWG05LM). В MiHome добавить большинство устройств из китайского региона нельзя.

Предисловие

Шлюз от xiaomi/aqara - это уникальная железка с linux на борту. Спасибо всем ребятам из @xiaomi_gw_hack, которые достигли успехов, подготовили прошивку и реализовали поддержку всего железного на шлюзе от светодиодов и всех GPIO, до спрятанного модуля BLE в wifi-модуле. В особенности @lmahmutov, @Belokobylskiy, @alx2000y, @divanikus.

Как легковесное и доступное, в репозитории openwrt был запущен Domoticz с плагином zigate и это работало, но база поддерживаемых устройств и опыт использования меня привели к zigbee2mqtt.

Что нужно, чтобы использовать новый чип в zigbee2mqtt ?

zigbee2mqtt, iobroker.zigbee используют в качестве backend для связи и обработки команд библиотеку zigbee-herdsman.

Раньше он назывался zigbee-shepherd и поддерживал только TI чипы, например, CC2531, после рефакторинга код стал более гибким и для добавления поддержки нового чипа нужно реализовать только адаптер, который будет отправлять и принимать пакеты в zigbee сеть по средствам общения с чипом.

Благодаря этому, zigbee2mqtt в экспериментальном режиме поддерживает

забегая вперёд, теперь и

  • NXP JN5168/JN5169 - ZiGate и шлюз Xiaomi.

Какую прошивку для zigbee модуля выбрать?

Разработка была начата с прошивки для адаптеров ZiGate, она основана на примере от производителя чипа NXP JN-AN-1216 Zigbee Node Control Bridge.

Базовый функционал адаптера был написан именно с прошивкой ZiGate, в прошлом году был добавлен raw режим. Он идеально подходил для целей общения с z2m, но здесь меня ждал самый большой подводный камень. Этот режим не использовался другими библиотеками в продакшене и, соответственно, не был протестирован, в результате я долгое время не мог понять причину нестабильности при работе со сложными устройствами. В одно и то же время и мы, и автор ZiGate дошли до того, что в raw режиме была утечка памяти и работа сдвинулась с мертвой точки.

После тестирования пользователями в zigbee2mqtt и iobroker было обнаружены еще несколько проблем при спаривании устройств, так как получить быструю обратную связь от разработчика ZiGate не получилось, мы попробовали запустить чистый пример от производителя чипа, добавив туда RAW режим и для совместимости с протоколом ZiGate LQI (силу сигнала).

Чистый пример от NXP запустился и не имел проблем с утечками памяти, и работал стабильнее в RAW режиме, необходимом для работы адаптера.

Сейчас я рекомендую именно ее, но и с прошивкой ZiGate может работать, если не произойдет утечка памяти. Исходные коды и собранные bin файлы для прошивки доступны на github.

Как разместить zigbee2mqtt на шлюзе, если у тебя всего 256 МБ?

Zigbee2mqtt - это приложение на node.js и с множеством зависимостей, стандартная установка на raspberry pi занимала 105 МБ, а ведь на шлюз нужно еще установить сам Node JS и неплохо, чтобы место еще осталось для node-red и доп ПО. В итоге в рекомендации по установке был добавлен флаг --production, он позволяет сократить размер установленного z2m до 38 МБ, но мне хотелось еще экономить место и время при установке, поэтому я решил подчистить от неиспользуемых файлов, и теперь z2m занимает всего 19 МБ (тестирую сборку все в один файл, файлы веб морды, тогда размер получается в пределах 10 МБ).

Был доработан Makefile из проекта nxhack/openwrt-node-packages для сборки оптимизированного пакета zigbee2mqtt на xiaomi шлюзе, а для удобной установки в одну команду был создан фид собранных пакетов. Добавив его, можно получить установленный zigbee2mqtt за одну команду и минуту времени.

Текущий статус

Адаптер уже готов и работает в режиме бета-тестирования, последние правки доступны в dev/edge версии (пакет node-zigbee2mqtt-dev).

Вы можете подключиться к тестированию или разработке адаптера, вопросы и предложения можно писать в issue на github.

  • Часто используемые устройства, в тч. DIY с портала modkam, были протестированы.
  • Работают группы и репорты.
  • Базовая прошивка на 10-20 устройств, также тестируется прошивка с измененным количеством подключаемых устройств до 50-70 (успешно было подключено более 30 устройств).
  • Скорость запуска z2m на шлюзе ~ 20 секунд.
  • Прошивка работает с включенным логированием и debug.

Адаптер и прошивка находится в стадии бета-тестирования и доработки, будем рады всем, кто захочет помочь.

Чат в телеграм: @zigateAdapterZ2M

Как установить zigbee2mqtt на xiaomi шлюз?

opkg update opkg install node-zigbee2mqtt

Да да, все так просто, но для начала у вас должен стоять openwrt и подключен фид с собранными пакетами, об этом подробно расписано в инструкциях на сайте проекта.

PS: На шлюзе тестируется автономная связка из программ mosquitto - zigbee2mqtt - node-red, все автоматизации можно запускать внутри, независимо от доступности wi-fi сети, использовать динамик и подсветку шлюза для голосовых и световых оповещений.


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

Вот это и правда круто

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

в прошлом году очень сильный толчок дали распродажи в мтс/dns по 1000 руб./2000 руб. за набор. На али есть магазин где наборы раздавали по 1 руб. в рамках акции и как подарок за покупку телека или пылесоса. Сейчас цены выросли. 

Когда появилось много шлюзов и плат это позволило ставить более смелые эксперименты. В результате мы имеем:

  • другую прошивку ( openwrt с более менее современным ядром и возможностью собирать обновление)
  • возможность собирать и обновлять программы в пакеты с чисткой и оптимизацией ( чтобы влезало на шлюз )
  • фид с собранными программами чтобы можно было в пару кликов поставить zigbee2mqtt, node-red или snapcast
  • и многое другое.

"кокурент" -ZESP? 

zigbee2mqtt - распространенное opensource решение с большим опытом и пачкой решений для zigbee зоопарка, пусть там тоже есть костыли, но он развивается.

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

Я никого не призываю ставить/удалять ту или иную программу. Не холивара ради, но вот пункты моего субъективного мнения по которым я не выбрал ZESP

  • закрытый исходный код ( на тот момент весь, сейчас частично открыт )
  • нет контроля версий например git - обновление ставятся с личной vds автора на firstvds
  • из второго пункта выливается отсутствие сборки и пакета для openwrt
  • по началу стабильность была очень низкая ( например внедрили telegram бот, и если нет подключения к telegram падало все, а код закрыт)
  • отношение автора к z2m ( "мне не нравятся конвертеры это зло и тп" , но потом были запилены те же конвертеры с названием "шаблоны" )
  • отношение автора к прошлым проектам, где остается только один бинарник и никакой поддержки нет, а на просьбу поделиться "обновлением для избранных" получаешь отказ так как "не был с нами с начала" 

Это и многое другое не внушило мне доверие и я ушел разбираться:что такое zigbee / как парсить сообщения приходящие по uart / как собрать прошивку для zigbee модуля и тд.

Добрый человек, а на вторую версию хаба с китайской вилкой DGNWG02LM. Никак? Тут один умелец написал на страничке модели , что можно

Посмотрите что за плата внутри. если там IMX6 проц  то скорей всего можно https://openlumi.github.io/usb_flashing.html">https://openlumi.github.io/usb...


Платы одинаковые у xiaomi и aqara этого поколения, разница только в навесных модулях wifi / zigbee ( плюс у акара стоит микросхемка для подписывания пакетов в homekit )


С китайской или европейской вилкой без разницы у них корпус сделан универсально сзади можно отщелкнуть и заменить вилку, поэтому смотрите на плату.


Судя по комментариям на хабре возможно отличие только в вилке https://habr.com/ru/post/494296/#comment_21432812">https://habr.com/ru/post/49429...

Но даже если плата другая, то ее можно заменить, на барахолке люди за рублей 300-400 отдают платы после замены на sls шлюз. У продавцов sls шлюзов в корпусе xiaomi таких плат много.

спасибо, попробую разобрать, но как мне кажется там  Медиатек с 128мб памяти



 For xiaomi gateway2 version with Chinese plug DGNWG02LM it will not work, it has other hardware components installed. c гитхаба. видимо человек просто перепутал версии когда писал, что удалось прошить

Значит закажите плату. Продавали вот тут https://t.me/zigberu">https://t.me/zigberu

Прошил свой хаб, все отлично работает! Теперь надо в ХА как то прокинуть его

Вопрос,  только только покупаю шлюз. Нужно ли на него ставить 

openwrt ? или оставаться на стоке ?

да нужно, это указано вот здесь. 

>> Да да, все так просто, но для начала у вас должен стоять openwrt и подключен фид с собранными пакетами, об этом подробно расписано в инструкциях на https://openlumi.github.io/">сайте проекта.

Спасибо! Буду открывать коробочку, без UART я так понимаю внутрь не попасть :)


А еще вопрос, в этом шлюзе Bluetooth имеется? Первичная настройка не через него делается?

Не через него.

В EU версии есть, но на стоковой прошивке он не доступен. В wifi модуле xiaomi шлюза есть BLE , ребята сняли проц и прозвонили все . Как оказалось туда выведен один из 4х UART с проца, после этого получилось сделать dtb для работы с BLE. Почитайте сайт openlumi и желательно не по косой там почти все расписано.

об этом вот тут ;)

>> Спасибо всем ребятам из @xiaomi_gw_hack, которые достигли успехов, подготовили прошивку и реализовали поддержку всего железного на шлюзе от светодиодов и всех GPIO, до спрятанного модуля BLE в wifi-модуле. В особенности @lmahmutov, @Belokobylskiy, @alx2000y, @divanikus.

Отлично, у меня как раз такой, уже открыл, пришлось отвертку подпилить :)
Про спрятанный модуль я прочитал, было непонятно в какой версии он есть.

Спасибо! Буду открывать коробочку, без UART я так понимаю внутрь не попасть :)

А возможно затянуть в хаб исходники https://github.com/slsys/Gateway">SLS Gateway и поднять? 

У sls gateway нет открытых исходников. Только закрытый бинарь и он под esp32.


Затянуть его в этот шлюз можно только если внутрь поставить плату с esp и cc2538, чем люди и занимаются


Цена такой платы около 3х тысяч у продавцов барахолки.



из плюсов вижу только скорость загрузки


из минусов ограничения в тч связанные с ресурсами esp , родная плата в этом плане гораздо гибче. Она по ресурсам сопоставима с апельсинкой зиро, но по обвязке и стоимости гораздо круче.

PS выглядит как нативная реклама SLS )

Да, простите, тоже не нашел исходников :) Будем жить на openlumi и zigbee2mqtt. Спасибо за статью, я правда сначала наткнулся на ваши правки в прошивке, а уже потом прочитал статью внимательно - она собственно все объяснила.

Добрый день, подскажите по какой причине могу отваливаться датчики? датчики открытия двери отваливаться через сутки (и только они), батарейки сменил, тоже самое, сейчас их перевел на gateway 3 c Mi home для тестирования.


Вернуться назад

Устройства


Xiaomi

Xiaomi Mijia Gateway 2

(10 отзывов)
Заказать на:

Texas Instruments

USB Stick CC2531

(14 отзывов)

Phoscon

deCONZ Conbee 2

(5 отзывов)

Xiaomi

Xiaomi Gateway EU

(1 отзыв)

Вернуться назад