Storage - czyli przechowywanie danych w urządzeniach

krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

Chciałem zapisać wartość double za pomocą:

Code: Select all

Supla::Storage::WriteState((unsigned char *)&current_multi, sizeof(current_multi));

Supla::Storage::ReadState((unsigned char *)&current_multi, sizeof(current_multi));

double current_multi;
przy próbie odczytywania dostaję błąd: Warning! Attempt to read state outside of section size

Więc jak to zrobić aby było dobrze? :)
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

krycha88 wrote: Fri Dec 25, 2020 7:23 pm Chciałem zapisać wartość double za pomocą:

Code: Select all

Supla::Storage::WriteState((unsigned char *)&current_multi, sizeof(current_multi));

Supla::Storage::ReadState((unsigned char *)&current_multi, sizeof(current_multi));

double current_multi;
przy próbie odczytywania dostaję błąd: Warning! Attempt to read state outside of section size

Więc jak to zrobić aby było dobrze? :)
Nie wiem. Powinno działać ;). A jesteś pewien, że pierwszy zapis się wykonał? Jeśli tak, to podeślij większy fragment kodu
Najlepsze suple dla Twojego domu :mrgreen:
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

klew wrote: Fri Dec 25, 2020 11:44 pm
krycha88 wrote: Fri Dec 25, 2020 7:23 pm Chciałem zapisać wartość double za pomocą:

Code: Select all

Supla::Storage::WriteState((unsigned char *)&current_multi, sizeof(current_multi));

Supla::Storage::ReadState((unsigned char *)&current_multi, sizeof(current_multi));

double current_multi;
przy próbie odczytywania dostaję błąd: Warning! Attempt to read state outside of section size

Więc jak to zrobić aby było dobrze? :)
Nie wiem. Powinno działać ;). A jesteś pewien, że pierwszy zapis się wykonał? Jeśli tak, to podeślij większy fragment kodu
current_multi była zmienną globalną, jeżeli zmieniłem to w taki sposób to już działa:

Code: Select all

  void onLoadState() {
    double _current_multi;
    Supla::Storage::ReadState((unsigned char *)&_current_multi, sizeof(_current_multi));
    current_multi = _current_multi;
  }
  
  double current_multi;
Czy jest możliwość wymuszenia zapisania do eeproma niezależnie od ustawionego czasu setStateSavePeriod ??
https://gui-generic-builder.supla.io/
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

Jeszcze raz pozwolę się zapytać. Czy jest możliwość wymuszenia zapisania do eeproma niezależnie od ustawionego czasu setStateSavePeriod??

Próbowałem wykorzystać ten metody:

Code: Select all

Supla::Storage::SaveStateAllowed(0);
Supla::Storage::FinalizeSaveState();
zapisanie się powodzi ale przy wczytaniu wartości dostaję błąd:
"Validating storage state section with current device configuration
Element state section size doesn't match current device configuration"

da się to jakoś ugryźć?
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

krycha88 wrote: Mon Dec 28, 2020 9:31 am Jeszcze raz pozwolę się zapytać. Czy jest możliwość wymuszenia zapisania do eeproma niezależnie od ustawionego czasu setStateSavePeriod??

Próbowałem wykorzystać ten metody:

Code: Select all

Supla::Storage::SaveStateAllowed(0);
Supla::Storage::FinalizeSaveState();
zapisanie się powodzi ale przy wczytaniu wartości dostaję błąd:
"Validating storage state section with current device configuration
Element state section size doesn't match current device configuration"

da się to jakoś ugryźć?
Dodam metodę, która taki zapis wymusi. Ręcznie musiałbyś wykonać tą sekwencję:

Code: Select all

 Supla::Storage::PrepareState();
    for (auto element = Supla::Element::begin(); element != nullptr;
         element = element->next()) {
      element->onSaveState();
    }
    Supla::Storage::FinalizeSaveState();
 
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

klew wrote: Mon Dec 28, 2020 10:22 am Dodam metodę, która taki zapis wymusi.
Przy okazji, jak będziesz się do tego zabierał, to może auto save dla rolet po zmianie położenia?
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

lukfud wrote: Mon Dec 28, 2020 11:06 am
klew wrote: Mon Dec 28, 2020 10:22 am Dodam metodę, która taki zapis wymusi.
Przy okazji, jak będziesz się do tego zabierał, to może auto save dla rolet po zmianie położenia?
A co to zmienia?
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

klew wrote: Mon Dec 28, 2020 11:44 am A co to zmienia?
Nie rozumiem pytania ;)
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

lukfud wrote: Mon Dec 28, 2020 11:50 am
klew wrote: Mon Dec 28, 2020 11:44 am A co to zmienia?
Nie rozumiem pytania ;)
Po co zapis po zakończeniu ruchu? Co to zmienia względem aktualnej implementacji? W czym jest lepsze?
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

klew wrote: Mon Dec 28, 2020 12:16 pm
lukfud wrote: Mon Dec 28, 2020 11:50 am
klew wrote: Mon Dec 28, 2020 11:44 am A co to zmienia?
Nie rozumiem pytania ;)
Po co zapis po zakończeniu ruchu? Co to zmienia względem aktualnej implementacji? W czym jest lepsze?
Gdyby na urządzeniu oprócz rolety pojawił się inny element, dla którego chcielibyśmy ustawić interwał np. 2h, to dla rolety mógłby być on już za długi.
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl

Return to “Arduino IDE”