Cześć
Zrobiłem automatyzację, która włącza max obroty rekuperatora na czas ustawiony w pomocniku.
Wszystko jest spoko ale brakuje mi możliwości przedłużenia czasu po kolejnym kliknięciu w przycisk.
Nie wiem jak się do tego zabrać, gdzie jest przetrzymywana aktualna wartość noda Delay czy w jakiś inny sposób do tego trzeba by podejść.
Docelowo chcę aby można było maksymalnie 3 razy kliknąć przedłużając czas.
Poniżej zamieszczam screen i flow
Tym razem nie będzie gotowca.
Podpowiedź… przed wysłaniem nowej wartości za pomocą msg.delay = xx , wyślij msg.reset aby zresetować węzeł delay. Inaczej, to co wpisałeś poprzednio i tak się wykona. Delay “kolejkuje” swoje wpisy i każde jego wywołanie tworzy kolejny wirtualny timer.
Gdy się z tym uporasz zrobi się liczenie do 3.
Prosty licznik do 3, trzeba tylko trochę przerobić bo w tej chwili działa odwrotnie - msg przechodzi gdy odliczy 3 razy.
Zerowanie licznika wykonaj po turn_off service.
var c = flow.get('C_count') || 0;
c++;
flow.set('C_count',c);
if (c == 3) {
flow.set('C_count',0);
return msg;
}
return null;
Na delay nie osiągniesz zadowalającego efektu - nie jesteś w stanie stwierdzić ile czasu upłynęło odpierwszwgo uruchomienia. Zrobiłbym własny licznik odmierzający np. minuty.
@artpc Ten timer i gotowiec jest świetny, dziękuje. Problem jest taki że wartość CT chcę przesyłać z encji ustawianej za pomocą pomocnika (suwak). Ten timer z tego co widzę nie obsługuje przesyłania wartości czasu do odliczania. @RobinI30 próbowałem cos na szybko zastosować Twoją podpowiedź, ale nie za bardzo wychodzi. Musze na spokojnie wieczorem nad tym posiedzieć. Czy ten kod powinienem umieścić w funkcji przekazującej dane do timera? Co to jest C_count? Skąd taka zmienna? Jest gdzieś miejsce gdzie mogę zapoznać się z wszystkimi zmiennymi danego noda?
Tak, ta funkcja to rodzaj filtra, która przepuszcza co trzeci msg nie ingerując w niego.
… zmienna - taką sobie wymyśliłem :), możesz ją nazwać dowolnie.
Zmiennych kontekstowych nie ma - sam sobie tworzysz w/g uznania i przeznaczenia.
ed… nie jest to do końca właściwa odpowiedź na to pytanie.
Dotyczy tylko Twoich zmiennych.
@artpc …dzięki, staram się jak najmniej używać dodatkowych paczek. Jeśli potrafię to pisze sam.
Powód - nie przestanie mi to działać nawet gdy coś zmieni się w NR, szybciej stawia się NR po reinstalacji i działa tak jak chcę.
@artpc Przerobiłem tego gotowca pod swoje potrzeby, zamiast pir dałem przycisk.
Jednak chodzi o to że czas na jaki włączany jest timer potrzebuje przesyłać z encji pomocnika.
Jeśli czas miał by być stały to ten Twój flow działa świetnie.
@artpc … przeglądałem tego noda CT i pewnie dałoby się go utkać z delaya lub triggera. Jego działanie przypomina stosowanie msg.reset i msg.flush.
Dla tego zastosowania prościej napisać własny szyty na miarę.
@ RobinI30
Witam,
Skorzystałem z Twojego licznika w moim sterowniku pieca, steruje impulsem co 5 minut sprawdzając temperaturę wody a następnie switchem ustawiam odpowiednie opóźnienie włączenia wentylatora i podajnika.
Niestety z licznikiem mam taki problem, że po wykonaniu deploy przestaje działać, zauważyłem, że restart node red pomaga. Podejrzewam, że brakuje na końcu przepływu reset C_count.
Pomożesz