UWAGA: Strona oraz Forum Smart'ny Dom nie będzie dostępne 23 Grudnia 2024 ze względu na przenoszenie serwisu na mocniejszą maszynę.
W tym czasie polecam poświęcenie swojego czasu na pomoc partnerowi w przygotowaniu udanych Świąt 😉
Za niedogodności z góry przepraszam, admin
Wymyśliłem sobie harmonogram do ogrzewania
Mam item
w mapie mam:
0 | 00:00 |
15 | 00:15 |
30 | 00:30 |
45 | 00:45 |
60 | 01:00 |
75 | 01:15 |
90 | 01:30 |
105 | 01:45 |
120 | 02:00 |
I teraz jak stworzyć regułę?
Nie mogę bezpośrednio porównać CurrentTime bo nie jest liczbą. A chcę zrobić coś w stylu jeśli CurrentTIme = Testclock to zmniejsz temp o X stopni.
Temat rozwiązany. Opanowałem samemu więc wrzucam rozwiązanie. Może dla kogoś początkującego będzie przydatne.
Sposoby na harmonogramy są różne. Dużo ludzi poleca połączenie z kalendarzem google. Ja sobie wymyśliłem ustawianie w aplikacji tak jak na załączonym screenie.
Teraz tak tu moje items:
Tak to wygląda w sitemap:
Zeby setpoint fajnie nam się wyświetlał jako godzina np. 6:15 musimy zastosować transform (można użyć MAP) ja użyłem JS z przykładu z innego forum.
Plik JS:
No i teraz największy problem jak pobrać godzinę i porównać to z moim Itemem?? Jedno to DataTime drugie to cyfra lub string.
Trochę się naszukałem różnych sposobów konwersji.
Na początku dodawałem godzinę+minutę ale jest jeden kłopot funkcja now.getMinuteofHour zwraca cyfrę, która w przypadku minut 1-9 nie wyświetla się w postaci 01, 02. Przez co mamy np. godzinę 10:6.
Ostatecznie skorzystałem NTP Binding i ustawiłem sobie:
DateTime Current_Time "Aktualny Czas [%1$tH:%1$tM]" {channel="ntp:ntp:local:dateTime"}
Tak to wygląda ostatecznie:
Zastanawia mnie tylko wyzwolenie reguły czy sprawdzać co minutę (czyli gdy zmienia się czas) czy może lepiej co 15min
czyli when Time cron "0 */15 * ? * *" // Every 15 minutes