From 7e41168606030e20e3ca27a250e8bdf3cb4fe986 Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Sun, 20 Feb 2022 10:51:19 +0100 Subject: [PATCH] Fix for unstable ESP8266 when debug is disabled --- src/AmsConfiguration.cpp | 2 +- src/AmsToMqttBridge.ino | 12 +++--------- src/web/AmsWebServer.cpp | 10 ++++++---- web/debugging.html | 1 - 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/AmsConfiguration.cpp b/src/AmsConfiguration.cpp index 62819081..3a522680 100644 --- a/src/AmsConfiguration.cpp +++ b/src/AmsConfiguration.cpp @@ -233,7 +233,7 @@ bool AmsConfiguration::getDebugConfig(DebugConfig& config) { bool AmsConfiguration::setDebugConfig(DebugConfig& config) { if(!config.serial && !config.telnet) - config.level = 5; // Force error level when debug is disabled + config.level = 4; // Force warning level when debug is disabled EEPROM.begin(EEPROM_SIZE); EEPROM.put(CONFIG_DEBUG_START, config); bool ret = EEPROM.commit(); diff --git a/src/AmsToMqttBridge.ino b/src/AmsToMqttBridge.ino index 197cabcd..2dabdf86 100644 --- a/src/AmsToMqttBridge.ino +++ b/src/AmsToMqttBridge.ino @@ -182,13 +182,8 @@ void setup() { Serial.begin(115200); } + Debug.setSerialEnabled(true); DebugConfig debug; - if(config.getDebugConfig(debug) && (debug.serial || debug.telnet)) { - Debug.setSerialEnabled(debug.serial); - } - #if DEBUG_MODE - Debug.setSerialEnabled(true); - #endif delay(1); float vcc = hw.getVcc(); @@ -377,9 +372,8 @@ void loop() { Debug.setPassword(web.password); } DebugConfig debug; - if(config.getDebugConfig(debug) && (debug.serial || debug.telnet)) { - Debug.begin(wifi.hostname, (uint8_t) debug.level); - Debug.setSerialEnabled(debug.serial); + if(config.getDebugConfig(debug)) { + Debug.begin(wifi.hostname, debug.serial || debug.telnet ? (uint8_t) debug.level : RemoteDebug::WARNING); // I don't know why, but ESP8266 stops working after a while if ERROR level is set if(!debug.telnet) { Debug.stop(); } diff --git a/src/web/AmsWebServer.cpp b/src/web/AmsWebServer.cpp index 1bc3fdc2..5ccf30dd 100644 --- a/src/web/AmsWebServer.cpp +++ b/src/web/AmsWebServer.cpp @@ -1232,11 +1232,13 @@ void AmsWebServer::handleSave() { if(server.hasArg("debugConfig") && server.arg("debugConfig") == "true") { printD("Received Debug config"); DebugConfig debug; + config->getDebugConfig(debug); + bool active = debug.serial || debug.telnet; + debug.telnet = server.hasArg("debugTelnet") && server.arg("debugTelnet") == "true"; debug.serial = server.hasArg("debugSerial") && server.arg("debugSerial") == "true"; debug.level = server.arg("debugLevel").toInt(); - debugger->stop(); if(debug.telnet || debug.serial) { if(webConfig.security > 0) { debugger->setPassword(webConfig.password); @@ -1251,8 +1253,8 @@ void AmsWebServer::handleSave() { debugger->stop(); } } - } else { - debugger->stop(); + } else if(active) { + performRestart = true; } config->setDebugConfig(debug); } @@ -1284,7 +1286,7 @@ void AmsWebServer::handleSave() { //if (debugger->isActive(RemoteDebug::DEBUG)) config->print(debugger); if (config->save()) { printI("Successfully saved."); - if(config->isWifiChanged()) { + if(config->isWifiChanged() || performRestart) { performRestart = true; server.sendHeader("Location","/restart-wait"); server.send(303); diff --git a/web/debugging.html b/web/debugging.html index ac858968..3e7311a8 100644 --- a/web/debugging.html +++ b/web/debugging.html @@ -25,7 +25,6 @@ -