float temperature in /index aus dem LittleFS anzeigen

Hallo mal wieder und guten Abend :slight_smile:

Ich grüble seit einiger Zeit darüber, wie ich eine temperatur-Variable in einer .html Datei welche aus dem Spiff geladen wird, anzeigen kann... :confused:

Was bisher geschah :smiley:
Wenn ich die feste IP des ESP8266 im Browser eingebe 192.168.178.222, wird aus dem Spiffs die /index.html geladen und korrekt
angezeigt. Einfach nur "ESP8266 Test".

Was auch funktioniert ist folgender Code, wenn ich 192.168.178.222/test aufrufe:

.
.
temperature_string = "Temperature: " + String((float)temperature,1) + " C";
  server.send(200, "text/html", temperature_string);
.
.

Auch habe ich es hinbekommen, mit
const char index_html[] PROGMEM = R"(
eine Seite im Code zu verankern und aufzurufen. Das klappt auch (allerdings ohne die temperature Variable).

Das nur damit Ihr seht, auf welchem Level ich ungefähr stehe.

Auch habe ich einen ur-alt Thread gefunden:
https://forum.arduino.cc/index.php?topic=347966.0
Aber ob das noch aktuell ist?

Nun möchte ich nämlich, dass die temperature Variable in der index.html angezeigt wird und komme nicht weiter....
Ich habe sehr viel gelesen und weiß nicht mehr, wie die einfachste Möglichkeit ist... :astonished:

  • replace?
  • iframe?
  • als String einfach hinten an die index.html irgendwie dranklöppeln, nachdem sie geladen wurde? Wie im groben würde das gehen?
  • mit %placeholdern% und processor function ?

Wenn möglich ohne Ajax, PHP, JSON, fetchApi, da es wirklich nur um eine Temperatur geht :sunglasses:

Kann mich jemand auf den richtigen Weg schubsen? DANKE euch :slight_smile:

Wie dort auch schon geschrieben: Teil1 mit Inhalt vor Wert, Wert, Teil2 Inhalt nach Wert. Das ist der grobe Weg.
Ansonsten statische HTML-Seite mit Javascript, die sich ihre Daten per Fetch-API vom Server holt.
Schau mal bei Fips rein, wenn Du dazu Beispiele suchst.

Gruß Tommy

Tommy56:
Teil1 mit Inhalt vor Wert, Wert, Teil2 Inhalt nach Wert. Das ist der grobe Weg.

OK Danke! Das verstehe ich so:
Ich splitte die Datei im Spiffs in index1 und index2 und "verbinde" sie dann mit meinem variablen Zwischenteil mit der temperature Variable, richtig?

Wo und wie werden die Teil zusammengefügt? Nach welchem Befehl muss ich suchen?

Wird das alles bei "server.on" zusammengefügt wie 3 Strings?

Wenn Du Dir das Beispiel EspBoardLed.ino von Fips anschaust, wird dort der Inhalt der HTML-Datei in String temp zusammengestellt und dann übertragen.

Im Beispiel Ds18b20.ino wird nur etwas Text als JSON zur HTML-Datei geschickt, die die Anzeige mittels Javascript aktualisiert. Die HTML-Datei liegt im Dateisystem des ESP.

Du mußt Dich entscheiden, welche Variante Du möchtest.

Hallo,

eine andere Möglichkeit Du ersetzt in der HTML die Variable durch eine Platzhalter. z.B
Temperatur : %3.1f°C

Dann ließt du die komplette HTML Seite in eine Zeichenkette htmlstring und verwendest im Weiteren

sprintf(sendestring,htmlstring,temperatur);
server.send(200, "text/html", sendbuffer);

Das ist jetzt zwar nicht der elegante Weg, aber für eine kleine HTML Seite mit einer Variablen geht das. wenn Du es aber richtig machen willst dann bist Du bei Fips gut aufgehoben.

Heinz

PS: an die Spezis , bitte nicht hauen :wink:

Rentner:
PS: an die Spezis , bitte nicht hauen :wink:

Ein ganz freundlicher Hinweis:

int snprintf ( char * s, size_t n, const char * format, ... );

snprintf fände ich besser, weil es die Länge von sendestring enthält und damit einen Feldüberlauf zur Laufzeit verhindert.

Danke so weit :slight_smile:

„Apr 11, 2021, 09:16 am Last Edit: Apr 11, 2021, 09:18 am by Rentner
Dann ließt du die komplette HTML Seite in eine Zeichenkette htmlstring und verwendest im Weiteren“

Aber dann könnte ich die Seite ja auch gleich in den Code (als Tab zum Beispiel) direkt einbauen.
Das ist für mich als Einsteiger gefühlt dann einfacher zu handhaben... grübel

Ich denke, so werde ich mal klein anfangen :slight_smile:

progger:
Danke so weit :slight_smile:

„Apr 11, 2021, 09:16 am Last Edit: Apr 11, 2021, 09:18 am by Rentner
Dann ließt du die komplette HTML Seite in eine Zeichenkette htmlstring und verwendest im Weiteren“

Aber dann könnte ich die Seite ja auch gleich in den Code (als Tab zum Beispiel) direkt einbauen.
Das ist für mich als Einsteiger gefühlt dann einfacher zu handhaben... grübel

Ich denke, so werde ich mal klein anfangen :slight_smile:

Hallo,

das stimmt - fast. Stell dir vor du hast mehrere Seiten dann müsstest Du beide im Sketch halten. Im FS liegen sie zwar auch im Speicher aber von dem ist ja genug vorhanden. Zudem lassen sich HTML Seiten auf einem Editor besser testen.

Heinz

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.