From 7f0bd1e41f7478bfb8830551a22f3ac2690925e7 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Wed, 31 Oct 2018 13:47:05 -0500 Subject: [PATCH 1/5] changed placeholder to label deprecated getPlaceholder with getLabel --- WiFiManager.cpp | 27 +++++++++++++++------------ WiFiManager.h | 17 +++++++++-------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index caa430e..ae8829d 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -24,32 +24,32 @@ uint8_t WiFiManager::_lastconxresulttmp = WL_IDLE_STATUS; WiFiManagerParameter::WiFiManagerParameter(const char *custom) { _id = NULL; - _placeholder = NULL; + _label = NULL; _length = 1; _value = NULL; _labelPlacement = WFM_LABEL_BEFORE; _customHTML = custom; } -WiFiManagerParameter::WiFiManagerParameter(const char *id, const char *placeholder) { - init(id, placeholder, "", 0, "", WFM_LABEL_BEFORE); +WiFiManagerParameter::WiFiManagerParameter(const char *id, const char *label) { + init(id, label, "", 0, "", WFM_LABEL_BEFORE); } -WiFiManagerParameter::WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length) { - init(id, placeholder, defaultValue, length, "", WFM_LABEL_BEFORE); +WiFiManagerParameter::WiFiManagerParameter(const char *id, const char *label, const char *defaultValue, int length) { + init(id, label, defaultValue, length, "", WFM_LABEL_BEFORE); } -WiFiManagerParameter::WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom) { - init(id, placeholder, defaultValue, length, custom, WFM_LABEL_BEFORE); +WiFiManagerParameter::WiFiManagerParameter(const char *id, const char *label, const char *defaultValue, int length, const char *custom) { + init(id, label, defaultValue, length, custom, WFM_LABEL_BEFORE); } -WiFiManagerParameter::WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom, int labelPlacement) { - init(id, placeholder, defaultValue, length, custom, labelPlacement); +WiFiManagerParameter::WiFiManagerParameter(const char *id, const char *label, const char *defaultValue, int length, const char *custom, int labelPlacement) { + init(id, label, defaultValue, length, custom, labelPlacement); } -void WiFiManagerParameter::init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom, int labelPlacement) { +void WiFiManagerParameter::init(const char *id, const char *label, const char *defaultValue, int length, const char *custom, int labelPlacement) { _id = id; - _placeholder = placeholder; + _label = label; _labelPlacement = labelPlacement; _customHTML = custom; setValue(defaultValue,length); @@ -89,7 +89,10 @@ const char* WiFiManagerParameter::getID() { return _id; } const char* WiFiManagerParameter::getPlaceholder() { - return _placeholder; + return _label; +} +const char* WiFiManagerParameter::getLabel() { + return _label; } int WiFiManagerParameter::getValueLength() { return _length; diff --git a/WiFiManager.h b/WiFiManager.h index 7f77483..44ad3bb 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -105,27 +105,28 @@ class WiFiManagerParameter { @id is used for HTTP queries and must not contain spaces nor other special characters */ WiFiManagerParameter(const char *custom); - WiFiManagerParameter(const char *id, const char *placeholder); - WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length); - WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom); - WiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom, int labelPlacement); + WiFiManagerParameter(const char *id, const char *label); + WiFiManagerParameter(const char *id, const char *label, const char *defaultValue, int length); + WiFiManagerParameter(const char *id, const char *label, const char *defaultValue, int length, const char *custom); + 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 *getPlaceholder(); + const char *getLabel(); + const char *getPlaceholder(); // @deprecated, use getLabel int getValueLength(); int getLabelPlacement(); const char *getCustomHTML(); void setValue(const char *defaultValue, int length); protected: - void init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom); - void init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom, int labelPlacement); + void init(const char *id, const char *label, const char *defaultValue, int length, const char *custom); + void init(const char *id, const char *label, const char *defaultValue, int length, const char *custom, int labelPlacement); private: const char *_id; - const char *_placeholder; + const char *_label; char *_value; int _length; int _labelPlacement; From 2209f987b7429b58e32bd8717b94c5d44ebc7bfb Mon Sep 17 00:00:00 2001 From: tablatronix Date: Wed, 31 Oct 2018 14:02:16 -0500 Subject: [PATCH 2/5] removed placeholder and added temlplace comments --- WiFiManager.cpp | 24 +++++++++++++----------- strings_en.h | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index ae8829d..2505edd 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -1221,7 +1221,7 @@ String WiFiManager::getParamOut(){ bool tok_v = HTTP_PARAM_temp.indexOf(FPSTR(T_v)) > 0; bool tok_c = HTTP_PARAM_temp.indexOf(FPSTR(T_c)) > 0; - char parLength[5]; + char valLength[5]; // add the extra parameters to the form for (int i = 0; i < _paramsCount; i++) { if (_params[i] == NULL || _params[i]->_length == 0) { @@ -1229,7 +1229,7 @@ String WiFiManager::getParamOut(){ break; } - // label before or after, this could probably be done via floats however + // label before or after, @todo this could be done via floats or CSS and eliminated String pitem; switch (_params[i]->getLabelPlacement()) { case WFM_LABEL_BEFORE: @@ -1246,17 +1246,19 @@ String WiFiManager::getParamOut(){ break; } + // Input templating + // "
"; // if no ID use customhtml for item, else generate from param string if (_params[i]->getID() != NULL) { - if(tok_I)pitem.replace(FPSTR(T_I), (String)FPSTR(S_parampre)+(String)i); - if(tok_i)pitem.replace(FPSTR(T_i), _params[i]->getID()); - if(tok_n)pitem.replace(FPSTR(T_n), _params[i]->getID()); - if(tok_p)pitem.replace(FPSTR(T_p), FPSTR(T_t)); - if(tok_t)pitem.replace(FPSTR(T_t), _params[i]->getPlaceholder()); - snprintf(parLength, 5, "%d", _params[i]->getValueLength()); - if(tok_l)pitem.replace(FPSTR(T_l), parLength); - if(tok_v)pitem.replace(FPSTR(T_v), _params[i]->getValue()); - if(tok_c)pitem.replace(FPSTR(T_c), _params[i]->getCustomHTML()); // meant for additional attributes, not html + if(tok_I)pitem.replace(FPSTR(T_I), (String)FPSTR(S_parampre)+(String)i); // T_I id number + if(tok_i)pitem.replace(FPSTR(T_i), _params[i]->getID()); // T_i id name + if(tok_n)pitem.replace(FPSTR(T_n), _params[i]->getID()); // T_n id name alias + if(tok_p)pitem.replace(FPSTR(T_p), FPSTR(T_t)); // T_p replace legacy placeholder token + if(tok_t)pitem.replace(FPSTR(T_t), _params[i]->getLabel()); // T_t title/label + snprintf(valLength, 5, "%d", _params[i]->getValueLength()); + if(tok_l)pitem.replace(FPSTR(T_l), valLength); // T_l value length + if(tok_v)pitem.replace(FPSTR(T_v), _params[i]->getValue()); // T_v value + if(tok_c)pitem.replace(FPSTR(T_c), _params[i]->getCustomHTML()); // T_c meant for additional attributes, not html, but can stuff } else { pitem = _params[i]->getCustomHTML(); } diff --git a/strings_en.h b/strings_en.h index db8e6bc..265ec5d 100644 --- a/strings_en.h +++ b/strings_en.h @@ -44,7 +44,7 @@ const char HTTP_FORM_STATIC_HEAD[] PROGMEM = "

"; const char HTTP_FORM_END[] PROGMEM = "

"; const char HTTP_FORM_LABEL[] PROGMEM = ""; const char HTTP_FORM_PARAM_HEAD[] PROGMEM = "

"; -const char HTTP_FORM_PARAM[] PROGMEM = "
"; +const char HTTP_FORM_PARAM[] PROGMEM = "
"; const char HTTP_SCAN_LINK[] PROGMEM = "
"; const char HTTP_SAVED[] PROGMEM = "
Saving Credentials
Trying to connect ESP to network.
If it fails reconnect to AP to try again
"; From 370be061e4d22226e3d2c183c0fc689ea6a594f7 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Wed, 31 Oct 2018 14:03:26 -0500 Subject: [PATCH 3/5] adds custom param examples to advanced --- examples/Advanced/Advanced.ino | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/examples/Advanced/Advanced.ino b/examples/Advanced/Advanced.ino index 21a4bd9..6878172 100644 --- a/examples/Advanced/Advanced.ino +++ b/examples/Advanced/Advanced.ino @@ -6,7 +6,8 @@ #define TRIGGER_PIN 0 -WiFiManager wm; +WiFiManager wm; // global wm instance +WiFiManagerParameter custom_field(""); // global param ( for non blocking w params ) void setup() { Serial.begin(115200); @@ -15,13 +16,14 @@ void setup() { Serial.println("\n Starting"); pinMode(TRIGGER_PIN, INPUT); - + // wm.resetSettings(); // wipe settings // add a custom input field int customFieldLength = 40; - WiFiManagerParameter custom_field("customfield", "Custom Field", "Default Value", customFieldLength); + new (&custom_field) WiFiManagerParameter("customfieldid", "Custom Field Label", "Custom Field Value", customFieldLength,"placeholder=\"Custom Field Placeholder\""); // reconstruct (hmm) wm.addParameter(&custom_field); + wm.setSaveParamsCallback(saveParamCallback); // custom menu via array or vector // @@ -33,15 +35,16 @@ void setup() { // set dark theme // wm.setClass("invert"); - + + //set static ip // wm.setSTAStaticIPConfig(IPAddress(10,0,1,99), IPAddress(10,0,1,1), IPAddress(255,255,255,0)); // set static ip,gw,sn // wm.setShowStaticFields(true); // force show static ip fields // wm.setShowDnsFields(true); // force show dns field always // wm.setConnectTimeout(20); // how long to try to connect for before continuing - // wm.setConfigPortalTimeout(60); // auto close configportal after n seconds - // wifiManager.setCaptivePortalEnable(false); // disable captive portal redirection + wm.setConfigPortalTimeout(30); // auto close configportal after n seconds + // wm.setCaptivePortalEnable(false); // disable captive portal redirection // wifi scan settings // wm.setRemoveDuplicateAPs(false); // do not remove duplicate ap names (true) @@ -72,11 +75,12 @@ void checkButton(){ // poor mans debounce/press-hold, code not ideal for production delay(50); if( digitalRead(TRIGGER_PIN) == LOW ){ - + Serial.println("Button Pressed"); // still holding button for 3000 ms, reset settings, code not ideaa for production delay(3000); // reset delay hold if( digitalRead(TRIGGER_PIN) == LOW ){ - Serial.println("Erasing Config"); + Serial.println("Button Held"); + Serial.println("Erasing Config, restarting"); wm.resetSettings(); ESP.restart(); } @@ -85,7 +89,7 @@ void checkButton(){ Serial.println("Starting config portal"); wm.setConfigPortalTimeout(120); - if (!wm.startConfigPortal("OnDemandAP")) { + if (!wm.startConfigPortal("OnDemandAP","password")) { Serial.println("failed to connect or hit timeout"); delay(3000); // ESP.restart(); @@ -97,6 +101,10 @@ void checkButton(){ } } +void saveParamCallback(){ + Serial.println("[CALLBACK] saveParamCallback fired"); +} + void loop() { checkButton(); // put your main code here, to run repeatedly: From 38b6c878a209f4f83d32da6f112d0e70efe10dc5 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Wed, 31 Oct 2018 14:15:02 -0500 Subject: [PATCH 4/5] chaange setCaptivePortalClientCheck to setAPClientCheck --- WiFiManager.cpp | 6 +++--- WiFiManager.h | 6 +++--- examples/Advanced/Advanced.ino | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 2505edd..e91719b 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -416,7 +416,7 @@ void WiFiManager::stopWebPortal() { boolean WiFiManager::configPortalHasTimeout(){ - if(_configPortalTimeout == 0 || (_cpClientCheck && (WiFi_softap_num_stations() > 0))){ + if(_configPortalTimeout == 0 || (_apClientCheck && (WiFi_softap_num_stations() > 0))){ if(millis() - timer > 30000){ timer = millis(); DEBUG_WM(DEBUG_VERBOSE,"NUM CLIENTS: " + (String)WiFi_softap_num_stations()); @@ -2175,8 +2175,8 @@ void WiFiManager::setWiFiAutoReconnect(boolean enabled){ * @access public * @param boolean enabled [false] */ -void WiFiManager::setCaptivePortalClientCheck(boolean enabled){ - _cpClientCheck = enabled; +void WiFiManager::setAPClientCheck(boolean enabled){ + _apClientCheck = enabled; } /** diff --git a/WiFiManager.h b/WiFiManager.h index 44ad3bb..a8c7d1f 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -237,8 +237,8 @@ class WiFiManager void setShowDnsFields(boolean alwaysShow); //if false, disable captive portal redirection void setCaptivePortalEnable(boolean enabled); - //if false, timeout captive portal even if a STA client connected (false), suggest disabling if captiveportal is open - void setCaptivePortalClientCheck(boolean enabled); + //if false, timeout captive portal even if a STA client connected to softAP (false), suggest disabling if captiveportal is open + void setAPClientCheck(boolean enabled); //if true, reset timeout when webclient connects (true), suggest disabling if captiveportal is open void setWebPortalClientCheck(boolean enabled); // if true, enable autoreconnecting @@ -344,7 +344,7 @@ class WiFiManager boolean _enableCaptivePortal = true; // enable captive portal redirection boolean _userpersistent = true; // users preffered persistence to restore boolean _wifiAutoReconnect = true; // there is no platform getter for this, we must assume its true and make it so - boolean _cpClientCheck = false; // keep cp alive if cp have station + boolean _apClientCheck = false; // keep cp alive if ap have station boolean _webClientCheck = true; // keep cp alive if web have client boolean _scanDispOptions = false; // show percentage in scans not icons boolean _paramsInWifi = true; // show custom parameters on wifi page diff --git a/examples/Advanced/Advanced.ino b/examples/Advanced/Advanced.ino index 6878172..9cd1211 100644 --- a/examples/Advanced/Advanced.ino +++ b/examples/Advanced/Advanced.ino @@ -45,6 +45,7 @@ void setup() { // wm.setConnectTimeout(20); // how long to try to connect for before continuing wm.setConfigPortalTimeout(30); // auto close configportal after n seconds // wm.setCaptivePortalEnable(false); // disable captive portal redirection + // wm.setAPClientCheck(true); // avoid timeout if client connected to softap // wifi scan settings // wm.setRemoveDuplicateAPs(false); // do not remove duplicate ap names (true) From 73f2a8c366092fff2851017f27089e7ea9a2a2b1 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Wed, 31 Oct 2018 14:23:39 -0500 Subject: [PATCH 5/5] adds empty param constructor --- WiFiManager.cpp | 4 ++++ WiFiManager.h | 1 + examples/Advanced/Advanced.ino | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index e91719b..2d54415 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -22,6 +22,10 @@ uint8_t WiFiManager::_lastconxresulttmp = WL_IDLE_STATUS; * -------------------------------------------------------------------------------- **/ +WiFiManagerParameter::WiFiManagerParameter() { + WiFiManagerParameter(""); +} + WiFiManagerParameter::WiFiManagerParameter(const char *custom) { _id = NULL; _label = NULL; diff --git a/WiFiManager.h b/WiFiManager.h index a8c7d1f..6e03ffe 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -104,6 +104,7 @@ class WiFiManagerParameter { Create custom parameters that can be added to the WiFiManager setup web page @id is used for HTTP queries and must not contain spaces nor other special characters */ + WiFiManagerParameter(); WiFiManagerParameter(const char *custom); WiFiManagerParameter(const char *id, const char *label); WiFiManagerParameter(const char *id, const char *label, const char *defaultValue, int length); diff --git a/examples/Advanced/Advanced.ino b/examples/Advanced/Advanced.ino index 9cd1211..4ec9d60 100644 --- a/examples/Advanced/Advanced.ino +++ b/examples/Advanced/Advanced.ino @@ -7,7 +7,7 @@ #define TRIGGER_PIN 0 WiFiManager wm; // global wm instance -WiFiManagerParameter custom_field(""); // global param ( for non blocking w params ) +WiFiManagerParameter custom_field; // global param ( for non blocking w params ) void setup() { Serial.begin(115200);