• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь как сделать модулю веб фейс на С++

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

Вобщем интересует как связать поля в ХТМЛ странице с кодом на C++, чтоб допустим, когда на форме нажимают на кнопку сохранить дёргался какой-то каллбек в коде, и как сохранить потом это все во флеш.. Всем зарание спаисбо за ответы))
 
Нашел часть ответа в самом веб фреймворке, там уже есть хтмл страницы и есть код типа такого
void MTD_FLASHMEM get_home()
{
HTTPTemplateResponse response(this, FSTR("home.html"));
response.flush();
}

только я никак не пойму как заставить эту хтмл страницу записатся во флеш, а потом еще и извлекать её оттуда по имени


и еще не понятно как перехватить в плюсовом коде нажатие на кнопку сохранить, и вытащить введенные данные с формы


нашел как записывать во флеш свои строки и переменные, для этого есть класс
FlashDictionary

FlashDictionary::setInt(STR_BAUD, baudRate);
FlashDictionary::setBool(STR_SYSOUT, enableSystemOutput);
FlashDictionary::setInt(STR_UARTSRV, (int32_t)serialService);

и еще не совсем в тему, но как убрать при загрузке вывод в порт этих данных
mode : sta(18:fe:34:a0:ff:9b)
add if0
scandone
add 0
aid 19
aid end
cnt

connected with Riversoft, channel 6
dhcp client start...
ip:192.168.1.121
mask:255.255.255.0
gw:192.168.1.1
 
Последнее редактирование:
Все, нашел откуда ноги растут, есть файл fdvcollection.h в проекте в котором обьявлен клас и описание к нему, им можно вытаскивать свои файлы с еспшки
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// FlashFileSystem
// It is just a files extractor from the flash.
// You can write files into the flash using "binarydir.py" (to prepare) and "esptool.py" (to flash) tools.
// For example, having some files in webcontent subdirectory you can do:
// python binarydir.py webcontent webcontent.bin 167936
// python ../esptool.py --port COM7 write_flash 0x17000 webcontent.bin
// Then you can use FlashFileSystem static methods to get actual files content
// Maximum content size is 167936 bytes and starts from 0x17000 of the flash memory

struct FlashFileSystem
{
static uint32_t const FLASHFILESYSTEM_POS = 0x17000;
static uint32_t const MAGIC = 0x93841A03;

static bool find(char const* filename, char const** mimetype, void const** data, uint16_t* dataLength);
};
 

jmms

Moderator
Команда форума
Доброго времени суток.
Вот писал штуку https://github.com/jmas/ESP8266Device/blob/master/ESP8266Device.h поднимает вебсвервер если WiFi модуль не настроен, если настроен, но не подключается - тоже поднимает сервер и ждет подключение. Затем можно зайти на страницу, ввести настройки и все сохраняется в EEPROM. Правда сам код заточен потом на общение по MQTT (но это не важно).
Можете повыдирать куски кода, подсмотреть что то.
 
А этот проект под еклипс или под Ардуино, чтот не понимаю...

void on(String eventName, std::function<void(String)> callback) {
if (eventsSize < EVENTS_LEN) {
events[eventsSize].name = eventName;
events[eventsSize].callback = callback;
eventsSize++;
}
}

эта конструкция, это подписывагние на калбек, но у меня в эклипсе почемуто не видит std:: функции, что мне нужно сделать чтоб это работало.. std это неймспейс? или класс со статик функциями?

А старничка я вижу просто как константная строка, возьму на заметку
 
Последнее редактирование:
Спасибо! Задачу решил функциями фреймворка, все работает... только вот памяти вечно не хватает... Free IRam : 630 вот бы понять как она работает, тоесть как заставлять компилятор функции все по максимуму зафигачивать во флеш, но эт уже не в этой теме) Всем спасибо за ответы
 
Сверху Снизу