Wifi.SoftAP antwortet nicht ....

Guten Morgen,

Neuling mit Arduino/ESP8266 auf der Suche nach einem Hinweis … !

Ich möchte einen minimal-Webserver auf einem ESP8266-01 betreiben. Dafür gibt es ja tonnenweise
Beispiele im Netz. Dumm nur, dass ich zu blöd bin, es zum Laufen zu bringen.

Was wurde gemacht?
Das Problem wurde (im Laufe der vielen Versuche) mit zwei Optionen
versucht:

O1:
ESP8266-01 macht einen Connect an mein WLAN-Netzwerk. Startet dann einen
Server und legt mit server.on(…) eine Callback fest, die mir nur im seriellen Monitor
einen Hinweis gibt.
In einem Browser wird als URL die lokle IP des ESP eingegeben.

Das funktioniert einwandfrei

O2: (das eigentliche Ziel)
ESP8266-01 spannt selbst einen Accespoint auf. Mit einem anderen Client (Handy, Laptop)
wird sich in das ESP-WLAN eingewählt. (Funktioniert, im seriellen Monitor als Connect-
Zähler zu sehen)
Startet dann einen Server und legt … (s.o.)
In dem Browser des Clients wird als URL 192.168.4.1 eingegeben.

Nix passiert.

Bis auf die beiden Optionen des Netzwerkaufbaus (jeweils eine auskommentiert)
ist der Code identisch. (Siehe Anhang).
Im Anhang außerdem Monitor-Protokoll der beiden Optionen.

Hat jemand eine Idee?
Danke
Gruß
A.

Monitor_AP.jpg

Monitor_Client.jpg

WebServer2a.ino (2.23 KB)

Hallo,

was ist mit dem Beispiel aus der IDE
Beispiele / ESP wifi/ Wifi Access point

laüft das ?

findest Du das Netzt Hugo13 mit deinem Handy ?

amshh:
Guten Morgen,

Neuling mit Arduino/ESP8266 auf der Suche nach einem Hinweis .... !

Ich möchte einen minimal-Webserver auf einem ESP8266-01 betreiben. Dafür gibt es ja tonnenweise
Beispiele im Netz. Dumm nur, dass ich zu blöd bin, es zum Laufen zu bringen.

Was wurde gemacht?
Das Problem wurde (im Laufe der vielen Versuche) mit zwei Optionen
versucht:

O1:
ESP8266-01 macht einen Connect an mein WLAN-Netzwerk. Startet dann einen
Server und legt mit server.on(...) eine Callback fest, die mir nur im seriellen Monitor
einen Hinweis gibt.
In einem Browser wird als URL die lokle IP des ESP eingegeben.

Das funktioniert einwandfrei

O2: (das eigentliche Ziel)
ESP8266-01 spannt selbst einen Accespoint auf. Mit einem anderen Client (Handy, Laptop)
wird sich in das ESP-WLAN eingewählt. (Funktioniert, im seriellen Monitor als Connect-
Zähler zu sehen)
Startet dann einen Server und legt .... (s.o.)
In dem Browser des Clients wird als URL 192.168.4.1 eingegeben.

Nix passiert.

Bis auf die beiden Optionen des Netzwerkaufbaus (jeweils eine auskommentiert)
ist der Code identisch. (Siehe Anhang).
Im Anhang außerdem Monitor-Protokoll der beiden Optionen.

Hat jemand eine Idee?
Danke
Gruß
A.

Bei mir funzt der Sketch als AP.

Im Seriellen erscheint:

Configuring as access point...
AP IP address (WiFi.softAPIP): 192.168.4.1
HTTP server HUGO13 started
Stations connected = 1
handleRoot angesprungen

Gruß Fips

Hallo Rentner & Derfips !

  1. unter /examples/ ist das bei mir nicht zu finden. Gehe aber davon aus, dass das identisch
    zu allen anderen Beispielen ist. Und im Prinzip sind das ja auch nur eine handvoll Zeilen ...
  2. Ja, wird gefunden und ich kann mich einwählen. Siehe Monitor, Connect-Count geht auf 1.
  3. Ich habe befürchtet, dass es bei anderen funktioniert ...

Aber:
Bin ein Stück weiter.
Habe noch

IPAddress ip(192,168,0,200);
IPAddress gateway(192,168,0,200);
IPAddress subnet(255,255,255,0);

WiFi.softAPConfig(ip,gateway,subnet);

eingesetzt.
Zumindest funktioniert es dann mit Firefox Browser aus einem Windows-Client einwandfrei. Aber merkwürdigerweise nicht aus dem Handy mit diversen Browsern.
Connect an den AP funktioniert immer.

Gruß
A.

... man muss nur lange genug suchen!

In einem anderen Forum dies hier gefunden:

What phone are you using? Android phones (Or, at least all my Nexus devices) will prompt once when connecting saying there's no internet access for this network, and asking if you want to stay connected. If you do not confirm that you want to stay connected, you cannot access the ESP.

amshh:
IPAddress ip(192,168,0,200);
IPAddress gateway(192,168,0,200);
IPAddress subnet(255,255,255,0);

