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.
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
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 ...
Ja, wird gefunden und ich kann mich einwählen. Siehe Monitor, Connect-Count geht auf 1.
Ich habe befürchtet, dass es bei anderen funktioniert ...
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.
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.
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.
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
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.
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.
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.