Page 1 of 12

Warunki w SUPLA Scripts - pomysły

Posted: Sun Dec 16, 2018 11:46 am
by 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ć

Code: Select all

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

Re: Warunki w SUPLA Scripts - pomysły

Posted: Sun Dec 16, 2018 11:46 am
by fracz
Jeśli lampa jest włączona

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

{{ (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

Posted: Mon Dec 17, 2018 6:39 pm
by 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

Posted: Mon Dec 17, 2018 10:04 pm
by fracz
tak - jak ruszą cloudy 2.3 to niedługo potem skrypty 3 też

Re: Warunki w SUPLA Scripts - pomysły

Posted: Thu Dec 20, 2018 12:20 pm
by 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 :

Code: Select all

{{
('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

Posted: Thu Dec 20, 2018 5:08 pm
by fracz
wsosniak wrote:
Thu Dec 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 :

Code: Select all

{{
('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ą.

Code: Select all

{% 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

Posted: Thu Dec 20, 2018 6:33 pm
by 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

Posted: Thu Dec 20, 2018 6:37 pm
by 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

Posted: Thu Dec 20, 2018 7:11 pm
by 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

Posted: Thu Dec 20, 2018 7:17 pm
by 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 ;-)

Code: Select all

time() > '05:30'