From 77b0859cc8aee8253e5e1569ceaacd671143807b Mon Sep 17 00:00:00 2001 From: Yurii Date: Thu, 16 Nov 2023 03:30:24 +0300 Subject: [PATCH] fix config portal --- src/WifiManagerTask.h | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/WifiManagerTask.h b/src/WifiManagerTask.h index 37109ac..2207c10 100644 --- a/src/WifiManagerTask.h +++ b/src/WifiManagerTask.h @@ -3,7 +3,7 @@ #include #include -// Wifimanager + WiFiManager wm; WiFiManagerParameter* wmHostname; WiFiManagerParameter* wmMqttServer; @@ -22,6 +22,7 @@ IntParameter* wmIndoorSensorPin; SeparatorParameter* wmSep1; SeparatorParameter* wmSep2; + class WifiManagerTask : public Task { public: WifiManagerTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {} @@ -40,6 +41,7 @@ protected: void setup() { wm.setDebugOutput(settings.debug); + //wm.setDebugOutput(settings.debug, WM_DEBUG_VERBOSE); wmHostname = new WiFiManagerParameter("hostname", "Hostname", settings.hostname, 80); wm.addParameter(wmHostname); @@ -94,20 +96,20 @@ protected: wm.setAPClientCheck(true); wm.setConfigPortalBlocking(false); wm.setSaveParamsCallback(saveParamsCallback); - wm.setConfigPortalTimeout(180); - //wm.setDisableConfigPortal(false); + wm.setConfigPortalTimeout(wm.getWiFiIsSaved() ? 180 : 0); + wm.setDisableConfigPortal(false); wm.autoConnect(AP_SSID, AP_PASSWORD); } void loop() { - /*if (WiFi.status() != WL_CONNECTED && !wm.getWebPortalActive() && !wm.getConfigPortalActive()) { - wm.autoConnect(AP_SSID); - }*/ - if (connected && WiFi.status() != WL_CONNECTED) { connected = false; + if (wm.getWebPortalActive()) { + wm.stopWebPortal(); + } + #ifdef USE_TELNET TelnetStream.stop(); #endif @@ -117,10 +119,15 @@ protected: } else if (!connected && WiFi.status() == WL_CONNECTED) { connected = true; + wm.setConfigPortalTimeout(180); if (wm.getConfigPortalActive()) { wm.stopConfigPortal(); } + if (!wm.getWebPortalActive()) { + wm.startWebPortal(); + } + #ifdef USE_TELNET TelnetStream.begin(); #endif @@ -128,10 +135,6 @@ protected: INFO_F("[wifi] Connected. IP address: %s, RSSI: %d\n", WiFi.localIP().toString().c_str(), WiFi.RSSI()); } - if (WiFi.status() == WL_CONNECTED && !wm.getWebPortalActive() && !wm.getConfigPortalActive()) { - wm.startWebPortal(); - } - #if defined(ESP8266) if (connected && millis() - lastArpGratuitous > 60000) { arpGratuitous();