Подобное было сделано, например, аппаратным проектом 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 статичным :
- AJAX позволяет своему приложению быть более отзывчивым, чем приложение, которое необходимо перезагружать на каждой странице, и
- ограниченная память ESP8266 идет гораздо дальше, когда ему не нужно создавать целую веб-страницу.
На практике: в памяти программы могут храниться большие строки, но они не будут динамическими.Если строка не известна во время компиляции, то она должна быть собрана во время выполнения, и ОЗУ будет использоваться для ее отслеживания.Построение веб-страницы в виде строки имеет смысл , пока страница мала, а переменных мало .