Hallo,
ich versuche ein Captive Portal zu realisieren, allerdings wird die Seite bei mir nicht geladen und es passiert einfach nichts.
Hier ist der code
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESPAsyncWebServer.h>
#include <LittleFS.h>
const byte DNS_PORT = 53;
IPAddress apIP(192, 168, 4, 1);
DNSServer dnsServer;
AsyncWebServer server(80);
// Variables to store credentials
String ssid;
String password;
class CaptiveRequestHandler : public AsyncWebHandler {
public:
CaptiveRequestHandler() {}
bool canHandle(AsyncWebServerRequest *request) override {
return true;
}
void handleRequest(AsyncWebServerRequest *request) override {
if (request->url() == "/save" && request->method() == HTTP_POST) {
int params = request->params();
for (int i = 0; i < params; i++) {
AsyncWebParameter* p = request->getParam(i);
if (p->name() == "ssid") {
ssid = p->value().c_str();
} else if (p->name() == "password") {
password = p->value().c_str();
}
}
request->send(200, "text/html", "Credentials saved! Attempting to connect...");
connectToWiFi();
} else {
request->send(LittleFS, "/index.html", "text/html");
}
}
};
void setup() {
Serial.begin(115200);
// Start LittleFS
if (!LittleFS.begin()) {
Serial.println("Failed to mount file system");
return;
}
// Set up Access Point
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP("ESP_CaptivePortal");
// Redirect all DNS queries to the ESP IP
dnsServer.start(DNS_PORT, "*", apIP);
// Add the captive portal request handler
server.addHandler(new CaptiveRequestHandler());
// Start the server
server.begin();
}
void loop() {
dnsServer.processNextRequest();
}
void connectToWiFi() {
WiFi.softAPdisconnect(true);
WiFi.begin(ssid.c_str(), password.c_str());
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected to Wi-Fi");
}
Gibt es hier jdm der soetwas schon realisiert hat und kann mir helfen?