From a00455d37b1b7dbed3525afcf9efbb43f8cb17c0 Mon Sep 17 00:00:00 2001 From: fvanroie Date: Wed, 26 Feb 2020 21:39:31 +0100 Subject: [PATCH] Add rotation, teleperiod and statusupdate --- src/hasp_http.cpp | 141 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 105 insertions(+), 36 deletions(-) diff --git a/src/hasp_http.cpp b/src/hasp_http.cpp index 36101c97..c2ef1e1f 100644 --- a/src/hasp_http.cpp +++ b/src/hasp_http.cpp @@ -42,16 +42,16 @@ WebServer webServer(80); #endif // ESP32 -static const char MAIN_MENU_BUTTON[] PROGMEM = +const char MAIN_MENU_BUTTON[] PROGMEM = "

"; -static const char MIT_LICENSE[] PROGMEM = "
MIT License

"; +const char MIT_LICENSE[] PROGMEM = "
MIT License

"; -static const char HTTP_DOCTYPE[] PROGMEM = +const char HTTP_DOCTYPE[] PROGMEM = ""; -static const char HTTP_META_GO_BACK[] PROGMEM = ""; -static const char HTTP_HEADER[] PROGMEM = "%s"; -static const char HTTP_STYLE[] PROGMEM = +const char HTTP_META_GO_BACK[] PROGMEM = ""; +const char HTTP_HEADER[] PROGMEM = "%s"; +const char HTTP_STYLE[] PROGMEM = ""; -static const char HTTP_SCRIPT[] PROGMEM = ""; -static const char HTTP_HEADER_END[] PROGMEM = +const char HTTP_SCRIPT[] PROGMEM = ""; +const char HTTP_HEADER_END[] PROGMEM = "
"; -static const char HTTP_END[] PROGMEM = "

HASP "; -static const char HTTP_FOOTER[] PROGMEM = " by Francis Van Roie
"; +const char HTTP_END[] PROGMEM = "

HASP "; +const char HTTP_FOOTER[] PROGMEM = " by Francis Van Roie
"; // Additional CSS style to match Hass theme -static const char HASP_STYLE[] PROGMEM = +const char HASP_STYLE[] PROGMEM = ""; //////////////////////////////////////////////////////////////////////////////////////////////////// // URL for auto-update "version.json" -const char UPDATE_URL[] = "http://haswitchplate.com/update/version.json"; +const char UPDATE_URL[] PROGMEM = "http://haswitchplate.com/update/version.json"; // Default link to compiled Arduino firmware image String espFirmwareUrl = "http://haswitchplate.com/update/HASwitchPlate.ino.d1_mini.bin"; // Default link to compiled Nextion firmware images @@ -108,18 +108,18 @@ bool httpIsAuthenticated(const String & page) return true; } -String getOption(uint8_t value, String label, bool selected) +String getOption(int value, String label, bool selected) { char buffer[127]; - sprintf_P(buffer, PSTR(""), value, (selected ? PSTR("selected") : ""), - label.c_str()); + snprintf_P(buffer, sizeof(buffer), PSTR(""), value, + (selected ? PSTR(" selected") : ""), label.c_str()); return buffer; } String getOption(String value, String label, bool selected) { char buffer[127]; - sprintf_P(buffer, PSTR(""), value.c_str(), (selected ? PSTR("selected") : ""), - label.c_str()); + snprintf_P(buffer, sizeof(buffer), PSTR(""), value.c_str(), + (selected ? PSTR(" selected") : ""), label.c_str()); return buffer; } void webSendFooter() @@ -553,7 +553,6 @@ void handleFileList() path.clear(); #if defined(ARDUINO_ARCH_ESP32) - debugPrintln(PSTR("HTTP: Listing files on the internal flash:")); File root = SPIFFS.open("/"); File file = root.openNextFile(); String output = "["; @@ -573,10 +572,6 @@ void handleFileList() } output += F("\"}"); - char msg[127]; - sprintf(msg, PSTR("HTTP: * %s (%u bytes)"), file.name(), (uint32_t)file.size()); - debugPrintln(msg); - // file.close(); file = root.openNextFile(); } @@ -613,23 +608,30 @@ void webHandleConfig() if(webServer.method() == HTTP_POST) { if(webServer.hasArg(PSTR("save"))) { + String save = webServer.arg(PSTR("save")); DynamicJsonDocument settings(256); for(int i = 0; i < webServer.args(); i++) settings[webServer.argName(i)] = webServer.arg(i); - if(webServer.arg(PSTR("save")) == String(PSTR("hasp"))) { + if(save == String(PSTR("hasp"))) { haspSetConfig(settings.as()); - } else if(webServer.arg(PSTR("save")) == String(PSTR("mqtt"))) { + } else if(save == String(PSTR("mqtt"))) { mqttSetConfig(settings.as()); - } else if(webServer.arg(PSTR("save")) == String(PSTR("http"))) { + } else if(save == String(PSTR("gui"))) { + guiSetConfig(settings.as()); + + } else if(save == String(PSTR("debug"))) { + debugSetConfig(settings.as()); + + } else if(save == String(PSTR("http"))) { httpSetConfig(settings.as()); // Password might have changed if(!httpIsAuthenticated(F("config"))) return; - } else if(webServer.arg(PSTR("save")) == String(PSTR("wifi"))) { + } else if(save == String(PSTR("wifi"))) { wifiSetConfig(settings.as()); } } @@ -665,8 +667,8 @@ void webHandleConfig() httpMessage += F("

