[gelöst] ESP32 als AP mit Win10 erneut automatisch verbinden

Ursprüngliches Thema: ESP32 als Access Point mit SPIFFS

ESP32 als Access Point: Das Beispiel WiFiAccessPoint aus der ESP32-Erweiterung der Arduino-IDE funktioniert.

ESP32 am Router mit SPIFFS: Von der Seite Esp32 Webserver Arduino Tab funktionieren „Esp32 WebServer Tab“, „Esp32 Connect Tab“, „Esp32 Spiffs Datei Manager“, „Esp32 Admin Webinterface“, „Esp32 BME280 Tab“ und „Esp32 OnBoardLed Tab“ auf Anhieb (Großes Lob an den Autor, ich war wirklich beeindruckt!).

Da ich einen ESP32 für ein ortsungebundenes Projekt nicht mit dem heimischen Router verbinden möchte, betreibe ich ihn als Access Point mit dem HTML-Text in einer Variablen. Leider ist dann Speicher von SPIFFS ungenutzt, wo sich doch prima HTML-, INO- und CSS-Dateien unterbringen ließen. Von Apache-Servern bin ich das auch so gewohnt. Das Verkleinern von SPIFFS wäre daher für mich nur die zweitbeste Möglichkeit.

Frage 1: Da ich nicht so richtig was zum Thema finde, suche ich falsch oder ist der Weg sinnlos?

Würde ich den „Esp32 Spiffs Datei Manager“ umstricken wollen, so wären alle Methoden von server problematisch:

void spiffs() {       // Funktionsaufruf "spiffs();" muss im Setup eingebunden werden
  SPIFFS.begin(true);
...
  server.onNotFound([]() {
    if (!handleFile(server.urlDecode(server.uri())))
      server.send(404, "text/plain", "FileNotFound");
  });
}

bool handleFile(String&& path) {
...
  return SPIFFS.exists(path) ? ({File f = SPIFFS.open(path, "r"); server.streamFile(f, contentType(path)); f.close(); true;}) : false;
}

Frage 2: Welchen Ersatz gibt es für diese Methoden von WebServer oder kann ich diese Methoden auch zusammen mit einem Access Point verwenden?


PS.: Ab gestern Nachmittag konnte ich mich nicht mehr anmelden. Wenn das heute auch so sein sollte, könnte es Reaktionen von mir erst wieder morgen geben.

Du kannst Doch beliebige Files aus dem SPIFFS streamen. Schau mal bei Fips.

Gruß Tommy

Ich verstehe das Problem nicht.

Der Webserver läuft ja offenbar, oder?

Dann frage ich mich was SPIFFS mit dem AP Mode zu tun hat....
Wo da das Hemmnis ist...

?

Tommy56:
Schau mal bei Fips.

Die ganzen Tabs, die ich in #0 erwähnt habe, sind doch von Fips, die funktionieren ja auch, nur brauchen die einen Router. Außerhalb des Empfangbereis eines Routers nützt mir das aber nichts. Darum möchte ich den ESP32 ja als Access Point verwenden.

combie:
Der Webserver läuft ja offenbar, oder?

Ja, wenn er sich mit einem Router verbinden kann, dann läuft er. Aber ohne Router nützt mir das nichts.

combie:
Dann frage ich mich was SPIFFS mit dem AP Mode zu tun hat....

Wenn ich mit SPIFFS.open eine HTML-Datei öffne, wird sie, wenn ich es richtig verstehe, mittels server.streamFile an den Browser geschickt. Wie mache ich das, wenn der ESP32 ein Access Point ist?

Sollte ich einen Denkfehler haben, dann weise mich bitte deutlich darauf hin!

agmue:
Wie mache ich das, wenn der ESP32 ein Access Point ist?

Indem Du Dein WLAN-Gerät (Smartphone/Tablett/Laptop) in dem AP einlogst und dann darauf im Browser 192.168.4.1 aufrufst. Also den Webserver auf dem AP.
Danach ist alles genau so, wie über den Router. Du kannst nur nicht mit dem Browser vom PC drauf.

