From 53573184f31174b132fead7198ea3f22cf25c855 Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Sun, 17 Jan 2021 15:53:56 +0100 Subject: [PATCH] Simplified temperature.json --- src/web/AmsWebServer.cpp | 35 +++++++++++++++++++---------------- src/web/AmsWebServer.h | 1 - web/tempsensor.json | 7 +++++++ 3 files changed, 26 insertions(+), 17 deletions(-) create mode 100644 web/tempsensor.json diff --git a/src/web/AmsWebServer.cpp b/src/web/AmsWebServer.cpp index d89b5cea..b21fee14 100644 --- a/src/web/AmsWebServer.cpp +++ b/src/web/AmsWebServer.cpp @@ -28,6 +28,7 @@ #include "root/price_html.h" #include "root/notfound_html.h" #include "root/data_json.h" +#include "root/tempsensor_json.h" #include "base64.h" @@ -188,31 +189,33 @@ void AmsWebServer::temperatureJson() { return; int count = hw->getTempSensorCount(); + int size = 32 + (count * 72); + + char buf[size]; + snprintf_P(buf, 16, "{\"c\":%d,\"s\":[", count); - StaticJsonDocument<4096> json; - json["c"] = count; - JsonArray sensors = json.createNestedArray("s"); for(int i = 0; i < count; i++) { TempSensorData* data = hw->getTempSensorData(i); TempSensorConfig* conf = config->getTempSensorConfig(data->address); - JsonObject obj = sensors.createNestedObject(); - obj["i"] = i; - obj["a"] = toHex(data->address, 8); - obj["n"] = conf == NULL ? "" : String(conf->name).substring(0,16); - obj["c"] = conf == NULL ? true : conf->common; - obj["v"] = String(data->lastRead, 2); + char* pos = buf+strlen(buf); + snprintf_P(pos, 72, TEMPSENSOR_JSON, + i, + toHex(data->address, 8).c_str(), + conf == NULL ? "" : String(conf->name).substring(0,16).c_str(), + conf == NULL || conf->common ? 1 : 0, + data->lastRead + ); delay(1); } - - String jsonStr; - serializeJson(json, jsonStr); + char* pos = buf+strlen(buf); + snprintf_P(count == 0 ? pos : pos-1, 8, "]}"); server.sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); server.sendHeader("Pragma", "no-cache"); server.sendHeader("Expires", "-1"); - server.setContentLength(jsonStr.length()); - server.send(200, "application/json", jsonStr); + server.setContentLength(strlen(buf)); + server.send(200, "application/json", buf); } void AmsWebServer::price() { @@ -525,11 +528,11 @@ void AmsWebServer::configEntsoeHtml() { if(!checkSecurity(1)) return; - String html = String((const __FlashStringHelper*) ENTSOE_HTML); - EntsoeConfig entsoe; config->getEntsoeConfig(entsoe); + String html = String((const __FlashStringHelper*) ENTSOE_HTML); + html.replace("{et}", entsoe.token); html.replace("{em}", String(entsoe.multiplier / 1000.0, 3)); diff --git a/src/web/AmsWebServer.h b/src/web/AmsWebServer.h index af1aca1d..274dd3d9 100644 --- a/src/web/AmsWebServer.h +++ b/src/web/AmsWebServer.h @@ -5,7 +5,6 @@ #include "Arduino.h" #include -#include #include "AmsConfiguration.h" #include "HwTools.h" #include "AmsData.h" diff --git a/web/tempsensor.json b/web/tempsensor.json new file mode 100644 index 00000000..573b756c --- /dev/null +++ b/web/tempsensor.json @@ -0,0 +1,7 @@ +{ + "i" : %d, + "a" : "%s", + "n" : "%s", + "c" : %d, + "v" : %.1f +}, \ No newline at end of file