DS18B20

krycha88
Posts: 5465
Joined: Fri Nov 16, 2018 7:25 am

Post

MaG wrote: Sun Dec 03, 2023 3:49 pm Usypia się niezależnie od tego czy jest WiFi czy nie,
Ale nie łączy się z serwerem

Coś nie tak z czasami jest.

W załączniku fotki prądu pobieranego przez ESP
jeden z softem 7.7.15 ( tu się łączy z serwerem) i u mnie trwa to ok 10sec. Czasem ten czas jest dłuższy nawet o 3sec.
Drugi z softem 7.7.16 (tu się nie łączy z serwerem). Tu czas ok 8sec i chyba nie zdąży się połączyć z serwerem, bo status jest rozłączony.

Trzeba czas uzależnić od tego czy jest połączenie z serwerem czy nie i od tego momentu trzeba liczyć czas time out
Bo w rożnych sytuacjach może być różny czas łączenia z serwerem
Po prostu IsAnyUpdatePending blokował usypianie i te czasy 5s mijały się z celem. Zrobiłem to teraz tak, po nawiązaniu Wifi dopiero zaczyna odliczać się czas 10s gdzie 20s to timeout. Jeżeli nie nawiąże się połączenie wifi po 60s urządzenie się również uśpi.
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 11115
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Jeszcze trzeba dać timeout na samo nawiązanie połączenia z wifi.
Ja bym zrobił po prostu timeout liczony od obudzenia do nawiązania połączenia.
krycha88
Posts: 5465
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Sun Dec 03, 2023 6:02 pm Jeszcze trzeba dać timeout na samo nawiązanie połączenia z wifi.
Ja bym zrobił po prostu timeout liczony od obudzenia do nawiązania połączenia.
Wydaje mi się, że właśnie to zrobiłem tutaj
https://github.com/krycha88/GUI-Generic ... ep.cpp#L47
czy masz coś innego na myśli?
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 11115
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

krycha88 wrote: Mon Dec 04, 2023 8:08 am
klew wrote: Sun Dec 03, 2023 6:02 pm Jeszcze trzeba dać timeout na samo nawiązanie połączenia z wifi.
Ja bym zrobił po prostu timeout liczony od obudzenia do nawiązania połączenia.
Wydaje mi się, że właśnie to zrobiłem tutaj
https://github.com/krycha88/GUI-Generic ... ep.cpp#L47
czy masz coś innego na myśli?
Ok, nieuważnie przeczytałem poprzednią wiadomość :)
krycha88
Posts: 5465
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Mon Dec 04, 2023 8:13 am Ok, nieuważnie przeczytałem poprzednią wiadomość :)
Nic się nie stało :P Dawno się nie bawiłem Deep Sleep i co zauważyłem to czas pracy urządzenia mi się zawsze restartuje po ponownym wybudzeniu. Czy to jest poprawne działanie?
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 11115
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

krycha88 wrote: Mon Dec 04, 2023 10:14 am
klew wrote: Mon Dec 04, 2023 8:13 am Ok, nieuważnie przeczytałem poprzednią wiadomość :)
Nic się nie stało :P Dawno się nie bawiłem Deep Sleep i co zauważyłem to czas pracy urządzenia mi się zawsze restartuje po ponownym wybudzeniu. Czy to jest poprawne działanie?
Deep sleep tak działa, że prawie wszystko wyłącza. Najwyraźniej millis też się resetuje przy deep sleep, albo coś innego nie działa poprawnie.
Licznie uptime jest oparte o millis i jest inicjalizowane od 0. A przy deep sleep wszystko wstaje od początku, więc pewnie dlatego to tak działa.
Pewnie trzeba by przechować przez spanie ostatni uptime i dodać do niego czas snu. (chyba że millis liczy dobrze, to można to łatwiej zrobić)
Następnie trzeba by jakiś "offset" uptime dodać na starcie Supli, aby wiedziała o tym czasie.

Jeśli masz czas na obczajenie jak to działa i będziesz miał ten czas gdzieś poprawnie przechowany, to daj znać, to dodam jakieś "SuplaDevice.setInitialUptimeOffset(offsetSec);"

Ja do tej pory z reguły light sleep używałem, ale THW to nie projekt na baterię, więc tam tylko trzeba było nie nagrzewać zbytnio ESP, a nie oszczędzać każdy mA :).
krycha88
Posts: 5465
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Mon Dec 04, 2023 11:18 am Deep sleep tak działa, że prawie wszystko wyłącza. Najwyraźniej millis też się resetuje przy deep sleep, albo coś innego nie działa poprawnie.
Licznie uptime jest oparte o millis i jest inicjalizowane od 0. A przy deep sleep wszystko wstaje od początku, więc pewnie dlatego to tak działa.
Pewnie trzeba by przechować przez spanie ostatni uptime i dodać do niego czas snu. (chyba że millis liczy dobrze, to można to łatwiej zrobić)
Następnie trzeba by jakiś "offset" uptime dodać na starcie Supli, aby wiedziała o tym czasie.

Jeśli masz czas na obczajenie jak to działa i będziesz miał ten czas gdzieś poprawnie przechowany, to daj znać, to dodam jakieś "SuplaDevice.setInitialUptimeOffset(offsetSec);"

Ja do tej pory z reguły light sleep używałem, ale THW to nie projekt na baterię, więc tam tylko trzeba było nie nagrzewać zbytnio ESP, a nie oszczędzać każdy mA :).
Zgadza się pełne usypiane deep sleep nie przechowuje nic w pamięci więc takie informację są gubione - ESP startuje od nowa. Nie jestem przekonany czy to jest tak ważna informacja aby zapisywać ją do eeproma zwłaszcza, że trzeba byłoby ją zapisywać przy każdym usypianiu urządzenia.

A może da się ukryć tą informację?
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 11115
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

krycha88 wrote: Mon Dec 04, 2023 11:32 am A może da się ukryć tą informację?
Wrzucę dziś taką opcję.
MaG
Posts: 65
Joined: Wed Oct 25, 2023 10:08 pm

Post

Nie znam procesora ESP na tyle, ale z reguły przy Deep Sleep dane w RAM są przechowywane. Może nie zawsze, ale w wielu prockach.
Problem tylko taki, żeby po resecie (wybudzeniu) nie był inicjowany cały RAM (przy inicjalizacji RAM jest zerowany)
Można tak ustawić, żeby kilka komórek RAM było nie inicjalizowanych i wtedy w nich będą dane z poprzedniego działania procka.
Można też zrobić tak, żeby w EEPROM zapamiętywać wartość max. I zapisywać ją tylko wtedy, gdy wartość zmierzona jest mniejszy niż zapisana wartość. To zapobiegnie zajechaniu flasha.
User avatar
klew
Posts: 11115
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

klew wrote: Mon Dec 04, 2023 11:39 am
krycha88 wrote: Mon Dec 04, 2023 11:32 am A może da się ukryć tą informację?
Wrzucę dziś taką opcję.
Zmiana jest w repo. Wystarczy dać gdzieś przed "begin":
SuplaDevice.setShowUptimeInChannelState(false);

Return to “GUI Generic”