KPOP w supla-device

User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

klew wrote: Sat Nov 23, 2024 5:37 pm
SOYER wrote: Sat Nov 23, 2024 5:11 pm A jak esp zrobi reset w środku ulewy? Nie będę znał intensywności opadów;)
Godzinowy opad zawiera dane o opadzie w ciągu godziny :P.
Przy zapisie co godzinę, możesz utracić dane z ostatnich ~60 min. A jak już minie godzina i wyślesz te dane na serwery, to już tego nie potrzebujesz.
Także trzeba by częściej to zapisywać, aby tego pomiaru godzinnego nie utracić.

BTW. wrzuciłem przed chwilą drobną aktualizację dla KLOP-a - doszła metdoa setKeepStateInStorage(bool) - jak odalisz ją z "true", to klasa będzie zapisywać stan do Storage.
Także będzie to działało dość podobnie do IC.
Czyli coś takiego:
rain24h->setKeepStateInStorage(true); w SETUP?
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Tak
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

'class Supla::Sensor::GeneralPurposeMeter' has no member named 'setKeepStateInStorage'
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Tyle, że ja nie chcę zapisywać do pamięci stanu kanału, bo ten się zmienia co 10 min, tylko stan zmiennej zmienianej przez przerwania, którą to zmienne obrabiam na stan kanału właśnie co 10 min.
Ponawiam pytanie jak użyć supla storage do zapisania interesującej mnie zmiennej w określonym czasie. Naprawdę nie wiem.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Supla::Storage nie jest do zapisywania samodzielnie, tylko w ramach onSaveState/onLoadState w klasach dziedziczących po Element.

Do zapisu stanu możesz używać innych metod dostępnych w Arduino IDE, z uwzględnieniem tego co sd używa.
Sd używa do zapisu tych klas Storage oraz Config.
Config jest plikiem na LittleFs. A Storage na "Eeprom".
Oczywiście nie musisz używać Storage, jeśli nie potrzebujesz zapamiętywać stanu kanałów Supli.

Bez Configa żyje się trudnej i nie zawsze się da (HVAC, kpop, klop potrzebują Configa).

Możesz też stan wrzucać do Configa - tam zapisuje się i odczytuje używając klucza 16 znaków.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Dziękuję za wyczerpującą odpowiedź.
Czyli zrobię to standardowo:
rai1h++;
EEPROM.write(1, rai1h);
rai24h++;
EEPROM.write(2, rai24h);
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

@klew
czy takie coś będzie działać:

Code: Select all

const int analogInPin = gleba_pin;
//////////////////////////////////////////////////////////////////
AnalogValue(analogInPin) *cz_gleby = nullptr;
////////////////////////////////////////////////////////////////////////
class AnalogValue : public Supla::Sensor::GeneralPurposeMeasurement {
  public:
    AnalogValue(int pin) : pin(pin) {
    }

    void onInit() {
      pinMode(pin, INPUT);
      channel.setNewValue(getValue());
    }
    double getValue() {
      return analogRead(pin);
    }
  protected:
    int pin;
};
///////////
setup()
    cz_gleby = new AnalogValue(analogInPin);
?
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

Code: Select all

const int analogInPin = gleba_pin;
//////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////
class AnalogValue : public Supla::Sensor::GeneralPurposeMeasurement {
  public:
    AnalogValue(int pin) : pin(pin) {
    }

    void onInit() {
      pinMode(pin, INPUT);
      channel.setNewValue(getValue());
    }
    double getValue() {
      return analogRead(pin);
    }
  protected:
    int pin;
};
///////////
setup()
    new AnalogValue(analogInPin);
To się ładnie skompilowało, ale będzie się wyświetlać jako KPOP?
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Powinno działać.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

@klew, krótka historia w dwóch screenach.
KLOP, opady deszczu dobowe, t.j. szkic zlicza opady przez 24h i bieżący stan licznika wysyła na serwery, a o północy jest zerowany i zlicza od nowa.
Popatrz na wykresy z ostatniej doby, wykres minutowy i godzinowy, kompletnie nieprzydatny. Aktualnie od północy naliczone 3.6 mm, co też widać na zdjęciach.
Jak to naprawić żeby ten wykres cokolwiek sensownego pokazywał. Myślałem, że, w minutowym, będzie narastająco aż do północy, a potem spadek do zera.
You do not have the required permissions to view the files attached to this post.
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79

Return to “supla-dev”