"); - httpMessage += F("

"); + httpMessage += F("

"); httpMessage += FPSTR(MAIN_MENU_BUTTON); ; @@ -729,7 +731,7 @@ void webHandleGuiConfig() if(!httpIsAuthenticated(F("config/gui"))) return; DynamicJsonDocument settings(256); - // guiGetConfig(settings.to()); + guiGetConfig(settings.to()); // char buffer[127]; String nodename = haspGetNodename(); @@ -737,6 +739,45 @@ void webHandleGuiConfig() httpMessage.reserve(1500); httpMessage += String(F("
")); + + httpMessage += String(F("

Short Idle

"); + + httpMessage += String(F("

Long Idle

"); + + int8_t rotation = settings[FPSTR(F_GUI_ROTATION)].as(); + httpMessage += F("

Orientation

"); + + int8_t bcklpin = settings[FPSTR(F_GUI_BACKLIGHTPIN)].as(); + httpMessage += F("

Backlight Control

"); + httpMessage += F("

"); httpMessage += PSTR("

"); - if(WiFi.getMode() == WIFI_STA) { - httpMessage += - PSTR("

"); - } + httpMessage += + PSTR("

"); webSendPage(nodename, httpMessage.length(), false); webServer.sendContent(httpMessage); @@ -827,6 +866,35 @@ void webHandleHttpConfig() } #endif +//////////////////////////////////////////////////////////////////////////////////////////////////// +void webHandleDebugConfig() +{ // http://plate01/config/http + if(!httpIsAuthenticated(F("config/debug"))) return; + + DynamicJsonDocument settings(256); + debugGetConfig(settings.to()); + + // char buffer[127]; + String nodename = haspGetNodename(); + String httpMessage((char *)0); + httpMessage.reserve(1500); + + httpMessage += String(F("
")); + httpMessage += String(F("

Telemetry Period

"); + httpMessage += F("

"); + + httpMessage += + PSTR("

"); + + webSendPage(nodename, httpMessage.length(), false); + webServer.sendContent(httpMessage); + httpMessage.clear(); + webSendFooter(); +} + //////////////////////////////////////////////////////////////////////////////////////////////////// void webHandleHaspConfig() { // http://plate01/config/http @@ -1077,6 +1145,7 @@ void httpSetup(const JsonObject & settings) webServer.on(F("/config/hasp"), webHandleHaspConfig); webServer.on(F("/config/http"), webHandleHttpConfig); webServer.on(F("/config/gui"), webHandleGuiConfig); + webServer.on(F("/config/debug"), webHandleDebugConfig); #if HASP_USE_MQTT > 0 webServer.on(F("/config/mqtt"), webHandleMqttConfig); #endif