ESP32: HTML sinnvoll generieren

OP #7387332
Lesenswert?

Ich habe vor kurzem den Einstieg in die ESP32 Module gewagt. Zum Entwickeln nutze ich hierfür Visual Studio Code mit dem ESP-IDF Plugin.

Im Moment arbeite ich mich noch hauptsächlich durch die Beispiele durch.

Ein Argument für ESP32 war für mich WLan, so dass ich "kleine" Status- und Konfigurationswebseiten generieren kann.

Html generell auszugeben habe ich schon geschafft. Hierfür war der Html String einfach festkodiert im Code. Ich habe schon gelesen, dass man auch eine Html Datei im Flash ablegen kann - was mir schon etwas "sauberer" und ressourcenschonender erscheint.

Wie oben geschrieben, möchte ich die Webserver Funktionalität nutzen, um eben Konfigurations- und Statuswebseiten auszugeben. Somit wären in der Html Datei sehr viele Platzhalter, die vor dem Ausliefern mit den aktuellen Werten ersetzt werden müssten.

Eine Möglichkeit ist wohl sprintf(), aber ich glaube das wird sehr schnell unübersichtlich... Was ist also die "beste" Möglichkeit auf einem ESP32 Html zu generieren und die Platzhalter zu befüllen?

#7387390
Lesenswert?

Troll A. schrieb:

Was ist also die "beste" Möglichkeit auf einem ESP32 Html zu generieren und die Platzhalter zu befüllen?

Platzhalter nicht befüllen, sondern zur Laufzeit via xhtmlhttprequest vom Webclient befüllen lassen.

Dein µC liefert also a) eine statische Seite mit etwas Javscript aus und antwortet b) gezielt auf einzelne Anfragen, auf die hin er nur Werte ausliefert, die vom Javascript auf dem Client in die Seite eingebunden werden.

Damit lassen sich auch zur Laufzeit veränderliche Werte anzeigen, indem nur via xmlhttprequest die dynamischen Daten zyklisch aktualisiert werden. Das braucht weniger Bandbreite als eine komplette Neuübertragung der ganzen Seite.

#7387416
Lesenswert?

Das nervigste Problem - bis die Seiten so aussehen, wie ich sie haben will brauche ich unzählige Versuche. Die hunderte von Uploads dauern ewig.

So finde ich das mit den statischen Seiten den besten Ansatz. Während der Entwicklung kann man dann HTML, CSS und Javascript direkt vom PC laden. Ohne Upload auf den ESP.

Alle statischen Seiten kannst du mit einem server.serveStatic("/", SPIFFS, "/www/") ausliefern. Du kannst die Daten auch über Websocket schicken. Der ESP kann dann dem Browser bei Änderungen sofort Bescheid geben.

P.S. ESP-IDF finde ich unnötig aufwendig. Meist reichen die Arduino Module mit ihren Default-Einstellungen aus. Und wenn nicht, kannst du die IDF Funktionen immer noch nutzen. Der ESPAsyncWebServer liefert alles mit, was du für SPIFFS oder Websockets brauchst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren