Динамически формируемый HTML

inspiritus
Offline
Зарегистрирован: 17.12.2012

Добра и времени суток.

была нана, заполнил всю память программ. Перешел на ESP8266.

рисую я тут теперь вэб интерфейс на немало страниц (хэхэ памяти то теперь много) , и как-то неохота с AJAX заморачиваться, тк достаточно обновления раз в минуты.

формирую страницу «на лету» , но при этом удивительно неудобно куски html, или построчно кидать клиент.принтом чередуя html и переменные.

удобно страницу в нотепаде++ нарисовать и целиком разместить. Но при этом некоторые участки разные : цвета, таблицы, числовые значения из переменных.

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

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

const char page_name[] PROGMEM = R”rawliteral (
<HTML>
</HTML>) rawliteral”;

А как уважаемые кроты поступают в таких случаях?

rkit
Offline
Зарегистрирован: 23.11.2016

Хранят статику в файлах в spiffs как белые люди.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Основное удобство в применяемом коде- прямой копипаст страницы без дополнительных шаманств. Дополнительное- тут же на вкладке IDE и страница и жаваскрипт в ней.
Раньше страница редактировалась в нотепаде++  и сохранялась на SD, с которой выгружалась и было все это очень неудобно в отладке и требовало sd на spi. 

Может есть что то специяльное для таких случаев?

что то я со spiffs как то не подружился. 

sadman41
Offline
Зарегистрирован: 19.10.2016

AJAX, но с JSON и/или ASCIIZ rawliteral через snprintf прогоняю.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

inspiritus пишет:

что то я со spiffs как то не подружился. 

Мошт вина бутылку или там букетик? Должно помочь.

Ибо реально вот так это все и делают. SPIFFS, AJAX, JSON, JS, уж прости, но так правда гораздо проще. и АсинкВебСервер. Без этого как-то даже стрёмно жить на ESP. Честное пионЭЭЭЭрское!

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

rkit
Offline
Зарегистрирован: 23.11.2016

Отлаживать нормальный веб-интерфейс можно на компьютере.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Понятно, значит я на верном пути.

пока использую веб сервер из примеров

а асинкВэбСервер откуда правильный берется?

вобщем то уже что то нашел, даже нашел, как внутри rawliteral подставлять куски html

Еще нашел , читаю думаю

спасибо

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Ну не скажу что этот вариант лучше, но просто для подумать подойдет #298

rkit
Offline
Зарегистрирован: 23.11.2016

Первая ссылка в гугле - https://github.com/me-no-dev/ESPAsyncWebServer

Ты нашел какой-то машинный перевод документации. Такое себе.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

1. пишешь вебморду на диске Це:\, обычный хтмл файл но в ссылках ip-адрес девайса.

2. девайс (дуина, ESP) отдаёт только полезные данные. лучше json, он короткий и проще парсить.

3. фачишь корс игнор-заголовком, он выглядит так:

Access-Control-Allow-Origin: *

4. отладил, всё устраивает

5. копипаст хтмл файла из Це:\ в девайс, CORS-bypass заголовок удалить.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Про меню не понял, как оно соотносится с моими заморочками.

За ссылку спасибо.
Третий пункт не понял :( где в html его вписывать?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

inspiritus пишет:

Про меню не понял, как оно соотносится с моими заморочками.

Синтаксис С/С++ и синтаксис html не совместимы.  Компилятор С/С++ встречая код html выдает ошибку. Что бы этого не было лучше

1- завести отдельную флешку/пзу с html. Тогда смена этой флешки может менять другую вебстраницу без перешивки.

2- организовывавать костыли. Поверх кода html вставлять Си конструкции, для усвоения всего компилятором. В моей ссылке я вставляю внешний код в параметры функции с переменными параметрами.

3- нагрузить препроцессор, для конвертирования кода html в усвояемый код С/с++

Logik
Offline
Зарегистрирован: 05.08.2014

Voodoo Doll пишет:

1. пишешь вебморду на диске Це:\, обычный хтмл файл но в ссылках ip-адрес девайса.

2. девайс (дуина, ESP) отдаёт только полезные данные. лучше json, он короткий и проще парсить.

3. фачишь корс игнор-заголовком, он выглядит так:

Access-Control-Allow-Origin: *

4. отладил, всё устраивает

5. копипаст хтмл файла из Це:\ в девайс, CORS-bypass заголовок удалить.

json коротким называют только те, кто tlv не знает )))

если п.4 - ок, то п.5 и делать не всегда стоит. пусть с девайса и берет данные, а разметку с другого сервера, где и места больше.