Jak działa korekta czasu w tym przepływie?

Zacząłem analizę przepływu, który udostępnił kolega @RobinI30 w tym temacie
Kontynuując dyskusję z Automatyczne nawodnienie trawnika - ESP32:
Przerobiłem sobie fragment całego flows, do testów używam dwóch pomocników input number, ustawione wartości widać na poniższym zrzucie


Wszystko działa i czas załaczenia przełaczników “rezerwa” i “rezerwa 2”, zmienia się, po zmianie nastaw input number (czas wyliczony) i (czas korekty). Za chiny nie potrafię wywnioskować jaki jest algorytm wyliczania tego czasu. Node join rozdziela payload na dwie wiadomości ( 0 i 1 ) i takie wpadają do noda funkcji , tu powinna dziać się cała magia, ale na wyjściu widać te same wartości , nod delay na podstawie tego co wychodzi z funkcji ma opóźnić wyłączenie przełączników, i robi to, tylko przy wartościach jak widać poniżej, czas trwania cyklu wynosi 2 min/26 sek .

Odejmując 2 sek ustawione w delay
3
zostaje 2min / 24sek.
Bardzo proszę o wyjaśnienie jak to zostało wyliczone? Wartości to 0 = 60 i 1 = 244.
Gdyby ktoś inny niż autor tego flows chciał zerknać, to wstawiam jeszcze zawartosć noda funkcji

msg.delay = msg.payload[0] *  msg.payload[1] *10
return msg;
msg.delay = 60 * 244 * 10 = 146400

146 400 milisekund =2,44 minuty

2 polubienia

Jak widzisz czas zapisywany msg.delay. Patrząc w debug na msg.payload nic nie widzisz. :wink:

Ustawiałem complete msg object i widziałem wartość 146400, ale jak pokazał @MariuszAK, daje to 2min i 44 sek. Ustawiłem oba input number na 120, czyli wynik mnożenia w funkcji to 144000, przeliczajac na minuty daje to równo 2 min 40 sek, a cykl trwa 2min 24 sek .
1
Dlatego zadałem pytanie.

Faktor jest (miał być) procentowy 2min +20% = 2min24sek -jeśli jest inaczej to mam błąd

To raczej 2min + 40% = 2min 24 sek , ale ok to nie apteka. Nigdy cykl nie będzie trwał 2 min, przy 10 - 40 min jakieś sekundy nie będą miały znaczenia. Jaki zakres zrobiłeś dla tego “faktor” ? 0- ?

…no jak ? :wink: 20% z 120sek to 24

0-200

No tak, :slight_smile: Dwie równe minuty i 40% z kolejnej minuty, a nie z 2 minut. Dzięki za zakres tego Faktor :slight_smile:

…co da Ci regulację 0-2min, czyli “nic” przy czasie np 30min . Od całości to jakąś znaczącą wartość otrzymasz

Ok piszemy o dwóch różnych rzeczach, Faktor ustawiony na np 100, bierze udział w matematyce i ma duże znaczenie na sam wynik, natomiast wynik w ms np 900580, to 15 min , 58 . Gdyby to 58 było 58% z 15min, to ten cykl by trwał prawie 24 min

Chyba dwóch różnych algebrach :wink:
W mojej 15min = 900sek * 58% = 900 *0.58 = 522sek = 8min42sek

msg.delay = msg.payload[0] *  msg.payload[1] *10

Tu nic innego się nie dzieje (%/100) * 1000 zostało skrócone do *10

Ty dalej bierzesz pod uwagę to co dzieje się w nodzie funkcji i z tym się zgadzam, wynik z tej matematyki trafia do delay w ms, jeśli jest to 900580, to przeliczajac na minuty nie będzie tak jak policzyłeś, bo 900sek to jak by nie liczył 15 min, ale to co zostaje nie jest to 58% z tych 15 min.
Szkoda prądu na dalsze dywagacje, mój początkowy wynik był 146400 i taki trafiał do delay, więc był juz po uwzględnieniu faktora. Miłej niedzieli

2,44 min =~ 2’ i 26"