Как интегрировать глобальные переменные int / string в мой веб-сайт ESP8266? - PullRequest
0 голосов
/ 07 июня 2019

Я использую свой NODEMCU ESP8266 для управления моей светодиодной лентой за диваном. У меня есть веб-сервер, который публикует HTML с server.send() в каждом цикле. Теперь я хочу, чтобы веб-сайт отображал текущее состояние светодиодной полосы, но я не могу просто интегрировать переменные в HTML-код веб-сайта, потому что сервер, очевидно, будет обрабатывать его как HTML, а не просто читать переменные.

//a variable I use for the LEDs
int colorCode;

// thats in the handler function
String s = MAIN_page; //Read HTML contents
server.send(200, "text/html", s); //Send web page

// thats the website
const char MAIN_page[] PROGMEM = R"=====(
  <!DOCTYPE HTML>
  <html lang="de">
     ...website...
  </html>
)=====";

Мне просто нужен небольшой совет о том, как я могу интегрировать переменные, такие как int colorCode, в HTML, прежде чем он будет отправлен на сервер с server.send().

1 Ответ

0 голосов
/ 08 июня 2019

Подобное было сделано, например, аппаратным проектом OpenEVSE, который строит свои ответы JSON в строках Arduino (String JSON):

  json += "{";
  json += "\"rssi\":"+String(WiFi.RSSI(i));
  json += ",\"hidden\":"+String(WiFi.isHidden(i)?"true":"false");
  json += "}";

Вы можете сделать то же самое, что иПока send() получает правильный тип строки.Это будет означать удаление PROGMEM, вероятно, const, и, вероятно, для удобства использование высокоуровневого строкового класса.Обратите внимание, что существует несколько причин, по которым OpenEVSE предпочитает сохранять HTML статичным :

  1. AJAX позволяет своему приложению быть более отзывчивым, чем приложение, которое необходимо перезагружать на каждой странице, и
  2. ограниченная память ESP8266 идет гораздо дальше, когда ему не нужно создавать целую веб-страницу.

На практике: в памяти программы могут храниться большие строки, но они не будут динамическими.Если строка не известна во время компиляции, то она должна быть собрана во время выполнения, и ОЗУ будет использоваться для ее отслеживания.Построение веб-страницы в виде строки имеет смысл , пока страница мала, а переменных мало .

...