Supla-scripts warunek pogodowy

Post Reply
cosmita
Posts: 94
Joined: Tue Sep 11, 2018 11:06 am

Mon Apr 15, 2019 11:09 am

Witam,

Nie mogę dojść do ładu z warunkiem, testuje obecnie na zwykłym sonoff od włączania światła

state(1) to mój sonoff który ma zapalać światło, obecnie jego status jest off czyli światło jest zgaszone. Poniżej warunek z opadami deszczu

Code: Select all

{% set opad = getUrl('http://www.yr.no/place/Poland/Lower_Silesia/Mrozów/forecast.xml', '')|split('<precipitation')[1]|split('"')[1]|raw %}{% if (opad)== 0  %} Brak opadów.{% else %} Opady {{opad}} milimetrów {{getUrl('http://www.yr.no/place/Poland/Lower_Silesia/Mrozów/forecast.xml', '')|split('<symbol number=')[1]|split('"')[5]|raw}}
{% endif %}

{{state(1).off and opad > '0'}}
Dziwne jest to że warunek jest spełniony ponieważ sonoff jest wyłączony - światło się nie pali a dodatkowo jest "brak opadów" kompletnie nie mogę zrozumieć tego warunku dlaczego on ma taki status, zresztą tutaj jakby ten warunek kompletnie nie miał znaczenia co w nim się znajdzie hm. Czy może ktoś podpowiedzieć co robię źle?
cosmita
Posts: 94
Joined: Tue Sep 11, 2018 11:06 am

Mon Apr 15, 2019 11:50 am

Jakim cudem ten warunek jest spełniony:

Code: Select all

{% set temperatura = getUrl('http://www.yr.no/place/Poland/Lower_Silesia/Mrozów/forecast.xml', '')|split('<temperature')[1]|split('"')[3]|raw %}

{{  temperatura < 10 }}
gdzie temperatura to 12

???? nie rozumiem
wsosniak
Posts: 318
Joined: Sat Jun 02, 2018 8:02 am

Mon Apr 15, 2019 12:15 pm

cosmita wrote:
Mon Apr 15, 2019 11:50 am
Jakim cudem ten warunek jest spełniony:

Code: Select all

{% set temperatura = getUrl('http://www.yr.no/place/Poland/Lower_Silesia/Mrozów/forecast.xml', '')|split('<temperature')[1]|split('"')[3]|raw %}

{{  temperatura < 10 }}
gdzie temperatura to 12

???? nie rozumiem
to chyba masz ten sam błąd co myśmy robili (opisane tu : viewtopic.php?p=38118#p38118) tzn :
- nie moze być pustych linii pomiedzy SET a warunkiem
- nie moze byc spacji na końcu linii

spróbuj tak (bez tej pustej linii):

Code: Select all

{% set temperatura = getUrl('http://www.yr.no/place/Poland/Lower_Silesia/Mrozów/forecast.xml', '')|split('<temperature')[1]|split('"')[3]|raw %}
{{  temperatura < 10 }}
cosmita
Posts: 94
Joined: Tue Sep 11, 2018 11:06 am

Mon Apr 15, 2019 12:25 pm

Super działa, ale nie wpadłbym na to chyba sam :) dzięki :)

mój warunek już śmiga i sprawdzam czy sonoff jest wyłączony

Code: Select all

{% set temperatura = getUrl('http://www.yr.no/place/Poland/Lower_Silesia/Mrozów/forecast.xml', '')|split('<temperature')[1]|split('"')[3]|raw %}
{{ temperatura < 10 and not state(1).on }}
warunek nie jest spełniony a gdy zmienię na 12 to jest spełniony :)
wsosniak
Posts: 318
Joined: Sat Jun 02, 2018 8:02 am

Mon Apr 15, 2019 12:29 pm

a jesli chodzi o ten Twój warunek dla opadów , to ta sekcja nie jest potrzebna , wywal to:

{% if (opad)== 0 %} Brak opadów.{% else %} Opady {{opad}} milimetrów {{getUrl('http://www.yr.no/place/Poland/Lower_Sil ... recast.xml', '')|split('<symbol number=')[1]|split('"')[5]|raw}}
{% endif %}

