Forum: Mikrocontroller und Digitale Elektronik ESP32: Webserver über SoftAP läuft nicht


von Thomas M. (langhaarrocker)


Lesenswert?

Ich habe ein Projekt, bei dem ich ein paar Einstellungen auf dem 
Mikrocontroller per Web-Frontend konfigurieren können möchte. Es kommt 
ein ESP32-WROOM32 in Form eines "MINI D1 ESP32" Boards zum Einsatz, 
sowas:
https://www.az-delivery.de/products/esp32-d1-mini

Mein Projekt funktioniert, wenn ich den ESP im Station Mode WIFI_STA 
betreibe und ihn sich in ein bestehendes WLan einwählen lasse. Ich kann 
dann per Browser die Webseiten, die der Server auf dem ESP hosted, 
problemlos abrufen.

Stelle ich das ganze jedoch auf softAccessPoint um, dann kann der ESP 
zwar den Access Point aufmachen und ich kann mich mit z.B. mit meinem 
Handy auch damit verbinden. Versuche ich jedoch dann die Webseiten vom 
ESP32 abzurufen, bekomme ich nur Timeouts.

Um sicherzustellen, dass es grundsätzlich funktioniert, habe ich mal 
einfach das Beispiel "WiFiAccessPoint.ino" aus der Wifi Arduino 
Bibliothek kompiliert, siehe
https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiAccessPoint/WiFiAccessPoint.ino

Auch da das selbe Problem: Der Access Point geht auf, aber ich kann den 
Server nicht erreichen.

Entwicklungsumgebung: Sloeber unter Windows 7

Ich habe es mit verschiedenen Platform Versionen versucht:
arduinoPlugin\packages\esp32\hardware\esp32\2.0.11
arduinoPlugin\packages\esp32\hardware\esp32\2.0.14

Kennt jemand dieses Problem oder hat Ideen, was ich ausprobieren sollte?

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

Thomas M. schrieb:
> Um sicherzustellen, dass es grundsätzlich funktioniert, habe ich mal
> einfach das Beispiel "WiFiAccessPoint.ino" aus der Wifi Arduino
> Bibliothek kompiliert, siehe
> 
https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiAccessPoint/WiFiAccessPoint.ino

Ich sehe in dem Beispiel nur eine Client-Bedienung, wo soll da ein 
Server ein Webseite zur verfügung stellen?

Gruß aus Berlin
Michael

von Thomas M. (langhaarrocker)



Lesenswert?

Öhm ...
Einen Client zu bedienen, das IST doch ein (rudimentärer) Server. In dem 
Beispiel liefert der ESP dem Client eine als Antwort eine Art 
Minimalseite, mit
1
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
2
            // and a content-type so the client knows what's coming, then a blank line:
3
            client.println("HTTP/1.1 200 OK");
4
            client.println("Content-type:text/html");
5
            client.println();
6
7
            // the content of the HTTP response follows the header:
8
            client.print( /*irgendwelcher html code, den die Forensoftware für Spam hält*/);

Wenn das bei mir schon mal funktionieren würde, dann wäre mein Problem 
vermutlich schon behoben. Aber soweit kommt es ja gar nicht.

Ich bekomme nie die Ausgabe 'New Client' aus:
1
void loop() {
2
  WiFiClient client = server.available();   // listen for incoming clients
3
4
  if (client) {                             // if you get a client,
5
    Serial.println("New Client.");           // print a message out the serial port
6
 // <snip>
7
  }
8
}

Ich vermute, dass das Problem eher in etwas Grundsätzlicherem besteht. 
Im Anhang mal ein Screenshot der Arduino Einstellungen in Sloeber.

von Jan H. (jan_h74) Flattr this


Lesenswert?

Versuch es mal die "Mobile data" auf ihre handy aus zu schalten, so hat 
es bei mir geklappt.

von Michael U. (amiga)


Lesenswert?

Hallo,

Thomas M. schrieb:
> Öhm ...
> Einen Client zu bedienen, das IST doch ein (rudimentärer) Server.

entschuldige, ich sollte meinen Morgenkaffee erst austrinken vor dem 
Posten...

Habe das gerade mal auf einen D1-Mini geflasht der gerade rumlag.
AP meldet sich, auch auf dem Handy.
Aufruf von 192.168.4.1 zeigt die Webseite an mit dem LED on/LED 
off-Links.
Ausgabe im Seriell:
New Client.
GET /favicon.ico HTTP/1.1
Host: 192.168.4.1
Connection: keep-alive
User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36
Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
Referer: http://192.168.4.1/
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7

Client Disconnected.

ArduinoIDE 1.8.19, ESP32 2.0.14
Die 2.0.14 hat mein gesetztes Passwort als falsch zurückgewiesen, habe 
erstmal ohne Passwort gesetzt, muß ich mir mal anschauen, mit der alten 
2.0.3 ging das Passwort noch...

Gruß aus Berlin
Michael

von Thomas M. (langhaarrocker)


Lesenswert?

Danke fürs Ausprobieren, Michael!
Genau so eine Ausgabe hätte ich erwartet und mir auch gewünscht.

@Jan: Ja mobile Daten hatte ich bereits ausgeschaltet. Hat leider nicht 
geholfen, aber Danke für den Tip!

von Thomas M. (langhaarrocker)


Lesenswert?

Es scheint das Problem ist an ganz anderer Stelle zu suchen: bei meinem 
Handy.
Verbinde ich mich per Laptop mit dem Acces Point des ESP32, dann 
funktioniert sowohl das WiFiAccessPoint.ino Beispiel, als auch mein 
eigener Code.
Nicht jedoch mit meinem Handy, ein Shift Phone SHIFT6mq mit LineageOS 20 
(Android 13).
Weitere Analysen der Ursachen stehen noch aus.

: Bearbeitet durch User
von Stephan S. (uxdx)


Lesenswert?

Thomas M. schrieb:
> Nicht jedoch mit meinem Handy, ein Shift Phone SHIFT6mq mit LineageOS 20
> (Android 13).

Evtl anderen Browser probieren? Evtl ist Dein Browser gepimpt?

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.