SUPLA SCRIPTS warunki w innej scenie

plnuker
Posty: 97
Rejestracja: ndz gru 30, 2018 10:11 pm

zauważyłem ze gdy mamy stworzoną scenę np zamykanie garażu z gaszeniem światła , gdzie gaszenie światła to inna scena to wyglada na to ze jezeli dla innej sceny ustawiony jest dellay, np 60 sek. to jej warunki są pomijane i zawsze się wykonuje :)
Ta sama "inna scena" wywołana bez opóźnienia działa poprawnie.

warunek innej sceny:
{{state(jakassupla_swiatlo).on and time('now') >="23:00"}}
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Warunek działa "na już". Tj jeśli w momencie zlecania sceny warunek jest spełniony to wykonania opóźnione są planowane. W nich już warunki nie są sprawdzane. Skoro wykonanie sceny polega na akcji z opóźnieniem to można powiedzieć że wykonanie sceny trwa aż do ostatniej akcji.

Wyobraź sobie np scenę podlewanie ogródka na 10 min przy warunku że nie ma mrozu (może nie najmądrzejszy przykład, ale czujesz o co chodzi). Jak już się zaczęło podlewać i w międzyczasie przyszedł mróz to nie chciałbyś zeby opóźniona akcja zakończenia podlewania się z tego powodu nie wykonała.
plnuker
Posty: 97
Rejestracja: ndz gru 30, 2018 10:11 pm

fracz pisze: pt lut 01, 2019 7:58 am Warunek działa "na już". Tj jeśli w momencie zlecania sceny warunek jest spełniony to wykonania opóźnione są planowane. W nich już warunki nie są sprawdzane. Skoro wykonanie sceny polega na akcji z opóźnieniem to można powiedzieć że wykonanie sceny trwa aż do ostatniej akcji.

Wyobraź sobie np scenę podlewanie ogródka na 10 min przy warunku że nie ma mrozu (może nie najmądrzejszy przykład, ale czujesz o co chodzi). Jak już się zaczęło podlewać i w międzyczasie przyszedł mróz to nie chciałbyś zeby opóźniona akcja zakończenia podlewania się z tego powodu nie wykonała.
Nie o to chodzi, rozumiem ze warunek działa na stan t0 czyli w momencie wywołania. Przykład Zamykam garaż, gaszę światło w garażu po 60 sek i dodatkowo po tych samych 60 sekundach chcę wywołać scenę gaszenia światła obok domu np żeby oświetlić sobie drogę. Scena która jest wywołana ma warunek
{{state(jakassupla_swiatlo).on and time('now') >="23:00"}}
sprawdza czy światło jest załączone i jeżeli jest po 23:00 ma je zgasić. Wcześniej nie musi bo działają czujniki zmierzchu ale na noc nie muszą działać żeby psy koty, wiewiórki itd.. nie włączały światła.

teraz załóżmy ze jest godzina 18:00, odpalam scene i zamykam garaż. Po zamknięciu drzwi 60 sekund i gaśnie światło w garażu. Oświetlenie obok domu powinno zostać włączone (warunek 23:00) a się wyłącza ;(
Ustawienie tej samej sceny gaszenia światła bez opóźnienia 60 sek, tylko od razu po wywołaniu akcji zamknij garaż, pozostawia poprawnie światło włączone a po 23:00 je wyłącza.
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

A. To źle zrozumiałem. Bug jak nic.
plnuker
Posty: 97
Rejestracja: ndz gru 30, 2018 10:11 pm

fracz pisze: pt lut 01, 2019 4:29 pm A. To źle zrozumiałem. Bug jak nic.
trafiłem kolejnego, przy sprawdzaniu warunków. Wklejony w odpowiedz działa poprawnie (false) w warunku sceny błędnie ;/
Załączniki
BUG.png
BUG.png (47.44 KiB) Przejrzano 3168 razy
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Wywal |json_encode|raw z tego. W ten sposób robisz string "false", który jest jak najbardziej "spełnionym warunkiem".
plnuker
Posty: 97
Rejestracja: ndz gru 30, 2018 10:11 pm

fracz pisze: wt lut 05, 2019 2:49 pm Wywal |json_encode|raw z tego. W ten sposób robisz string "false", który jest jak najbardziej "spełnionym warunkiem".
mam wywalone, dalej warunek jest spełniony. tak to wyglada w aktualnie

{% set forecastTempToday = getUrl('http://api.wunderground.com/api/xxxxxxx ... owice.json', '#"temp_c":([0-9.]+)#s')|number_format%}
{{(state(xxxx).temperature >= forecastTempToday + 3)}}
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Spróbuj tak:

Kod: Zaznacz cały

{{(state(xxxx).temperature >= forecastTempToday + 3) ? 1 : 0}}
plnuker
Posty: 97
Rejestracja: ndz gru 30, 2018 10:11 pm

fracz pisze: wt lut 05, 2019 7:30 pm Spróbuj tak:

Kod: Zaznacz cały

{{(state(xxxx).temperature >= forecastTempToday + 3) ? 1 : 0}}
Nic to nie dało ;/

ps w regexpie brakowalo "-" wyszło teraz bo jest mróz
Załączniki
supla.jpg
supla.jpg (112.18 KiB) Przejrzano 3077 razy
ODPOWIEDZ

Wróć do „Pomoc”