bo to przy warunku nie jest potrzebne (ew. do odpowiedzi sceny wrzuć tego IF-a)

Wywal tez pustą linię przed warunkiem zeby to wyglądało tak :
{% set opad = getUrl('http://www.yr.no/place/Poland/Lower_Sil ... recast.xml', '')|split('<precipitation')[1]|split('"')[1]|raw %}
{{state(1).off or opad > 0}}
cosmita
Posts: 94
Joined: Tue Sep 11, 2018 11:06 am

Mon Apr 15, 2019 12:41 pm

tak jest, chyba dodatkowo miałem błąd chyba przy sprawdzaniu czy sonoff jest załączony lub nie

state(1).on - włączony
not state(1).on wyłączony

tak chyba powinno to wyglądać czyli ostatecznie tak:

dla warunku gdy nie włączony i opad większy od 0

Code: Select all

{% set opad = getUrl('http://www.yr.no/place/Poland/Lower_Sil ... recast.xml', '')|split('<precipitation')[1]|split('"')[1]|raw %}
{{not state(1).on or opad > 0}}
warunek spełniony

a warunek dla gdy jest włączony i opad większy od 0

Code: Select all

{% set opad = getUrl('http://www.yr.no/place/Poland/Lower_Sil ... recast.xml', '')|split('<precipitation')[1]|split('"')[1]|raw %}
{{state(1).on or opad > 0}}
warunek nie spełniony

wszystko gra :)
cosmita
Posts: 94
Joined: Tue Sep 11, 2018 11:06 am

Tue Apr 16, 2019 9:34 am

jeszcze takie pytanko, chcę warunkiem pogodowym sprawdzać opad deszczy przed uruchomieniem zraszaczy. Czy ktoś sprawdzał pogodę np. 3 godziny wstecz? W przód z yr.no to można ale jak napisać warunek do sprawdzenia co "było" :)

Chodzi o to by nie lać wody jeśli napadało, bo może być sytuacja, że w momencie uruchamiania i sprawdzenia warunku czy będzie padac, odpowiedź będzie, że nie, a przecież może być po wielkim deszczu :)

Póki co wymyśliłem sobie że jeśli uruchomić zraszacze chcę np. o 6 rano, to np. sprawdzę prognozę jeśli chodzi o opad np. o 2 w nocy i dodam warunek, że jeśli nie pada to za 4 godziny ma uruchomić scenę (tą z 6 rano) która sprawdzi warunek czy pada i wtedy ewentualnie uruchomi zraszacze :)

Pytanie czy nie można tego ogarnać jedną sceną i prościej :)
wsosniak
Posts: 318
Joined: Sat Jun 02, 2018 8:02 am

Tue Jul 16, 2019 4:08 am

cosmita wrote:
Tue Apr 16, 2019 9:34 am
jeszcze takie pytanko, chcę warunkiem pogodowym sprawdzać opad deszczy przed uruchomieniem zraszaczy. Czy ktoś sprawdzał pogodę np. 3 godziny wstecz? W przód z yr.no to można ale jak napisać warunek do sprawdzenia co "było" :)
"CO BYŁO" (w moim przypadku czy był deszcz >=7mm) mam zrealizowane za pomocą kanału wirtualnego ( do sonoff basic-a ( lub innego prostego urządzenia z ESP8266) ładujesz muliboard z boardem SONOFF 4CH : viewtopic.php?p=37883#p37883 i masz jeden fizyczny kanał i 3 wirtualne) i mam do tego scene @fracz-a ktorą wywołuję o 9:00 rano i w warunku mam : jesli w danym dniu przewidywane opady są >=7mm (czyli mocny deszcz) to włączam ten wirtualny kanał (jako znacznik ze są przewidziane duze opady i zeby w nast dniu nie podlewać , nawet jesli w nast dniu nie bedzie opadów). I na nastepny dzien , kiedy o 5:30 uruchamiam scenę podlewania to sprawwdzam w warunku tej sceny: jesli opadów brak lub są znikome ..temperatura > = YYY ...zachmurzenie .. i ten wirtualny kanał NIE jest włączony -> to rozpocznij podlewanie.
O 8:00 zeruje (wyłączam) ten kanał, żeby "cykl podlewania" zacząć od początku
Post Reply