Zum Entwickeln würde ich den Stationmodus benutzen und erst wenn es fertig ist, auf AP umschwenken.

Gruß Tommy

Edit: Oder Du n utzt einen Laptop zum Entwickeln. OTA geht auch über AP.

Tommy56:
Indem Du Dein WLAN-Gerät (Smartphone/Tablett/Laptop) in dem AP einlogst und dann darauf im Browser 192.168.4.1 aufrufst. Also den Webserver auf dem AP.

Genau das mache ich, funktioniert!

Tommy56:
Edit: Oder Du nutzt einen Laptop zum Entwickeln.

Mache ich, funktioniert!

Tommy56:
OTA geht auch über AP.

Mache ich, funktioniert!

Den HTML-Text, den ich in einer Variablen sammle und an den Browser schicke, möchte ich aber lieber im SPIFFS als HTML-Datei ablegen. Ebenso wie die CSS- und INO-Datei.

Wie schicke ich also die HTML-, CSS- und INO-Datei im SPIFFS an den Browser?

Bei der Klasse WebServer geht das offensichtlich mittels der Methode streamFile, die ich bei der Klasse WiFi vermisse.

Möglicherweise suchte ich nach WiFi.mode(WIFI_AP);

Sollte es so einfach sein?

Ja, es ist so einfach. Da haben wir aber alle gedacht, dass Du den schon gefunden hattest. Sorry :wink:

Gruß Tommy

Ich habe mich mit dem Beispiel WiFiAccessPoint auf eine falsche Fährte locken lassen.

Danke für die Unterstützung, ist mir ein wenig peinlich ::slight_smile:

Bleibt gelassen, kreativ und gesund!

Warum sollte Dir das peinlich sein?
Das ist doch kein Problem wenn man mal etwas anders (evtl. falsch) versteht.

Fehler sind dazu da, um gemacht zu werden, sonst wären sie ja überflüssig.

Gruß Tommy

agmue:
ESP32 am Router mit SPIFFS: Von der Seite Esp32 Webserver Arduino Tab funktionieren „Esp32 WebServer Tab“, „Esp32 Connect Tab“, „Esp32 Spiffs Datei Manager“, „Esp32 Admin Webinterface“, „Esp32 BME280 Tab“ und „Esp32 OnBoardLed Tab“ auf Anhieb (Großes Lob an den Autor, ich war wirklich beeindruckt!).

Puh, da hab ich aber Glück gehabt.

Hatte an den letzten beiden Tagen das Debug im Webservertab geändert und dann nach und nach die einzelnen Tab's aktualisiert.

agmue:
Ich habe mich mit dem Beispiel WiFiAccessPoint auf eine falsche Fährte locken lassen.

Das ist auf den ersten Blick auch wirklich verwirrend.

Schön das es jetzt klappt.

Gruß Fips

Derfips:
Puh, da hab ich aber Glück gehabt.

Nee, das würde ich eher als Können bezeichnen.

Derfips:
Hatte an den letzten beiden Tagen das Debug im Webservertab geändert und dann nach und nach die einzelnen Tab's aktualisiert.

Dann habe ich vermutlich den alten Stand, denn ich bin da schon länger dran am Fummeln. Ich schaue und vergleiche mal.

Derfips:
Schön das es jetzt klappt.

Ja, das finde ich auch.

Wäre es für Dich eine Anregung, den ESP32 als Access Point optional aufzunehmen? Es sind nur ein paar Kleinigkeiten (Warten auf erfolgreiche Anmeldung, IP-Nummer), aber es wäre für Einsteiger recht hilfreich.

agmue:
Wäre es für Dich eine Anregung, den ESP32 als Access Point optional aufzunehmen?

Das werde ich machen.

Gruß Fips

Derfips:
Das werde ich machen.

Das finde ich super! Wo kann ich erkennen, wenn Du fertig bist? Würdest Du hier eine Bemerkung schreiben?