WiFi.softAPConfig(ip,gateway,subnet);

Geht bei mir auch ohne!

Laptop:

Firefox
Chrome
Opera
Edge

Ergebniss im Browser bei allen.

This is your answer

Klingelkasten S6

Mit zwei verschiedenen Browsern das selbe Ergebniss.

Den Fehler solltest du nicht im Sketch suchen.

Gruß Fips

Derfips:
Den Fehler solltest du nicht im Sketch suchen.

Ja. Das ist wohl so.

amshh:
Ja. Das ist wohl so.

Das markierte kannst du trozdem weglassen!

/* OPTION 1: ACCESS-POINT ------------------------------------------*/
boIsAP = true;
Serial.println("Configuring as access point...");

//WiFi.mode(WIFI_AP);
//delay(100);

// You can remove the password parameter if you want the AP to be open.
WiFi.softAP(ssidAP, passwordAP);

Serial.print("AP IP address (WiFi.softAPIP): ");
Serial.println(WiFi.softAPIP());
/* ---------------------------------------------------------------------*/

Gruß Fips

Hallo,

Derfips:
Das markierte kannst du trozdem weglassen!

prinzipiell kann er es weglassen, aber die Eigenheiten des ESP8266 beachten:
Wenn z.B. WiFi.mode(WIFI_AP_STA); mal gesetzt wurde, stellt er beides bereit.
Nach Rest versucht er sich generell mit dem zuletzt intern abgespeicherten AP aim Station-Mode zu verbinden wenn man autoreconnect() nicht explizit abgeschaltet hat.
Das kann in ungünstigen Kombinationen zu scheinbar unerklärlichem Verhalten des ESP führen.

Gruß aus Berlin
Michael

Hallo nochmals,

das Endziel ist, den verbauten ESP auf Anforderung in den AP-Modus zu bringen, um ihm dann die Kontaktdaten für den WLAN-Router mitzuteilen, an den er anschließend sich im STA-Mode ankoppeln soll.

Es ist also tatsächlich so, dass die Modus abwechseln verwendet werden sollen und ich daher eine klare Trennung bevorzuge.

Danke nochmals an alle Mitdenker!
Gruß aus Hamburg
Andree

amithlon:
Hallo,

prinzipiell kann er es weglassen, aber die Eigenheiten des ESP8266 beachten:
Wenn z.B. WiFi.mode(WIFI_AP_STA); mal gesetzt wurde, stellt er beides bereit.
Nach Rest versucht er sich generell mit dem zuletzt intern abgespeicherten AP aim Station-Mode zu verbinden wenn man autoreconnect() nicht explizit abgeschaltet hat.
Das kann in ungünstigen Kombinationen zu scheinbar unerklärlichem Verhalten des ESP führen.

Gruß aus Berlin
Michael

Wo siehst du ein Problem?

Ich bezog mich explizit auf oben genannten Sketch.

Und in dem sind die Problemlöser schon enthalten!

Gruß Fips

Hallo,

Derfips:
Wo siehst du ein Problem?
Ich bezog mich explizit auf oben genannten Sketch.
Und in dem sind die Problemlöser schon enthalten!

vielleicht habe ich Dich auch nur falsch interpretiert: ich habe es so gelesen, daß er
//WiFi.mode(WIFI_AP);
weglassen kann.
Das legt aber die Betriebsart des ESP fest (WIFI_AP, WIFI_STA, WIFI_AP_STA).
Ohne diese Anweisung wird der Mode gesetzt, der vor dem letzten Boot aktiv war.
WiFi.softAP(ssidAP, passwordAP); setzt nicht implizit den Mode.

Solange man sicher sein kann, wie man den ESP sozusagen beim letzten Mal hinterlassen hat, spielt es keine Rolle. Man schafft es aber z.B. durchaus, daß der ESP scheinbar alles richtig macht, sich aber nicht mehr als Station mit einem AP verbindet. Dann war u.U. ein flashen der esp_init_data_default.bin und blank.bin oder ein komplettes Löschen des Flash mit dem Flashtool nötig.
Nicht ganz ohne Grund gibt es in der aktuellen 2.4.1 beim Punkt Erase Flash jetzt 3 Varianten zur Auswahl.

Gruß aus Berlin
Michael

Hallo Michael,
vieleicht hast du ja recht!

Aber nach meiner Erfahrung hat bis jetzt "WiFi.disconnect();" das Problem immer behoben.

Gruß Fips

Hallo,

Derfips:
Hallo Michael,
vieleicht hast du ja recht!
Aber nach meiner Erfahrung hat bis jetzt "WiFi.disconnect();" das Problem immer behoben.

ich halte das immer so, speziell bei ESP8266 und z.Z beim ESP32: ich sehe sowas als Hinweis und behalte es im Hinterkopf und denke zumindest an die Möglichkeit, wenn sich da mal was unerklärlich daneben benimmt.
Ein Bekannter und auch ich sowie 2 oder 3 Leute in den Foren haben es schon geschafft, wie und wodurch ließ sich in keinem Fall rekonstruieren. Man konnte es dann aber zumindest beheben.

Gruß aus Berlin
Michael