From 6d4c971b493c2de0ce57e1b9139670294c82e1c9 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 23 Aug 2018 11:55:31 -0500 Subject: [PATCH 1/7] test for #702 --- WiFiManager.cpp | 3 +++ platformio.ini | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 platformio.ini diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 2e7884d..dedda84 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -287,6 +287,9 @@ int WiFiManager::connectWifi(String ssid, String pass) { DEBUG_WM(F("Already connected. Bailing out.")); return WL_CONNECTED; } + + WiFi_Disconnect(); // disconnect before begin, in case anything is hung, this causes a 2 seconds delay for connect + //check if we have ssid and pass and force those, if not, try with last saved values if (ssid != "") { WiFi.begin(ssid.c_str(), pass.c_str()); diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..e81a1a7 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,20 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; http://docs.platformio.org/page/projectconf.html + +[env:nodemcuv2] +platform = espressif8266 +board = nodemcuv2 +framework = arduino +lib_extra_dirs = C:\Users\alverson\Documents\projects\arduino\sketches\libraries +upload_speed = 921600 +build_flags = -DDEBUG_ESP_PORT=Serial -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -Wall -Wextra + +[platformio] +src_dir = /Users/alverson/projects/microcontrollers/dev/libraries/WiFiManager From 3579733f5cf5bd0780d7c05adc1b45152284a431 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 23 Aug 2018 12:09:46 -0500 Subject: [PATCH 2/7] refix #702 --- WiFiManager.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index dedda84..f3c8b80 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -287,11 +287,13 @@ int WiFiManager::connectWifi(String ssid, String pass) { DEBUG_WM(F("Already connected. Bailing out.")); return WL_CONNECTED; } - - WiFi_Disconnect(); // disconnect before begin, in case anything is hung, this causes a 2 seconds delay for connect //check if we have ssid and pass and force those, if not, try with last saved values if (ssid != "") { + //trying to fix connection in progress hanging + ETS_UART_INTR_DISABLE(); + wifi_station_disconnect(); + ETS_UART_INTR_ENABLE(); WiFi.begin(ssid.c_str(), pass.c_str()); } else { if (WiFi.SSID()) { From 593eda9b873bf7cd48aae870d04b4658067db150 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 23 Aug 2018 12:16:01 -0500 Subject: [PATCH 3/7] oops again --- platformio.ini | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 platformio.ini diff --git a/platformio.ini b/platformio.ini deleted file mode 100644 index e81a1a7..0000000 --- a/platformio.ini +++ /dev/null @@ -1,20 +0,0 @@ -; PlatformIO Project Configuration File -; -; Build options: build flags, source filter -; Upload options: custom upload port, speed and extra flags -; Library options: dependencies, extra library storages -; Advanced options: extra scripting -; -; Please visit documentation for the other options and examples -; http://docs.platformio.org/page/projectconf.html - -[env:nodemcuv2] -platform = espressif8266 -board = nodemcuv2 -framework = arduino -lib_extra_dirs = C:\Users\alverson\Documents\projects\arduino\sketches\libraries -upload_speed = 921600 -build_flags = -DDEBUG_ESP_PORT=Serial -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -Wall -Wextra - -[platformio] -src_dir = /Users/alverson/projects/microcontrollers/dev/libraries/WiFiManager From 2911bb33eef3b4ffab0cfce22fb978be0f789560 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 23 Aug 2018 13:04:18 -0500 Subject: [PATCH 4/7] status debug --- WiFiManager.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index f3c8b80..e702476 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -288,6 +288,9 @@ int WiFiManager::connectWifi(String ssid, String pass) { return WL_CONNECTED; } + DEBUG_WM(F("Status:")); + DEBUG_WM(WiFi.status()); + //check if we have ssid and pass and force those, if not, try with last saved values if (ssid != "") { //trying to fix connection in progress hanging From d6e091f587cd56ecddc7c7de74a5d4d372c653bd Mon Sep 17 00:00:00 2001 From: Shawn A Date: Wed, 29 Aug 2018 12:06:55 -0500 Subject: [PATCH 5/7] test fix #702 --- WiFiManager.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index e702476..73eec07 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -291,13 +291,18 @@ int WiFiManager::connectWifi(String ssid, String pass) { DEBUG_WM(F("Status:")); DEBUG_WM(WiFi.status()); + wl_status_t res; //check if we have ssid and pass and force those, if not, try with last saved values if (ssid != "") { //trying to fix connection in progress hanging ETS_UART_INTR_DISABLE(); wifi_station_disconnect(); - ETS_UART_INTR_ENABLE(); - WiFi.begin(ssid.c_str(), pass.c_str()); + ETS_UART_INTR_ENABLE(); + res = WiFi.begin(ssid.c_str(), pass.c_str(),0,NULL,true); + if(res != WL_CONNECTED){ + DEBUG_WM(F("[ERROR] WiFi.begin res:")); + DEBUG_WM(res); + } } else { if (WiFi.SSID()) { DEBUG_WM(F("Using last saved values, should be faster")); @@ -305,8 +310,7 @@ int WiFiManager::connectWifi(String ssid, String pass) { ETS_UART_INTR_DISABLE(); wifi_station_disconnect(); ETS_UART_INTR_ENABLE(); - - WiFi.begin(); + res = WiFi.begin(); } else { DEBUG_WM(F("No saved credentials")); } From 9a4c0f15801df5320438e40dcb3b0a1988fed43e Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 8 Nov 2018 12:20:01 -0600 Subject: [PATCH 6/7] hotfix #576 --- WiFiManager.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 73eec07..1b69dd5 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -143,18 +143,17 @@ void WiFiManager::setupConfigPortal() { dnsServer->start(DNS_PORT, "*", WiFi.softAPIP()); /* Setup web pages: root, wifi config pages, SO captive portal detectors and not found. */ - server->on(String(F("/")), std::bind(&WiFiManager::handleRoot, this)); - server->on(String(F("/wifi")), std::bind(&WiFiManager::handleWifi, this, true)); - server->on(String(F("/0wifi")), std::bind(&WiFiManager::handleWifi, this, false)); - server->on(String(F("/wifisave")), std::bind(&WiFiManager::handleWifiSave, this)); - server->on(String(F("/i")), std::bind(&WiFiManager::handleInfo, this)); - server->on(String(F("/r")), std::bind(&WiFiManager::handleReset, this)); + server->on(String(F("/")).c_str(), std::bind(&WiFiManager::handleRoot, this)); + server->on(String(F("/wifi")).c_str(), std::bind(&WiFiManager::handleWifi, this, true)); + server->on(String(F("/0wifi")).c_str(), std::bind(&WiFiManager::handleWifi, this, false)); + server->on(String(F("/wifisave")).c_str(), std::bind(&WiFiManager::handleWifiSave, this)); + server->on(String(F("/i")).c_str(), std::bind(&WiFiManager::handleInfo, this)); + server->on(String(F("/r")).c_str(), std::bind(&WiFiManager::handleReset, this)); //server->on("/generate_204", std::bind(&WiFiManager::handle204, this)); //Android/Chrome OS captive portal check. - server->on(String(F("/fwlink")), std::bind(&WiFiManager::handleRoot, this)); //Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. + server->on(String(F("/fwlink")).c_str(), std::bind(&WiFiManager::handleRoot, this)); //Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. server->onNotFound (std::bind(&WiFiManager::handleNotFound, this)); server->begin(); // Web server start DEBUG_WM(F("HTTP server started")); - } boolean WiFiManager::autoConnect() { From 0865a36a5e356057fe3dbe2ca0554c5565231a3d Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 31 Jan 2019 16:49:13 -0600 Subject: [PATCH 7/7] fix for #782 --- WiFiManager.cpp | 51 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 1b69dd5..0082190 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -203,7 +203,7 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo WiFi.disconnect(); // this alone is not enough to stop the autoconnecter WiFi.mode(WIFI_AP); WiFi.persistent(true); - } + } else { //setup AP WiFi.mode(WIFI_AP_STA); @@ -232,26 +232,33 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo //HTTP server->handleClient(); - if (connect) { + delay(1000); connect = false; - delay(2000); - DEBUG_WM(F("Connecting to new AP")); - // using user-provided _ssid, _pass in place of system-stored ssid and pass - if (connectWifi(_ssid, _pass) != WL_CONNECTED) { - DEBUG_WM(F("Failed to connect.")); - } else { - //connected - WiFi.mode(WIFI_STA); - //notify that configuration has changed and any optional parameters should be saved - if ( _savecallback != NULL) { - //todo: check if any custom parameters actually exist, and check if they really changed maybe - _savecallback(); + // if saving with no ssid filled in, reconnect to ssid + // will not exit cp + if(_ssid == ""){ + DEBUG_WM(F("No ssid, skipping wifi")); + } + else{ + DEBUG_WM(F("Connecting to new AP")); + if (connectWifi(_ssid, _pass) != WL_CONNECTED) { + delay(2000); + // using user-provided _ssid, _pass in place of system-stored ssid and pass + DEBUG_WM(F("Failed to connect.")); } - break; + else { + //connected + WiFi.mode(WIFI_STA); + //notify that configuration has changed and any optional parameters should be saved + if ( _savecallback != NULL) { + //todo: check if any custom parameters actually exist, and check if they really changed maybe + _savecallback(); + } + break; + } } - if (_shouldBreakAfterConfig) { //flag set to exit after config after trying to connect //notify that configuration has changed and any optional parameters should be saved @@ -259,6 +266,18 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo //todo: check if any custom parameters actually exist, and check if they really changed maybe _savecallback(); } + WiFi.mode(WIFI_STA); // turn off ap + // reconnect to ssid + // int res = WiFi.begin(); + // attempt connect for 10 seconds + DEBUG_WM(F("Waiting for sta (10 secs) .......")); + for(size_t i = 0 ; i<100;i++){ + if(WiFi.status() == WL_CONNECTED) break; + DEBUG_WM("."); + // Serial.println(WiFi.status()); + delay(100); + } + delay(1000); break; } }