Strona 1 z 14

Warunki w SUPLA Scripts - pomysły

: ndz gru 16, 2018 11:46 am
autor: fracz
W wersji 3.0 skryptów dodałem nowy format specyfikowania warunków oparty o Twig.

Poniżej zamieszczajcie pomysły co można z tym zrobić... ;-)

Aby podglądnąć, co jest w danym stanie kanału, można sobie (np. w odpowiedzi sceny przy edycji) podać

Kod: Zaznacz cały

{{ state(1)|json_encode|raw }}

Re: Warunki w SUPLA Scripts - pomysły

: ndz gru 16, 2018 11:46 am
autor: fracz
Jeśli lampa jest włączona

Kod: Zaznacz cały

{{ state(1).on
Jeśli temperatura jest większa niż 20

Kod: Zaznacz cały

{{ state(2).temperature > 20 }}
Jeśli temperatura jest większa niż 20 i mniejsza niż 30

Kod: Zaznacz cały

{{ state(2).temperature > 20 and state(2).temperature < 30 }}
Jeśli roleta jest zamknięta lub prawie zamknięta

Kod: Zaznacz cały

{{ state(10).shut < 10 }}
Jeśli brama jest zamknięta

Kod: Zaznacz cały

{{ state(10).hi }}
Jeśli brama jest otwarta a moduł jest połączony

Kod: Zaznacz cały

{{ state(10).connected and not  state(10).hi }}
Jeśli moduł jest rozłączony

Kod: Zaznacz cały

{{ not state(10).connected }}
Jeśli okno jest zamknięte, a temperatura na jednym czujniku jest mniejsza niż na innym

Kod: Zaznacz cały

{{ state(4).hi and state(2).temperature < state(6).temperature }}
Jeśli kolor na RGB jest...

Kod: Zaznacz cały

{{state(123).color|colorNamePl == "czerwony"}}
Jeśli ledy świecą jasno a kolor na RGB jest

Kod: Zaznacz cały

{{ state(5).color_brightness > 50 and state(5).color|colorNamePl == "czerwony" }}
Jeśli jest niedziela

Kod: Zaznacz cały

{{('now'|date('N')) == 7}}
Jest przed zachodem słońca

Kod: Zaznacz cały

{{ time() < sunsetTime() }} 
Jest przed wschodem słońca (wg strefy czasowej z Twojego konta)

Kod: Zaznacz cały

{{ time() < sunriseTime() }} 
Jest po wschodzie słońca (wg strefy czasowej z Twojego konta)

Kod: Zaznacz cały

{{ time() > sunriseTime() }} 
Jest co najmniej 15 minut po zachodzie słońca na współrzędnych 50.1234N, 19.4372E

Kod: Zaznacz cały

{{ time('+15 minutes') > sunsetTime(50.1234, 19.4372) }} 
Jeśli będzie dziś ciepło w Paczkowie :lol:

Kod: Zaznacz cały

{{ (getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/paczków_polska_3089566', '#tab_temp_max".*?>\s*(.+?C)#s')|number_format) > 15 }}

Re: Warunki w SUPLA Scripts - pomysły

: pn gru 17, 2018 6:39 pm
autor: wsosniak
ja na te warunki czekam od dłuższego czasu. A szczególnie pomysł mam na taką jedną scenę "kobyłę" : Będzie jedna scena OTWORZ_DOM , która w zależności od tego kiedy podjeżdżam pod dom (tzn czy jest dzień , noc , południe …. ), od tego jaka jest temperatura na zewnątrz, czy jest zima czy lato …. otworzy mi bramy (jeśli zamknięte), otworzy rolety, lub tylko cześć, lub tylko lekko otworzy te od południa jeśli jest palma na zewnątrz rzędu 35st, albo zimą nie otworzy tych od północy, włączy odpowiednie lampki wewnątrz, włączy odpowiednie lampki na zewnątrz (lub nie włączy ich) , wyłączy / włączy odpowiednie kamery, włączy lub nie cyrkulacje wody ….. itd. itd.

w końcu mój dom nie będzie tylko zautomatyzowany ale trochę będzie myślał za mnie :)
@fracz ? kiedy wrzucisz na LIVE ? razem z cloud v2.3 ?

Re: Warunki w SUPLA Scripts - pomysły

: pn gru 17, 2018 10:04 pm
autor: fracz
tak - jak ruszą cloudy 2.3 to niedługo potem skrypty 3 też

Re: Warunki w SUPLA Scripts - pomysły

: czw gru 20, 2018 12:20 pm
autor: wsosniak
Może się komuś przyda : Zimą zawsze mam problem z przymarzającymi roletami od strony zachodnio - północnej. A przymarzają mi dokładnie zawsze wtedy kiedy w dzień jest powyżej +2st a wieczorem spada poniżej -5 st. Wymyśliłem na to warunek : jeśli otwieram te zachodnio - północne rolety , i nie ma przewidzianego przymrozku (opisanego powyżej) to je otwieram. Warunek przy uruchamianiu sceny zrobiłem taki do tego :

Kod: Zaznacz cały

{{
('now'|date('Hi') >= '0530' and 'now'|date('Hi') <='2000' and 
((getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_min".*?>\s*(.+?C)#s')|number_format) >=-4 or 
(getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_min".*?>\s*(.+?C)#s')|number_format) <=-11) ) 

or

('now'|date('Hi') >= '0530' and 'now'|date('Hi') <='2000'  and
(getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_min".*?>\s*(.+?C)#s')|number_format) <=-5  and 
(getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_min".*?>\s*(.+?C)#s')|number_format) >=-10 ) and 
(getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_max".*?>\s*(.+?C)#s')|number_format) <=1
}}
zobaczymy jak się będzie sprawować :)

Re: Warunki w SUPLA Scripts - pomysły

: czw gru 20, 2018 5:08 pm
autor: fracz
wsosniak pisze:
czw gru 20, 2018 12:20 pm
Może się komuś przyda : Zimą zawsze mam problem z przymarzającymi roletami od strony zachodnio - północnej. A przymarzają mi dokładnie zawsze wtedy kiedy w dzień jest powyżej +2st a wieczorem spada poniżej -5 st. Wymyśliłem na to warunek : jeśli otwieram te zachodnio - północne rolety , i nie ma przewidzianego przymrozku (opisanego powyżej) to je otwieram. Warunek przy uruchamianiu sceny zrobiłem taki do tego :

Kod: Zaznacz cały

{{
('now'|date('Hi') >= '0530' and 'now'|date('Hi') <='2000' and 
((getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_min".*?>\s*(.+?C)#s')|number_format) >=-4 or 
(getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_min".*?>\s*(.+?C)#s')|number_format) <=-11) ) 

or

('now'|date('Hi') >= '0530' and 'now'|date('Hi') <='2000'  and
(getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_min".*?>\s*(.+?C)#s')|number_format) <=-5  and 
(getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_min".*?>\s*(.+?C)#s')|number_format) >=-10 ) and 
(getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_max".*?>\s*(.+?C)#s')|number_format) <=1
}}
zobaczymy jak się będzie sprawować :)
Możesz to uprościć by było bardziej czytelne i utrzymywalne, wprowadzając zmienną.

Kod: Zaznacz cały

{% set forecastTempToday = getUrl('https://www.meteoblue.com/pl/pogoda/prognoza/tydzień/katowice_polska_3096472', '#tab_temp_min".*?>\s*(.+?C)#s')|number_format %}
{{ ('now'|date('Hi') >= '0530' and 'now'|date('Hi') <='2000' and (forecastTempToday >= -4 or forecastTempToday <= -11) }}

Re: Warunki w SUPLA Scripts - pomysły

: czw gru 20, 2018 6:33 pm
autor: wsosniak
ooo super że są zmienne :)
sprawdziłem dwie zmienne i jest ok :
{% set z1 = 16 %}
{% set z2 = 8 %}
{{z1>z2}}

ale mam pytanie : czy definicja tych zmiennych obowiązuje tylko w warunku i wartości tych zmiennych nie można wyświetlić w odpowiedzi ? no bo próbuje {{z1}} {z1} i nic :)

Re: Warunki w SUPLA Scripts - pomysły

: czw gru 20, 2018 6:37 pm
autor: fracz
Wszystkie zmienne są zamknięte w zakresie jednego miejsca (warunku/odpowiedzi itp). Dlaczego nie możesz ich tam zdefiniować jeszcze raz? ;-)

Re: Warunki w SUPLA Scripts - pomysły

: czw gru 20, 2018 7:11 pm
autor: wsosniak
Mogę, mogę :) ale myślałem że to scena jest tym jednym miejscem i że definiując zmienne w warunku jest jakiś sposób żeby wyświetlić wartości zmiennych w odpowiedzi.

Ten mój warunek teraz wygląda tak :
{% set TempMax = getUrl('https://www.meteoblue.com/pl/pogoda/pro ... ka_3096472', '#tab_temp_max".*?>\s*(.+?C)#s')|number_format %}
{% set TempMin = getUrl('https://www.meteoblue.com/pl/pogoda/pro ... ka_3096472', '#tab_temp_min".*?>\s*(.+?C)#s')|number_format %}
{{
( 'now'|date('Hi') >= '0530' and 'now'|date('Hi') <='2000' and (TempMin >=-4 or TempMin <=-11) )
or
('now'|date('Hi') >= '0530' and 'now'|date('Hi') <='2000' and TempMin <=-5 and TempMin >=-10 and TempMax <=1 )
}}

żeby było idealnie to jeszcze bym musiał odczytać czy prognoza mówi , czy będzie deszcz ( obojętnie o której ) czy też nie . GetUrl….? lub jakoś inaczej ? Jak się nie da to trudno :)

Re: Warunki w SUPLA Scripts - pomysły

: czw gru 20, 2018 7:17 pm
autor: fracz
Teraz możesz już używać time() - będzie czytelniej. I możesz pisać dwukropki w godzinach, będzie do ogarnięcia dla każdego co tam się dzieje ;-)

Kod: Zaznacz cały

time() > '05:30'