ESP Daten loggen und auf Webseite auslesen - Zugriffsregel?

Hallo,

ich denke mich gerade in ESP und Webserver rein und nutze fips Beispiele.
Zur Zeit logge ich Sensordaten in den Flash in eine Textdatei.
Diese Textdatei kann man sich mittels fips Webserver im Browser ausgelesen anzeigen lassen.

Im Hauptprogramm (loop) wird der Sensor beackert und Daten in die Datei im Flash geschrieben. Das ist komplett unter meiner Kontrolle.

Der Aufruf auf der Webseite vom Webserver aus liegt aber nicht unter meiner Kontrolle im Hauptprogramm. Die Funktion ruft irgendwann zu Zeitpunkt x der Browser auf.

Jetzt zu meiner Verständnisfrage.
Aus meiner Sicht gibt es keine sequentielle Abarbeitung der Funktionsaufrufe, weil die Funktion die die Webseite aufruft nicht im Hauptprogramm steht. Was macht das Programm wenn zufällig gerade Daten geschrieben werden sollen und gleichzeitig die Datei ausgelesen werden sollte. Die Datei wird in beiden Fällen "geöffnet". Kann es zu Datensalat kommen? Wenn nicht warum nicht? Wer verhindert das? Ist im Dateisystem LittleFS ein Schutzmechanismus eingebaut?

ESP32 - mehrere Kerne - konkurrierende Zugriffe möglich
ESP8266 - ein Kern - keine Konkurrenz

Gruß Tommy

Nach meiner Vorstellung, die falsch sein kann, ist das nicht relevant. Eher das, was Thommy schreibt mit den zwei Kernen. Allerdings läuft das Arduino-Programm nur auf einem Kern, weshalb ich optimistisch bin, daß es wie bei einem UNO abläuft. Der zweite Kern dürfte sich um das Funken und sowas kümmern.

Seit einem Jahr logge ich Daten mit einem ESP32 und bisher habe ich nur eine Störung festgestellt, als ich den Router ausgeschaltet habe. Das liegt aber an meinem nicht ausgereiften Programm, das ohne WLAN das Loggen "vergißt".

Doch, steht sie:

server.handleClient();

Gruß Tommy

Der 2. Kern bietet die Möglichkeit, dass man konkurrierende Tasks erstellen kann, nicht muss.

Gruß Tommy

Ich wußte nicht, wie ich es formulieren soll, aber ja, genau so :slightly_smiling_face:

Hallo,

wenn
server.handleClient();
sich um die Abfragen/Anforderungen vom Browser kümmert und das in loop aufgerufen wird, dann kommt sich nichts in die Quere, weil das sequentiell abgearbeitet wird. Ich schalte nicht zwischen den CPU Kernen um.

Das "WLAN Gedöhns" im Hintergrund wird automatisch vom Framework auf den 2. Kern gelegt wenn vorhanden?

Keine Ahnung, ich nutze keinen ESP32.

Gruß Tommy

Hallo,

okay, dennoch Danke Euch.

Da ich bislang keine Probleme hatte, habe ich mich nicht darum gekümmert, aber so wäre meine Vermutung, weil der zweite Kern sonst nichts zu tun hätte.

Wenn man die Kerne beide als 0 oder 1 einstellt dann mach das der Scheduler nach eigenen ermessen.

Bei meiner Wetter Station musste jedoch die Anteilen, hatte dauerhaften Reboot.

Hallo,

ich habe im Moment ein anderes Problem. Der Inhalt der localTime() wird nicht mehr aktualisiert. Nach Reset aktuell, dann bleibt es auf dem Stand stehen. Wobei wenn er es einmal aktuell hat, läuft das doch eigentlich lokal weiter bis zum nächsten Request zu einem Zeitserver. Bin gerade am abspecken und suchen ...

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