В прошлой статье я дал общий обзор контроллера KC868-AG Pro, в этой статье мы разберём вопросы использования AG Pro в качестве Zigbee координатора при помощи двух популярных прошивок Tasmota и SLS.
Попробуем разобраться с тем, как установить прошивки на это железо, как их настроить, и я поделюсь своими впечатлениями об этих прошивках.
❯ Zigbee координатор
Вопрос о том, что такое Zigbee и для чего это нужно я, с вашего разрешения, пропущу. Кратко замечу только, что для работы Zigbee сети нужен т. н. «координатор», то есть устройство, которое будет «главным» и которое будет управлять и координировать работу всех остальных подключённых к сети беспроводных датчиков и актуаторов.
Существуют полностью закрытые решения координаторов (Zigbee хабов) от различных компаний, существуют открытые проекты как в части железа, так и в части софта, а также существуют различные архитектурные решения в виде отдельных устройств или в виде подключаемых к компьютерам USB-стиков.
В нашем случае KC868-AG Pro является так сказать «железной константой» для которой нам нужно подобрать программное решение Zigbee координатора. Архитектура тоже жёстко задана условиями задачи — это микроконтроллер ESP32 в связке с модулем E72-2G4M20S1E (чипом CC2652P).
Для этой связки мы и будем подбирать решение Zigbee координатора.
Примечание. Не обязательно использовать именно KC868-AG Pro, информацию из этой статьи можно применить для создания Zigbee координатора на другом аналогичном девайсе и даже на просто DIY связке ESP32 + E72-2G4M20S1E.
❯ Zigbee модуль E72-2G4M20S1E
Как я уже отметил выше, модуль E72-2G4M20S1E сделан на основе чипа CC2652P и допускает самостоятельное программирование и заливку различных прошивок. Это делается либо при помощи USB-UART переходника (если на модуле присутствует bootloader) или при помощи программатора J-Link (на плате KC868-AG Pro есть соответствующий разъём).
В нашем случае задача кардинально упрощается, поскольку контроллеры KC868-AG Pro приходят с завода с уже залитой в модуль E72-2G4M20S1E прошивкой, поддерживающей Zigbee 3.0. То есть нам нужно только выбрать прошивку для ESP32, которая будет взаимодействовать с Zigbee модулем и выполнять роль координатора сети.
❯ Tasmota
Начнём с Tasmota — бесплатной и открытой прошивки для ESP32 (и ESP8266). Действительно, популярная прошивка, проверенная тысячами инсталляций, открытый исходный код, бесплатна, — чего ещё желать? Если набор функций и стабильность работы будут на высоте, то это будет отличным решением для создания универсального DIY Zigbee координатора.
Установить прошивку Tasmota на ESP32 можно несколькими способами, самый простой из которых — воспользоваться веб-инсталлятором. Просто подключаете контроллер к USB порту компьютера, выбираете нужную версию прошивки и загружаете её.
Примечание. Для того, чтобы можно было загрузить прошивку с сайта на контроллер, ваш браузер должен поддерживать эту функцию. Точно подойдут последние версии Хрома и Оперы.
Сначала подключаем контроллер к USB порту компьютера и запоминаем его номер на случай, если системе не удастся его распознать автоматически (у вас номер порта скорее всего будет отличаться от моего).
Потом заходим на страницу и выбираем из выпадающего списка нужную прошивку. Сам процесс заливки прошивки на удивление прост, состоит из нескольких шагов, и проходит без каких-либо проблем.
Выпадающий список содержит большое количество возможных вариантов, нам требуется прошивка «Tasmota32 Sonoff-ZigbeeBridgePro». Очевидно, изначально она предназначается для девайса Sonoff, но может быть установлена на совместимое железо KC868-AG Pro (ESP32 + CC2652P).
После выбора нужной прошивки нажимаем на кнопку «CONNECT» и, если всё сделано правильно, система находит подключённый контроллер. В моём случае контроллер распознался автоматически, возможно вам потребуется вручную ввести номер порта или выбрать нужный порт из списка.
Рекомендуется установить галочку «Erase device», иначе возможны различные «глюки» и проблемы с работой прошивки.
Сам процесс инсталляции длится пару минут и заканчивается приглашением ввести реквизиты доступа к вашей Wi-Fi сети. Можно это сделать сразу, а можно после перезагрузки контроллера ввести их в его веб-интерфейсе. Координатором создаётся открытая Wi-Fi сеть «tasmota-***» к которой можно подключиться со смартфона или компьютера.
И ввести реквизиты доступа к кашей Wi-Fi сети.
Теперь можно подключиться к контроллеру и увидеть главную страницу интерфейса Zigbee координатора.
По умолчанию прошивка работает в режиме «Sonoff Zigbee Bridge Pro» (поскольку она предназначена для этого устройства) и в этом режиме доступны только те ресурсы (GPIO), которые присутствуют на девайсе Sonoff.
Чтобы получить доступ ко всем GPIO, нужно в меню Configuration изменить роль устройства на «ESP32-DevKit».
После изменения роли нам становятся доступны для управления все GPIO и мы можем указать номера для Zigbee RX (32) и Zigbee TX (33).
В качестве теста будем подключать популярные, можно даже сказать типовые, датчик температуры и влажности и кнопку Aqara и посмотрим как Zigbee координатор на прошивке Tasmota справится с этой задачей.
Датчик температуры и влажности определился и подключился нормально, а вот с кнопкой возникли проблемы — сама кнопка определилась, но данные с неё Tasmota не смогла нормально получать. Это говорит о том, что если вы выберете Tasmota в качестве прошивки координатора Zigbee сети, то вам придётся изучать документацию и предпринимать дополнительные усилия по подключению Zigbee устройств.
Строим карту Zigbee сети в Tasmota. Дизайн и графика конечно «колхозные» до предела. Кстати, чтобы отрисовать карту сети, прошивка запросила внешнее соединение для закачки фала. То есть прошивка Tasmota не является полностью автономной и требует для своей работы наличие связи с интернетом.
Вообще, завязка на интернет прошивок Zigbee координаторов мне кажется странной — пропал интернет — перестал нормально работать Zigbee координатор. О чём вообще думают разработчики подобных прошивок? и как представляют себе работу их систем в реальных условиях?
❯ SLS Gateway
SLS — это условно бесплатная прошивка Zigbee координатора для ESP32, которая, кроме всего прочего, поддерживает работу с модулями на основе чипа CC2652P. Прошивка имеет бесплатную версию и платный вариант с расширенной поддержкой устройств и обновлений. Мы воспользуемся бесплатным вариантом SLS Gateway.
Установка прошивки SLS Gateway на контроллер KC868-AG Pro имеет несколько другую логику, но тоже крайне проста. Нам понадобится файл 20230723_full.zip, который находится в папке rom дистрибутива по ссылке выше.
После распаковки архива 20230723_full.zip нужно зайти в папку Windows (в моём случае, в вашем вы можете выбрать Mac или Linux).
И просто последовательно запустить файлы Clear.bat (для очистки ESP32) и !Flash4mb_lfs.bat (для заливки прошивки SLS Gateway). Процесс длится всего пару минут.
Далее просто подключаемся к соответствующей Wi-Fi точке доступа
И вводим реквизиты вашей домашней Wi-Fi сети.
Далее подключаемся к назначенному роутером IP-адресу и видим главную страницу координатора.
Нам остаётся только указать в меню Settings/Hardware номера GPIO выводов, соединяющих ESP32 и модуль E72-2G4M20S1E.
После перезагрузки координатора мы можем видеть информацию о Zigbee сети, её настройках и количестве подключённых устройств (пока 0).
Берём наши тестовые Zigbee устройства и без проблем подключаем их к SLS Gateway.
Эти подключения видны также и на карте Zigbee сети.
❯ Впечатления от прошивок
Для того, чтобы что-то говорить о качестве работы прошивок, нужно с ними плотно поработать какое-то время. Пока я могу только поделиться первыми впечатлениями.
Обе прошивки популярные, имеют множество инсталляций и заинтересованные сообщества. Это может косвенно свидетельствовать об их работоспособности в целом.
Tasmota
Tasmota в качестве плюса имеет открытость, то есть вы можете свободно ознакомиться с исходным кодом и, при наличии необходимости и достаточной квалификации, модифицировать прошивку под свои нужды. К минусам Tasmota можно отнести откровенно «колхозный» дизайн и то, что она не смогла сходу нормально определить популярную Zigbee кнопку.
SLS
SLS в целом производит впечатление более продвинутого продукта, у неё отличный дизайн и более адекватная работа. К минусам SLS я бы отнёс ограничения по работе с устройствами и с обновлениями в бесплатной версии и тотальную завязку на интернет. Об этом немного поподробнее далее.
Интерфейс SLS Gateway спроектирован таким образом, что тянет из интернета довольно большие файлы, причём делает это при каждой загрузке страницы. Часть из этих файлов кешируется браузером, а часть — нет. В результате (даже на отличном интернет-канале) задержки загрузок страниц составляют десятки секунд, а иногда файлы вообще не удаётся загрузить и веб-интерфейс «разваливается». То есть интерфейс не работает, а постоянно подвисает с совершенно неприличными и задержками.
Такой подход к организации интерфейса вызывает недоумение — это очевидный провал с точки зрения построения архитектуры системы. Всё это можно было бы легко заменить на пару самописных CSS и JS файлов и разместить локально в ESP32 — тогда всё работало бы мгновенно и сам координатор был бы независим от интернета.
По сути SLS Gateway — это не отдельная прошивка, а часть интернет сервиса slsys.io — в этой системе всё, «что надо» (это ещё ладно, но тоже спорно) и всё, что «не надо» (а вот это уже гораздо хуже) завязано на интернет.
Я попробовал в качестве эксперимента отключить интернет — и SLS Gateway вообще перестал работать. В общем, подобная архитектура у меня не вызывает никакого энтузиазма и является жирным минусом в целом довольно симпатичной системе SLS.
❯ Заключение
По результатам можно сказать, что контроллер KC868-AG Pro с его железом ESP32 плюс E72-2G4M20S1E (CC2652P) является базой на которую можно установить любую совместимую прошивку Zigbee координатора. Причём сделать это легко, без каких-либо проблем и танцев с бубном. Выбор той или иной прошивки зависит от предпочтений пользователя — если вы фанат SLS и привыкли к ней — можно буквально в два клика установить её на KC868-AG Pro, а если вы обладаете квалификацией, позволяющей модифицировать под свои задачи Tasmota, то и с её установкой тоже никаких проблем не будет.
Знаете варианты Zigbee координаторов лучше Tasmota или SLS для связки ESP32 плюс CC2652P? Напишите об этом в комментах — это всем будет интересно.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
Комментарии (18)
vbifkol
10.08.2024 20:11ZIGStar, он же XZG.
А родную прошивку китайцы дают? Или за 100 баксов мы имеем только полуфабрикат?
smart_alex Автор
10.08.2024 20:11Kincony для части своих контроллеров имеет собственный софт, но своей прошивки Zigbee координатора у них нет.
vbifkol
10.08.2024 20:11то есть чистой воды полуфабрикат? Всё время фигею с их бизнес-модели. Ну и с покупателей. А почему бы не взять нормальный шлюз втрое дешевле? СЛС стоит 2900, зигстар - 3500, функционально лучше.
smart_alex Автор
10.08.2024 20:11Мне тоже цена показалась завышенной, особенно по сравнению с конкурентами.
С другой стороны, в AG Pro натыкано много того, чего нет в обычных шлюзах - видимо это и определяет цену.
Avenit
10.08.2024 20:11Вы взяли довольно старую версию, актуальная открытая 2023.12.31d7, а для подписчиков и обладателей официальный контроллеров SLS доступна 2024.04.16d1, все списки изменений доступны для всех.
В результате (даже на отличном интернет-канале) задержки загрузок страниц составляют десятки секунд, а иногда файлы вообще не удаётся загрузить и веб-интерфейс «разваливается». То есть интерфейс не работает, а постоянно подвисает с совершенно неприличными и задержками.
Это совершенно не так. Из CDN загружаются общие библиотеки для веб-интерфейса, только в том случае, если их нет в кэше браузера (первое открытие веб-интерфейса), что видно на вашем скрине, где время загрузки менее 2 секунд, а дальше уже грузится все из кэша и время загрузки будет еще меньше.
Я попробовал в качестве эксперимента отключить интернет — и SLS Gateway вообще перестал работать.
Такого происходить не должно, т.к. интернет нужен на клиенте для настройки, для самой работы прошивки он не нужен и она продолжает работать автономно. Интернет может понадобится для синхронизации времени, если нет RTC и для облачного протокола, это все опционально и отключается в настройках.
smart_alex Автор
10.08.2024 20:111 Я взял последнюю доступную версию на момент написания статьи.
2 Нет, не всё грузтися из кэша. Но вопрос даже не в этом - интерфейс постоянно подвисает при переходе по страницам и разваливается по таймауту. Но и это не главное: сама идея что-то грузить из SDN, тем более грузить здоровые стоковые файлы - порочна и просто несерьёзна.
3 Не нужно эвфемизмов - не работает интерфейс - это значит не работает система (и тоже просто несерьёзно).
Jack_Vo
Sls интернет нужен только для веб интерфейса, без интернета он продолжает отлично работать. В данный момент можно сделать свой интерфейс который будет работать локально, а в новой версии обещают портировать интерфейс на esp. Все таки большая часть людей использует sls как ZigBee шлюз для систем УД через mqtt.
smart_alex Автор
Всё-таки я не очень понимаю эту логику - интернета нет - ничего нельзя сделать в веб-интерфейсе.
Я себе такого не позволял даже десять лет назад, когда только изучал HTML, CSS и JS.
Jack_Vo
Автор собирается сделать интерфейс локальным в следующей версии. А так как по факту прошивку пишет один человек и начинал это делать он как хобби то по всей видимости использование cdn было проще. Но даже тасмота по всей видимости использует cdn для части интернета.
smart_alex Автор
Вот это мне и непонятно - для того, чтобы написать прошивку Zigbee координатора, нужно обладать приличной квалификацией.
Как при этом можно допустить такой ляп в архитектуре системы - мне совершенно непонятно.
kenomimi
Чувак может быть железячником-плюсовиком, и про причуды современной фронтенд-разработки ничего не знать. Взял примеры из интернета, слепил их вместе, кое-как заработало - ну и ладно. Фронт в наши времена стал очень сложный, вот так с налету не зайдешь.
smart_alex Автор
Наверное так и есть.
Моя первая мысль, когда я посмотрел как это у них сделано - "а ребята себе ни в чём не отказывают и про оптимизацию не слышали" :)
NutsUnderline
во первых это делали разные люди. все "умное" делает cc2652 который запрограмирован с завода. на него нужно подавать команды по типу AT. Во вторых для всей этой веб шелухи нужно хранилище которого не вагон. в некоторых устройствах на esp32 эти файла на microsd хранят. а есть где ничего не хранят все чисто кодом на С генерируется, но там очень сложная портянка кода выходит..
smart_alex Автор
Помнится, у меня на ESP-01 в 512 кБ памяти умещались и функциональная прошивка и функциональный веб-интерфейс.
Нужно быть сильно альтернативно одарённым программистом, чтобы в ESP32 не хватило места для веб-интерфейса.
vbifkol
На СЛС свободного места нет. Потому что товарищи пошли в философии "запихаем все устройства, до которых дотянемся", а это по определению сжирает всю возможную память и то не хватает.
В зигстаре пошли другим путем: голый шлюз, зато интерфейса - завались.
Avenit
Внешние скрипты для веб-интерфейса была вынужденная мера, т.к. актуальны были ESP32 с 4Мб флеш памяти, но сейчас большая часть уже имеет 16Мб и можно сделать встроенный веб-интерфейс, чем сейчас и занимаемся. Сейчас прошивка занимает 2.1Мб, с веб-интерфейсом будет меньше 3Мб.
Зигстар не является автономным контроллером, это просто сетевой координатор (кстати SLS может работать и в этом режиме), который не может работать без отдельного сервера с ПО (z2m, ZHA и др.)
Buzzzzer
Автор в следующих версиях что только не обещал. Но увы, он пилит ОООООчень медленно. Много недоделанных фич, которых скорее всего никогда не будет. А помочь некому, ибо код закрыт.
У меня не было бы претензий, будь это бесплатный проект\open source, но когда покупаешь железку у которой самим автором заявлена поддержка, определённая функциональность, которая сильно сырая, и наполеоновские планы по фичам, которые не двигаются, это выглядит так себе.
К слову, подгрузку вебморды с флешки обещают года так три, если не больше.
А сейчас, похоже что, автор решил еще и переписать под новое железо (ESP-32-C6), то разработка вообще встанет колом