void handleRoot(AsyncWebServerRequest *request) { if (getDatafromMemoryAndConnect() == true || WiFi.isConnected()) { // Redirect to setupmanager. requestForWiFiList == true; request->redirect("/setupmanager.html"); } else { // Otherwise, redirect to Auth. requestForWiFiList == true; request->redirect("/setupmanager.html"); } } void serverHandles(){ server.on("/", handleRoot); server.on("/setupmanager", HTTP_POST, [](AsyncWebServerRequest *request) { request->send(SPIFFS,"setupmanager.html", "text/html"); }); server.on("/api/networks", HTTP_GET, [](AsyncWebServerRequest *request) { requestForWiFiList = true; if(networkList != "") request->send(200, "application/json", networkList); }); server.on("/api/connectWifi", HTTP_POST, [](AsyncWebServerRequest *request) { int params = request->params(); if(params > 0){ for(int i=0; i < params; i++){ AsyncWebParameter* p = request->getParam(i); if(p->isPost()){ if (p->name() == "ssid") { ssid = p->value().c_str(); } // HTTP POST pass value if (p->name() == "password") { key = p->value().c_str(); } } } Serial.print("Eingegebene SSID: "); Serial.println(ssid); Serial.print("Eingegebenes Passwort: "); Serial.println(key); // WiFi verbinden WiFi.begin(ssid.c_str(), key.c_str()); unsigned long startTime = millis(); unsigned long timeout = 10000; // 10 Sekunden while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); if (WiFi.status() == WL_CONNECT_FAILED || WiFi.status() == WL_IDLE_STATUS || || millis() - startTime > timeout) { // Prüfen und zurück geben wenn falsche Daten eingegeben wurden.... Watchdog löst immer aus.. request->send(400, "text/plain", "Verbindung konnte nicht hergestellt werden. Überprüfen Sie Ihre Zugangsdaten und versuchen Sie es erneut."); break; } } Serial.println(""); Serial.print("Connection successful: "); Serial.println(WiFi.softAPIP()); request->send(200, "text/plain", "Verbindung hergestellt!"); if(WiFi.status() == WL_CONNECTED){ //Prüfen das man nicht im Browser zurück drückt und falsche Daten speichert, solange der ESP noch verbunden ist -> sonst Deadlock.. addOrUpdateValueInJson(ssid, "ssid"); addOrUpdateValueInJson(key, "wifiKey"); Serial.println("new Wifi-Credentials successfully saved."); } } else { // Fehlermeldung ausgeben, falls keine Eingabefelder vorhanden sind request->send(400, "text/plain", "Verbindung konnte nicht hergestellt werden."); } }); }