如何将全局int / string变量集成到ESP8266网站中?

时间:2019-06-06 22:03:28

标签: html arduino esp8266 nodemcu arduino-esp8266

我用NODEMCU ESP8266控制沙发后面的LED灯带。我有一个网络服务器,每个循环中都用server.send()发布HTML。现在,我希望网站显示led条的当前状态,但是我不能仅仅将变量集成到网站的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这样的变量通过server.send()发送到服务器之前,如何将变量import numpy as np from itertools import combinations combos = np.array(list(combinations(range(1, 50), 6))) # build all combos # combos is shape (13983816, 6) filt = np.where(np.bincount(np.where(np.abs( np.subtract(combos[:, :-1], combos[:, 1:])) == 1)[0]) <= 1)[0] # magic! filtered = combos[filt] # filtered is shape (12489092, 6) 集成到HTML中,我只需要一个小提示。

1 个答案:

答案 0 :(得分:0)

类似的事情由OpenEVSE硬件项目完成,例如builds its JSON responses in Arduino strings(字符串JSON):

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

只要send()收到正确的字符串类型,您就可以这样做。这将涉及删除PROGMEM,可能是const,并且可能为了方便起见使用高级字符串类。请注意,OpenEVSE选择保留HTML static的原因有多种:

  1. 与必须在每个页面重新加载的应用程序相比,
  2. AJAX可使他们的应用程序具有更高的响应速度,并且
  3. ESP8266的有限内存在不需要构建整个网页时会走得更远。

实际上,程序存储器可以存储大字符串,但是它们不是动态的。如果在编译时不知道该字符串,则必须在运行时对其进行汇编,并且将使用RAM来跟踪它。只要页面很小且变量很少,就可以用字符串构建网页