В прошлой статье я дал общий обзор контроллера 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-канале ↩