Автоматика с веб управлением на основе esp32 и pzem

Форум самогонщиков, пивоваров, виноделов Оборудование Автоматика
1 2 3 4 ... 8 1
ys1797 Доктор наук Санкт-Петербург 928 277
10 Дек. 18, 19:12
Предлагаю вашему вниманию вариант автоматизации на основе модулей ESP32 и PZEM.

Целью было сделать довольно простое web управляемое устройство почти без кнопок и мониторов.
На данный момент устройство работает как стабилизатор мощности, в режиме дистилляции, ректификации и режиме проверки внешнего оборудования.
Все программное обеспечение, разводка платы и веб часть представлены "как есть", и может свободно копироваться и модифицироваться
в некоммерческих целях.

Устройство поддерживает:
  • Стабилизацию мощности с использованием симистора с фазовым управлением.
  • До 4 клапанов на 12 вольт.
  • До 8 температурных датчика ds18b20, подключенных через i2c/w1 мост DS2482-100.
  • Поддерживается небольшой oled дисплей по шине I2C или SPI.
  • Соответственно шины I2C и SPI выведены на разъемы и доступны для подключения дополнительного оборудования.
  • Поддерживается тихий режим включения и выключения клапанов.
  • Поддерживается отправка SMS об авариях и состоянии через сервис smsc.ru.


Аппаратное обеспечение:
  • ESP32 модуль revision 1 с 20 контактным разъемом для подключения.
    Я взял такой, для реализации бесперебойности питания, но можно выбрать любой другой с 20 или 18 контактами.
    Надо быть крайне осторожным с микро-usb разъемом. Он на этих модулях крайне не надежен и так и норовит отвалится. Я уже парочку отломал прямо с дорожками платы.
  • PZEM-004t модуль для измерения тока, напряжения и мощности, например такой.
    Т.к. питание у нас 3.3 вольта, желательно допаять резистор номиналом 1 кОм для стабильной работы uart модуля от этого напряжения.
  • Клапана на 12 вольт и датчики ds18b20 в гильзах и без, все с того-же алиэкспресса.
  • 12 вольтовый источник питания, который по току смог бы вытянуть все клапана и сам модуль.
    Модуль при активном использовании WiFi сети может потреблять до 700 mA по 5 вольтовой шине питания.
  • Схема, плата, гербера для сопряжения всего этого добра доступна и выложена в виде проекта на easyeda.
    Там же можно генерировать гербер файлы при необходимости или подправить посадочные места для PZEM модуля, если они отличаются от
    используемого мной.
    hd32.png
    svg изображение платы.
    Логотип сайта с разрешения владельца нанесен на pcb.
  • Симистор с радиатором, корпус, провода и т.д.

Общий вид тестового стенда:
20181219_182021.jpg

Дисплей.

Устройство поддерживает небольшой Oled дисплей с интерфейсом i2c или spi,
на основе чипа SSD1336, например такой

 На дисплее отображаются последовательно несколько циклически сменяющихся экрана:
Первый - это аптайм, кубовая температура и текущая мощность.
Второй - сетевая конфигурация
Третий - данные всех температурных датчиков.


Программное обеспечение.

Написано с использованием esp-idf  .
В общем это модифицированный китайцами FreeRtos.
Проект автоматики располагается на ГитХабе под MIT лицензией.
Веб часть скачивается при первом запуске системы с моего сайта на сам esp32. По аналогии с проектом BrewManiacEsp8266.
Но каждый вправе создать свой веб интерфейс и, указав url в разделе обновления, закачать свою версию web интерфейса.

 Веб часть разрабатывалась ориентируясь на вертикальное расположение на смартфоне, поэтому может выглядеть слегка странным и не логичным
на большом экране.
Для передачи данных в реальном времени используется websocket.
Формат передачи данных модуль Модуль<->Браузер: json.


Стартовая настройка.

  • Устройство после прошивки переходит в режим WiFi точки доступа.
    Для дальнейшей работы нужно подключиться к этой точке и
    зайти браузером на адрес http://192.168.4.1/ выбрать из списка обнаруженных
    WiFi сетей свою, ввести пароль, сохранить и перегрузить устройство.
  • После перезагрузки и успешного подключения к точке доступа, можно зайти
    браузером по назначенному Вашей точкой ip адресу на устройство и загрузить
    html часть в флэшь память устройства. После этого устройство готово к работе.


