У компании Kincony есть обширная линейка контроллеров на основе популярного ESP32. Но контроллеры не работают сами по себе, для них требуется программное обеспечение, и тут просто просится создание «фирменной» прошивки для этой линейки контроллеров.
Идея очевидная, но тут не всё так просто: создание софта — это довольно сложный процесс, нельзя просто так взять и создать прошивку для контроллера (а тем более для линейки контроллеров), — тут нужно иметь представление об архитектуре IoT систем и месте и роли контроллера, работающего под управлением этой прошивки в этих системах и т. д.
Далее мы подробно разберём функционал и принципы работы фирменной прошивки KCS (сокращение от «KinCony Super») компании Kincony и посмотрим, что у неё получилось (и что не получилось) реализовать.
❯ Kincony KCS
Линейка KC868-A серии содержит множество контроллеров, на данный момент поддержка KCS заявлена для моделей A4, A6, A8, A8S, A16, A32, A64, A128, AI, AK и E16S.
Часть контроллеров из линейки KC868-A
На любой из этих контроллеров можно без особых проблем установить KCS и получить из коробки базовый функционал ESP32 контроллера «начинающего любителя домашней автоматизации». Не нужно ничего выдумывать и мудрить со сторонними прошивками — базовый функционал «логических хабов» и интеграция с популярными системами домашней автоматизации присутствует из коробки.
Примечание. Под «логическим хабом» я понимаю контроллер, работающий под управлением прошивки, которая позволяет задать простейшую логику реакции на входные сигналы, без необходимости непосредственного программирования и компиляции кода самой прошивки.
Можно сказать, что это огромный шаг вперёд для всей экосистемы контроллеров Kincony — собственная прошивка в сочетании с собственной линейкой контроллеров — это выглядит очень и очень сильно. Также стоит отметить, что на данный момент актуальная версия прошивки KCS — 1.0.19, что прозрачно намекает на то, что всё ещё только начинается.
Теперь наглядно посмотрим как всё это хозяйство устанавливается на контроллер и как работает.
❯ Установка KCS
Для экспериментов возьмём самый первый контроллер линейки — KC868-A4. Кроме всего прочего, он хорош ещё и тем, что содержит множество различных подсистем и мы сможем наглядно увидеть какие из них поддерживаются стандартной прошивкой, а какие — нет. И сможем сделать соответствующие выводы.
Kincony (бесплатно) предоставляет специализированную прошивку для каждой модели контроллера. То есть установить прошивку от одной модели на другую физически получится, но предопределённый состав оборудования не будет совпадать и из работы такого контроллера ничего хорошего не получится. Поэтому имеет смысл устанавливать на контроллер только предназначенную для него прошивку.
Прошивка бесплатная, но исходный код закрыт, то есть что-то изменить в прошивке мы самостоятельно не сможем — это для нас закрытая «вещь в себе».
Загрузка прошивки
Поставляется прошивка в виде одного файла, который нужно прошивать при помощи утилиты Flash Download Tool, актуальная версия на сегодня 3.9.4.
Последнюю версию KCS можно найти на странице, там же можно ознакомиться с информацией о KCS и задать свои вопросы, если они у вас появятся.
Сам процесс прошивки очень простой: подключаете контроллер к компьютеру, запускаете утилиту Flash Download Tool и производите в ней настройки, согласно этому скриншоту:
Процесс работы Flash Download Tool и прошивки ESP32 отображается в окне:
Предварительная настройка
Далее перезагружаете контроллер и находите на смартфоне в списке Wi-Fi сетей открытую сеть нашего контроллера KC868-A4 с прошивкой KCS.
Подключаетесь к ней и открываете в браузере страницу по адресу 192.168.4.1.
Затем вводите логин и пароль (admin/admin) и попадаете на главную страницу с основными сведениями о контроллере. Поскольку KC868-A4 не имеет проводного Ethernet интерфейса, то часть полей остаются пустыми.
Далее устанавливаем режим работы контроллера AP/STA (нам нужен режим STA) и вводим актуальные логин и пароль от вашей домашней Wi-Fi сети.
Всё, на этом предварительный этап настройки закончен, далее контроллер будет работать в вашей локальной сети штатным образом.
Начало работы
Перезагружаем контроллер и смотрим в Serial мониторе его текущий IP адрес в вашей сети.
Теперь, узнав текущий IP адрес контроллера, вводим его в браузере на компьютере и видим приглашение системы для ввода логина и пароля.
❯ Работа с прошивкой KCS
Теперь давайте посмотрим, какие возможности предоставляет пользователю прошивка KCS. Сразу после входа в систему мы попадаем на информационную страницу, которую компания Kincony назвала «Index». Я бы назвал этот пункт «Home», «Main», «About» или «Info».
Тут представлены основные сведения о системе. Часть полей пустые, поскольку у нас контроллер без поддержки Ethernet интерфейса.
Сам интерфейс представляет собой расположенное слева вертикальное меню и справа поле для загрузки страниц, соответствующих пунктам этого меню.
Input
Страница управления работой и определения логики цифровых входов. В нашем случае контроллера KC868-A4 это 4 цифровых входа для которых можно выставить логический уровень, реакцию на клики и удержание кнопок, привязать реакцию выходных реле (тоже 4 штуки на борту) и т. д.
На других контроллерах KC868-A серии количество входов и выходов может быть значительно больше четырёх, соответственно и списки на веб-страницах будут длиннее.
Тут реализован минимально-достаточный набор функций для работы с цифровыми входами контроллера KC868-A4. Только нужно понимать, что это минимальная достаточность в рамках парадигмы «логического хаба», вся прикладная проблематика просто делегирована «куда-то наверх» распределённой IoT системы в надежде, что старший и мудрый Linux компьютер реализует всю прикладную логику, ассоциированную с общей задачей, веб-интерфейсы, индикаторы, графику, сетевой обмен и т. д.
То есть всё это программировать «ручками» всё равно придётся, только не здесь и сейчас на ESP32, а потом на «старшем брате» (или воспользоваться готовым софтом для «старшего брата»).
Output
Управление выходами в том же духе — определение элементарной логики работы реле, инвертирование, определение задержки срабатывания, группировка и т. д. При помощи такого подхода можно без непосредственно программирования задать базовый слой логики работы выходов «включил-выключил».
Monitor
На этой странице собрана информация по основным подсистемам контроллера: индикация работающих в данной момент подсистем, состояние аналоговых входов, управление выходными уровнями DAC, индикаторы состояния цифровых входов и кнопки управления реле.
Я бы сказал, что это основной экран системы, на котором видно текущее состояние её элементов. Некоторые из этих элементов являются интерактивными, то есть они не только отображают информацию, но и позволяют изменять состояние контроллера. Например, кнопки управления реле можно нажимать и изменять как состояние отдельных реле, так состояние всех реле сразу.
На индикаторах ADC и DAC есть значки шестерёнок — при нажатии на них появляются всплывающие окна с дополнительными настройками: название канала (устройства), единицы измерения, минимальные и максимальные значения, порог срабатывания для посылки сообщений MQTT и т. д. То есть при помощи этого инструментария можно настраивать работу подсистем ADC/DAC.
Schedule
Расписание выполнения задач по управлению реле. Можно задать периодичность срабатывания, реакцию реле и т. д.
Проблема заключается в том, что в системе, кроме реле, присутствует ещё куча сущностей, которые могут потребовать управления по расписанию. А прикладная задача может содержать производные сущности от базовых «железного» уровня, которые тоже могут требовать управления по расписанию, причём не простого, а в зависимости от множества входных параметров.
Концепция «логического хаба» не позволяет реализовать подобное управление и просто «тупо» (в умолчаниях) делегирует решение этой задачи куда-то «наверх» в распределённой IoT системе.
Другими словами — пощёлкать реле по расписанию по предопределённой простой логике вы сможете, но сам функционал вашей IoT системы вам придётся программировать руками, где-то на более высоком уровне.
Network
Сетевые настройки. В данном случае для Wi-Fi, на других контроллера серии KC868-A на этой странице появляются ещё настройки проводного Ethernet интерфейса.
Wi-Fi может работать в качестве AP (точки доступа) или STA — элемента вашей беспроводной Wi-Fi сети.
Protocol (General)
Прошивка поддерживает работу со множеством протоколов, причём эти протоколы можно динамически включать и отключать. Тут же присутствуют типовые настройки этих протоколов.
Поддержка такого количества протоколов выглядит довольно внушительно и несомненно является достоинством рассматриваемой прошивки.
Protocol (Tuya)
Настройки, ассоциированные с Tuya. Любители этой технологии должны остаться довольны. Стоит также заметить, что некоторые контроллеры Kincony имеют на борту специализированные Tuya-чипы.
System
Основные настройки, назначение которых стандартно и понятно из их названия. Тут же присутствует возможность программной перезагрузки контроллера и восстановления заводских настроек (гут).
❯ Как это работает
Теперь давайте посмотрим как это работает с технической точки зрения, так сказать, заглянем системе под капот. Сразу после прошивки KCS разует нас обширным логом, из которого пионеры DIY автоматизации могут извлечь много интересной для себя информации.
После загрузки система начинает сетевую работу, при этом подробно комментируя все свои действия в логе (Serial выводе), откуда тоже можно почерпнуть много полезной информации (для тех, кто понимает (смайл).
Пользователь, в основном, имеет дело с веб-интерфейсом, поэтому уделим ему некоторое внимание.
Судя по доступной нам информации, разработчики KCS являются приверженцами традиционных ценностей в духе ESP-IDF/Bootstrap/jQuery и не в чём себе не отказывают, в результате чего страница собирается за 1,33-1,58 сек. Что, учитывая такой подход, — неплохо и приемлемо для более-менее нормальной работы с контроллером.
Идеологически, все страницы интерфейса KCS являются статическими, то есть загружаются по запросу и далее не проявляют какой-то сетевой активности (что исключает какую-то интерактивность).
Но есть и некоторые исключения, например, страница «Monitor». На этой странице используется динамическое сетевое Websockets взаимодействие между контроллером и веб-браузером пользователя. В результате мы имеем полностью интерактивную страницу, на которой вся информация динамически обновляется и работают всякие «кнопки» и «шестерёнки».
Получить некоторое представление о размахе мысли и творческой потенции разработчиков KCS можно по скриншоту фрагмента одного из Javascript файлов системы.
Это те дополнения технического характера, которые можно сделать из доступной нам информации (сама прошивка закрыта и исходный код нам недоступен).
В целом, для меня, как разработчика подобной системы, «всё понятно». Архитектура, технологии и подход к реализации довольно прозрачны и ожидаемы.
❯ Чего не хватает?
Теперь скажем несколько слов о том, чего не хватает в текущей версии KCS. Как я уже отметил выше, KCS воплощает концепцию «логического хаба», избавляет пользователя от тягот прямого программирования, но взамен низводит функционал контроллера до уровня логического калькулятора с сетевыми функциями.
Тут шаг в сторону не то, что «расстрел», — у пользователя вообще нет возможности сделать шаг в сторону — он может делать только то, что предусмотрено в стандартной прошивке.
В результате:
— Никак не задействована и никак не используется возможность подключения на KC868-A4 температурного(ных) или датчика влажности.
— Никак не задействованы и никак не используются модули приёмника/передатчика 433 МГц.
— Никак не задействованы и никак не используются инфракрасные (IR) приёмник и передатчик.
— Никак не задействован и никак не используется пьезокерамическая пищалка (buzzer).
Я уже не говорю о производной от этого железа логике и логике, ассоциированной с решением общей задачи по автоматизации — при таком подходе это просто невозможно в принципе.
Надеюсь, со временем, в новых версиях прошивки Kincony исправит эти недостатки и даст возможность использовать незадействованные подсистемы в этом и других контроллерах линейки KC868-A. Но в любом случае это будет логический хаб по принципу «взял бит здесь, положил бит туда».
❯ Итого по KCS
В целом можно сказать, что KCS — это большой (и правильный) шаг компании Kincony — теперь «простым» автоматизаторам достаточно купить контроллер Kincony и залить в него фирменную прошивку — и можно получить базовый функционал подобных систем «из коробки».
Сейчас речь идёт о первых версиях системы и в дальнейшем можно ожидать её развития, модернизации и улучшения.
Плюсы:
— Фирменное решение, учитывающее особенности контроллеров линейки KC868-A.
— Отсутствие необходимости в программировании и соответствующей квалификации.
— Устойчивая работа («глюков» во время тестирования не замечено).
— Несложная процедура прошивки.
Минусы:
— «Логический хаб» с жёстко ограниченным элементарным функционалом.
— В более-менее функциональных проектах потребуется «старший брат», который и будет делать всю работу по автоматизации и коммуникации с пользователем.