Storage - czyli przechowywanie danych w urządzeniach
-
- Posts: 5417
- Joined: Fri Nov 16, 2018 7:25 am
Jeszcze jedna mała wątpliwość, dlaczego przy starcie urządzenia najpierw wykonuje się onSaveState a dopiero później onLoadState ?? Czy to nie powinno być odwrotnie?
https://gui-generic-builder.supla.io/
-
- Posts: 9690
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Robi się onSaveState z opcją dryRun, które nic nie zapisują, a tylko udają. W efekcie zliczają ile bajtów pamięci jest potrzebne do zapisu i jest sprawdzane czy zgadza się to z aktualnym rozmiarem sektora.krycha88 wrote: Sun May 16, 2021 2:13 pm Jeszcze jedna mała wątpliwość, dlaczego przy starcie urządzenia najpierw wykonuje się onSaveState a dopiero później onLoadState ?? Czy to nie powinno być odwrotnie?
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 5417
- Joined: Fri Nov 16, 2018 7:25 am
Dzięki dopiero zacząłem na "poważnie" wykorzystywać ten sposób przechowywania danych. Więc mnie proste printy na początku metodody zmyliłyklew wrote: Sun May 16, 2021 2:31 pmRobi się onSaveState z opcją dryRun, które nic nie zapisują, a tylko udają. W efekcie zliczają ile bajtów pamięci jest potrzebne do zapisu i jest sprawdzane czy zgadza się to z aktualnym rozmiarem sektora.krycha88 wrote: Sun May 16, 2021 2:13 pm Jeszcze jedna mała wątpliwość, dlaczego przy starcie urządzenia najpierw wykonuje się onSaveState a dopiero później onLoadState ?? Czy to nie powinno być odwrotnie?
https://gui-generic-builder.supla.io/
-
- Posts: 2264
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
Krzysztofie, jak skutecznie użyć metody Storage::deleteAll();
Chciałbym przed SuplaDevice.begin() usunąć dane z fram'u, ale pomimo wcześniejszej inicjalizacji zewnętrznej pamięci i wywołania w/w metody, stany elementów nadal przywracane są z pamięci.
https://www.facebook.com/groups/supladiy/
-
- Posts: 9690
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Skuteczne:lukfud wrote: Sun Oct 15, 2023 4:13 pmKrzysztofie, jak skutecznie użyć metody Storage::deleteAll();
Chciałbym przed SuplaDevice.begin() usunąć dane z fram'u, ale pomimo wcześniejszej inicjalizacji zewnętrznej pamięci i wywołania w/w metody, stany elementów nadal przywracane są z pamięci.
rm -fr /
Sprawdzę to jutro.
Sprawdzałeś czy na standardowej implementacji eeprom to działa poprawnie?
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 2264
- Joined: Thu Nov 23, 2017 11:33 pm
- Location: Warszawa
Nie sprawdzałem, bo w przypadku eepromu wypełniam go zerami w innym miejscu.klew wrote: Sun Oct 15, 2023 5:04 pm Skuteczne:
rm -fr /
Sprawdzę to jutro.
Sprawdzałeś czy na standardowej implementacji eeprom to działa poprawnie?
Postaram się sprawdzić to jeszcze dziś.
--------------------
Przy eepromie jest tak samo.
Code: Select all
Storage initialization
readStorage: 8; Read: [53 55 50 4C 41 1 0 1 ]
Storage: Number of sections 1
Reading section: 0
readStorage: 7; Read: [3 9 0 A8 9F A8 9F ]
Section type: 3; size: 9
CRC1 40872, CRC2 40872, CRC calc 40872
Wrote 5 bytes to storage at 1537
Commit
# eeprom.deleteAll() #
Button[0]::setHoldTime: 350
Button[0]::setMulticlickTime: 350
Button[1]::setHoldTime: 350
Button[1]::setMulticlickTime: 350
Supla - starting initialization
Storage initialization
readStorage: 8; Read: [0 0 0 0 0 1 0 1 ]
Storage: missing Supla tag. Rewriting...
Wrote 8 bytes to storage at 1537
Commit
Config storage not configured
Validating storage state section with current device configuration
Storage state section validation completed. Loading elements state...
readStorage: 9; Read: [88 13 0 0 88 13 0 0 64 ]
RollerShutter[0] settings restored from storage. Opening time: 5000 ms; closing time: 5000 ms. Position: 100
https://www.facebook.com/groups/supladiy/
-
- Posts: 349
- Joined: Thu Feb 09, 2023 1:25 pm
Używam kilkanaście Wemos D1 Mini i ESP32 WROOM w licznikach itd.
Zgodnie z sugestią chcę zmienić miejsce zapisu danych na EEPRO/FRAM.
1. Schemat podłączenia jest w sieci: np: https://learn.adafruit.com/adafruit-spi ... g-and-test
2. Zgodnie z opisem z przykładu mam zmienić na FRAM:potem kompilacja i wgranie kodu, czy coś jeszcze trzeba zrobić?
3. Jakiej wielkości pamięć mam kupić?
Zgodnie z sugestią chcę zmienić miejsce zapisu danych na EEPRO/FRAM.
1. Schemat podłączenia jest w sieci: np: https://learn.adafruit.com/adafruit-spi ... g-and-test
2. Zgodnie z opisem z przykładu mam zmienić na FRAM:
Code: Select all
// Choose where Supla should store counter data in persistant memory We recommend to use external FRAM memory
// #define STORAGE_OFFSET 100
// #include <supla/storage/eeprom.h>
// Supla::Eeprom eeprom(STORAGE_OFFSET);
#include <supla/storage/fram_spi.h>
Supla::FramSpi fram(STORAGE_OFFSET);
3. Jakiej wielkości pamięć mam kupić?
-
- Posts: 9690
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Wielkość pamięci zależy od tego ile danych chcesz tam przechowywać, a to zależy od ilości użytych kanałów i tego ile one potrzebują przestrzeni.iM@rek wrote: Tue Dec 19, 2023 10:43 am Używam kilkanaście Wemos D1 Mini i ESP32 WROOM w licznikach itd.
Zgodnie z sugestią chcę zmienić miejsce zapisu danych na EEPRO/FRAM.
1. Schemat podłączenia jest w sieci: np: https://learn.adafruit.com/adafruit-spi ... g-and-test
2. Zgodnie z opisem z przykładu mam zmienić na FRAM:potem kompilacja i wgranie kodu, czy coś jeszcze trzeba zrobić?Code: Select all
// Choose where Supla should store counter data in persistant memory We recommend to use external FRAM memory // #define STORAGE_OFFSET 100 // #include <supla/storage/eeprom.h> // Supla::Eeprom eeprom(STORAGE_OFFSET); #include <supla/storage/fram_spi.h> Supla::FramSpi fram(STORAGE_OFFSET);
3. Jakiej wielkości pamięć mam kupić?
Każda klasa, która zapisuje stan do pamięci trwałej ma metody onLoadState i onSaveState - tam możesz podejrzeć ile danych jest zapisywane.
Ewentualnie w logach powinnien być print w stylu:
Code: Select all
13:19:58.877033 D (709) SUPLA: Storage initialization
13:19:58.877240 D (710) SUPLA: Storage: Number of sections 1
13:19:58.877410 D (715) SUPLA: Reading section: 0
13:19:58.877594 D (718) SUPLA: Section type: 3; size: 5
Tam jeszcze dochodzi trochę bajtów na nagłówek i sumę kontrolną.
Także w większości przypadków kilkadziesiąt/kilkaset bajtów powinno wystarczyć.
Tylko to jest bez żadnego "wear levelingu". Także weź pod uwagę ile cykli zapisu ma wybrana przez Ciebie pamięć i jak często chcesz tam zapisywać. Szczególnie istotne jest to przy licznikach, bo jeśli chcesz zapisywać stan licznika co 1 s, to 1 mln zapisów schodzi w 11 dni
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 349
- Joined: Thu Feb 09, 2023 1:25 pm
Dzięki.
W większości chodzi mi o liczniki prądu na Wemos D1 mini, 1x PZEM(3F) + 1xDS18B20.
A jak podejrzeć logi, kiedy to urządzenie jest już podłączone do sieci 3x230V oraz LAN/WAN i normalnie pracuje?
Mam jego nr IP z LAN, a połączenie nie jest szyfrowane.
Normalnie podłączam się terminalem przez serial, ale wolałbym uniknąć tego przy już zabudowanych w rozdzielni licznikach.
Zastanawiam się, czy nie taniej będzie wymienić Wemosy za jakiś czas wobec ceny kości pamięci, ale tak czy inaczej chciałbym przynajmniej jeden przerobić na FRAM, tak dla nauki
W większości chodzi mi o liczniki prądu na Wemos D1 mini, 1x PZEM(3F) + 1xDS18B20.
A jak podejrzeć logi, kiedy to urządzenie jest już podłączone do sieci 3x230V oraz LAN/WAN i normalnie pracuje?
Mam jego nr IP z LAN, a połączenie nie jest szyfrowane.
Normalnie podłączam się terminalem przez serial, ale wolałbym uniknąć tego przy już zabudowanych w rozdzielni licznikach.
Zastanawiam się, czy nie taniej będzie wymienić Wemosy za jakiś czas wobec ceny kości pamięci, ale tak czy inaczej chciałbym przynajmniej jeden przerobić na FRAM, tak dla nauki
-
- Posts: 9690
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Z tego co pamiętam, pzem ma własną pamięć i ESP tylko czyta i przesyła, bez przechowywania. Ale warto to sprawdzić, bo pamięć bywa zwodnicza.iM@rek wrote: Tue Dec 19, 2023 2:47 pm Dzięki.
W większości chodzi mi o liczniki prądu na Wemos D1 mini, 1x PZEM(3F) + 1xDS18B20.
A jak podejrzeć logi, kiedy to urządzenie jest już podłączone do sieci 3x230V oraz LAN/WAN i normalnie pracuje?
Mam jego nr IP z LAN, a połączenie nie jest szyfrowane.
Normalnie podłączam się terminalem przez serial, ale wolałbym uniknąć tego przy już zabudowanych w rozdzielni licznikach.
Zastanawiam się, czy nie taniej będzie wymienić Wemosy za jakiś czas wobec ceny kości pamięci, ale tak czy inaczej chciałbym przynajmniej jeden przerobić na FRAM, tak dla nauki
Kiedy będzie Supla Offline Party / SOP#2025 ?