Веб интерфейс.

hs32_web.png

По моему, интуитивно понятный. Все основные данные выведены на главный экран.
Устройство можно защитить паролем, чтоб нежелательные персоны не нажали чего лишнего.
Есть раздел для настроек параметров дистилляции и ректификации.

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

Меню wifi так-же позволяет запомнить данные нескольких wifi сетей и
автоматически к ним подключаться, если находимся в зоне их доступа.

Отдельно вынесен файловый менеджер устройства, где можно посмотреть,
что и как записалось в настройках. Заодно можно сделать резервные копии
настроек на всякий случай или стереть поврежденные по какой-либо причине файлы.

Пункт "Обновления" предназначен для обновления web интерфейса, обновления
firware через него пока не предусмотрено.


Установка программной среды для виндовс.

Для заливки программного обеспечения в esp32 необходимо установить набор инструментов - toolchain.
Описывается этот процесс тут: https://docs.espressif.com/...dows-setup.html

1. Скачиваем готовый Toolchain (набор инструментов для компиляции и генерации кода) для создания приложения для ESP32 по указанной выше ссылке.
Прямая ссылка на zip  файл может изменяться при выходе обновлений, поэтому тут я ее не привожу.
Распаковываем полученный архив, например в c:\msys32.
Запускаем C:\msys32\mingw32.exe .
По сути - это юниксовый bash адаптированный под win32 среду.

2. В получившемся окошке мы должны теперь скачать ESP-IDF, который по существу
содержит API для ESP32 и скрипты для работы с Toolchain.
Скачиваем его с GitHub:
git clone --recursive https://github.com/espressif/esp-idf.git
ESP-IDF будет загружен в ~/esp-idf

На забудьте опцию  --recursive, иначе не будут установлены субмодули.
Если все-таки забыли, то можно поправить дело следующими командами:
cd ~/esp-idf
git submodule update --init --recursive

Теперь надо добавить путь до esp-idf. Для этого надо определить переменную
IDF_PATH в профиль пользователя. Эта переменная должна быть настроена,
иначе проекты не будут компилироваться.
Для этого нужно добавить скрипт и указать IDF_PATH в профиле пользователя.
Скрипты пользовательского профиля содержатся в каталоге
C:/msys32/etc/profile.d/. Они выполняются каждый раз, когда вы запускаете
mingw32.exe

Создайте новый текстовый файл скрипта в каталоге C:/msys32/etc/profile.d/. Назовите его export_idf_path.sh .
Определите путь к каталогу ESP-IDF. Он специфичен для вашей конфигурации системы и может выглядеть примерно так: C:\msys32\home\<user-name>\esp-idf.
Где <user-name> - это имя учетной записи в системе виндовс.
 Далее надо добавить одну строчку в этот файл:
export IDF_PATH="C:/msys32/home/<user-name>/esp/esp-idf"
обратите внимание, что обратные косые черты пути windows надо заменить
на прямой слэш "/" принятый для unix систем.

Закроем и заново запустим mingw32.
Проверяем все ли установилось:
$printenv IDF_PATH
C:/msys32/home/yuri/esp-idf

Создание прошивки.

 Переходим в свою домашнюю директорию cd ~ и получаем исходники с ГитХаба:
git clone --recursive https://github.com/ys1797/esp32_hd

Далее выполняем команду для установки пакетов Python.
Пакеты, необходимые для ESP-IDF, находятся в файле $IDF_PATH/requirements.txt
python -m pip install --user -r $IDF_PATH/requirements.txt

 Переходим в папку с проектом
cd ~/esp32_hd

Для заливки загрузчика и прошивки в esp32 необходимо подключить модуль по USB.
После этого посмотреть в диспетчере устройств, какой новый COM порт появился в системе.
Если драйвер устройства не устанавливается автоматически, определите чип USB для последовательного преобразователя на плате ESP32,
найдите драйверы в Интернете и установите их.

 Идем в директорию проекта и выполняем
make menuconfig
В появившейся менюшке переходим в пункт
 Serial flasher config > Default serial port и вбиваем имя com порта, так,
как он обзывается в виндовс, без всяких /dev/, например, если COM14, то так и пишем.
 Сохраняем по "Save" и выходим по "Exit".

 Теперь вы можете создавать и запускать приложение. Выполните в консоли:
