Description
Board: ESP32 Dev Module
Core Installation version: Latest
IDE name: Platform.io Arduino
Flash Frequency: 40Mhz?
Computer OS: Windows 10? And iPhone
I searched to find the resone for failing captive Portal to popup on the Chrome/Internet Explorer /iphone/Adnroid Tablet but I couldn't solve. The code is:
#ifdef ESP8266
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
ESP8266WebServer server(80);
#else
#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>
#include <DNSServer.h>
WebServer server(80);
DNSServer dnsServer;
#endif
const byte DNS_PORT = 53;
IPAddress apIP(8, 8, 4, 4);
//IPAddress apIP(192, 168, 4, 4);
String responseHTML = ""
"<title>CaptivePortal</title>"
"
Hello World!
This is a captive portal example. All requests will "
"be redirected here.
void handleRoot() {
// digitalWrite(led, 1);
#ifdef ESP8266
server.send(200, "text/plain", "hello from esp8266!");
#else
server.send(200, "text/plain", "hello from esp32!");
#endif
// digitalWrite(led, 0);
}
void handleNotFound(){
// digitalWrite(led, 1);
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET)?"GET":"POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i=0; i<server.args(); i++){
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
// digitalWrite(led, 0);
}
void setup() {
Serial.begin(115200);
delay(2000);
WiFi.disconnect(); //added to start with the wifi off, avoid crashing
delay(500);
WiFi.mode(WIFI_OFF); //added to start with the wifi off, avoid crashing
WiFi.mode(WIFI_AP);
delay(100);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP("CaptivePortal");
delay(2000); // VERY IMPORTANT
#ifdef ESP8266
if (MDNS.begin("esp8266")) {
#else
if (MDNS.begin("esp32")) {
#endif
Serial.println("MDNS responder started");
}
server.on("/", handleRoot);
server.on("/inline", {
server.send(200, "text/plain", "this works as well");
});
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
delay(1);
}