Problem z automatyzacją

cześć
juz nie wiem co robie źle
Java jest cholernie trudna
chce zrobic cos takiego ze jak wlacze swiatlo to ono sie zaswieci poswieci tak X czasu i zgasnie ale po tym jak zgasnie przez Y czasu ma sie nie wlaczyc przy ponownym wyzwoleniu
zrobilem tak:

funkcja 1 robi to:
image

funkcja odliczanie:
image

spinajaca ww fukcje czyli funkcja 2 ma tak:
image

na koniec w funkcja 3 dalem jeszcze cos takiego zeby zmienna drzwi sie resetowala
image

teraz mimo odliczana w dół i włączenia w tym czasie drzwi swiatlo sie zapala

Chyba rozumiem jak to ma działać, trochę niejasno opisałeś,
przeanalizuj sobie to, robisz zmienną globalną którą blokujesz flow


tu masz kod

[{"id":"2f778d6faf66771c","type":"server-state-changed","z":"a3c73bf.e73c1c8","name":"Drzwi","server":"4d0e02c9.2307bc","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":230,"y":1040,"wires":[["1929e50bd123c090"]]},{"id":"d564808fdbfc863e","type":"api-call-service","z":"a3c73bf.e73c1c8","name":"włącz światło","server":"4d0e02c9.2307bc","version":5,"debugenabled":false,"domain":"","service":"","areaId":[],"deviceId":[],"entityId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":570,"y":1040,"wires":[["1e661cb40691ad6c","040b6c7ae95ee738"]]},{"id":"c1c7abc62877377d","type":"api-call-service","z":"a3c73bf.e73c1c8","name":"wyłącz swiatło","server":"4d0e02c9.2307bc","version":5,"debugenabled":false,"domain":"","service":"","areaId":[],"deviceId":[],"entityId":[],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":960,"y":1040,"wires":[[]]},{"id":"1e661cb40691ad6c","type":"delay","z":"a3c73bf.e73c1c8","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":760,"y":1040,"wires":[["c1c7abc62877377d"]]},{"id":"1929e50bd123c090","type":"switch","z":"a3c73bf.e73c1c8","name":"","property":"opoznienie_czy_aktywne","propertyType":"global","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":390,"y":1040,"wires":[["d564808fdbfc863e"]]},{"id":"040b6c7ae95ee738","type":"change","z":"a3c73bf.e73c1c8","name":"","rules":[{"t":"set","p":"opoznienie_czy_aktywne","pt":"global","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":980,"wires":[["dbdf615a1ce3183a"]]},{"id":"4017947323ede78f","type":"change","z":"a3c73bf.e73c1c8","name":"","rules":[{"t":"set","p":"opoznienie_czy_aktywne","pt":"global","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":1260,"y":980,"wires":[[]]},{"id":"dbdf615a1ce3183a","type":"delay","z":"a3c73bf.e73c1c8","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1040,"y":980,"wires":[["4017947323ede78f"]]},{"id":"da086fd95147ac11","type":"change","z":"a3c73bf.e73c1c8","name":"","rules":[{"t":"set","p":"opoznienie_czy_aktywne","pt":"global","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":980,"wires":[[]]},{"id":"07c8f30215bccb82","type":"inject","z":"a3c73bf.e73c1c8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":210,"y":980,"wires":[["da086fd95147ac11"]]},{"id":"4d0e02c9.2307bc","type":"server","name":"Asystent domowy","version":5,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]
1 polubienie

Nie prościej tak ?


Początkowe ustawienie zmiennej jest potrzebne tylko do rozruchu, potem można usunąć

1 polubienie

Jak ten kod wykorzystać?

@isom1266 Dzięki za to
Jutro rzucę na to okiem bo po dziś już mi głowa pieka

Zaimporuj, prawy górny róg.
I każdego niebieskiego noda zmień na swój serwer i swoje encje.

1 polubienie

Jeśli byście zauważyli, że czas świecenia+czas blokady= czas cyklu
To wystarczy nod delay ustawić w limit rate na 1 msg/czascyklu i można to uprościć do
limitrate
W tym przykładzie czas załączenia i czas blokady będzie wynosił po 30sek.

Tylko jak chcesz wydłużyć czas świecenia , to się robi problem , bo równocześnie musisz dostosować czas blokady. Zawsze czas blokady musi być przynajmniej równy czasowi świecenia, dlatego jest to proste, ale mało elastyczne.

Jeśli to problem to wystarczy przekształcić wzór: czas świecenia+czas blokady= czas cyklu :stuck_out_tongue_winking_eye: wszystkie czasy da się regulować nawet z poziomu HA …taka zagadka

Nie prawda.

dziekuje wszystkim za pomoc!! Udało się

Widziałem u kolegi isom1266 noda trigger który u mnie nie działał tak jak delay i od razu zadanie szło dalej zamiast czekac

1 polubienie

a czy mozna zrobic tak zeby zeminne global dzialaly tylko w obrebie danego flow? Bo chyba teraz jest tak ze one dzialaja serio blobal (czyli miedzy flow tez)

Zadeklaruj jako flow.zmienna

1 polubienie

Odpowiedź już dostałeś od kolegi @bartik22 , a dlaczego nie delay?
W przepływie, który dla Ciebie jest już ok, użyłeś 4 x delay , różnie to może się zachować i nie ma gwarancji, że oświetlenie się wyłaczy po czasie “światło ON” . Uruchom proces ręcznie i w czasie świecenia zrób Deploy , lub restart NR, a się przekonasz. Ja praktycznie nie używam delay , a w zamian korzystam z node-red-contrib-stoptimer-varidelay (node) - Node-RED
Ma ogromną przewagę, chociażby pamiętajac czas jaki pozostał do końca odlaczania nawet po restarcie.

Nie chcesz chyba powiedzieć, że używajac tak prostego przepływu, jaki pokazałeś możesz wpływać na czasy w delay z poziomu HA? A jeśli tak to proszę pochwal się. Ja praktycznie nie używam delay, ale zawsze to coś nowego :slight_smile: Jeśli chcesz rozbudowywać ten flow o pomocników, itp to szkoda czasu. Autor już wybrał rozwiązanie.

Nie… tego nie chcę powiedzieć :slight_smile: Delaya też unikam ale żeby było prościej wytłumaczyć algorytm…
W przypadku limit rate ten parametr można nadpisać przez msg.rate.

ja tak tez mam, delay jest ustawiony suwkiem w HA pomocnikiem, usytawiam sobie czas działania podlewania


image

Super, a sprawdzałeś jak zachowa się to ustawienie, gdy w czasie trwania cyklu zrobisz Deploy ?
Takie możliwości masz w stoptimer-varidelay


O innych fajnych funkcjach nie wspominając. Ja uprzedzony za wczasu przez kolegę @RobinI30, o różnych perypetiach związanych z delay, nie używam tego wcale, albo prawie wcale.

no dobra poprawilem

tutaj chyba wypadaloby zaznaczyc tego ptaszka o wznowieniu timera:
image

Ptaszka trzeba zaznaczyć, ale warto poczytać dokumentację i sprawdzić możliwości tego noda .

Ja potrafię używać delay i używam go od zawsze. Nigdy żadnego problemu nie miałem.

zachowa sie tak jak mam ustawione, albo limit wiadomości, albo każda opóźniona. Nie rozumiem o co pytasz.
Pozatym przy procesach gdzie w czasie pracy jest delay odpalony, chcąc go nadpisać puszczam ms.reset, nawet jak w załączonym moim przykładzie. Delay jest czasem lepszy a czasem tigger.
No sorry nie wiem o czym piszesz. Albo nie do końca masz doświadczenie i wiedzę.
Nod jak nod, jak nie potrafisz używać to każdy może sprawić problemy.
Własnie dzięki absolutnej prostocie nie ma sie co popsuć, a nie pełno doinstalowanych “synonimicznych” nodów które robią to samo z wodotryskami i jak czytałem nawet na forum to po aktualizacji NR jakieś tam przestały wszystkim działać.
Skoro Ci działa to super i rób jak chcesz, ale nie mów, że podstawowymi nodami sie nie da zrobić tak prostych rzeczy, na podstawie tak naprawdę niczego.

2 polubienia

Źle mnie zrozumiałeś, ale nie szkodzi. Jak sobie dobrze radzisz z delay, to gratulacje.