• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 вот бы понять как она работает, тоесть как заставлять компилятор функции все по максимуму зафигачивать во флеш, но эт уже не в этой теме) Всем спасибо за ответы
 
Сверху Снизу