From 893568052a79823bb1de80e8ab2d9bb22072d25a Mon Sep 17 00:00:00 2001 From: Flavio Fernandes Date: Fri, 7 Feb 2020 07:31:52 -0500 Subject: [PATCH 01/24] trivial: WiFiManagerParameter get accessors should work on const instances Enhancement: It should be okay to invoke getID() and getValue() in a const instance of the WiFiManagerParameter class. See: https://github.com/flavio-fernandes/persistWifiSetting/commit/135adb1c7e436db1ed92ccd5eb522b9ae418b216 --- WiFiManager.cpp | 14 +++++++------- WiFiManager.h | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 1ecc949..abda41f 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -88,25 +88,25 @@ void WiFiManagerParameter::setValue(const char *defaultValue, int length) { strncpy(_value, defaultValue, _length); } } -const char* WiFiManagerParameter::getValue() { +const char* WiFiManagerParameter::getValue() const { return _value; } -const char* WiFiManagerParameter::getID() { +const char* WiFiManagerParameter::getID() const { return _id; } -const char* WiFiManagerParameter::getPlaceholder() { +const char* WiFiManagerParameter::getPlaceholder() const { return _label; } -const char* WiFiManagerParameter::getLabel() { +const char* WiFiManagerParameter::getLabel() const { return _label; } -int WiFiManagerParameter::getValueLength() { +int WiFiManagerParameter::getValueLength() const { return _length; } -int WiFiManagerParameter::getLabelPlacement() { +int WiFiManagerParameter::getLabelPlacement() const { return _labelPlacement; } -const char* WiFiManagerParameter::getCustomHTML() { +const char* WiFiManagerParameter::getCustomHTML() const { return _customHTML; } diff --git a/WiFiManager.h b/WiFiManager.h index 97f6784..0c23aa4 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -115,13 +115,13 @@ class WiFiManagerParameter { WiFiManagerParameter(const char *id, const char *label, const char *defaultValue, int length, const char *custom, int labelPlacement); ~WiFiManagerParameter(); - const char *getID(); - const char *getValue(); - const char *getLabel(); - const char *getPlaceholder(); // @deprecated, use getLabel - int getValueLength(); - int getLabelPlacement(); - const char *getCustomHTML(); + const char *getID() const; + const char *getValue() const; + const char *getLabel() const; + const char *getPlaceholder() const; // @deprecated, use getLabel + int getValueLength() const; + int getLabelPlacement() const; + const char *getCustomHTML() const; void setValue(const char *defaultValue, int length); protected: From f16af759d18557ae68cc2f620a77952da8f6b1d8 Mon Sep 17 00:00:00 2001 From: Shawn A <807787+tablatronix@users.noreply.github.com> Date: Wed, 24 Mar 2021 12:57:42 -0500 Subject: [PATCH 02/24] Update ISSUE_TEMPLATE.md --- .github/ISSUE_TEMPLATE.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 2deb942..eb07c02 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -15,7 +15,7 @@ https://github.com/esp8266/Arduino/blob/master/doc/Troubleshooting/debugging.rst ### Basic Infos #### Hardware -WiFimanager Branch/Release: Development +WiFimanager Branch/Release: Master Esp8266/Esp32: @@ -36,7 +36,7 @@ Additional libraries: ### Sketch ```cpp - +#BEGIN #include void setup() { @@ -46,6 +46,7 @@ void setup() { void loop() { } +#END ``` ### Debug Messages From 1e90d22d3bca0e1c89a38fbd7c575843f39ab0a4 Mon Sep 17 00:00:00 2001 From: Shawn A <807787+tablatronix@users.noreply.github.com> Date: Wed, 31 Mar 2021 22:07:51 -0500 Subject: [PATCH 03/24] removed development branch --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7fac8b0..7849ec3 100644 --- a/README.md +++ b/README.md @@ -179,7 +179,7 @@ lib_deps = ``` [env] lib_deps = - https://github.com/tzapu/WiFiManager.git#development + https://github.com/tzapu/WiFiManager.git ``` ## Documentation From d157694b1298a37113bd92b573358404482cb52b Mon Sep 17 00:00:00 2001 From: tablatronix Date: Mon, 5 Apr 2021 10:05:14 -0500 Subject: [PATCH 04/24] minor whitespzce --- WiFiManager.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index d0c278a..9954d91 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -1028,7 +1028,7 @@ bool WiFiManager::setSTAConfig(){ #endif bool ret = true; if (_sta_static_ip) { - #ifdef WM_DEBUG_LEVEL + #ifdef WM_DEBUG_LEVEL DEBUG_WM(DEBUG_VERBOSE,F("Custom static IP/GW/Subnet/DNS")); #endif if(_sta_static_dns) { @@ -1044,12 +1044,13 @@ bool WiFiManager::setSTAConfig(){ ret = WiFi.config(_sta_static_ip, _sta_static_gw, _sta_static_sn); } - #ifdef WM_DEBUG_LEVEL - if(!ret) DEBUG_WM(DEBUG_ERROR,F("[ERROR] wifi config failed")); - else DEBUG_WM(F("STA IP set:"),WiFi.localIP()); - #endif - } else { - #ifdef WM_DEBUG_LEVEL + #ifdef WM_DEBUG_LEVEL + if(!ret) DEBUG_WM(DEBUG_ERROR,F("[ERROR] wifi config failed")); + else DEBUG_WM(F("STA IP set:"),WiFi.localIP()); + #endif + } + else { + #ifdef WM_DEBUG_LEVEL DEBUG_WM(DEBUG_VERBOSE,F("setSTAConfig static ip not set, skipping")); #endif } From f5dd402ba2698be17e27d357b1ead5291c3d0eb1 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 8 Apr 2021 17:01:47 -0500 Subject: [PATCH 05/24] Fix ota title --- WiFiManager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 9954d91..55c1299 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -3596,7 +3596,7 @@ void WiFiManager::handleUpdating(){ else if (upload.status == UPLOAD_FILE_END) { if (Update.end(true)) { // true to set the size to the current progress #ifdef WM_DEBUG_LEVEL - DEBUG_WM(DEBUG_VERBOSE,F("[OTA] OTA FILE END bytes: "), upload.totalSize); + DEBUG_WM(DEBUG_VERBOSE,F("\n\n[OTA] OTA FILE END bytes: "), upload.totalSize); // Serial.printf("Updated: %u bytes\r\nRebooting...\r\n", upload.totalSize); #endif } @@ -3622,6 +3622,7 @@ void WiFiManager::handleUpdateDone() { String page = getHTTPHead(FPSTR(S_options)); // @token options String str = FPSTR(HTTP_ROOT_MAIN); + str.replace(FPSTR(T_t),_title); str.replace(FPSTR(T_v), configPortalActive ? _apName : WiFi.localIP().toString()); // use ip if ap is not active for heading page += str; From 87fcf08ee0d6f654c88616d14d08f89551986fb0 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Tue, 13 Apr 2021 14:35:27 -0500 Subject: [PATCH 06/24] remove content-length heasders #1235 --- WiFiManager.cpp | 29 ++++++++++++++------------- examples/Basic/Basic.ino.cpp | 38 ++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 14 deletions(-) create mode 100644 examples/Basic/Basic.ino.cpp diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 9954d91..29de598 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -1203,7 +1203,8 @@ void WiFiManager::handleRoot() { reportStatus(page); page += FPSTR(HTTP_END); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->setContentLength(page.length()); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); // server->close(); // testing reliability fix for content length mismatches during mutiple flood hits WiFi_scanNetworks(); // preload wifiscan if(_preloadwifiscan) WiFi_scanNetworks(_scancachetime,true); // preload wifiscan throttled, async @@ -1261,7 +1262,7 @@ void WiFiManager::handleWifi(boolean scan) { reportStatus(page); page += FPSTR(HTTP_END); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); // server->close(); // testing reliability fix for content length mismatches during mutiple flood hits @@ -1292,7 +1293,7 @@ void WiFiManager::handleParam(){ reportStatus(page); page += FPSTR(HTTP_END); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); #ifdef WM_DEBUG_LEVEL @@ -1636,7 +1637,7 @@ void WiFiManager::handleWiFiStatus(){ #ifdef WM_JSTEST page = FPSTR(HTTP_JS); #endif - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); } @@ -1703,7 +1704,7 @@ void WiFiManager::handleWifiSave() { } page += FPSTR(HTTP_END); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->sendHeader(FPSTR(HTTP_HEAD_CORS), FPSTR(HTTP_HEAD_CORS_ALLOW_ALL)); server->send(200, FPSTR(HTTP_HEAD_CT), page); @@ -1730,7 +1731,7 @@ void WiFiManager::handleParamSave() { page += FPSTR(HTTP_PARAMSAVED); page += FPSTR(HTTP_END); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); #ifdef WM_DEBUG_LEVEL @@ -1881,7 +1882,7 @@ void WiFiManager::handleInfo() { page += FPSTR(HTTP_HELP); page += FPSTR(HTTP_END); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); #ifdef WM_DEBUG_LEVEL @@ -2103,7 +2104,7 @@ void WiFiManager::handleExit() { page += FPSTR(S_exiting); // @token exiting server->sendHeader(F("Cache-Control"), F("no-cache, no-store, must-revalidate")); // ('Logout', 401, {'WWW-Authenticate': 'Basic realm="Login required"'}) - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); delay(2000); abort = true; @@ -2121,7 +2122,7 @@ void WiFiManager::handleReset() { page += FPSTR(S_resetting); //@token resetting page += FPSTR(HTTP_END); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); #ifdef WM_DEBUG_LEVEL @@ -2156,7 +2157,7 @@ void WiFiManager::handleErase(boolean opt) { } page += FPSTR(HTTP_END); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); if(ret){ @@ -2189,7 +2190,7 @@ void WiFiManager::handleNotFound() { server->sendHeader(F("Cache-Control"), F("no-cache, no-store, must-revalidate")); server->sendHeader(F("Pragma"), F("no-cache")); server->sendHeader(F("Expires"), F("-1")); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(message.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(message.length())); server->send ( 404, FPSTR(HTTP_HEAD_CT2), message ); } @@ -2237,7 +2238,7 @@ void WiFiManager::handleClose(){ handleRequest(); String page = getHTTPHead(FPSTR(S_titleclose)); // @token titleclose page += FPSTR(S_closing); // @token closing - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); } @@ -3528,7 +3529,7 @@ void WiFiManager::handleUpdate() { page += FPSTR(HTTP_UPDATE); page += FPSTR(HTTP_END); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); } @@ -3640,7 +3641,7 @@ void WiFiManager::handleUpdateDone() { } page += FPSTR(HTTP_END); - server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); + // server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length())); server->send(200, FPSTR(HTTP_HEAD_CT), page); delay(1000); // send page diff --git a/examples/Basic/Basic.ino.cpp b/examples/Basic/Basic.ino.cpp new file mode 100644 index 0000000..8e2a4ed --- /dev/null +++ b/examples/Basic/Basic.ino.cpp @@ -0,0 +1,38 @@ +# 1 "/var/folders/6g/ljwft31n7r5g593rqjywgvmh0000gn/T/tmpg1WvI3" +#include +# 1 "/Users/alverson/projects/microcontrollers/dev/libraries/WiFiManager/examples/Basic/Basic.ino" +#include +void setup(); +void loop(); +#line 3 "/Users/alverson/projects/microcontrollers/dev/libraries/WiFiManager/examples/Basic/Basic.ino" +void setup() { + WiFi.mode(WIFI_STA); + + + Serial.begin(115200); + + + + + WiFiManager wm; +# 22 "/Users/alverson/projects/microcontrollers/dev/libraries/WiFiManager/examples/Basic/Basic.ino" + bool res; + + + res = wm.autoConnect("AutoConnectAP","password"); + + if(!res) { + Serial.println("Failed to connect"); + + } + else { + + Serial.println("connected...yeey :)"); + } + +} + +void loop() { + + +} \ No newline at end of file From 4d37843af8293ee5eed866016d9a7d261c909861 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Tue, 13 Apr 2021 14:40:06 -0500 Subject: [PATCH 07/24] fix #1241 maybe --- WiFiManager.cpp | 5 +++++ WiFiManager.h | 2 ++ examples/Basic/Basic.ino.cpp | 38 ------------------------------------ 3 files changed, 7 insertions(+), 38 deletions(-) delete mode 100644 examples/Basic/Basic.ino.cpp diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 29de598..3472a28 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -1173,13 +1173,16 @@ void WiFiManager::handleRequest() { // bool authenticateDigest(const String& username, const String& H1); // void requestAuthentication(HTTPAuthMethod mode = BASIC_AUTH, const char* realm = NULL, const String& authFailMsg = String("") ); + // 2.3 NO AUTH available bool testauth = false; if(!testauth) return; DEBUG_WM(DEBUG_DEV,F("DOING AUTH")); bool res = server->authenticate("admin","12345"); if(!res){ + #ifndef WM_NOAUTH server->requestAuthentication(HTTPAuthMethod::BASIC_AUTH); // DIGEST_AUTH + #endif DEBUG_WM(DEBUG_DEV,F("AUTH FAIL")); } } @@ -2024,11 +2027,13 @@ String WiFiManager::getInfoData(String id){ } #endif #ifdef ESP8266 + #ifndef WM_NOSOFTAPSSID else if(id==F("apssid")){ p = FPSTR(HTTP_INFO_apssid); p.replace(FPSTR(T_1),htmlEntities(WiFi.softAPSSID())); } #endif + #endif else if(id==F("apbssid")){ p = FPSTR(HTTP_INFO_apbssid); p.replace(FPSTR(T_1),(String)WiFi.BSSIDstr()); diff --git a/WiFiManager.h b/WiFiManager.h index 211f284..9b91065 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -34,6 +34,8 @@ #warning "ARDUINO_ESP8266_RELEASE_2_3_0, some WM features disabled" #define WM_NOASYNC // esp8266 no async scan wifi #define WM_NOCOUNTRY // esp8266 no country +#define WM_NOAUTH // no httpauth +#define WM_NOSOFTAPSSID // no softapssid() @todo shim #endif // #include "soc/efuse_reg.h" // include to add efuse chip rev to info, getChipRevision() is almost always the same though, so not sure why it matters. diff --git a/examples/Basic/Basic.ino.cpp b/examples/Basic/Basic.ino.cpp deleted file mode 100644 index 8e2a4ed..0000000 --- a/examples/Basic/Basic.ino.cpp +++ /dev/null @@ -1,38 +0,0 @@ -# 1 "/var/folders/6g/ljwft31n7r5g593rqjywgvmh0000gn/T/tmpg1WvI3" -#include -# 1 "/Users/alverson/projects/microcontrollers/dev/libraries/WiFiManager/examples/Basic/Basic.ino" -#include -void setup(); -void loop(); -#line 3 "/Users/alverson/projects/microcontrollers/dev/libraries/WiFiManager/examples/Basic/Basic.ino" -void setup() { - WiFi.mode(WIFI_STA); - - - Serial.begin(115200); - - - - - WiFiManager wm; -# 22 "/Users/alverson/projects/microcontrollers/dev/libraries/WiFiManager/examples/Basic/Basic.ino" - bool res; - - - res = wm.autoConnect("AutoConnectAP","password"); - - if(!res) { - Serial.println("Failed to connect"); - - } - else { - - Serial.println("connected...yeey :)"); - } - -} - -void loop() { - - -} \ No newline at end of file From 7820fb72e75a7cf550408191a1ac11c3bc905f4e Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 22 Apr 2021 11:06:12 -0500 Subject: [PATCH 08/24] #1243 setSaveConnect() can disable connect when save, does not alter return codes! --- WiFiManager.cpp | 21 ++++++++++++++----- WiFiManager.h | 9 +++++--- .../OnDemandConfigPortal.ino | 3 +++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 89e0651..09055c9 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -782,7 +782,7 @@ uint8_t WiFiManager::processConfigPortal(){ } else{ // attempt sta connection to submitted _ssid, _pass - if (connectWifi(_ssid, _pass) == WL_CONNECTED) { + if (connectWifi(_ssid, _pass, _connectonsave) == WL_CONNECTED) { #ifdef WM_DEBUG_LEVEL DEBUG_WM(F("Connect to new AP [SUCCESS]")); @@ -894,7 +894,7 @@ bool WiFiManager::shutdownConfigPortal(){ // @todo refactor this up into seperate functions // one for connecting to flash , one for new client // clean up, flow is convoluted, and causes bugs -uint8_t WiFiManager::connectWifi(String ssid, String pass) { +uint8_t WiFiManager::connectWifi(String ssid, String pass, bool connect) { #ifdef WM_DEBUG_LEVEL DEBUG_WM(DEBUG_VERBOSE,F("Connecting as wifi client...")); #endif @@ -917,7 +917,7 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass) { } // if ssid argument provided connect to that if (ssid != "") { - wifiConnectNew(ssid,pass); + wifiConnectNew(ssid,pass,connect); if(_saveTimeout > 0){ connRes = waitForConnectResult(_saveTimeout); // use default save timeout for saves to prevent bugs in esp->waitforconnectresult loop } @@ -968,8 +968,9 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass) { * @param String ssid * @param String pass * @return bool success + * @return connect only save if false */ -bool WiFiManager::wifiConnectNew(String ssid, String pass){ +bool WiFiManager::wifiConnectNew(String ssid, String pass,bool connect){ bool ret = false; #ifdef WM_DEBUG_LEVEL DEBUG_WM(F("CONNECTED:"),WiFi.status() == WL_CONNECTED); @@ -978,7 +979,7 @@ bool WiFiManager::wifiConnectNew(String ssid, String pass){ #endif WiFi_enableSTA(true,storeSTAmode); // storeSTAmode will also toggle STA on in default opmode (persistent) if true (default) WiFi.persistent(true); - ret = WiFi.begin(ssid.c_str(), pass.c_str()); + ret = WiFi.begin(ssid.c_str(), pass.c_str(), 0, NULL, connect); WiFi.persistent(false); #ifdef WM_DEBUG_LEVEL if(!ret) DEBUG_WM(DEBUG_ERROR,F("[ERROR] wifi begin failed")); @@ -2477,6 +2478,16 @@ void WiFiManager::setSaveConnectTimeout(unsigned long seconds) { _saveTimeout = seconds * 1000; } +/** + * Set save portal connect on save option, + * if false, will only save credentials not connect + * @access public + * @param {[type]} bool connect [description] + */ +void WiFiManager::setSaveConnect(bool connect) { + _connectonsave = connect; +} + /** * [setDebugOutput description] * @access public diff --git a/WiFiManager.h b/WiFiManager.h index 9b91065..606b8d7 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -236,6 +236,9 @@ class WiFiManager //sets timeout for which to attempt connecting on saves, useful if there are bugs in esp waitforconnectloop void setSaveConnectTimeout(unsigned long seconds); + //sets timeout for which to attempt connecting on saves, useful if there are bugs in esp waitforconnectloop + void setSaveConnect(bool connect = true); + // toggle debug output void setDebugOutput(boolean debug); void setDebugOutput(boolean debug, String prefix); // log line prefix, default "*wm:" @@ -429,7 +432,7 @@ class WiFiManager unsigned long _startscan = 0; // ms for timing wifi scans int _cpclosedelay = 2000; // delay before wifisave, prevents captive portal from closing to fast. bool _cleanConnect = false; // disconnect before connect in connectwifi, increases stability on connects - + bool _connectonsave = true; // connect to wifi when saving creds bool _disableSTA = false; // disable sta when starting ap, always bool _disableSTAConn = true; // disable sta when starting ap, if sta is not connected ( stability ) bool _channelSync = false; // use same wifi sta channel when starting ap @@ -510,10 +513,10 @@ class WiFiManager bool startAP(); void setupDNSD(); - uint8_t connectWifi(String ssid, String pass); + uint8_t connectWifi(String ssid, String pass, bool connect = true); bool setSTAConfig(); bool wifiConnectDefault(); - bool wifiConnectNew(String ssid, String pass); + bool wifiConnectNew(String ssid, String pass,bool connect = true); uint8_t waitForConnectResult(); uint8_t waitForConnectResult(uint32_t timeout); diff --git a/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino b/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino index fcbbec8..f0a6f0c 100644 --- a/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino +++ b/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino @@ -171,6 +171,9 @@ void setup() { // set wifi connect retries // wm.setConnectRetries(2); + // connect after portal save toggle + // setSaveConnect(false); // do not connect, only save + // show static ip fields // wm.setShowStaticFields(true); From bcf1dd69ff8de10efc987edb16f204fb34a251c8 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 22 Apr 2021 11:09:19 -0500 Subject: [PATCH 09/24] oops, fix comemnt --- WiFiManager.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WiFiManager.h b/WiFiManager.h index 606b8d7..a236bde 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -236,7 +236,7 @@ class WiFiManager //sets timeout for which to attempt connecting on saves, useful if there are bugs in esp waitforconnectloop void setSaveConnectTimeout(unsigned long seconds); - //sets timeout for which to attempt connecting on saves, useful if there are bugs in esp waitforconnectloop + // lets you disable automatically connecting after save from webportal void setSaveConnect(bool connect = true); // toggle debug output @@ -432,7 +432,7 @@ class WiFiManager unsigned long _startscan = 0; // ms for timing wifi scans int _cpclosedelay = 2000; // delay before wifisave, prevents captive portal from closing to fast. bool _cleanConnect = false; // disconnect before connect in connectwifi, increases stability on connects - bool _connectonsave = true; // connect to wifi when saving creds + bool _connectOnsave = true; // connect to wifi when saving creds bool _disableSTA = false; // disable sta when starting ap, always bool _disableSTAConn = true; // disable sta when starting ap, if sta is not connected ( stability ) bool _channelSync = false; // use same wifi sta channel when starting ap From 8448d66ea71dd201b7fb62227aa09dfcacdca4ab Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 22 Apr 2021 17:16:34 -0500 Subject: [PATCH 10/24] #1243 clean --- WiFiManager.cpp | 13 +++++++++---- WiFiManager.h | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 09055c9..f9a2646 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -785,15 +785,20 @@ uint8_t WiFiManager::processConfigPortal(){ if (connectWifi(_ssid, _pass, _connectonsave) == WL_CONNECTED) { #ifdef WM_DEBUG_LEVEL - DEBUG_WM(F("Connect to new AP [SUCCESS]")); - DEBUG_WM(F("Got IP Address:")); - DEBUG_WM(WiFi.localIP()); + if(_connectonsave){ + DEBUG_WM(F("SAVED with no connect to new AP")); + } else { + DEBUG_WM(F("Connect to new AP [SUCCESS]")); + DEBUG_WM(F("Got IP Address:")); + DEBUG_WM(WiFi.localIP()); + } #endif if ( _savewificallback != NULL) { _savewificallback(); } shutdownConfigPortal(); + if(_connectonsave) return WL_IDLE_STATUS; return WL_CONNECTED; // CONNECT SUCCESS } #ifdef WM_DEBUG_LEVEL @@ -920,7 +925,7 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass, bool connect) { wifiConnectNew(ssid,pass,connect); if(_saveTimeout > 0){ connRes = waitForConnectResult(_saveTimeout); // use default save timeout for saves to prevent bugs in esp->waitforconnectresult loop - } + } else { connRes = waitForConnectResult(0); } diff --git a/WiFiManager.h b/WiFiManager.h index a236bde..420b533 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -432,7 +432,7 @@ class WiFiManager unsigned long _startscan = 0; // ms for timing wifi scans int _cpclosedelay = 2000; // delay before wifisave, prevents captive portal from closing to fast. bool _cleanConnect = false; // disconnect before connect in connectwifi, increases stability on connects - bool _connectOnsave = true; // connect to wifi when saving creds + bool _connectonsave = true; // connect to wifi when saving creds bool _disableSTA = false; // disable sta when starting ap, always bool _disableSTAConn = true; // disable sta when starting ap, if sta is not connected ( stability ) bool _channelSync = false; // use same wifi sta channel when starting ap From b78efd36df387f800bd94f84373f038b594f69cb Mon Sep 17 00:00:00 2001 From: tablatronix Date: Thu, 22 Apr 2021 17:18:36 -0500 Subject: [PATCH 11/24] oops #1243 --- WiFiManager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index f9a2646..5c11278 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -785,7 +785,7 @@ uint8_t WiFiManager::processConfigPortal(){ if (connectWifi(_ssid, _pass, _connectonsave) == WL_CONNECTED) { #ifdef WM_DEBUG_LEVEL - if(_connectonsave){ + if(!_connectonsave){ DEBUG_WM(F("SAVED with no connect to new AP")); } else { DEBUG_WM(F("Connect to new AP [SUCCESS]")); @@ -798,7 +798,7 @@ uint8_t WiFiManager::processConfigPortal(){ _savewificallback(); } shutdownConfigPortal(); - if(_connectonsave) return WL_IDLE_STATUS; + if(!_connectonsave) return WL_IDLE_STATUS; return WL_CONNECTED; // CONNECT SUCCESS } #ifdef WM_DEBUG_LEVEL From 5fa729170ad3f678d64a8acfa28df6e608762cf1 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Sat, 24 Apr 2021 09:14:00 -0500 Subject: [PATCH 12/24] oops --- examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino b/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino index f0a6f0c..68a4aa8 100644 --- a/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino +++ b/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino @@ -172,7 +172,7 @@ void setup() { // wm.setConnectRetries(2); // connect after portal save toggle - // setSaveConnect(false); // do not connect, only save + wm.setSaveConnect(false); // do not connect, only save // show static ip fields // wm.setShowStaticFields(true); From 14f70dde76e532b15048407cef5472afec9285e1 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Sat, 24 Apr 2021 10:49:19 -0500 Subject: [PATCH 13/24] Switched to abort for #1243 --- WiFiManager.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 5c11278..bef4f62 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -726,6 +726,7 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo // status change, break if(state != WL_IDLE_STATUS){ result = (state == WL_CONNECTED); // true if connected + DEBUG_WM(DEBUG_DEV,F("configportal break"),result); break; } @@ -782,11 +783,12 @@ uint8_t WiFiManager::processConfigPortal(){ } else{ // attempt sta connection to submitted _ssid, _pass - if (connectWifi(_ssid, _pass, _connectonsave) == WL_CONNECTED) { - + uint8_t res = connectWifi(_ssid, _pass, _connectonsave) == WL_CONNECTED; + if (res || (!_connectonsave)) { #ifdef WM_DEBUG_LEVEL if(!_connectonsave){ DEBUG_WM(F("SAVED with no connect to new AP")); + abort=true; } else { DEBUG_WM(F("Connect to new AP [SUCCESS]")); DEBUG_WM(F("Got IP Address:")); @@ -798,7 +800,7 @@ uint8_t WiFiManager::processConfigPortal(){ _savewificallback(); } shutdownConfigPortal(); - if(!_connectonsave) return WL_IDLE_STATUS; + // if(!_connectonsave) return WL_IDLE_STATUS; return WL_CONNECTED; // CONNECT SUCCESS } #ifdef WM_DEBUG_LEVEL @@ -869,7 +871,7 @@ bool WiFiManager::shutdownConfigPortal(){ // [APdisconnect] set_config failed! *WM: disconnect configportal - softAPdisconnect failed // still no way to reproduce reliably #ifdef WM_DEBUG_LEVEL - DEBUG_WM(DEBUG_VERBOSE,F("disconnect configportal")); + DEBUG_WM(DEBUG_VERBOSE,F("shutdownConfigPortal")); #endif bool ret = false; @@ -892,6 +894,7 @@ bool WiFiManager::shutdownConfigPortal(){ DEBUG_WM(DEBUG_VERBOSE,F("wifi mode:"),getModeString(WiFi.getMode())); #endif configPortalActive = false; + DEBUG_WM(DEBUG_VERBOSE,F("configportal closed")); _end(); return ret; } @@ -978,7 +981,7 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass, bool connect) { bool WiFiManager::wifiConnectNew(String ssid, String pass,bool connect){ bool ret = false; #ifdef WM_DEBUG_LEVEL - DEBUG_WM(F("CONNECTED:"),WiFi.status() == WL_CONNECTED); + // DEBUG_WM(DEBUG_DEV,F("CONNECTED: "),WiFi.status() == WL_CONNECTED ? "Y" : "NO"); DEBUG_WM(F("Connecting to NEW AP:"),ssid); DEBUG_WM(DEBUG_DEV,F("Using Password:"),pass); #endif From a83ac6e9269b6a046522cf2d3bd149332c0afa0a Mon Sep 17 00:00:00 2001 From: tablatronix Date: Sat, 24 Apr 2021 12:06:34 -0500 Subject: [PATCH 14/24] debugging, bypass loop if portalstopped I really have to fix this state handling --- WiFiManager.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index bef4f62..9f88296 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -525,6 +525,7 @@ void WiFiManager::stopWebPortal() { } boolean WiFiManager::configPortalHasTimeout(){ + if(!configPortalActive) return false; uint16_t logintvl = 30000; // how often to emit timeing out counter logging // handle timeout portal client check @@ -714,7 +715,7 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo // if timed out or abort, break if(configPortalHasTimeout() || abort){ #ifdef WM_DEBUG_LEVEL - DEBUG_WM(DEBUG_DEV,F("configportal abort")); + DEBUG_WM(DEBUG_DEV,F("configportal loop abort")); #endif shutdownConfigPortal(); result = abort ? portalAbortResult : portalTimeoutResult; // false, false @@ -722,14 +723,16 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo } state = processConfigPortal(); - + // status change, break if(state != WL_IDLE_STATUS){ result = (state == WL_CONNECTED); // true if connected - DEBUG_WM(DEBUG_DEV,F("configportal break"),result); + DEBUG_WM(DEBUG_DEV,F("configportal loop break")); break; } + if(!configPortalActive) break; + yield(); // watchdog } @@ -788,7 +791,6 @@ uint8_t WiFiManager::processConfigPortal(){ #ifdef WM_DEBUG_LEVEL if(!_connectonsave){ DEBUG_WM(F("SAVED with no connect to new AP")); - abort=true; } else { DEBUG_WM(F("Connect to new AP [SUCCESS]")); DEBUG_WM(F("Got IP Address:")); @@ -800,7 +802,7 @@ uint8_t WiFiManager::processConfigPortal(){ _savewificallback(); } shutdownConfigPortal(); - // if(!_connectonsave) return WL_IDLE_STATUS; + if(!_connectonsave) return WL_IDLE_STATUS; return WL_CONNECTED; // CONNECT SUCCESS } #ifdef WM_DEBUG_LEVEL @@ -844,6 +846,10 @@ uint8_t WiFiManager::processConfigPortal(){ * @return bool success (softapdisconnect) */ bool WiFiManager::shutdownConfigPortal(){ + #ifdef WM_DEBUG_LEVEL + DEBUG_WM(DEBUG_VERBOSE,F("shutdownConfigPortal")); + #endif + if(webPortalActive) return false; if(configPortalActive){ @@ -870,9 +876,6 @@ bool WiFiManager::shutdownConfigPortal(){ // https://github.com/esp8266/Arduino/issues/3793 // [APdisconnect] set_config failed! *WM: disconnect configportal - softAPdisconnect failed // still no way to reproduce reliably - #ifdef WM_DEBUG_LEVEL - DEBUG_WM(DEBUG_VERBOSE,F("shutdownConfigPortal")); - #endif bool ret = false; ret = WiFi.softAPdisconnect(false); From 69c60e8e4ea8d92aac5a1868e2718130934fadc6 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Sat, 12 Jun 2021 10:21:46 -0500 Subject: [PATCH 15/24] drop debug back to verbose --- WiFiManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WiFiManager.h b/WiFiManager.h index 420b533..a4f56d9 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -633,7 +633,7 @@ class WiFiManager #ifdef WM_DEBUG_LEVEL uint8_t _debugLevel = (uint8_t)WM_DEBUG_LEVEL; #else - uint8_t _debugLevel = DEBUG_DEV; // default debug level + uint8_t _debugLevel = DEBUG_VERBOSE; // default debug level #endif // @todo use DEBUG_ESP_PORT ? From 3bf0d4bed3f398d5896346c88621a88eeca553a7 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Mon, 21 Jun 2021 09:49:39 -0500 Subject: [PATCH 16/24] fix presavecallback called twice if params in wifi --- WiFiManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 9f88296..324b9f2 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -1667,7 +1667,7 @@ void WiFiManager::handleWifiSave() { handleRequest(); // @todo use new callback for before paramsaves - if ( _presavecallback != NULL) { + if (!_paramsInWifi && _presavecallback != NULL) { _presavecallback(); } From 2ce0850d80d6c51f36dbbece777bd8a9f41d0927 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Mon, 21 Jun 2021 10:06:46 -0500 Subject: [PATCH 17/24] Renamed example folders --- .../NonBlocking/OnDemandNonBlocking/onDemandNonBlocking.ino | 2 +- .../OnDemandConfigPortal/OnDemandConfigPortal.ino | 0 examples/{Tests => Unique/cb}/AnonymousCB.ino | 0 examples/{Tests => Unique}/wificountry/wificountry.ino | 0 4 files changed, 1 insertion(+), 1 deletion(-) rename examples/{DEV => Super}/OnDemandConfigPortal/OnDemandConfigPortal.ino (100%) rename examples/{Tests => Unique/cb}/AnonymousCB.ino (100%) rename examples/{Tests => Unique}/wificountry/wificountry.ino (100%) diff --git a/examples/NonBlocking/OnDemandNonBlocking/onDemandNonBlocking.ino b/examples/NonBlocking/OnDemandNonBlocking/onDemandNonBlocking.ino index 649b120..0bc3992 100644 --- a/examples/NonBlocking/OnDemandNonBlocking/onDemandNonBlocking.ino +++ b/examples/NonBlocking/OnDemandNonBlocking/onDemandNonBlocking.ino @@ -2,7 +2,7 @@ * OnDemandNonBlocking.ino * example of running the webportal or configportal manually and non blocking * trigger pin will start a webportal for 120 seconds then turn it off. - * startCP = true will start both the configportal AP and webportal + * startAP = true will start both the configportal AP and webportal */ #include // https://github.com/tzapu/WiFiManager diff --git a/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino b/examples/Super/OnDemandConfigPortal/OnDemandConfigPortal.ino similarity index 100% rename from examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino rename to examples/Super/OnDemandConfigPortal/OnDemandConfigPortal.ino diff --git a/examples/Tests/AnonymousCB.ino b/examples/Unique/cb/AnonymousCB.ino similarity index 100% rename from examples/Tests/AnonymousCB.ino rename to examples/Unique/cb/AnonymousCB.ino diff --git a/examples/Tests/wificountry/wificountry.ino b/examples/Unique/wificountry/wificountry.ino similarity index 100% rename from examples/Tests/wificountry/wificountry.ino rename to examples/Unique/wificountry/wificountry.ino From ce37e5c8ff16b270f64136a815a60c48cca0f065 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Mon, 21 Jun 2021 10:42:34 -0500 Subject: [PATCH 18/24] file was named wrong --- examples/Unique/pubsubclient/pubsubclient.ino | 48 +++++++++++++++++++ examples/Unique/wificountry/wificountry.ino | 45 ----------------- 2 files changed, 48 insertions(+), 45 deletions(-) create mode 100644 examples/Unique/pubsubclient/pubsubclient.ino delete mode 100644 examples/Unique/wificountry/wificountry.ino diff --git a/examples/Unique/pubsubclient/pubsubclient.ino b/examples/Unique/pubsubclient/pubsubclient.ino new file mode 100644 index 0000000..3033e14 --- /dev/null +++ b/examples/Unique/pubsubclient/pubsubclient.ino @@ -0,0 +1,48 @@ +#include +#include +#include + +WiFiClient espClient; +PubSubClient client(espClient); + +char mqtt_server[40]; + +void mqttCallback(char* topic, byte* payload, unsigned int length) { + // message received +} + +void mqttReconnect() { + // reconnect code from PubSubClient example +} + +void setup() { + Serial.begin(115200); + WiFiManager wifiManager; + wifiManager.setTimeout(180); + + if(!wifiManager.autoConnect("AutoConnectAP")) { + Serial.println("failed to connect and hit timeout"); + delay(3000); + ESP.restart(); + delay(5000); + } + + // id/name, placeholder/prompt, default, length + WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40); + wifiManager.addParameter(&custom_mqtt_server); + + const char* mqtt_server = custom_mqtt_server.getValue(); + + Serial.println("connected...yeey :)"); + + client.setServer(mqtt_server, 1883); + client.setCallback(mqttCallback); +} + +void loop() { + if(!client.connected()) { + mqttReconnect(); + } + client.loop(); + yield(); +} \ No newline at end of file diff --git a/examples/Unique/wificountry/wificountry.ino b/examples/Unique/wificountry/wificountry.ino deleted file mode 100644 index da9d2c9..0000000 --- a/examples/Unique/wificountry/wificountry.ino +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include -#include - -WiFiClient espClient; -PubSubClient client(espClient); -char mqtt_server[40]; -void mqttCallback(char* topic, byte* payload, unsigned int length) { - // message received -} - -void mqttReconnect() { - // reconnect code from PubSubClient example -} - -void setup() { - Serial.begin(9600); - WiFiManager wifiManager; - wifiManager.setTimeout(180); - - if(!wifiManager.autoConnect("AutoConnectAP")) { - Serial.println("failed to connect and hit timeout"); - delay(3000); - ESP.restart(); - delay(5000); - } - // id/name, placeholder/prompt, default, length -WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40); -wifiManager.addParameter(&custom_mqtt_server); - -const char* mqtt_server = custom_mqtt_server.getValue(); - - Serial.println("connected...yeey :)"); - - client.setServer(mqtt_server, 1883); - client.setCallback(mqttCallback); -} - -void loop() { - if (!client.connected()) { - mqttReconnect(); - } - client.loop(); - yield(); -} \ No newline at end of file From 8c1e890c36ce312fa32682f8a1b7ec87eed84efa Mon Sep 17 00:00:00 2001 From: tablatronix Date: Mon, 21 Jun 2021 10:54:49 -0500 Subject: [PATCH 19/24] remove uneeded test --- examples/Unique/pubsubclient/pubsubclient.ino | 48 ------------------- 1 file changed, 48 deletions(-) delete mode 100644 examples/Unique/pubsubclient/pubsubclient.ino diff --git a/examples/Unique/pubsubclient/pubsubclient.ino b/examples/Unique/pubsubclient/pubsubclient.ino deleted file mode 100644 index 3033e14..0000000 --- a/examples/Unique/pubsubclient/pubsubclient.ino +++ /dev/null @@ -1,48 +0,0 @@ -#include -#include -#include - -WiFiClient espClient; -PubSubClient client(espClient); - -char mqtt_server[40]; - -void mqttCallback(char* topic, byte* payload, unsigned int length) { - // message received -} - -void mqttReconnect() { - // reconnect code from PubSubClient example -} - -void setup() { - Serial.begin(115200); - WiFiManager wifiManager; - wifiManager.setTimeout(180); - - if(!wifiManager.autoConnect("AutoConnectAP")) { - Serial.println("failed to connect and hit timeout"); - delay(3000); - ESP.restart(); - delay(5000); - } - - // id/name, placeholder/prompt, default, length - WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40); - wifiManager.addParameter(&custom_mqtt_server); - - const char* mqtt_server = custom_mqtt_server.getValue(); - - Serial.println("connected...yeey :)"); - - client.setServer(mqtt_server, 1883); - client.setCallback(mqttCallback); -} - -void loop() { - if(!client.connected()) { - mqttReconnect(); - } - client.loop(); - yield(); -} \ No newline at end of file From e87141eb040da7a8c71013883e69f2b7664ca1e7 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Mon, 21 Jun 2021 10:57:47 -0500 Subject: [PATCH 20/24] bump arduinojson CI --- .travis.yml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index cc63c55..17dd5e3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,22 +13,11 @@ before_install: install: - ln -s $PWD /usr/local/share/arduino/libraries/WiFiManager - arduino --pref "boardsmanager.additional.urls=http://arduino.esp8266.com/stable/package_esp8266com_index.json,http://dl.espressif.com/dl/package_esp32_index.json" --save-prefs - - arduino --install-library "ArduinoJson:5.13.2" + - arduino --install-library "ArduinoJson:6.18.0" - arduino --install-boards esp8266:esp8266 - arduino --pref "compiler.warning_level=all" --save-prefs # install esp32 - arduino --install-boards esp32:esp32 - # - pushd . - # - mkdir -p ~/Arduino/hardware/espressif - # - cd ~/Arduino/hardware/espressif - # - git clone https://github.com/espressif/arduino-esp32.git esp32 - # - cd esp32 - # - git submodule update --init --recursive - # - cd tools - # - python2 get.py - # - popd -# esp32 needs WebServer_tng for now - # - git clone https://github.com/bbx10/WebServer_tng.git /usr/local/share/arduino/libraries/WebServer_tng script: - "echo $PWD" From d395e496a1c82a0c29450652d12dd6fd84a60ed1 Mon Sep 17 00:00:00 2001 From: Shawn A <807787+tablatronix@users.noreply.github.com> Date: Mon, 21 Jun 2021 11:04:20 -0500 Subject: [PATCH 21/24] update travis url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7849ec3..53c45f5 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ESP8266 WiFi Connection manager with fallback web configuration portal :warning: This Documentation is out of date, see notes below -[![Build Status](https://travis-ci.org/tzapu/WiFiManager.svg?branch=master)](https://travis-ci.org/tzapu/WiFiManager) +[![Build Status](https://travis-ci.com/tzapu/WiFiManager.svg?branch=master)](https://travis-ci.com/tzapu/WiFiManager) [![arduino-library-badge](https://www.ardu-badge.com/badge/WiFiManager.svg?)](https://www.ardu-badge.com/WiFiManager) From cdd8a406a85edf28cdc915277b172336447dd90d Mon Sep 17 00:00:00 2001 From: Dmitriy Shafranskiy Date: Mon, 21 Jun 2021 18:11:39 +0200 Subject: [PATCH 22/24] Added Github Action to Compile Examples on ESP8266 (#1258) * Create examples_esp8266.yml Init add of examples compilation * Update examples_esp8266.yml * Update examples_esp8266.yml * Update examples_esp8266.yml * Update examples_esp8266.yml * Update examples_esp8266.yml * Update examples_esp8266.yml --- .github/workflows/examples_esp8266.yml | 61 ++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/examples_esp8266.yml diff --git a/.github/workflows/examples_esp8266.yml b/.github/workflows/examples_esp8266.yml new file mode 100644 index 0000000..aac8c9c --- /dev/null +++ b/.github/workflows/examples_esp8266.yml @@ -0,0 +1,61 @@ +name: Compile examples for ESP8266 + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - "examples/Tests/AnonymousCB.ino" + - "examples/Tests/wificountry/wificountry.ino" + - "examples/AutoConnect/AutoConnectWithFSParametersAndCustomIP/AutoConnectWithFSParametersAndCustomIP.ino" + - "examples/AutoConnect/AutoConnect.ino" + - "examples/AutoConnect/AutoConnectWithFSParameters/AutoConnectWithFSParameters.ino" + - "examples/AutoConnect/AutoConnectWithFeedbackLED/AutoConnectWithFeedbackLED.ino" + - "examples/NonBlocking/OnDemandNonBlocking/onDemandNonBlocking.ino" + - "examples/NonBlocking/AutoConnectNonBlockingwParams/AutoConnectNonBlockingwParams.ino" + - "examples/NonBlocking/AutoConnectNonBlocking/AutoConnectNonBlocking.ino" + - "examples/Basic/Basic.ino" + - "examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino" + - "examples/Advanced/Advanced.ino" + - "examples/Old_examples/AutoConnectWithStaticIP/AutoConnectWithStaticIP.ino" + - "examples/Old_examples/AutoConnectWithFeedback/AutoConnectWithFeedback.ino" + - "examples/Old_examples/AutoConnectWithReset/AutoConnectWithReset.ino" + - "examples/Old_examples/AutoConnectWithTimeout/AutoConnectWithTimeout.ino" + - "examples/ParamsChildClass/ParamsChildClass.ino" + - "examples/OnDemand/OnDemandConfigPortal/OnDemandConfigPortal.ino" + - "examples/OnDemand/OnDemandWebPortal/onDemandWebPortal.ino" + + steps: + - uses: actions/checkout@v2 + - name: Cache pip + uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: ${{ runner.os }}-pip- + - name: Cache PlatformIO + uses: actions/cache@v2 + with: + path: ~/.platformio + key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} + - name: Set up Python + uses: actions/setup-python@v2 + - name: Install PlatformIO + run: | + python -m pip install --upgrade pip + pip install --upgrade platformio + - name: Install 3rd party dependecies + run: | + pio lib -g install \ + https://github.com/tzapu/WiFiManager \ + https://github.com/bblanchon/ArduinoJson \ + https://github.com/knolleary/pubsubclient + + - name: Run PlatformIO Examples + run: pio ci --board=nodemcuv2 + env: + PLATFORMIO_CI_SRC: ${{ matrix.example }} From 8984863fe6a8106bf0ead7e6ac013c745a4d1f93 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Mon, 21 Jun 2021 11:15:56 -0500 Subject: [PATCH 23/24] update example action --- .github/workflows/examples_esp8266.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/examples_esp8266.yml b/.github/workflows/examples_esp8266.yml index aac8c9c..6234cc6 100644 --- a/.github/workflows/examples_esp8266.yml +++ b/.github/workflows/examples_esp8266.yml @@ -9,8 +9,6 @@ jobs: fail-fast: false matrix: example: - - "examples/Tests/AnonymousCB.ino" - - "examples/Tests/wificountry/wificountry.ino" - "examples/AutoConnect/AutoConnectWithFSParametersAndCustomIP/AutoConnectWithFSParametersAndCustomIP.ino" - "examples/AutoConnect/AutoConnect.ino" - "examples/AutoConnect/AutoConnectWithFSParameters/AutoConnectWithFSParameters.ino" @@ -19,7 +17,7 @@ jobs: - "examples/NonBlocking/AutoConnectNonBlockingwParams/AutoConnectNonBlockingwParams.ino" - "examples/NonBlocking/AutoConnectNonBlocking/AutoConnectNonBlocking.ino" - "examples/Basic/Basic.ino" - - "examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino" + - "examples/Super/OnDemandConfigPortal/OnDemandConfigPortal.ino" - "examples/Advanced/Advanced.ino" - "examples/Old_examples/AutoConnectWithStaticIP/AutoConnectWithStaticIP.ino" - "examples/Old_examples/AutoConnectWithFeedback/AutoConnectWithFeedback.ino" From 8ce698427d2d97707b41dd81b914c327bdf3daed Mon Sep 17 00:00:00 2001 From: Mollayo <52084227+Mollayo@users.noreply.github.com> Date: Sat, 4 Sep 2021 04:23:37 +0200 Subject: [PATCH 24/24] Add callback for OTA update (#1286) --- WiFiManager.cpp | 13 +++++++++++++ WiFiManager.h | 3 +++ 2 files changed, 16 insertions(+) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 5fa7023..1e945d8 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -2629,6 +2629,15 @@ void WiFiManager::setPreSaveConfigCallback( std::function func ) { _presavecallback = func; } +/** + * setPreOtaUpdateCallback, set a callback to fire before OTA update + * @access public + * @param {[type]} void (*func)(void) + */ +void WiFiManager::setPreOtaUpdateCallback( std::function func ) { + _preotaupdatecallback = func; +} + /** * set custom head html * custom element will be added to head, eg. new style tag etc. @@ -3587,6 +3596,10 @@ void WiFiManager::handleUpdating(){ if(_debug) Serial.setDebugOutput(true); uint32_t maxSketchSpace; + // Use new callback for before OTA update + if (_preotaupdatecallback != NULL) { + _preotaupdatecallback(); + } #ifdef ESP8266 WiFiUDP::stopAll(); maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000; diff --git a/WiFiManager.h b/WiFiManager.h index d26d378..de79dc1 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -220,6 +220,8 @@ class WiFiManager //called when saving params-in-wifi or params before anything else happens (eg wifi) void setPreSaveConfigCallback( std::function func ); + //called just before doing OTA update + void setPreOtaUpdateCallback( std::function func ); //sets timeout before AP,webserver loop ends and exits even if there has been no setup. //useful for devices that failed to connect at some point and got stuck in a webserver loop @@ -661,6 +663,7 @@ class WiFiManager std::function _presavecallback; std::function _saveparamscallback; std::function _resetcallback; + std::function _preotaupdatecallback; template auto optionalIPFromString(T *obj, const char *s) -> decltype( obj->fromString(s) ) {