Storage - czyli przechowywanie danych w urządzeniach
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/
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.
Widzimy się na Supla Offline Party vol. 2
Dzięki dopiero zacząłem na "poważnie" wykorzystywać ten sposób przechowywania danych. Więc mnie proste printy na początku metodody zmyliły
https://gui-generic-builder.supla.io/
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/
Skuteczne:
rm -fr /
Sprawdzę to jutro.
Sprawdzałeś czy na standardowej implementacji eeprom to działa poprawnie?
Widzimy się na Supla Offline Party vol. 2
Nie sprawdzałem, bo w przypadku eepromu wypełniam go zerami w innym miejscu.
Postaram się sprawdzić to jeszcze dziś.
--------------------
Przy eepromie jest tak samo.
Kod: Zaznacz cały
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/
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:
Kod: Zaznacz cały
// 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ć?
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 pisze: ↑wt gru 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ć?Kod: Zaznacz cały
// 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:
Kod: Zaznacz cały
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
Widzimy się na Supla Offline Party vol. 2
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
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 pisze: ↑wt gru 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
Widzimy się na Supla Offline Party vol. 2