Witam
Chciałbym użyć klasy storage do zapisania wartości zmiennej np int mojaZmienna=2;
Przeglądałem metody w tej klasie. Czy to metoda writeStorage()?
Czy mógłby ktoś podać przykład jak taki zapis powinien wyglądać?
Storage - czyli przechowywanie danych w urządzeniach
-
klew
- Posts: 13905
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
A czemu nie chcesz używać Config? On raczej służy do przechowywania takich rzeczynebraska wrote: Mon Dec 08, 2025 8:53 pm Witam
Chciałbym użyć klasy storage do zapisania wartości zmiennej np int mojaZmienna=2;
Przeglądałem metody w tej klasie. Czy to metoda writeStorage()?
Czy mógłby ktoś podać przykład jak taki zapis powinien wyglądać?
Najlepsze suple dla Twojego domu 
-
nebraska
- Posts: 204
- Joined: Thu Dec 08, 2022 3:00 pm
- Been thanked: 1 time
W sumie nie pomyslalem o tym.klew wrote: Mon Dec 08, 2025 9:22 pmA czemu nie chcesz używać Config? On raczej służy do przechowywania takich rzeczynebraska wrote: Mon Dec 08, 2025 8:53 pm Witam
Chciałbym użyć klasy storage do zapisania wartości zmiennej np int mojaZmienna=2;
Przeglądałem metody w tej klasie. Czy to metoda writeStorage()?
Czy mógłby ktoś podać przykład jak taki zapis powinien wyglądać?
Czy tak powinien wyglądać zapis?
Metoda setInt32() przyjmuje dwa argumenty. Zapis zmiennej i nie wiem co ma być w tej drugiej?
Code: Select all
#include <Arduino.h>
#include <SuplaDevice.h>
#include <supla/storage/littlefs_config.h>
#include <supla/control/action_trigger.h>
#include <supla/control/button.h>
#include <supla/storage/eeprom.h>
#define STORAGE_OFFSET 512
Supla::Eeprom eeprom(STORAGE_OFFSET);
#define BUTTON_PIN 4
auto switch1 = new Supla::Control::Button(BUTTON_PIN, true, true);
bool flaga{false};
enum default_actions { BUTTON1_CLICK1 };
class addedActionsClass : public Supla::ActionHandler, public Supla::Element {
public:
addedActionsClass() {}
void handleAction(int event, int action) { // obsluga przyciskow z Supli
if (action == BUTTON1_CLICK1) {
printf("Klik x1 \n");
flaga = !flaga;
}
}
};
addedActionsClass *custAct = new addedActionsClass;
void setup() {
Serial.begin(115200);
switch1->setMulticlickTime(500, false);
switch1->addAction(BUTTON1_CLICK1, custAct, Supla::ON_CLICK_1);
SuplaDevice.begin();
}
void loop() {
if(!flaga) {
printf("zapis do eeprom \n");
flaga= !flaga;
int32_t zmienna = 3;
Supla::Storage::ConfigInstance()->setInt32( zmienna);
}}
-
klew
- Posts: 13905
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Szukasz pliku nagłówkowego i czytasz:
Code: Select all
virtual bool setInt32(const char* key, const int32_t value) = 0;
key to jakiś klucz (tekst) do 15 znaków, którym identyfikujesz dany parametr, np
Code: Select all
cfg->setInt32("moja_zm_1", 42);
cfg->saveWithDelay(2000);
Najlepsze suple dla Twojego domu 
-
nebraska
- Posts: 204
- Joined: Thu Dec 08, 2022 3:00 pm
- Been thanked: 1 time
Wgrałem kod i procek ciągle się resetuje.klew wrote: Mon Dec 08, 2025 9:57 pmSzukasz pliku nagłówkowego i czytasz:Code: Select all
virtual bool setInt32(const char* key, const int32_t value) = 0;
key to jakiś klucz (tekst) do 15 znaków, którym identyfikujesz dany parametr, npCode: Select all
cfg->setInt32("moja_zm_1", 42); cfg->saveWithDelay(2000);
Code: Select all
#include <Arduino.h>
#include <SuplaDevice.h>
#include <supla/storage/littlefs_config.h>
#include <supla/control/action_trigger.h>
#include <supla/control/button.h>
#include <supla/storage/eeprom.h>
#define STORAGE_OFFSET 512
Supla::Eeprom eeprom(STORAGE_OFFSET);
#define BUTTON_PIN 4
auto switch1 = new Supla::Control::Button(BUTTON_PIN, true, true);
bool flaga{false};
int32_t zmienna = 1;
auto cfg = Supla::Storage::ConfigInstance();
enum default_actions { BUTTON1_CLICK1 };
class addedActionsClass : public Supla::ActionHandler, public Supla::Element {
public:
addedActionsClass() {}
void handleAction(int event, int action) { // obsluga przyciskow z Supli
if (action == BUTTON1_CLICK1) {
printf("Klik x1 \n");
flaga = !flaga;
zmienna=2;
}
}
};
addedActionsClass *custAct = new addedActionsClass;
void setup() {
Serial.begin(115200);
Supla::Storage::Init();
switch1->setMulticlickTime(500, false);
switch1->addAction(BUTTON1_CLICK1, custAct, Supla::ON_CLICK_1);
Serial.print("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEprom: ");
Serial.println(zmienna);
SuplaDevice.begin();
}
void loop() {
if(!flaga) {
printf("zapis do eeprom \n");
flaga= !flaga;
cfg->setInt32("moja_zm_1", zmienna);
cfg->saveWithDelay(2000);
}}
-
klew
- Posts: 13905
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Najpierw musisz stworzyć instancję klasy typu "Config" i dopiero potem możesz pobrać na niego wskaźnik. Obecnie jest tam pewnie nullptr, na którym próbujesz działać -> crash.
Zobacz sobie przykłady WebInterface, albo CustomInputs.
Najlepsze suple dla Twojego domu 
-
vajera
- Posts: 7287
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
To:nebraska wrote: Mon Dec 08, 2025 10:10 pm Wgrałem kod i procek ciągle się resetuje.
Code: Select all
#include <Arduino.h> #include <SuplaDevice.h> #include <supla/storage/littlefs_config.h> #include <supla/control/action_trigger.h> #include <supla/control/button.h> #include <supla/storage/eeprom.h> #define STORAGE_OFFSET 512 Supla::Eeprom eeprom(STORAGE_OFFSET); #define BUTTON_PIN 4 auto switch1 = new Supla::Control::Button(BUTTON_PIN, true, true); bool flaga{false}; int32_t zmienna = 1; auto cfg = Supla::Storage::ConfigInstance(); enum default_actions { BUTTON1_CLICK1 }; class addedActionsClass : public Supla::ActionHandler, public Supla::Element { public: addedActionsClass() {} void handleAction(int event, int action) { // obsluga przyciskow z Supli if (action == BUTTON1_CLICK1) { printf("Klik x1 \n"); flaga = !flaga; zmienna=2; } } }; addedActionsClass *custAct = new addedActionsClass; void setup() { Serial.begin(115200); Supla::Storage::Init(); switch1->setMulticlickTime(500, false); switch1->addAction(BUTTON1_CLICK1, custAct, Supla::ON_CLICK_1); Serial.print("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEprom: "); Serial.println(zmienna); SuplaDevice.begin(); } void loop() { if(!flaga) { printf("zapis do eeprom \n"); flaga= !flaga; cfg->setInt32("moja_zm_1", zmienna); cfg->saveWithDelay(2000); }}
Code: Select all
addedActionsClass *custAct = new addedActionsClass;
Code: Select all
addedActionsClass *custAct = new addedActionsClass();
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: 7287
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
To ma ogarnięte:klew wrote: Mon Dec 08, 2025 10:25 pmNajpierw musisz stworzyć instancję klasy typu "Config" i dopiero potem możesz pobrać na niego wskaźnik. Obecnie jest tam pewnie nullptr, na którym próbujesz działać -> crash.
Zobacz sobie przykłady WebInterface, albo CustomInputs.
Code: Select all
auto cfg = Supla::Storage::ConfigInstance();
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
-
nebraska
- Posts: 204
- Joined: Thu Dec 08, 2022 3:00 pm
- Been thanked: 1 time
Zmienione. Nie mam pomysłu skąd ten resetvajera wrote: Mon Dec 08, 2025 10:27 pmTo:nebraska wrote: Mon Dec 08, 2025 10:10 pm Wgrałem kod i procek ciągle się resetuje.
Code: Select all
#include <Arduino.h> #include <SuplaDevice.h> #include <supla/storage/littlefs_config.h> #include <supla/control/action_trigger.h> #include <supla/control/button.h> #include <supla/storage/eeprom.h> #define STORAGE_OFFSET 512 Supla::Eeprom eeprom(STORAGE_OFFSET); #define BUTTON_PIN 4 auto switch1 = new Supla::Control::Button(BUTTON_PIN, true, true); bool flaga{false}; int32_t zmienna = 1; auto cfg = Supla::Storage::ConfigInstance(); enum default_actions { BUTTON1_CLICK1 }; class addedActionsClass : public Supla::ActionHandler, public Supla::Element { public: addedActionsClass() {} void handleAction(int event, int action) { // obsluga przyciskow z Supli if (action == BUTTON1_CLICK1) { printf("Klik x1 \n"); flaga = !flaga; zmienna=2; } } }; addedActionsClass *custAct = new addedActionsClass; void setup() { Serial.begin(115200); Supla::Storage::Init(); switch1->setMulticlickTime(500, false); switch1->addAction(BUTTON1_CLICK1, custAct, Supla::ON_CLICK_1); Serial.print("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEprom: "); Serial.println(zmienna); SuplaDevice.begin(); } void loop() { if(!flaga) { printf("zapis do eeprom \n"); flaga= !flaga; cfg->setInt32("moja_zm_1", zmienna); cfg->saveWithDelay(2000); }}zamień na to:Code: Select all
addedActionsClass *custAct = new addedActionsClass;
Code: Select all
addedActionsClass *custAct = new addedActionsClass();
