Hallo,
mein ESP32 (LOLIN32) verarbeitet keine Anwendung mehr mit einem Webbrowser Aufruf.
Z.B. dieses Beispiel hat vorher funktioniert, jetzt aber nicht mehr:
Dann ist jetzt irgend etwas anders, als vorher.
Ok, der Hilfe-Gehalt wird nur marginal sein, aber da Du auch keine Frage gestellt hast, wird's wohl so passen.
@Heinz: Der Server nutzt Callback-Funktionen. Da darf die Loop leer bleiben. Man sollte da aber trotzdem immer einen kleinen Delay reinmachen, da u. U. anderer Code nicht zum Zuge kommt.
@Juergen:
Ich geh mal davon aus, dass die IP auf der Seriellen ausgegeben wird.
Bei mir kam auch nichts im Browser. Du hast aber nur eine Callback-Funktion gesetzt. Ich hab mal die Funktion
"void NotFound( AsyncWebServerRequest *request )"
reingemacht. Angehängt wird sie in der Zeile
server.onNotFound( NotFound );
Das heisst, sie wird aufgerufen wenn Deine "server.on("/html", HTTP_GET, [](AsyncWebServerRequest *request)" nicht passt.
Ausserdem hab ich "WiFi.mode( WIFI_AP );" aufgerufen (war aber hier nicht das Problem).
Probiers mal aus. Hier der komplette Code:
#include <Arduino.h>
#include <WiFi.h>
//#include <FS.h>
#include "AsyncTCP.h"
#include "ESPAsyncWebServer.h"
const char* ssid = "HOTSPOT......";
const char* password = "1432.....";
const char* PARAM_MESSAGE = "message";
void NotFound( AsyncWebServerRequest *request );
AsyncWebServer server(80);
// Webpage
const char HTML[] PROGMEM = "<form onSubmit=\"event.preventDefault()\"><label class=\"label\">Network Name</label><input type=\"text\" name=\"ssid\"/>
<label>Password</label><input type=\"text\" name=\"pass\"/>
<input type=\"submit\" value=\"Submit\"></form>";
void setup() {
Serial.begin(115200);
WiFi.mode( WIFI_AP );
delay( 200 );
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println(WiFi.localIP());
server.on("/html", HTTP_GET, [](AsyncWebServerRequest *request)
{
request->send(200, "text/html", HTML);
});
server.onNotFound( NotFound );
server.begin();
}
void loop()
{
}
void NotFound( AsyncWebServerRequest *request )
{
Serial.println( "NotFound()" );
uint8_t vers = request->version();
if( vers == 0)
Serial.println( " Version: HTTP/1.0" );
else if(vers == 1)
Serial.println( " Version: HTTP/1.1" );
else
Serial.println( " Version: unknown version" );
WebRequestMethodComposite meth = request->method();
switch(meth)
{
case HTTP_GET:
Serial.println( " Method: HTTP_GET" );
break;
case HTTP_POST:
Serial.println( " Method: HTTP_POST" );
break;
case HTTP_DELETE:
Serial.println( " Method: HTTP_DELETE" );
break;
case HTTP_PUT:
Serial.println( " Method: HTTP_PUT" );
break;
case HTTP_PATCH:
Serial.println( " Method: HTTP_PATCH" );
break;
case HTTP_HEAD:
Serial.println( " Method: HTTP_HEAD" );
break;
case HTTP_OPTIONS:
Serial.println( " Method: HTTP_OPTIONS" );
break;
case HTTP_ANY:
Serial.println( " Method: HTTP_ANY" );
break;
default:
Serial.println( " Method: empty or unknown" );
break;
}
Serial.println( " URL: " + request->url() ); // String: URL of the request( not including host, port or GET parameters )
Serial.println( " Host: " + request->host() ); // String: The requested host (can be used for virtual hosting)
Serial.println( " Content type: " + request->contentType() ); // String: ContentType of the request (not avaiable in Handler::canHandle)
Serial.print( " Content lenth: " ); Serial.println( request->contentLength() ); // size_t: ContentLength of the request (not avaiable in Handler::canHandle)
Serial.println( " Has multipart: " + request->multipart() ); // bool: True if the request has content type "multipart"
delay( 1 );
String page = "<html lang=en-EN><head><meta http-equiv='refresh' content='60'/>";
page += "<title>ESP32 WebServer</title>";
page += "Hallo Juergen, geht doch....";
page += "</body></html>";
request->send( 200, "text/html", page );
}
Bevor einer wegen Groß-/Kleinschreibung meckert: Ich komme aus der C#-Ecke. Bei mir sind normalerweise globale Variable großgeschrieben, lokale klein. Ne geschweifte Klammer.......
Alternativ kannst Du auch die Zeile
server.on("/html", HTTP_GET, [](AsyncWebServerRequest *request)
in
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
ändern, dann gehts auch nur mit der IP.
Hallo,
vielen Dank für Eure schnelle Hilfe.
Der Programm-Code OtmarK funktioniert bei mir und auch mein ürsprunglicher Code funktioniert nun (?).
Ich hatte gedacht mein Problem liegt am ESP32 selbst (defekter Speicher usw.).