/* =================================================================================== * THIS SECTION IS FOR METHODES AND FUNCTIONS * =================================================================================*/ void setupWiFi() { // Turn On LCD lcd_light_on(); // Printing Device Mac Address Serial.println(); Serial.println("-----------------------------------------------------------"); Serial.println(" TAKEONE WIFI MANAGER STARTING "); Serial.println("-----------------------------------------------------------"); //Serial.println("TAKEONE: MAC Address:"); //Serial.println("TAKEONE: " + devMac); // Starting File System Serial.println("TAKEONE: Mounting File System"); read_config(); // The extra parameters to be configured (can be either global or just in the setup) WiFiManagerParameter custom_devID("devID", "Club UserID", devID.c_str(), 100); WiFiManagerParameter custom_devPASS("devPASS", "Club Password", devPASS.c_str(), 100); //WiFiManager Local intialization. Once its business is done, there is no need to keep it around WiFiManager wifiManager; //set config save notify callback wifiManager.setSaveConfigCallback(saveConfigCallback); //add all your parameters here //wifiManager.addParameter(&custom_server); wifiManager.addParameter(&custom_devID); wifiManager.addParameter(&custom_devPASS); // Display Booting Up Message lcd_clear(); lcd_line1("TAKEONE WiFi"); lcd_line2("RFID < READY >"); delay(2500); // Reset Settings if(button.pressed()) { reconfig(); } // Display On OLED lcd_clear(); lcd_line1("CONNECTING TO"); lcd_line2("WiFi ROUTER"); delay(2500); // Trying To Connect To Network Or Reconfig if (!wifiManager.autoConnect(devName.c_str())) { lcd_clear(); lcd_line1("CONNECTION TO"); lcd_line2("ROUTER FAILD!"); Serial.println("failed to connect and hit timeout"); delay(3000); //reset and try again, or maybe put it to deep sleep lcd_clear(); lcd_line1("< REBOOTING >"); delay(3000); ESP.restart(); } // Copying The SSID & Password Of Successfully Connected Network WiFi_SSID = wifiManager.getSSID(); WiFi_PASS = wifiManager.getPassword(); lcd_clear(); lcd_line1("CONNECTION"); lcd_line2("< SUCCESSFUL >"); delay(2500); lcd_clear(); lcd_line1("IP ADDRESS"); lcd_line2(WiFi.localIP().toString()); delay(2500); //read updated parameters devID = custom_devID.getValue(); devPASS = custom_devPASS.getValue(); //save the custom parameters to FS if (shouldSaveConfig) { Serial.println("saving config"); DynamicJsonDocument json(4000); // Assignning Parameters To JSON json["devID"] = devID; json["devPASS"] = devPASS; // Opening The File For Reading File configFile = SPIFFS.open("/config.json", "w"); // Checking If File Opened if (!configFile) { Serial.println("failed to open config file for writing"); } // Print JSON Content On Monitor String memory = ""; serializeJson(json, memory); // Print To Serial Monitor Serial.println(memory); // Write To File configFile.print(memory); // Closing Config File configFile.close(); // Clearing The Buffer Memory json.clear(); //end save } // Display Data Serial.println("TAKEONE: divID : " + devID); Serial.println("TAKEONE: divPASS : " + devPASS); Serial.println("TAKEONE: divMAC : " + devMac); // End Of WiFi Manager Serial.println("-----------------------------------------------------------"); // Clearing LCD lcd_clear(); // Turnning Off LCD Light lcd_light_off(); } /* =================================================================================== * THIS SECTION IS FOR METHODES AND FUNCTIONS * =================================================================================*/ void saveConfigCallback () { Serial.println("Should Save Config File"); shouldSaveConfig = true; } /* =================================================================================== * THIS SECTION IS FOR METHODES AND FUNCTIONS * =================================================================================*/ void reconfig() { lcd_clear(); lcd_light_on(); lcd_line1("Reset WiFi"); lcd_line2("Settings"); // Make Sure That Spiffs Started if(!strtFS) { delay(1000); wipeFS; } WiFiManager wifiManager; delay(1500); wifiManager.resetSettings(); lcd_clear(); lcd_line1("Formating SPIFFS"); delay(1500); // LCD Display lcd_clear(); lcd_line1(lcd_center("< REBOOTING >")); delay(1500); lcd_light_off(); ESP.restart(); } /* =================================================================================== * THIS SECTION IS FOR METHODES AND FUNCTIONS * =================================================================================*/ bool checkWiFi() { if(WiFi.status() == WL_CONNECTED) { return true; } else { return false; } } /* =================================================================================== * Reading Config File * =================================================================================*/ void read_config() { // After Suceessfull Do The Following if(strtFS) { Serial.println(" -> Mounted File System"); if (SPIFFS.exists("/config.json")) { //file exists, reading and loading Serial.println(" -> Reading Config File"); File configFile = SPIFFS.open("/config.json", "r"); if (configFile) { //Serial.println(" -> Opened Config File"); size_t size = configFile.size(); // Allocate a buffer to store contents of the file. std::unique_ptr buf(new char[size]); configFile.readBytes(buf.get(), size); // Display The Read Data String mydata = String(buf.get()); mydata.trim(); //Serial.println(" -> My Stored Data : " + mydata); // JSON Document DynamicJsonDocument json(2000); DeserializationError error = deserializeJson(json, mydata); if (!error) { devID = json["devID"].as(); devPASS = json["devPASS"].as(); } else { Serial.println(" -> failed to load json config"); } // Clearing JSON Memory json.clear(); } } } else { Serial.println(" -> failed to mount FS"); } }