Dla mnie wystarczy krótkie info, że coś trzeba poprawićklew wrote: Mon Nov 14, 2022 1:53 pmPoza setValidityTimeSec dla każdego kanału, trzeba też ustawić:krycha88 wrote: Mon Nov 14, 2022 1:09 pm Czyli coś się zmieniło? Kiedyś wystarczyło tylko ustawić setValidityTimeSec dla kanału.
Ja "MAX_SLEEP_TIME_SEC" ustawiałem na ~2x czas spania.Code: Select all
SuplaDevice.addFlags(SUPLA_DEVICE_FLAG_SLEEP_MODE_ENABLED); SuplaDevice.setActivityTimeout(MAX_SLEEP_TIME_SEC); ch1->setValidityTimeSec(MAX_SLEEP_TIME_SEC);
Poza tymi rzeczami trzeba jeszcze zaimplementować samo usypianie urządzenia.
Dodałem tam jedną przydatną metodę do sprawdzania, czy można pójść spać:Ona zwróci "true", gdy jakiś kanał ma jeszcze potrzebę wysłania czegoś, a "false" gdy wszystko jest wysłane. Po tym jak zmieni się na "false", ja robiłem mały delay, wyłączam wifi i włączam spanie.Code: Select all
if (Supla::Protocol::ProtocolLayer::IsAnyUpdatePending() {...}
Kolejna nowa metoda to:ona sprawdza, czy urządzenie jest w trybie normal lub test (trybu testowego raczej nie potrzebujesz) oraz czy nie ma zaplanowanego resetu urządzenia.Code: Select all
SuplaDevice.isSleepingAllowed();
Ogólnie planuję dodać jakiś przykład ze śpiącym urządzeniem na Arduino IDE, ale jak zwykle trzeba na to znaleźć chwilę czasu
Ogólnie przerobiłem wg tego co napisałeś i wszystko działa poprawnie. Ale mnie zastanawia jak ma się wyznaczać czas pracy urządzenia bo teraz po wybudzeniu urządzenia on się restartuje - tak ma być?