Ich werde mein Projekt dann entsprechend Deiner Vorlage umstricken.

Inzwischen wurde die Seite Esp32 Webserver Arduino Tab um Esp32 Access Point Tab ergänzt. Ersteinmal danke dafür!

Wer es benutzt, hat Fragen.

Im Esp32 Access Point Tab steht WiFi.mode(WIFI_AP); für Access Point, das ist klar. Nun fand ich bei der ESP32 Admin Page aber eine fehlerhafte Anzeige (Bild linke Seite). Das als freundlichen Hinweis an Fips. Auf der Suche nach einer möglichen Fehlerquelle stolperte ich dann in Esp32 Admin Webinterface über WiFi.mode(WIFI_STA);, was mir als Widerspruch erscheint. Ein "AP" an dieser Stelle führt dann aber zu einer leeren Anzeige (Bild rechte Seite), also keine Verbesserung.

Nach meiner Vorstellung der Zusammenhänge dürfte nur entweder "STA" oder "AP" gültig sein. Da in meinem Fall das Programm den Zugang zum Router nicht kennt und WLAN ausgeschaltet ist, dürfte STA nicht funktionieren. Da es doch irgendwie funktioniert, bin ich nun irritiert. Ich bitte freundlich um Aufklärung meines wohl vorhandenen Gedankenfehlers.

agmue:
Nun fand ich bei der ESP32 Admin Page aber eine fehlerhafte Anzeige (Bild linke Seite). Das als freundlichen Hinweis an Fips.

Der Admin Tab ist bedingt durch verschiedene Funktionen für Ap oder STA, nur für den StationsMode ausgelegt.

STA --> getHostname()
AP --> softAPgetHostname()

agmue:
Nach meiner Vorstellung der Zusammenhänge dürfte nur entweder "STA" oder "AP" gültig sein.

Die Esp.. können AP und STA in einem sein.


WIFI_OFF
WIFI_STA
WIFI_AP
WIFI_AP_STA

Gruß Fips

Erstmal frohe Festtage und hoffentlich war der Osterhase großzügig! Die Nachbarskinder wurden gestern pünktlich versorgt, so daß sie bei strahlendem Sonnenschein auf die Suche gehen konnten. Ich wurde erst heute beliefert, brauchte aber dafür nicht zu suchen. Ich suche eher nach etwas Erleuchtung :slight_smile:

Meine Vorstellung:

WIFI_STA: Der ESP32 meldet sich beim Router ("station") im WLAN an und hat damit Zugriff auf das Internet. Der Browser im Laptop kann sich über die IP im LAN mit dem ESP32 als Webserver verbinden. /td]
WIFI_AP: Der ESP32 ist Access Point und der Browser im Laptop kann sich über die IP des ESP mit dem ESP32 als Webserver verbinden.
WIFI_AP_STA: Der ESP32 meldet sich beim Router im WLAN an und ist gleichzeitig Access Point.

Moment bitte, der Grill ruft!

agmue:
Moment bitte, der Grill ruft!

Der Link ist defekt, da öffnet sich kein Grill!! :smiley:

Hallo,

ich wollte auch mit dem SPIFFS arbeiten und dazu das zugehörige PlugIn installieren. Dazu muß man selbiges ja runterladen und in den Arduino\tools-Pfad entpacken. Bei einer steinalten Arduino-Version, die ich testweise mal installiert hatte, funktioniert das auch.

Ich habe auf Rechner hier aber Win10. Da krieg ich die neueste Arduino-Verion nur über den Microsoft-Store. Der installiert mir das gleich, ich kann nicht die Installationsdatei downladen und dann von der Festplatte aus installieren.
Was zu Folge hat, dass ich den richtigen tools-Pfad nicht finden kann.

Wäre da jemand in der glückliche Lage, mir einen Tipp zum suchen zu geben?

Mach eine portable Installation.
Kurzanleitung

Um Dateien im Spiffs zu verwalten brauchst du das Plugin nicht, das geht kompfortabler mit dem Webserver.

Gruß Fips