ESP Webserver: vorherige Variablenwerte anzeigen

Hallo,

Ich habe ein Webinterface in welchen man 4 Variablen definieren kann und welche dann auf dem ESP32 gespeichert werden. Das Speichern der Daten auf dem SPIFFS Speicher funktioniert auch super. Aber wie bringe ich die gespeicherten Werte wieder auf das Webinterface nach einem Neustart des ESP oder in einer neuen Browser-Session? Ich will nämlich die vorherigen Variablenwerte angezeigt bekommen.
Die HTML-Datei des Webinterfaces liegt ebenfalls als Datei im SPIFFS. Also irgendwie müsste der ESP sobald ein Request kommt nicht nur die HTML-Datei schicken sondern auch irgendwie 4 Funktionen im HTML-File ausführen (z.B. setLenth(5)). Diese 4 Funktionen sind bereits vorhanden und müssten nur ausgeführt werden und mit den entsprechenden Variablenwerten gefüttert werden.

Ne Idee ob das so überhaupt geht? Oder habt ihr einen anderen Lösungsansatz für mein Problem?

MFG

also du könntest du bei der Ausgabe des html auch das Attribut value mit dem bestehenden Wert befüllen.

<input name='masterIntervall' size='3' value='42'>

wenn du aber die ganze html datei im spiffs hast, wirds einfacher sein, du befüllst das Feld nach dem Laden der Seite mittels Javascript.

Ich verstehe Dein Problem nicht ganz. Was verstehst Du unter "vorherige Variablenwerte"?

Du speicherst Werte im SPIFFS. Die kannst Du ja problemlos im setup wieder lesen und dann hast Du sie zur Hand. Du musst sie ja nicht bei jedem Request neu lesen, Du hast sie ja im Speicher.

Wenn Du die Website aus dem SPIFFS auslieferst, dann musst Du über Javascript mit der Fetch-API (ist einfacher) oder AJAX die Daten anschließend in die Website im Browser nachladen.

Gruß Tommy

Hallo,

ich hab Dich da auch nicht ganz verstanden, Wie zeigst Du die Daten denn jetzt an. ? Jetzt gibst Du sie auf der Web Seite ein und schickst sie an den ESP. Wenn Du die Seite dann nochmal neu aufrufst dann sind sie auch 0 oder was? . Wenn nein wie kommen die Daten dann auf die Webseite.

Oder weisst Du nicht wie Du sie wieder aus dem Filesystem auslesen kannst.

Heinz

vier.html

<script>
 fetch('four').then(response => {
 return response.json();
 }).then(array => {
 alert(`wert1 = ${array[0]}\nwert2 = ${array[1]}\nwert3 = ${array[2]}\nwert4 = ${array[3]}`);
 });       
</script>

in setup einfügen

  server.on("/four", []() {
    server.send(200, "application/json", R"(["Value_1","Value_2","Value_3","Value_4"])");
  });

oder

  const String NAME[] {"erster", "zweiter", "dritter", "vierter"};
  server.on("/four", [ = ]() {
    String temp = "[";
    for (auto& el : NAME) {
      if (temp != "[") temp += ',';
      temp += "\"" + el + "\"";
    }
    temp += "]";
    server.send(200, "application/json", temp);
  });

Gruß Fips

Vielen Dank für die Antworten.
Das mit der Fetch-Api hört sich gut an. Ich wollte zwar eigentlich wissen ob ich es vermeiden kann, dass ich ne Seite aus dem Speicher lade und die dann wiederum Daten aus den Speicher nachlädt, also ob man das zusammen machen kann. Aber die Fetch-Api scheint das Problem ansich, welches ich habe, zu lösen also vielen Dank. Auch noch mal vielen Dank an Derfips für die Code-Beispiele :slight_smile:
Sorry für die späte Rückmeldung bin gerade nur etwas im Stress