Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Feature Request: Settings in settings.ini speichern (LittleFS statt EEPROM) #164

Closed
stefan123t opened this issue Aug 17, 2022 · 10 comments
Closed
Labels
enhancement New feature or request fixed dev fixed

Comments

@stefan123t
Copy link
Collaborator

Um die Settings zu speichern und beim Booten / Startup wieder zu lesen kann statt der festen EEPROM Struktur ggf auch ein SPIFFS/LittleFS verwendet werden.

  • SPIFFS ist eigentlich deprecated wird aber noch ca 1 Jahr in Arduino/ESP8266 weiter mitgeführt.
  • LittleFS ist ein copy-on-write FS (4k Blöcke) und hat daher eine schlechte(re) random write performance
  • Anleitung für LittleFS + PlatformIO hier

Es gibt mE zwei Möglichkeiten die Daten in der settings.ini/.json Datei abzuspeichern:

@stefan123t
Copy link
Collaborator Author

stefan123t commented Aug 18, 2022

Es gibt noch ein Caveat bzgl SPIFFS/LittleFS vs EEPROM:

  1. Internal EEPROM – 512 Bytes. You can write data 1 million times (but it has no file system).
  2. Flash memory – connected to ESP through SPI. In this flash memory, ESP stores the program, files, WiFi, and configurations. Limitation of this memory is it has only 10000 write cycles.

edit: according to other contradicting sources all FS and EEPROM use the same Flash memory area
and EEPROM does not even have wear-leveling.

@stefan123t
Copy link
Collaborator Author

stefan123t commented Sep 8, 2022

Wir müssen uns hier irgendwann entscheiden, ob wir eine ini Datei für die Config Properties der AhoyDTU pflegen wollen oder eine ArduinoJSON Datei.

  1. Ini Datei:
    +einfache Eintragungen
    -Typsicherheit / kein String delimiter
  2. Json Datei
    +Bibliothek ist bereits im Projekt included
    -kompliziertere Syntax
    -kein Hex Datentyp (vielleicht kann man das ja mit einem String machen ?)
    see #439 though JSON5 seems to suport hex in json docs.

@DanielR92
Copy link
Collaborator

Ich bin für Json, somit lässt sich später auch easy eine Export/Import funktion einbauen.

Wenn ich nächste Woche Zeit habe würde ich mich damit ausseinander setzen.
Hatte schon Testweise LCD in Betrieb genommen (einfacher Text).
RS485 war schwieriger (oder es liegt an mir).

Aber diese Funktion würde ich mal als wichtig entnehmen...

@stefan123t stefan123t added the ESP ESP8266 / ESP32 related label Sep 23, 2022
@lumapu
Copy link
Owner

lumapu commented Sep 23, 2022

aktuell gibt es doch keine nennenswerten Probleme mit dem Settings.
Ich bin nicht dafür es über das Filesystem zu machen, aktuell bin ich sehr glücklich wie es ist.

@stefan123t
Copy link
Collaborator Author

@lumapu +1 für den bisherigen Weg über EEPROM/Preferences settings.
Beim LittleFS wird mit mklittlefs.bin ein Filesystem Image erzeugt das mW alle Daten/Dateien auf dem bisherigen ESP filesystem ersetzt. Dabei werden auch ggf. dort gespeicherte Config settings überschrieben.
Ich habe noch keinen Weg gefunden die Daten aus data/ nur als Overlay zu flashen dh das andere Dateien wie config.ini/config.json erhalten bleiben.

@stefan123t
Copy link
Collaborator Author

@lumapu und @DanielR92 es mehreren sich die Anfragen und Wünsche ob wir die Settings auf JSON umstellen können.
Vielleicht ändern wir den Titel dieses Issues und machen erst die Umstellung auf JSON ?
Die JSON Config würde ich aber im EEPROM Bereich belassen.

Dann können wir den großen Rest des Flash Speichers jederzeit für LittleFS oder SPIFFS verwenden um dort z.B. HTML, CSS, SVG etc. Template Dateien für die Web Anwendung abzulegen ?
Mit den neuen ESP Web Tools auf https://ahoydtu.de/ können dann ja auch derartig komplexe Memory Layouts auf einen Schlag geflasht werden.

@lumapu
Copy link
Owner

lumapu commented Nov 8, 2022

ja wir sollten sehr bald was ändern, es nett zu zunehmend, dass ständig alles neu eingegeben werden muss.
Gibt es irgendein Beispiel wie wir es einfach integrieren könnten?

@lumapu
Copy link
Owner

lumapu commented Nov 8, 2022

@stefan123t bei den Settings sind wir bzgl der Größe inzwischen bei 0x2f2 von 0x3ff angekommen.
Ich bin mir nicht sicher, ob der Overhead vom JSON den Rahmen nicht sprengt.

@DanielR92
Copy link
Collaborator

Danke an @lumapu, ist nun auf LittleFuse geändert worden. Whoho! :D
Kann dann geclosed werden?

@lumapu
Copy link
Owner

lumapu commented Nov 16, 2022

nicht fuse sondern fs (Filesystem)
ich weiß du meintest fs ;-)

@lumapu lumapu closed this as completed Nov 16, 2022
@stefan123t stefan123t changed the title Settings in settings.ini speichern (LittleFS statt EEPROM) Feature Request: Settings in settings.ini speichern (LittleFS statt EEPROM) Jan 12, 2023
@stefan123t stefan123t added implemented implemented in development fixed dev fixed and removed ESP ESP8266 / ESP32 related implemented implemented in development labels Jan 12, 2023
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
enhancement New feature or request fixed dev fixed
Projects
None yet
Development

No branches or pull requests

3 participants