/** * WiFiManager advanced demo, contains advanced configurartion options * Implements TRIGGEN_PIN button press, press for ondemand configportal, hold for 3 seconds for reset settings. */ #include // https://github.com/tzapu/WiFiManager #define TRIGGER_PIN 0 WiFiManager wm; void setup() { Serial.begin(115200); Serial.setDebugOutput(true); delay(3000); 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); wm.addParameter(&custom_field); // custom menu via array or vector // // menu tokens, "wifi","wifinoscan","info","param","close","sep","erase","restart","exit" (sep is seperator) (if param is in menu, params will not show up in wifi page!) // const char* menu[] = {"wifi","info","param","sep","restart","exit"}; // wm.setMenu(menu,6); std::vector menu = {"wifi","info","param","sep","restart","exit"}; wm.setMenu(menu); // 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 // wifi scan settings // wm.setRemoveDuplicateAPs(false); // do not remove duplicate ap names (true) // wm.setMinimumSignalQuality(20); // set min RSSI (percentage) to show in scans, null = 8% // wm.setShowInfoErase(false); // do not show erase button on info page // wm.setScanDispPerc(true); // show RSSI as percentage not graph icons // wm.setBreakAfterConfig(true); // always exit configportal even if wifi save fails bool res; // res = wm.autoConnect(); // auto generated AP name from chipid // res = wm.autoConnect("AutoConnectAP"); // anonymous ap res = wm.autoConnect("AutoConnectAP","password"); // password protected ap if(!res) { Serial.println("Failed to connect or hit timeout"); // ESP.restart(); } else { //if you get here you have connected to the WiFi Serial.println("connected...yeey :)"); } } void checkButton(){ // check for button press if ( digitalRead(TRIGGER_PIN) == LOW ) { // poor mans debounce/press-hold, not recommended for production code delay(50); if( digitalRead(TRIGGER_PIN) == LOW ){ // holding button 3000 ms, reset settings delay(3000); // reset delay hold if( digitalRead(TRIGGER_PIN) == LOW ){ Serial.println("Erasing Config"); wm.resetSettings(); ESP.restart(); } // start portal w delay Serial.println("Starting config portal"); wm.setConfigPortalTimeout(120); if (!wm.startConfigPortal("OnDemandAP")) { Serial.println("failed to connect or hit timeout"); delay(3000); // ESP.restart(); } else { //if you get here you have connected to the WiFi Serial.println("connected...yeey :)"); } } } } void loop() { checkButton(); // put your main code here, to run repeatedly: }