Forum: Mikrocontroller und Digitale Elektronik ESP32: HTML sinnvoll generieren


von Troll A. (trollator)


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?

von Matthias S. (mat-sche)


Lesenswert?

Guten Morgen,

Schau Dich mal unter: https://fipsok.de/
um. Dort findest du alles für den Einstieg.

MAT

von Harald K. (kirnbichler)


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.

von Troll A. (trollator)


Lesenswert?

Harald K. schrieb:
> 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.

Danke, das klingt sehr vielversprechend!
Werde ich mir mal näher anschauen.

von Xanthippos (xanthippos)


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.

: 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.