make flash monitor
Приложение перекомпилируется, сгенерируется файл бутлоадера,
таблица разделов и собственно сам firmware файл. Все это загрузится
в модуль ESP32, запустится мониторинг порта и модуль перегрузится.

В консоле можно увидеть отладочные сообщения и информацию о найденной
периферии в процессе загрузки.
 Все приложение установлено - можно конфигурить и скачать веб часть.


История изменений
1.4 В плату добавлено место для датчика давления bmp180.

1.6
  Исправлены падения из-за нехватки памяти под стэк фоновых задач.
  Поправлен режим ректификации.
  С главной страницы убраны элементы не несущие полезной информации.
  Состояние клапанов можно менять на лету. Будьте внимательны и не выключите случайно воду охлаждения!!
  Значения параметров вступают в силу сразу же после изменения.
  Исправлены ручные переходы с одной стадии процесса на другую вперед и назад, где это имеет логический смысл.

ToDo
  • Подключение датчика атмосферного давления или сервиса для получения значения давления с интернет сервисов.
  • Подключение к автономной системе охлаждения, как к slave устройству по WiFi и контроль потока воды, температур и шим управление насосом и вентилятором.
  • Постепенное добавление остальных режимов работы автомата.
  • OTP. Обновление firmware по сети.
Просмотр платы.svg (768Кб - загружено 225 раз)
ys1797 Доктор наук Санкт-Петербург 928 277
Отв.1  21 Дек. 18, 19:43
Загрузка готовой прошивки с помощью falsh download tools
Если нет желания ставить целиком esp-idf, можно воспользоваться готовыми прошивками
и утилитой от производителя Flash download tool

Необходимо для первичной прошивки указать:1
1. загрузчик (bootloader.bin)
2. Настройку размещения файловой системы (partition.bin)
3. Само приложение (esp32_hd.bin)
4. Образ файловой системы (spiffs.img)

 Текущая версия: 0.6



В дальнейшем при обновлении нет причин перепрошивать первые два образа. Достаточно только прошить обновленное приложение.
fw_esp32_v06.zip (632Кб - загружено 5 раз)
msg31 Научный сотрудник Барнаул 4340 2230
Отв.2  22 Дек. 18, 08:49
Интересная штука, респект!
Первый регулятор мощности на ESP с фазовым управлением мощностью, который я знаю.
Сам пытался на ESP8266 сделать такое, но они у меня висли на аппаратных прерываниях.
IvanAltay Доктор наук Бийск 866 176
Отв.3  22 Дек. 18, 18:26
ys1797, я тут попытался развернуть на компе пот WIN7 esp-idf, тоже дОфига делОв... Мне кажется, развернуть Arduino IDE, попроще будет. Это в т.ч. ответ, почему я на Arduino IDE подсел.
Андрей Администратор Бухарест 3522 3789
Отв.4  23 Дек. 18, 17:49
ys1797, Могу подсказать или помочь с интерфейсом, чтобы он стал адаптивным на мобильных устройствах и более удобным. А что за источник питания используется?
ys1797 Доктор наук Санкт-Петербург 928 277
Отв.5  24 Дек. 18, 01:00
msg31, Спасибо. У меня там с прерываниями тоже были кактусы. Не любит esp длинные фронты на прерываниях.
Если подать напрямую с оптопары на линию irq - в секунду получается 2500 прерываний (во всех доступных режимах)
не знаю с чем это связано, но ни pullup, ни pulldown ни внешний не внутренний не помогали. Помогло только, если пропустить
через любой логический элемент. На плате был ULN2003, провел через него и чудо - 100 прерываний в секунду Улыбающийся.
Так-же 1wire можно сделать и программном, но хлипкость gpio мне не понравилась совсем.
Еще один съеденый кактус - в двух разных трейдах нельзя пользовать i2c и spi одновременно, пришлось защищаться мутексами.


IvanAltay, Я перед написанием снес в ноль всю оболочку и поставил с нуля. Да mingw довольно большой: ~600 Мб с хвостом.
esp-idf  вообще с гитхаба скачивается без проблем. Есть примеры натянуть eclipse, но я не заморачивался. Мне и vim хватает Улыбающийся
В ардуино, кстати,  не все плюшки реализованы, да и отстают от idf.

Андрей, Если есть опыт по css для мобильных устройств - это сильно интересно. Там вообще какой-то свой web мир, иногда непонятный и жестокий Улыбающийся Я пока сделал только для вертикального расположения и пытался рассчитать зону кнопки под свой палец Улыбающийся.

Источник питания - у нас тут микроника закрывалась, взял там по дискаунту без корпусный импульсный источник на 12 вольт, 2 ампера выдает. Но шумит зараза гадски, надо в экран убирать.
Андрей Администратор Бухарест 3522 3789
Отв.6  24 Дек. 18, 11:12
ys1797, css такой же, как на ПК, наш форум тому пример.
Хотел посмотреть страничку автоматики на гитхабе, но не нашел ее Грустный
Дай прямую ссылку.
ys1797 Доктор наук Санкт-Петербург 928 277
Отв.7  24 Дек. 18, 16:15
Андрей, Да, страничка и jquery грузится прошивкой с внешнего url
Сейчас со своего адреса http://hd.rus.net/index.html
Понятно, что без самой автоматики - это просто обертка.
Да и ссылка "Обновления" за хардкожена в сам сишный код, чтоб с чего-то можно было начать процесс.
IvanAltay Доктор наук Бийск 866 176
Отв.8  24 Дек. 18, 19:29
Я перед написанием снес в ноль всю оболочку и поставил с нуля. Да mingw довольно большой: ~600 Мб с хвостом.ys1797, 24 Дек. 18, 01:00
У меня сейчас системник валяется на работе, аж пентиум 4 DELL. У приятеля на работе валялся системник, он его хотел выкинуть, но потому как до помойки не донёс, подарил его мне. Просто разъёмы памяти окислились, просто память переконнектил и всё заработало. Винта только нет, сейчас найду винт и поставлю туда семёрку и попытаюсь там развернуть esp-idf с нуля. У меня с Arduino IDE, тоже непонятки с ESP8266. Разворачивал Arduino IDE сразу под esp32, всё завелось с первого тычка. Вот с ESP8266 трабблы и всё тут, библиотеки не грузятся/не обновляются, вернее пытаются обновиться каждый раз и идут ошибки.

"Arduino: 1.8.5 (Windows 7), Плата:"Heltec_WIFI_LoRa_32, 80MHz, 921600"
Invalid version found: Internal RTC2.0
Не найден boards.txt в C:\Users\1\Documents\Arduino\hardware\heltec\InstallGuide. Это точно pre-1.5?
Не найден boards.txt в C:\Users\1\Documents\Arduino\hardware\heltec\SchematicDiagram. Это точно pre-1.5?
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Не найден boards.txt в C:\Users\1\Documents\Arduino\hardware\heltec\InstallGuide. Это точно pre-1.5?
Не найден boards.txt в C:\Users\1\Documents\Arduino\hardware\heltec\SchematicDiagram. Это точно pre-1.5?
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0
Invalid version found: Internal RTC2.0"
AlexDol Магистр Екатеринбург 224 310
Отв.9  24 Дек. 18, 20:08, через 39 мин
Коллега ys1797 сам не желая того в своей новой теме с первых строк сообщения запугал (шутка) народ.
Но если перейти ко второму сообщению "Загрузка готовой прошивки" для ленивых или кто не намерен вникать в программирование - то всё невероятно просто! Если кого то испугала необходимость изготовления печатной платы, то это и не обязательно.
ESP32 и четыре мелкосхемы плюс два-четыре мосфета для управления клапанами легко распаяете на макетной платке.
Существуют и макетные платы для WiFi модулей ESP32, ESP8266 (двусторонние, металлизированные отверстия).
Это мой случай, поскольку в Е-Бурге я ESP32 на отладочной плате, а проще в сборе с программатором купить не смог. Нашелся лишь такой: IntoRobot W33 module (ESP-32). Сделаю по старинке обычным программатором, как ранее прошивал ESP8266.
Радует что после включения автоматики все настройки будут доступны с экрана смартфона (например).
И меню понятно любому самогонщику. Нет необходимости редактировать настройки оборудования в коде программы.  
Короче: Это народный вариант автоматики на базе ESP32!

