#include IPAddress localIP; //IPAddress localIP(192, 168, 1, 200); // hardcoded // Set your Gateway IP address IPAddress localGateway; //IPAddress localGateway(192, 168, 1, 1); //hardcoded IPAddress subnet(255, 255, 0, 0); // Timer variables unsigned long previousMillis = 0; const long interval = 10000; // interval to wait for Wi-Fi connection (milliseconds) // Create AsyncWebServer object on port 80 AsyncWebServer server(80); // Search for parameter in HTTP POST request const char* PARAM_INPUT_1 = "ssid"; const char* PARAM_INPUT_2 = "pass"; const char* PARAM_INPUT_3 = "userId"; // File paths to save input values permanently const char* ssidPath = "/ssid.txt"; const char* passPath = "/pass.txt"; const char* userIdPath = "/userId.txt"; String ssid; String pass; String userId; String getUserId() { return userId; } // Initialize SPIFFS void initSPIFFS() { if (!SPIFFS.begin(true)) { Serial.println("An error has occurred while mounting SPIFFS"); } Serial.println("SPIFFS mounted successfully"); } // Read File from SPIFFS String readFile(fs::FS &fs, const char * path){ Serial.printf("Reading file: %s\r\n", path); File file = fs.open(path); if(!file || file.isDirectory()){ Serial.println("- failed to open file for reading"); return String(); } String fileContent; while(file.available()){ fileContent = file.readStringUntil('\n'); break; } return fileContent; } // Write file to SPIFFS void writeFile(fs::FS &fs, const char * path, const char * message){ Serial.printf("Writing file: %s\r\n", path); File file = fs.open(path, FILE_WRITE); if(!file){ Serial.println("- failed to open file for writing"); return; } if(file.print(message)){ Serial.println("- file written"); } else { Serial.println("- write failed"); } } // Initialize WiFi bool initWiFi() { if(ssid==""){ Serial.println("Undefined SSID or IP address."); return false; } WiFi.mode(WIFI_STA); WiFi.begin(ssid.c_str(), pass.c_str()); Serial.println("Connecting to WiFi..."); unsigned long currentMillis = millis(); previousMillis = currentMillis; while(WiFi.status() != WL_CONNECTED) { currentMillis = millis(); if (currentMillis - previousMillis >= interval) { Serial.println("Failed to connect."); return false; } } return true; } void readFile() { ssid = readFile(SPIFFS, ssidPath); pass = readFile(SPIFFS, passPath); userId = readFile(SPIFFS, userIdPath); Serial.printf("SSID: %s, Password: %s, User ID: %s\n", ssid.c_str(), pass.c_str(), userId.c_str()); } // Initial Config void initialConfig() { // Setting Soft AP WiFi.softAP("HOME SECURITY MAIN HUB", NULL); IPAddress IP = WiFi.softAPIP(); // Web Server Root URL server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ request->send(SPIFFS, "/wifimanager.html", "text/html"); }); server.serveStatic("/", SPIFFS, "/"); server.on("/", HTTP_POST, [](AsyncWebServerRequest *request) { int params = request->params(); for(int i=0;igetParam(i); if(p->isPost()){ // HTTP POST ssid value if (p->name() == PARAM_INPUT_1) { ssid = p->value().c_str(); Serial.printf("SSID set to: %s\n", ssid.c_str()); writeFile(SPIFFS, ssidPath, ssid.c_str()); } // HTTP POST pass value if (p->name() == PARAM_INPUT_2) { pass = p->value().c_str(); Serial.printf("Password set to: %s\n", pass); writeFile(SPIFFS, passPath, pass.c_str()); } // HTTP POST user id value if (p->name() == PARAM_INPUT_3) { userId = p->value().c_str(); Serial.printf("User ID set to: %s\n", userId); writeFile(SPIFFS, userIdPath, userId.c_str()); } } } request->send(200, "text/plain", "Home Security Hub configured."); delay(3000); ESP.restart(); }); server.begin(); }