Mongoose WEB Server

Доброго!
Вот наткнулся на проект. Можно сделать красивую вэб-морду для самоделок.

Демонстрашка даже и скомпилилась и зашилась в ESP32. И работает.
Не могу врубиться какой функцией обновлять данные на дашборде. И считывать.
В документации

заявлено Action Plan из пяти пунктов. Где? Пункт 5?
Кто разобрался, подтолкните в правильном направлении.

Разобрался.

Разобрался с отправкой данных на дашборд.
А как считывать, кто подскажет?
Обработчик свой определил: mongoose_set_http_handlers, две своих функции указал.
И что в них писать?
Пример со сетодиодом работает, а как читать строки, числа?

Оно работает, числа строки читаются. Но есть нюанс.
Переназначенная функция обработки вызывается если нажать кнопку “save”. Или по истечении периода автообновления страницы. Если он задан.

Похоже, в этой теме я сам с собою разговариваю :slight_smile:
Никому не нужен конструктор вебморды :frowning:
Удобно же, мышкой элементы расставил, пару строк кода и готово.

Вот именно так почитатели flprog рассуждают. А потом сюда приходят помощь кляньчить…
Кому нужно - сам разберется. Ничего сложного в html/css нет.

А где здесь ардуина?

Вы бы небольшой хелп написали, если сами разобрались. И вам мысли привести в порядок, и форуму польза

Ну поехали. Для ESP32 в среде Arduino IDE2

  1. Заходим
    https://mongoose.ws/wizard/
    Create new C/C++ Project, выбрать директорию, платформа Any Arduino Board with Wi-Fi, Default Dashboard
    Появилось окно редактора с полным вариантом элементов.
    Двигаем, крути-вертим, лишнее удаляем.
  2. Нажимаем Cenerate C/C++ Code и в выбранном каталоге находим готовый скетч.
  3. файл wizard.ino - это болванка, можно поправить ssid-password и залить поиграться.
    А вот подкаталог src копируем в свой проект и подключаем
#include "src/mongoose_glue.h" 
  1. В своем проекте в сетапе инициализируем mongoose_init(); в лупе тикаем mongoose_poll(); (У меня все это в отдельной таске FreeRTOS)
  2. Чтобы писать данные. На примере вебсокета.
    Объявляем свою функцию mongoose_add_ws_handler(500, ws_500);
    Определяем свою функцию (порт 22 для примера)

static void ws_500(struct mg_connection *c)
{
  mg_ws_printf(c, WEBSOCKET_OP_TEXT, "{%m: %d}", MG_ESC("voltage"), analogRead(22));
}

В результате каждые 500 мсек измеряем напругу на порту 22
6. Чтобы читать данные
Объявляем: mongoose_set_http_handlers(“settings”, my_get_settings, my_set_settings);
Определяем 2 своих функции

static struct settings x;
void my_get_settings(struct settings *settings) 
{
    *settings = x;
}

void my_set_settings(struct settings *settings)
{
    x = *settings;
}

Мангуст будет их сам вызывать по событиям.

Вот как-то коротенький хелп получился.
Документация есть. Проект вроде серьезный, судя по аннотации даже на МКС летает.

4 лайка

спасибо