Maksymalny czas setValidityTimeSec

User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Hej, pracuję nad własnym softem do modułu do skrzynki pocztowej zasilanej z baterii CR123 3V , moduł znaleziony tu : https://www.espthings.io/index.php/2022 ... ox-switch/
Już prawie działa :D , jako że układ mógłby się nie wybudzać nawet przez miesiąc mam pytanie jaki maksymalny czas można ustawić w metodzie setValidityTimeSec ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Teoretycznie rozmiar zmiennej ogranicza czas. Zbyt długi czas tak na prawdę powoduje, że nie będziemy wiedzieć czy urządzenie żyje i może się okazać, że poczta na którą czekamy dawno tam jest tylko sprzęt padł.
SUPLA.... Nareszcie w domu.
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

OK, mam nadzieję że listonosz częściej będzie przychodził :D i do tego nie dojdzie.
Ustawiłem

Code: Select all

#define MAX_SLEEP_TIME_SEC  604800 // czyli tydzień
Niestety urządzenie w apce przechodzi w offline po dwóch dniach .
Moja sekcja setup wygląda tak:

Code: Select all

  SuplaDevice.setSuplaCACert(suplaCACert);
  SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);

  SuplaDevice.addFlags(SUPLA_DEVICE_FLAG_SLEEP_MODE_ENABLED);
  SuplaDevice.setActivityTimeout(MAX_SLEEP_TIME_SEC);
  for (auto element = Supla::Element::begin(); element != nullptr; element = element->next()) {
    if (element->getChannel()) {
      auto channel = element->getChannel();
      channel->setValidityTimeSec(MAX_SLEEP_TIME_SEC);
      channel->setBatteryLevel(getBattery());
      channel->setDefault(SUPLA_CHANNELFNC_MAILSENSOR);
     // channel->setDefaultStateRestore();;
    }
  }

  SuplaDevice.setName("Mail Box");
  SuplaDevice.begin();
  
Jest gdzieś błąd że nie wytrzymuje zadeklarowanego tygodnia ?
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 136 times
Been thanked: 137 times

Post

shimano73 wrote: Mon May 27, 2024 6:35 am Niestety urządzenie w apce przechodzi w offline po dwóch dniach .

Jest gdzieś błąd że nie wytrzymuje zadeklarowanego tygodnia ?
W logach powinieneś widzieć taki warning:

Code: Select all

void Channel::setValidityTimeSec(unsigned _supla_int_t timeSec) {
  if (timeSec > UINT16_MAX) {
    SUPLA_LOG_WARNING("Channel: too high validity time: %d", timeSec);
    timeSec = UINT16_MAX;
  }
  validityTimeSec = timeSec;
}
;)
Także SuplaDevice tu narzuca ograniczenie do uint16_t, czyli 65535 s, czyli około 18 h.

Nie pamiętam, dokładnie z jakiego powodu to zostało tak ograniczone, ale prawdopodobnie ze względu na ilość pamięci RAM. Bo int16 to 2 B na kanał, a int32 to 4 B na kanał.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
veeroos
Posts: 1081
Joined: Sun Mar 20, 2022 9:30 am
Location: Głogów
Has thanked: 1 time
Been thanked: 9 times

Post

A miałem się właśnie pytać na jak długo mogę uśpić układ bez konieczności wybudzania w związku z czujnikami okiennymi nad którymi teraz działam, no cóż trzeba będzie co 16 godzin wymusić wysłanie "bitu życia" 😉.
Zamel Mew-01, Zamel PEW-01, Zamel SBW-01, Zamel THW-01, Zamel SRW-01, Zamel mSLW-02, Auraton BOX + Indor Sensor, Airly Gate By Veeroos, Zigbee to Supla Gateway + sensors, Zamel SGW-01 and more

https://github.com/v33r005
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Próbując wydłużyć czas usunąłem ograniczający warunek w metodzie setValidityTimeSec ale skutek jest odwrotny , teraz po około 3 godzinach jest już offline .
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 136 times
Been thanked: 137 times

Post

shimano73 wrote: Tue May 28, 2024 7:50 am Próbując wydłużyć czas usunąłem ograniczający warunek w metodzie setValidityTimeSec ale skutek jest odwrotny , teraz po około 3 godzinach jest już offline .
Musiałbyś jeszcze zmienną zaminić, z 16 bitowej na 32. Teraz jak ustawiasz większą liczbę, to ona się "przekręca" i przyjmuje jakąś inną mniejszą wartość.
W supla/channels/channel.h zmień:

Code: Select all

  uint16_t validityTimeSec = 0;
// na:
  uint32_t validityTimeSec = 0;
Poprawię to też niedługo w SD, bo trochę tam przerabiam...
Najlepsze suple dla Twojego domu :mrgreen:

Return to “Pomoc”