![](https://habrastorage.org/webt/ow/io/qh/owioqhzt4v3g4c8odkr5s5tn2h0.jpeg)
У компании Kincony есть обширная линейка контроллеров на основе популярного ESP32. Но контроллеры не работают сами по себе, для них требуется программное обеспечение, и тут просто просится создание «фирменной» прошивки для этой линейки контроллеров.
Идея очевидная, но тут не всё так просто: создание софта — это довольно сложный процесс, нельзя просто так взять и создать прошивку для контроллера (а тем более для линейки контроллеров), — тут нужно иметь представление об архитектуре IoT систем и месте и роли контроллера, работающего под управлением этой прошивки в этих системах и т. д.
Далее мы подробно разберём функционал и принципы работы фирменной прошивки KCS (сокращение от «KinCony Super») компании Kincony и посмотрим, что у неё получилось (и что не получилось) реализовать.
❯ Kincony KCS
Линейка KC868-A серии содержит множество контроллеров, на данный момент поддержка KCS заявлена для моделей A4, A6, A8, A8S, A16, A32, A64, A128, AI, AK и E16S.
![](https://habrastorage.org/webt/7n/ig/vw/7nigvw6uunro_hgpzmvlihr4nfi.jpeg)
Часть контроллеров из линейки KC868-A
На любой из этих контроллеров можно без особых проблем установить KCS и получить из коробки базовый функционал ESP32 контроллера «начинающего любителя домашней автоматизации». Не нужно ничего выдумывать и мудрить со сторонними прошивками — базовый функционал «логических хабов» и интеграция с популярными системами домашней автоматизации присутствует из коробки.
Примечание. Под «логическим хабом» я понимаю контроллер, работающий под управлением прошивки, которая позволяет задать простейшую логику реакции на входные сигналы, без необходимости непосредственного программирования и компиляции кода самой прошивки.
Можно сказать, что это огромный шаг вперёд для всей экосистемы контроллеров Kincony — собственная прошивка в сочетании с собственной линейкой контроллеров — это выглядит очень и очень сильно. Также стоит отметить, что на данный момент актуальная версия прошивки KCS — 1.0.19, что прозрачно намекает на то, что всё ещё только начинается.
Теперь наглядно посмотрим как всё это хозяйство устанавливается на контроллер и как работает.
❯ Установка KCS
Для экспериментов возьмём самый первый контроллер линейки — KC868-A4. Кроме всего прочего, он хорош ещё и тем, что содержит множество различных подсистем и мы сможем наглядно увидеть какие из них поддерживаются стандартной прошивкой, а какие — нет. И сможем сделать соответствующие выводы.
![](https://habrastorage.org/webt/s-/ab/qd/s-abqdvk-smhy3vlsrg2cm9sgf4.jpeg)
Kincony (бесплатно) предоставляет специализированную прошивку для каждой модели контроллера. То есть установить прошивку от одной модели на другую физически получится, но предопределённый состав оборудования не будет совпадать и из работы такого контроллера ничего хорошего не получится. Поэтому имеет смысл устанавливать на контроллер только предназначенную для него прошивку.
Прошивка бесплатная, но исходный код закрыт, то есть что-то изменить в прошивке мы самостоятельно не сможем — это для нас закрытая «вещь в себе».
Загрузка прошивки
Поставляется прошивка в виде одного файла, который нужно прошивать при помощи утилиты Flash Download Tool, актуальная версия на сегодня 3.9.4.
Последнюю версию KCS можно найти на странице, там же можно ознакомиться с информацией о KCS и задать свои вопросы, если они у вас появятся.
Сам процесс прошивки очень простой: подключаете контроллер к компьютеру, запускаете утилиту Flash Download Tool и производите в ней настройки, согласно этому скриншоту:
![](https://habrastorage.org/webt/jb/ts/ec/jbtsecukfzzyw0glpeaic9fyzq0.png)
Процесс работы Flash Download Tool и прошивки ESP32 отображается в окне:
![](https://habrastorage.org/webt/nq/5s/fk/nq5sfkbav0rokbdfqdshh2pqpwa.png)
Предварительная настройка
Далее перезагружаете контроллер и находите на смартфоне в списке Wi-Fi сетей открытую сеть нашего контроллера KC868-A4 с прошивкой KCS.
![](https://habrastorage.org/webt/8n/qh/0u/8nqh0ufucdmgeseu59ygntvhosm.png)
Подключаетесь к ней и открываете в браузере страницу по адресу 192.168.4.1.
![](https://habrastorage.org/webt/bu/wd/ss/buwdssajibztou2irvqrh8kit4u.png)
Затем вводите логин и пароль (admin/admin) и попадаете на главную страницу с основными сведениями о контроллере. Поскольку KC868-A4 не имеет проводного Ethernet интерфейса, то часть полей остаются пустыми.
![](https://habrastorage.org/webt/rg/jr/ne/rgjrne7h-hn6sc-plkjwhf9zfb0.png)
Далее устанавливаем режим работы контроллера AP/STA (нам нужен режим STA) и вводим актуальные логин и пароль от вашей домашней Wi-Fi сети.
![](https://habrastorage.org/webt/5c/2s/tx/5c2stxglro9uq2dtbddte2onmbq.png)
Всё, на этом предварительный этап настройки закончен, далее контроллер будет работать в вашей локальной сети штатным образом.
Начало работы
Перезагружаем контроллер и смотрим в Serial мониторе его текущий IP адрес в вашей сети.
![](https://habrastorage.org/webt/hk/-w/5p/hk-w5pgzh0lgicrrubz8-dge6m8.png)
Теперь, узнав текущий IP адрес контроллера, вводим его в браузере на компьютере и видим приглашение системы для ввода логина и пароля.
![](https://habrastorage.org/webt/dw/n5/6q/dwn56qtd_sdvs0gcypxdtnss_2i.png)
❯ Работа с прошивкой KCS
Теперь давайте посмотрим, какие возможности предоставляет пользователю прошивка KCS. Сразу после входа в систему мы попадаем на информационную страницу, которую компания Kincony назвала «Index». Я бы назвал этот пункт «Home», «Main», «About» или «Info».
![](https://habrastorage.org/webt/_m/b0/7h/_mb07hx9vglmd0dhs2icztzkgna.png)
Тут представлены основные сведения о системе. Часть полей пустые, поскольку у нас контроллер без поддержки Ethernet интерфейса.
Сам интерфейс представляет собой расположенное слева вертикальное меню и справа поле для загрузки страниц, соответствующих пунктам этого меню.
Input
Страница управления работой и определения логики цифровых входов. В нашем случае контроллера KC868-A4 это 4 цифровых входа для которых можно выставить логический уровень, реакцию на клики и удержание кнопок, привязать реакцию выходных реле (тоже 4 штуки на борту) и т. д.
На других контроллерах KC868-A серии количество входов и выходов может быть значительно больше четырёх, соответственно и списки на веб-страницах будут длиннее.
![](https://habrastorage.org/webt/mm/zx/7j/mmzx7jnneymtjg2ryj70a_fruae.png)
Тут реализован минимально-достаточный набор функций для работы с цифровыми входами контроллера KC868-A4. Только нужно понимать, что это минимальная достаточность в рамках парадигмы «логического хаба», вся прикладная проблематика просто делегирована «куда-то наверх» распределённой IoT системы в надежде, что старший и мудрый Linux компьютер реализует всю прикладную логику, ассоциированную с общей задачей, веб-интерфейсы, индикаторы, графику, сетевой обмен и т. д.
То есть всё это программировать «ручками» всё равно придётся, только не здесь и сейчас на ESP32, а потом на «старшем брате» (или воспользоваться готовым софтом для «старшего брата»).
Output
Управление выходами в том же духе — определение элементарной логики работы реле, инвертирование, определение задержки срабатывания, группировка и т. д. При помощи такого подхода можно без непосредственно программирования задать базовый слой логики работы выходов «включил-выключил».
![](https://habrastorage.org/webt/km/9e/6r/km9e6rgdcfwlnxhczm7n6ox5faq.png)
Monitor
На этой странице собрана информация по основным подсистемам контроллера: индикация работающих в данной момент подсистем, состояние аналоговых входов, управление выходными уровнями DAC, индикаторы состояния цифровых входов и кнопки управления реле.
![](https://habrastorage.org/webt/6b/yl/sr/6bylsr4uiknyzeulk03h1absdu0.png)
Я бы сказал, что это основной экран системы, на котором видно текущее состояние её элементов. Некоторые из этих элементов являются интерактивными, то есть они не только отображают информацию, но и позволяют изменять состояние контроллера. Например, кнопки управления реле можно нажимать и изменять как состояние отдельных реле, так состояние всех реле сразу.
На индикаторах ADC и DAC есть значки шестерёнок — при нажатии на них появляются всплывающие окна с дополнительными настройками: название канала (устройства), единицы измерения, минимальные и максимальные значения, порог срабатывания для посылки сообщений MQTT и т. д. То есть при помощи этого инструментария можно настраивать работу подсистем ADC/DAC.
Schedule
Расписание выполнения задач по управлению реле. Можно задать периодичность срабатывания, реакцию реле и т. д.
![](https://habrastorage.org/webt/nr/p-/-q/nrp--qxchwt63c8epwgfccrukje.png)
Проблема заключается в том, что в системе, кроме реле, присутствует ещё куча сущностей, которые могут потребовать управления по расписанию. А прикладная задача может содержать производные сущности от базовых «железного» уровня, которые тоже могут требовать управления по расписанию, причём не простого, а в зависимости от множества входных параметров.
Концепция «логического хаба» не позволяет реализовать подобное управление и просто «тупо» (в умолчаниях) делегирует решение этой задачи куда-то «наверх» в распределённой IoT системе.
Другими словами — пощёлкать реле по расписанию по предопределённой простой логике вы сможете, но сам функционал вашей IoT системы вам придётся программировать руками, где-то на более высоком уровне.
Network
Сетевые настройки. В данном случае для Wi-Fi, на других контроллера серии KC868-A на этой странице появляются ещё настройки проводного Ethernet интерфейса.
![](https://habrastorage.org/webt/ti/c9/q4/tic9q4hqgtzjsqbhi4ph0j2kpi4.png)
Wi-Fi может работать в качестве AP (точки доступа) или STA — элемента вашей беспроводной Wi-Fi сети.
Protocol (General)
Прошивка поддерживает работу со множеством протоколов, причём эти протоколы можно динамически включать и отключать. Тут же присутствуют типовые настройки этих протоколов.
![](https://habrastorage.org/webt/gf/xv/i_/gfxvi_vp9qcpimcn7wtuebf8vgw.png)
Поддержка такого количества протоколов выглядит довольно внушительно и несомненно является достоинством рассматриваемой прошивки.
Protocol (Tuya)
Настройки, ассоциированные с Tuya. Любители этой технологии должны остаться довольны. Стоит также заметить, что некоторые контроллеры Kincony имеют на борту специализированные Tuya-чипы.
![](https://habrastorage.org/webt/wi/wn/yy/wiwnyyqavkqqhmkq9sc_gwbvxda.png)
System
Основные настройки, назначение которых стандартно и понятно из их названия. Тут же присутствует возможность программной перезагрузки контроллера и восстановления заводских настроек (гут).
![](https://habrastorage.org/webt/nn/s_/mu/nns_mugdshnstq2s3kkreralob8.png)
❯ Как это работает
Теперь давайте посмотрим как это работает с технической точки зрения, так сказать, заглянем системе под капот. Сразу после прошивки KCS разует нас обширным логом, из которого пионеры DIY автоматизации могут извлечь много интересной для себя информации.
![](https://habrastorage.org/webt/5v/wf/qk/5vwfqkbrttthq3qcfoxyfzgoqys.png)
После загрузки система начинает сетевую работу, при этом подробно комментируя все свои действия в логе (Serial выводе), откуда тоже можно почерпнуть много полезной информации (для тех, кто понимает (смайл).
![](https://habrastorage.org/webt/7t/37/kj/7t37kjlugujtqi4lasgay9cyjtg.png)
Пользователь, в основном, имеет дело с веб-интерфейсом, поэтому уделим ему некоторое внимание.
Судя по доступной нам информации, разработчики KCS являются приверженцами традиционных ценностей в духе ESP-IDF/Bootstrap/jQuery и не в чём себе не отказывают, в результате чего страница собирается за 1,33-1,58 сек. Что, учитывая такой подход, — неплохо и приемлемо для более-менее нормальной работы с контроллером.
![](https://habrastorage.org/webt/ad/vw/pw/advwpwltgs4nw8hgof-8hqt-tvy.png)
Идеологически, все страницы интерфейса KCS являются статическими, то есть загружаются по запросу и далее не проявляют какой-то сетевой активности (что исключает какую-то интерактивность).
Но есть и некоторые исключения, например, страница «Monitor». На этой странице используется динамическое сетевое Websockets взаимодействие между контроллером и веб-браузером пользователя. В результате мы имеем полностью интерактивную страницу, на которой вся информация динамически обновляется и работают всякие «кнопки» и «шестерёнки».
![](https://habrastorage.org/webt/kc/pv/zd/kcpvzd_eyy-ejsevno_f5-0bx6i.png)
Получить некоторое представление о размахе мысли и творческой потенции разработчиков KCS можно по скриншоту фрагмента одного из Javascript файлов системы.
![](https://habrastorage.org/webt/6e/zo/lt/6ezoltv2mjxmvhkejxddep0pqym.png)
Это те дополнения технического характера, которые можно сделать из доступной нам информации (сама прошивка закрыта и исходный код нам недоступен).
В целом, для меня, как разработчика подобной системы, «всё понятно». Архитектура, технологии и подход к реализации довольно прозрачны и ожидаемы.
❯ Чего не хватает?
Теперь скажем несколько слов о том, чего не хватает в текущей версии KCS. Как я уже отметил выше, KCS воплощает концепцию «логического хаба», избавляет пользователя от тягот прямого программирования, но взамен низводит функционал контроллера до уровня логического калькулятора с сетевыми функциями.
Тут шаг в сторону не то, что «расстрел», — у пользователя вообще нет возможности сделать шаг в сторону — он может делать только то, что предусмотрено в стандартной прошивке.
В результате:
— Никак не задействована и никак не используется возможность подключения на KC868-A4 температурного(ных) или датчика влажности.
— Никак не задействованы и никак не используются модули приёмника/передатчика 433 МГц.
— Никак не задействованы и никак не используются инфракрасные (IR) приёмник и передатчик.
— Никак не задействован и никак не используется пьезокерамическая пищалка (buzzer).
Я уже не говорю о производной от этого железа логике и логике, ассоциированной с решением общей задачи по автоматизации — при таком подходе это просто невозможно в принципе.
Надеюсь, со временем, в новых версиях прошивки Kincony исправит эти недостатки и даст возможность использовать незадействованные подсистемы в этом и других контроллерах линейки KC868-A. Но в любом случае это будет логический хаб по принципу «взял бит здесь, положил бит туда».
❯ Итого по KCS
В целом можно сказать, что KCS — это большой (и правильный) шаг компании Kincony — теперь «простым» автоматизаторам достаточно купить контроллер Kincony и залить в него фирменную прошивку — и можно получить базовый функционал подобных систем «из коробки».
Сейчас речь идёт о первых версиях системы и в дальнейшем можно ожидать её развития, модернизации и улучшения.
Плюсы:
— Фирменное решение, учитывающее особенности контроллеров линейки KC868-A.
— Отсутствие необходимости в программировании и соответствующей квалификации.
— Устойчивая работа («глюков» во время тестирования не замечено).
— Несложная процедура прошивки.
Минусы:
— «Логический хаб» с жёстко ограниченным элементарным функционалом.
— В более-менее функциональных проектах потребуется «старший брат», который и будет делать всю работу по автоматизации и коммуникации с пользователем.
![](https://habrastorage.org/webt/b5/pj/of/b5pjofdoxth14ro-rjsrn7sbmiy.png)