На фото.
IntoRobot W33 module (ESP-32) ... 590р
ESP-32 adapter (AI) ... 80р
Макетные платы для WiFi модулей ESP32, ESP8266 (двусторонние, металлизированные отверстия).
Prototype PCB 5x7cm DS ESP-12/32 ... 120р
Prototype PCB 7x9cm DS ESP-12/32 ... 170р
ESP32, Adapter.JPG
508x507 44Кб
PROTOTYPE.JPG
1024x492 77Кб
ys1797 Доктор наук Санкт-Петербург 928 277
Отв.10  24 Дек. 18, 20:20, через 12 мин
IvanAltay, ну не знаю. Видимо Arduino IDE музейной версии. Вот я взял в менеджере плат поставил esp8266 - поставился. Удалил - удалился. ver 1.8.1
IvanAltay Доктор наук Бийск 866 176
Отв.11  24 Дек. 18, 20:38, через 19 мин
ys1797, у меня версия  1.8.5 , видимо не стабильная.

Добавлено через 11мин.:

Arduino 1.8.8 уже вышла.
https://www.arduino.cc/en/Main/Software
Надо заменить.

Добавлено через 52мин.:

Обновил Arduino IDE до версии 1.8.9 ещё хуже стало. Теперь скетчь проверенный/исправный под 1.8.5 не шьётся в esp32 LoRa. Надо на чистой винде развернуть и поменьше не нужных драйверов... Отдельный комп для esp32, видимо уже необходимость.
ys1797 Доктор наук Санкт-Петербург 928 277
Отв.12  25 Дек. 18, 19:39
На фото.IntoRobot W33 module (ESP-32) ... 590рAlexDol, 24 Дек. 18, 20:08

При прошивке придется играться кнопками boot и en или покупать usb2com адаптер с полными сигналами и уровнем 3.3v, т.к. esp32 не толерантен к 5 вольтовой логике. Проще переплатить 100 руб и взять esp32 модуль уже с USB.

Или не переплачивать:
https://ru.aliexpress.com/...2796032726.html 494 руб и usb

https://ru.aliexpress.com/...2835829447.html 925руб с акб отсеком и экраном
сообщение удалено
Totenkopf Специалист Ташкент-Ютербог-Берлин-Пограничный-Суйфеньхэ-Елизово-Подольск-Долгопрудный 159 54
Отв.13  25 Дек. 18, 21:23
Друзья, а схема есть?
Андрей Администратор Бухарест 3522 3789
Отв.14  25 Дек. 18, 22:19, через 56 мин
ys1797, я так понял интерфейс еще в разработке. То, что ресурс сторонний - это плохо, эта ж система для домашнего использования предполагается. Ты сделай простой API и интегрируй интерфейс в проект, я форкну и сделаю альтернативный интерфейс с применением современных подходов.

IvanAltay, для тестирования ПО воспользуйся лучше виртуалбоксом, вместо старого ПК.
ys1797 Доктор наук Санкт-Петербург 928 277
Отв.15  26 Дек. 18, 11:43
Друзья, а схема есть?Totenkopf, 25 Дек. 18, 21:23
Попробуйте еще раз прочитать первое сообщение.
5 пункт в "Аппаратном обеспечении".
ys1797 Доктор наук Санкт-Петербург 928 277
Отв.16  26 Дек. 18, 20:52
я так понял интерфейс еще в разработке. То, что ресурс сторонний - это плохо, эта ж система для домашнего использования предполагается. Ты сделай простой API и интегрируй интерфейс в проект, я форкну и сделаю альтернативный интерфейс с применением современных подходов.Андрей, 25 Дек. 18, 22:19

Да. Постоянно что-то допиливается и перепиливается. Хочется минимум графики использовать.
Ресурс сторонний, но мой Улыбающийся А так на странице загрузки html морды есть поле для url, где указывается, откуда брать файлы.
Можно поставить localhost и с самого себя и поставить...
Я пока не пойму, как сделать образ партишен с уже прошитыми в нее файлами. Есть мысль попробовать mkspifs.

Под API имеется ввиду, что можно запросить json запросами и что можно получить в ответ?
Плюс еще json сообщения приходят асинхронно по websocket…
IvanAltay Доктор наук Бийск 866 176
Отв.17  26 Дек. 18, 22:45
При прошивке придется играться кнопками boot и en или покупать usb2com адаптер с полными сигналами и уровнем 3.3v, т.к. esp32 не толерантен к 5 вольтовой логике. Проще переплатить 100 руб и взять esp32 модуль уже с USB.

Или не переплачивать:
https://ru.aliexpress.com/...2796032726.html 494 руб и usb

