Zamontowałem do lampek schodowych ściemniacz, którego wyzwala czujnik ruchu. Pomysł jest taki, że w momencie wykrycia ruchu, lampki włączają się na 20s. a następnie w ciągu 1 minuty stopniowo się ściemniają. Wykonałem to w Node-RED trochę okrężną drogą. Mianowicie po upływie 20s. następuje ściemnienie lampek o zadaną wartość i tak później co 10s. zmniejszam wartość jasności. Działa to w miarę dobrze tylko ale zależy mi na tym aby ściemnianie po upływie 20s. odbywało się płynie np. z 50% do 0% w ciągu 40s. Ma ktoś jakiś pomysł? Pewnie dałoby się to też załatwić jakąś pętlą ale za bardzo nie wiem jak.
Ratuje Cię chyba tylko fakt, że czujniki mają długi czas bezczynności, inaczej nie napisałbyś, że działa
Żeby kontrolować jasność wykorzystaj atrybuty encji light, czyli tych lampek. Tu masz może nie idelny przykład , ale sporo można z tego wywnioskować Sciemniacz do akwarium
Jeśli to ściemniacz Zigbee, to taka funkcja powinna być w niego wbudowana “brightness_move”. Nie wiem czy w interesującym Cię zakresie. Uruchamiasz ją komendą raz a sprzęt ją realizuje autonomicznie.
Chcę tak zrobić właśnie dlatego, że czujnik ma 1 minutę czasu bezczynności, gdyby było mniej to po prostu wyłączył bym światło wcześniej i po temacie. Zrobiłem tak jak w tym przykladzie Ściemniacz do akwarium. Działa ale za szybko i światło wyłącza się płynnie ale w ciągu ok 1-2s. Jak zrobić żeby ta funkcja była wykonywana dokładnie określonym czasie, tj. np. 60s.?
Tak, jest to ściemniacz OXT Zigbee ale nie widzę żeby eksponował taką funckję.
Nie wiem czy jestem na tyle biegły w NR żeby to zrobić ale spróbuję.
A czy da się zrobić tak jak pisałem wyżej, żeby dana funkcja była wykonywana w dokładnie określonym czasie?
Między nodem jasność minus a ściemnianie lampek daj delay na ok 1sek. Taka proteza ale powinno działać. Czas ściemniania będziesz mógł regulować czasem opóźnienia.
Chyba nie do końca się zrozumieliśmy. Ja nie chcę opóźnić ściemniania tylko chcę żeby właśnie to ściemnianie np. z 60% do 0% było wykonywane płynnie (czyli w tym w tym przypadku byłby to 1% na 1s.).
Dlaczego tak piszesz? Przecież “tym sposbem” można to zrobić bez specjalnego problemu i dość łatwo to wytłumaczyć. Uczyłem się od Ciebie, więc wiem, że jesteś w stanie zrobić to na wiele sposobów, ale łatwy do ogarnięcia i konfigurowalny, to licznik + aktualny poziom ściemnienia.
Wyjaśnię poniżej. @welna9
Możesz zrobić to w taki sposób
Naruszenie czujnika, oprócz wysłania On do lampek zapisuje do zmiennej “licznik” wartość 0 , pierwszy trigger 4 sek jest potrzebny żeby lampki nie zgasły natychmiast po załączeniu, ale może również służyć do regulacji trwania cyklu , dalej mamy switch który dopisuje do zmiennej 1 przy każdym przebiegu, w funkcji jest sprawdzana jasność podobnie jak w sciemniaczu do akwarium i stan licznika , dalej już wiadomo , drugi trigger reguluje częstotliwość cyklu. flows (1).json (5,1 KB)
PS
Możesz sprawdzić dwie wersje bo nie zauważyłem, że @RobinI30 wrzucił coś od siebie
Tu nie ma co tłumaczyć , czujnik ustawia janość na 162 , uruchamia to wyzwalacz w dolnej części, ale switch "bri<160 zatrzymuje proces, po delay, janość się zmiejsza do 159, to umożliwia kolejne wyzwolenie dolnej części i tym razem switch już nic nie blokuje, w nodzie funkcji sprawdzany jest poziom jasności i ponieważ jest wieksza od 1, to zostaje wysłane, po 1 sek “zmiejsz o 1” . Na tym proces się zatrzymuje.
Widać to na foto i w logach
Dobra ja dokonałem analizy, teraz proszę o wyjaśnienie co jest źle w moim flow ?
PS
Sprawdziłem jeszcze raz dodając debug na końcu i widać gdzie kończy się proces, czasy w logach mówią wszystko
Źle nie jest ale z powodu pętli wewnątrz procesu (jak dla mnie) nie jest dobrze.
Tak mam staram się aby tak nie zapętlać.
Zauważ różnice w prostocie działania …tutaj akurat zastosowałem ( chyba Twój wynalazek?) - generator