Do rzeczy, jakie teraz mamy mechanizmy / narzędzia w supladevice do zapamiętania zmiennej we "eeprom" . Potrzebuję zapamiętać wartość przed wyłączeniem sie układu.
Kłopoty z pamiecią
-
shimano73
- Posts: 2174
- Joined: Sun Feb 28, 2016 12:27 pm
- Location: Orzesze
- Been thanked: 1 time
Hej, dawno już nic nie pisałem , żadnego kodu i mam duże zaległości a pamięć już nie ta, choć nigdy nie była za dobra
Do rzeczy, jakie teraz mamy mechanizmy / narzędzia w supladevice do zapamiętania zmiennej we "eeprom" . Potrzebuję zapamiętać wartość przed wyłączeniem sie układu.
Do rzeczy, jakie teraz mamy mechanizmy / narzędzia w supladevice do zapamiętania zmiennej we "eeprom" . Potrzebuję zapamiętać wartość przed wyłączeniem sie układu.
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: 7286
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
Moja rekomendacja - użyj biblioteki Preferences ("EEPROM" też jest zaimplementowany z jej użyciem).shimano73 wrote: Fri Jul 17, 2026 6:16 am Hej, dawno już nic nie pisałem , żadnego kodu i mam duże zaległości a pamięć już nie ta, choć nigdy nie była za dobra![]()
Do rzeczy, jakie teraz mamy mechanizmy / narzędzia w supladevice do zapamiętania zmiennej we "eeprom" . Potrzebuję zapamiętać wartość przed wyłączeniem sie układu.
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
shimano73 wrote: Fri Jul 17, 2026 6:16 am Hej, dawno już nic nie pisałem , żadnego kodu i mam duże zaległości a pamięć już nie ta, choć nigdy nie była za dobra![]()
Do rzeczy, jakie teraz mamy mechanizmy / narzędzia w supladevice do zapamiętania zmiennej we "eeprom" . Potrzebuję zapamiętać wartość przed wyłączeniem sie układu.
Kiedyś bazując na zapisie do EEPROM natknąłem się na problem. Potrzebowałem przy starcie ESP wyciągnąć dane z EEPROM(zmiennej) ale istotne było czy ten zapis już wcześniej był robiony. Można takie coś zrealizować flagami w kodzie programu ale co jeśli jest to pierwsze uruchomienie ESP? W tym momencie jak zbawienie przyszła właśnie wiedza o użyciu Preferences a dokładnie NVS/Preferences.vajera wrote: Fri Jul 17, 2026 6:32 am ....
Moja rekomendacja - użyj biblioteki Preferences ("EEPROM" też jest zaimplementowany z jej użyciem).
NVS przechowuje istnienie klucza niezależnie czy wartość była zapisywana. isKey() w Preferences mówi, czy wartość była wcześniej zapisana.
Może przyda Ci się też ta dodatkowa informacja.
-
klew
- Posts: 13905
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Pytanie czy chcesz to używać w jakiejś funkcji mocno wbudowanej w supla-device, czy robisz coś zupełnie obok
.
SD ma tutaj dwa główne mechanizmy:
- klasy Supla::Storage do przechowywania stanu kanałów - same zapisują, same odczytują, całkowita wielkość danych nie może się zmeiniać, bo wszyskto wtedy jest kasowane i pisane od nowa. W Arduino mamy tu dwie implenentacje Supla::Eeprom i Supla::Fram. W buildach esp-idf mamy dodatkowe mechanizmy z SUPLOwą obsługą wear leveling. W zasadzie możemy na flashu pisać co 5 s 24h/dobę przez 30 lat bez ryzyka uszkodzenia flash (oczywiście przy spełnieniu odpowiednich warunków).
- klasy Supla::Storage::Config do przechowywania konfiguracji - tutaj zasada jest taka, że to nie zmienia się często. W Arduino opiera się to na własnej implementacji Supla::KeyValue przechowywanej jako pliki na LittleFs (klasa Supla::LittleFsConfig). Ten KeyValue to była moja odpowiedź na NVS z esp-idf (którego używam w urządzeniach opartych na esp-idf). W tamtych czasach nie było jeszcze wspomnianego wcześniej Preferences. Chwilę potem pojawiło się Preferences dla ESP32 na Arduino, ale nadal brakowało dla ESP8266. Więc zamiast pisać osobną implementację dla ESP32 i ESP8266 na Arduino, to napisałem jedną współną "KeyValue". Preferences to w zasadzie wrapper na NVS z esp-idf.
Używając klas SUPLOwych, wpinasz się pod life-cycle urządzenia SUPLI
. Czyli np. SD wspiera "factory reset", który dba o to, aby sprzątnąć Supla::Storage oraz Supla::Storage::Config. Jak dodasz te ustawienia do Preferences, to factory reset z SD ich nie sprzątnie.
SD ma tutaj dwa główne mechanizmy:
- klasy Supla::Storage do przechowywania stanu kanałów - same zapisują, same odczytują, całkowita wielkość danych nie może się zmeiniać, bo wszyskto wtedy jest kasowane i pisane od nowa. W Arduino mamy tu dwie implenentacje Supla::Eeprom i Supla::Fram. W buildach esp-idf mamy dodatkowe mechanizmy z SUPLOwą obsługą wear leveling. W zasadzie możemy na flashu pisać co 5 s 24h/dobę przez 30 lat bez ryzyka uszkodzenia flash (oczywiście przy spełnieniu odpowiednich warunków).
- klasy Supla::Storage::Config do przechowywania konfiguracji - tutaj zasada jest taka, że to nie zmienia się często. W Arduino opiera się to na własnej implementacji Supla::KeyValue przechowywanej jako pliki na LittleFs (klasa Supla::LittleFsConfig). Ten KeyValue to była moja odpowiedź na NVS z esp-idf (którego używam w urządzeniach opartych na esp-idf). W tamtych czasach nie było jeszcze wspomnianego wcześniej Preferences. Chwilę potem pojawiło się Preferences dla ESP32 na Arduino, ale nadal brakowało dla ESP8266. Więc zamiast pisać osobną implementację dla ESP32 i ESP8266 na Arduino, to napisałem jedną współną "KeyValue". Preferences to w zasadzie wrapper na NVS z esp-idf.
Używając klas SUPLOwych, wpinasz się pod life-cycle urządzenia SUPLI
Najlepsze suple dla Twojego domu 
-
Duch__
- Posts: 2199
- Joined: Wed Aug 24, 2016 7:26 pm
- Location: Opole
- Been thanked: 6 times
Jeśli dane nie są strategiczne i mogą ulec uszkodzeniu przy brak zasilania, ale zależy na przechowywaniu na czas resetu to polecam RTC RAM. Używam tego np w urządzeniach które chodzą spać, by po restarcie kontynuowały liczenie. Ważna jest tylko suma kontrolna CRC przechowywanych danych by stwierdzić po resecie czy dane są prawidłowe czy nie.
-
veeroos
- Posts: 1081
- Joined: Sun Mar 20, 2022 9:30 am
- Location: Głogów
- Has thanked: 1 time
- Been thanked: 9 times
Ja stosuje Preferences jako znacznik tego czy zostały zablokowane lockbity ESP, po to aby co restart układu nie szła komenda do ich blokowania, więc odpytuję o konkretny bit, jeśli nie jest ustawiony do blokuję procesor przed odczytem i niepowołanym dostępem, no i oczywiście zwykłym resetem ustawień tak jak Krzysztof wspomniał nie skasuje się jego stan.
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
-
klew
- Posts: 13905
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
eFuse możesz odczytywać z eFuseveeroos wrote: Wed Jul 22, 2026 9:21 am Ja stosuje Preferences jako znacznik tego czy zostały zablokowane lockbity ESP, po to aby co restart układu nie szła komenda do ich blokowania, więc odpytuję o konkretny bit, jeśli nie jest ustawiony do blokuję procesor przed odczytem i niepowołanym dostępem, no i oczywiście zwykłym resetem ustawień tak jak Krzysztof wspomniał nie skasuje się jego stan.
Możesz też dać domyślny profil aplikacji na full encrypted & locked - wtedy bootloader + apka same o to dbają przy uruchamianiu binarki.
Najlepsze suple dla Twojego domu 
-
veeroos
- Posts: 1081
- Joined: Sun Mar 20, 2022 9:30 am
- Location: Głogów
- Has thanked: 1 time
- Been thanked: 9 times
W arduino też tak można ustawić?
. Do arduino tylko znalazłem sposób z ustawianiem Fusebitów. Jakoś przymierzam się do zmiany narzędzia, ale jakoś brak mi czasu na wgryzienie się jak to wszystko porządnie skonfigurować.
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
-
klew
- Posts: 13905
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Ogólnie w Arduino jest dostępny cały esp-idf. Trzeba tylko odpowiednie include dodać i można używać. Teoretycznie dostępność części funkcji zależy od sposobu budowania, ale większość rzeczy dostępnych pośrednio w Arduino powinno działać też przy bezpośrednim użyciu.
Najlepsze suple dla Twojego domu 
