Storage - czyli przechowywanie danych w urządzeniach
-
veeroos
- Posts: 1081
- Joined: Sun Mar 20, 2022 9:30 am
- Location: Głogów
- Has thanked: 1 time
- Been thanked: 9 times
Tak Preferences działa na NVS, właśnie wiem że tam odradzają częste zapisy, dlatego szukałem jakiejś alternatywy. Chciałbym tego użyć do licznika energii, który w układzie pomiarowym nie pamięta po resecie aktualnego zużycia. Zużycie miesięczne jest normalnie zapisywane w Cloudzie (chyba). Dlatego cyklicznie co chwilę bym zapisywał dane a po resecie do aktualnego zużycia bym dopisywał zapamiętaną ostatnią przed resetem wartość. Przez Preferences to zrobiłem z zapisem co 5minut, ale nie chcę zamordować pamięci
Zamel Mew-01, Zamel PEW-01, Zamel SBW-01, Zamel THW-01, Zamel SRW-01, Zamel mSLW-02, Auraton BOX + Indor Sensor, Airly Gate By Veeroos, Zigbee to Supla Gateway + sensors, Zamel SGW-01 and more
https://github.com/v33r005
https://github.com/v33r005
-
shimano73
- Posts: 2174
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
- Been thanked: 1 time
Kiedyś pomagałem przy pewnym projekcie w którym trzeba było szybko zapisać wartość licznika. Zrobiliśmy to tak że licznik był w RAMie a sprzęt wykrywał zanik napięcia i dopiero wówczas zapisywany był do flash’a ale tylko gdy występowała różnica w wartościach
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Wezmę udział w Supla Offline Party 2024
Wezmę udział w Supla Offline Party 2024
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
Wygląda na to, że zapis do NVS (EEPROM, Preferences) opiera się o wear leveling:veeroos wrote: Tue Jan 06, 2026 8:59 am Tak Preferences działa na NVS, właśnie wiem że tam odradzają częste zapisy, dlatego szukałem jakiejś alternatywy. Chciałbym tego użyć do licznika energii, który w układzie pomiarowym nie pamięta po resecie aktualnego zużycia. Zużycie miesięczne jest normalnie zapisywane w Cloudzie (chyba). Dlatego cyklicznie co chwilę bym zapisywał dane a po resecie do aktualnego zużycia bym dopisywał zapamiętaną ostatnią przed resetem wartość. Przez Preferences to zrobiłem z zapisem co 5minut, ale nie chcę zamordować pamięci
https://docs.espressif.com/projects/es ... lash.html
Note
NVS component includes flash wear levelling by design. Set operations are appending new data to the free space after existing entries. Invalidation of old values doesn't require immediate flash erase operations. The organization of NVS space to pages and entries effectively reduces the frequency of flash erase to flash write operations by a factor of 126.
ESP32 Arduino Preferences Lib also uses NVS, very similar to EEPROM Lib.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
klew
- Posts: 13908
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Tak, ale ilość zapisów zależy nadal od danych oraz od rozmiaru partycji dla nvs.
Jeśli zysk byłyby te 126 razy, to z 2-3 dni życia układu, będziemy mieli około 1 roku. Nadal mało
Ja tego typu zapis robię na partycji o rozmiarze około 400 kB - to daje żywotność koło 70 lat przy zapisach co kilka sekund.
Można by to rozwiązanie przenieść do "Arduino", ale wymaga ono definiowania własnych układów partycji, co w Arduino chyba do najprostszych nie należało (ale w sumie nigdy tego nie próbowałem)
Najlepsze suple dla Twojego domu 
-
[email protected]
- Posts: 1585
- Joined: Mon Feb 06, 2023 8:56 am
- Has thanked: 18 times
- Been thanked: 26 times
https://github.com/serifpersia/esp32partitiontool
Pod starym Arduino IDE (1.8.x) cos nie działało, pod VS code i Platform.io bez problemu
Pod starym Arduino IDE (1.8.x) cos nie działało, pod VS code i Platform.io bez problemu
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
W sumie to nie jest skomplikowane, w bramce Z2S mamy to prawie od początku (custom partition dla 4MB FLASH).klew wrote: Tue Jan 06, 2026 10:09 am
Można by to rozwiązanie przenieść do "Arduino", ale wymaga ono definiowania własnych układów partycji, co w Arduino chyba do najprostszych nie należało (ale w sumie nigdy tego nie próbowałem)
Natomiast doczytałem, że LittleFS również wspiera WL, więc pytanie czy jest sens schodzić aż tak niskopoziomowo?
Z drugiej strony pytanie do Roberta - robisz zapis stanu licznika co 3 sekundy - czy ta częstotliwość pomiaru ma jakąś przewagę nad zapisem np. co 10 sekund? Pytam, bo nie wiem jaką wartość fizyczną mierzy ten licznik i jak dużą zmianę może odnotować w przypadku dziesięciosekundowej przerwy (która zdarzy się pewnie raz na kilka dni/tygodni)?
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
W Arduino IDE wystarczy edycja pliku partitions.csv.[email protected] wrote: Tue Jan 06, 2026 11:54 am https://github.com/serifpersia/esp32partitiontool
Pod starym Arduino IDE (1.8.x) cos nie działało, pod VS code i Platform.io bez problemu
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
[email protected]
- Posts: 1585
- Joined: Mon Feb 06, 2023 8:56 am
- Has thanked: 18 times
- Been thanked: 26 times
zawsze wystarczy, ale weź to przeliczaj jak przesuwasz rozmiaryvajera wrote: Tue Jan 06, 2026 12:03 pmW Arduino IDE wystarczy edycja pliku partitions.csv.[email protected] wrote: Tue Jan 06, 2026 11:54 am https://github.com/serifpersia/esp32partitiontool
Pod starym Arduino IDE (1.8.x) cos nie działało, pod VS code i Platform.io bez problemu
-
veeroos
- Posts: 1081
- Joined: Sun Mar 20, 2022 9:30 am
- Location: Głogów
- Has thanked: 1 time
- Been thanked: 9 times
No właśnie może to być co 10 sekund, tak jak wspomniałem wcześniej to jest układ pomiaru energii elektrycznej, zaciekawił mnie też temat:vajera wrote: Tue Jan 06, 2026 12:02 pm Z drugiej strony pytanie do Roberta - robisz zapis stanu licznika co 3 sekundy - czy ta częstotliwość pomiaru ma jakąś przewagę nad zapisem np. co 10 sekund? Pytam, bo nie wiem jaką wartość fizyczną mierzy ten licznik i jak dużą zmianę może odnotować w przypadku dziesięciosekundowej przerwy (która zdarzy się pewnie raz na kilka dni/tygodni)?
Bo to by wystarczyło w zupełności, bez kombinowania, tyle czy zdążą się wartości zapisać...shimano73 wrote: Tue Jan 06, 2026 10:01 am Kiedyś pomagałem przy pewnym projekcie w którym trzeba było szybko zapisać wartość licznika. Zrobiliśmy to tak że licznik był w RAMie a sprzęt wykrywał zanik napięcia i dopiero wówczas zapisywany był do flash’a ale tylko gdy występowała różnica w wartościach
A co do podziału partycji to znalazłem fajne narzędzie które generuje csv.
https://thelastoutpostworkshop.github.i ... onBuilder/
Zamel Mew-01, Zamel PEW-01, Zamel SBW-01, Zamel THW-01, Zamel SRW-01, Zamel mSLW-02, Auraton BOX + Indor Sensor, Airly Gate By Veeroos, Zigbee to Supla Gateway + sensors, Zamel SGW-01 and more
https://github.com/v33r005
https://github.com/v33r005