https://ru.aliexpress.com/...2835829447.html 925руб с акб отсеком и экраномys1797, 25 Дек. 18, 19:39
У меня в наличии есть модуль ESP32 DEVKIT TV1. Тоже кнопки ананировать приходится при прошивке. Но вполне себе удобный девайс. Работает стабильно.

https://ru.aliexpress.com/...-dc6e97d8ea3f-1

Добавлено через 2мин.:

IvanAltay, для тестирования ПО воспользуйся лучше виртуалбоксом, вместо старого ПК.Андрей, 25 Дек. 18, 22:19
СчАс НГ настанет и я вообще всё попробую от безделья. Улыбающийся

Добавлено через 11мин.:

ys1797, а есть большой смысл вешать регулятор мощности на ESP? По идее, РМ2 стоит порядка 2 рублей с тиристором. А если рассмотреть гибрид ESP32+РМ2+SSR40DA(в виде ключа), без PZEM. А нужно ли так измерять мощность нагрева, если мы её точно знаем?

Добавлено через 24мин.:

ys1797, мне бы вот был сильно интересней девайс ESP32(LoRa Heltec)+РМ2+SSR40DA +ESP32(LoRa Heltec) в качестве носимого брелка/монитора/терминала. ESP32, стабильно мониторит температуру и т.п. данные, присылает мне их на терминал из аналогичного ESP32(LoRa Heltec) по частоте 433mHz. При необходимости/аварийной ситуации, можно погасить нагрев твердотельным реле SSR40DA. Через эту же релюху SSR40DA можно сделать регулятор мощности, она имеет уже контроль перехода нуля синуса. Подаём ШИМ сигнал нужной скважности на SSR40DA и имеем регулировку мощности нужной. ТЭН - девайс резистивный, если он питается стабильным напряжением с РМ2, там и измерять нечего, в обратной связи нагрева ТЭНа нужды нет.

Добавлено через 11мин.:

Ну и понятно, что носимый терминал на ESP32(LoRa Heltec) может быть ещё и пультом ДУ. Дуплексный протокол в LoRa заложен изначально. И малюсенький уже встроенный дисплей, вполне достаточен на настроенной стабильной системе.
Андрей Администратор Бухарест 3522 3789
Отв.18  27 Дек. 18, 00:16
ys1797, я не спец микроконтроллерам, только интересуюсь. Вот что заметил:
есть 2 версии libesphttpd
1. https://github.com/Spritetm/libesphttpd
2. https://github.com/chmorgan/libesphttpd
вторая поновее, с поддержкой ssl, у тебя первая.
так же там есть папка espfs, а в документации написано:
cgiEspVfsGet (arg: base filesystem path) This is a catch-all cgi function. It takes the url passed to it, looks up the corresponding path in the filesystem and if it exists, sends the file. This simulates what a normal webserver would do with static files. If the file is not found, (or if http method is not GET) this cgi function returns NOT_FOUND, and then other cgi functions specified later in the routing table can try. See the example projects for an implementation that uses this function call. FreeRTOS Example

The cgiArg value is the base directory path, if specified. Usage:

    ROUTE_CGI("*", cgiEspVfsGet)
    ROUTE_CGI_ARG("*", cgiEspVfsGet, "/base/directory/"Подмигивающий
    ROUTE_CGI_ARG("*", cgiEspVfsGet, "."Подмигивающий to use the current working directory
По ссылке в цитате пример с папкой html, в ней как раз стили и гифка, посмотри как сервер с этими файлами работает, мне общий код не очень понятен.

Простой API, в смысле как в REST. Чтобы GET и POST правильно использовались, маршруты интуитивно понятные, исключения.

JSON это очень удобно в JS и, кстати, для работы с ним не нужен jQuery, он уже давно потерял свою актуальность.
Если не все данные приходят через вебсокет, могут быть проблемы с политикой безопасности браузера, он не даст работать с чистыми данными в кроссдоменных запросах, надо или заголовки CORS добавлять или JSONP. А если все на одном адресе будет крутиться - никаких проблем с JS скриптами.
saniaxxx Магистр Кострома 215 24
Отв.19  27 Дек. 18, 00:32, через 16 мин
Тож когда то начинал похожий, но более простой проект с управлением через json api. Забросил в связи с нерациональной тратой времени на разработку, перешёл на малинку и пайтон