Tym razem będzie coś ciut trudniejszego, czyli przykład budowania funkcjonalności gdy nie mamy gotowca.
Generalnie zegar astronomiczny jest jedną z głównych funkcji wykorzystywanych w większości systemów. Loxone nie jest tutaj wyjątkiem i na dzień dobry mamy do wykorzystania kilka gotowych klocków:
- Impuls o świcie
- Impuls o wschodzie
- Impuls o zmierzchu
- Impuls o zachodzie
- Stan wysoki przy świetle dziennym
- Stan wysoki przy świetle dziennym (+30 minut z każdej strony)
Przy okazji, dla dociekliwych. Pogooglajcie sobie czym się różni świt od wschodu i zmierzch od zachodu. Jak zwykle twórcy Loxone wykazali się porządnym podejściem do tematu. I za to kocham ten system.
Tutaj mamy screen z dostępnych funkcji "czasowych":

Każdy z powyższych klocków można wykorzystać w dowolny sposób w programie konfiguracyjnym, wystarczy drag&drop i mamy. Tyle że to nadal dla mnie było trochę mało. Lubię sobie utrudniać
Założenia zaawansowanego zegara:- Dwa oddzielne zegary dla rolet i świateł
- Każdy sygnał rano i wieczorem (dla rolet i świateł) ma mieć możliwość wprowadzenia korekty +/- 120 minut w prosty sposób za pomocą wizualizacji
- Użytkownik ma mieć informację w wizualizacji o której wystąpi dany sygnał po korekcie.
- Jako bonus ma być informacja o aktualnym trybie w którym znajduje się dany zegar (noc/dzień) oraz możliwość manualnego przełączenia (w celach testowych).
I tak powyższa funkcjonalność wygląda w wizualizacji:

Jak widać na przykładzie godziny "światła - świt", rózni się on od "rolety - świt" dokładnie o 100 minut. Proste i łatwe w obsłudze. Użytkownik sam sobie ustawia wg. własnego widzimisię.
Jak to zostało zbudowane? Przede wszystkim zamiast sygnałów na świt i zmierzch wykorzystaliśmy inne, dostępne klocki:
- Aktualna liczba minut które upłynęły od północy obecnego dnia
- Minuty od północy do świtu danego dnia
- Minuty od północy do zmierzchu danego dnia.
Reszta jest kwestią prostego dodawania, odejmowania oraz przeliczania liczby minut od północy na format standardowej godziny (HH:MM). Dodatkowo trzeba wrzucić klocki które umożliwią userowi klikanie +/-, czyli wejście wirtualne oraz stany wyświetlające odpowiednie wartości. Tak to wygląda w programie konfiguracyjnym:

Wygląda to kosmicznie na pierwszy rzut oka, ale tak naprawdę jest bardzo proste. Przede wszystkim mamy tutaj komplet, czyli zmierzch + świt dla rolet + świateł. Dla uproszczenia, pojedyńcza "gałąź" (zmierzch dla świateł) wygląda tak:

- Na zielono zaznaczone są bloczki które widzi użytkownik w wizualizacji. Czyli przyciski oraz stany.
- Na fioletowo zaznaczone są klocki czasowe oraz stała = 60 do przeliczania minut na godziny.
- Na pomarańczowo są zaznaczone zmienne (flagi) które przechowują dany stan (1 dla dnia, 0 dla nocy). Flagi możemy potem dowolnie wykorzystać w projekcie.
Czyli po kolei, co się dzieje, na przykładzie zmierzchu dla rolet:
1. Do wartości analogowej "time of dusk" jest dodawana liczba którą sobie user wyklika na wizualizacji (korekta...).
2. Wynik rozdziela się na trzy ścieżki ścieżki:
a) Godziny - wynik dodania jest dzielony przez 60 i zamieniany na liczbę całkowitą. Liczba całkowita trafia do pierwszego wejścia bloczka stanu (I1) oraz do pierwszego wejścia bloczka wzoru (formula; I1).
b) Minuty - wynik dodania trafia do drugiego wejścia bloczka wzoru. Wynik działania [(I2)-(I1*60)] trafia do drugiego wejścia bloczka stanu (formula; I2).
c) Porównanie - wynik dodawania jest porównywany z ilością minut od północy do wystąpienia zmierzchu.
3. Gdy ilość minut od północy = wynik dodawania, to idzie sygnał na wejście reset bloczka przycisku, który jest spięty z flagą oraz stanem (dzień/noc) na wizualizacji.
4. Koniec
Wykorzystanie zegara do zaawansowanego sterowania roletamiJedziemy dalej. Zmienną przechowywaną we fladze wykorzystujemy potem do załączania lub wyłączania bloczków rolet czy świateł. Możemy też wykorzystać go do zbudowania prostej logiki korzystającej z dodatkowego harmonogramu oraz bloczka centralnego sterowania. Oto założenia:
Użytkownik za pomocą wizualizacji określa za pomocą harmonogramu czasy otwarcia i zamknięcia rolet (np. 6-22 w tygodniu, 8-22 w weekend). Rolety otworzą się o zadanej godzinie (6 lub 8 ) ale tylko w przypadku gdy jest już jasno. Rolety zamkną się jak będzie ciemno ale najpóźniej o zadanej godzinie (22). Czas "jasności" korzysta z sygnałów zegara astronomicznego po korekcie, opisanego powyżej.
Tak powyższa funkcjonalność wygląda w konfiguracji:

Jak to działa? Mamy naszą flagę przechowującą stan dnia/nocy. Dokładamy gotowy bloczek harmonogramu, dzięki któremu user w wizualizacji określi dowolny harmonogram tygodniowy. Wynik działania bloczka harmonogramu (wystawia stan wysoki w zdefiniowanych okresach) oraz naszą flagę łączymy do wejść bramki AND.
W następnym kroku musimy przekształcić stan wysoki/niski na impulsy (zbocze narastające/opadające). Do takiego przekształcania służy bloczek "Push switch". Impulsy łączymy do odpowiednich wejść bloczka rolet (Cu = całkowicie w górę, Cd = całkowicie w dół). Gotowe.
Tryb "lamelki"Oczywiście nie musimy na tym poprzestać. Każdy bloczek rolet posiada również wejście S, które odpala rolety w trybie lamelek (rozszczelnienie). Dzięki temu możemy w prosty sposób zbudować funkcję tzw. łagodnego wybudzania, czyli rolety najpierw się rozszczelnią, a potem, po zadanym przez usera czasie otworzą się całkowicie. Tak to wygląda w konfiguracji:

Sygnał z wyjścia Qon (zbocze narastające) trafia do wejścia S (lamelki) co powoduje rozszczelnienie rolet. Jednocześnie trafia do bloczka "Delayed pulse". Opóźnienie (czas między trybem lamelek a całkowitym otwarciem rolet) jest definiowane przez usera w wizualizacji za pomocą wejścia wirtualnego. Odpowiednio opóźniony impuls trafia potem do wejścia Cu (całkowicie w górę).
Przy okazji, tak wygląda bloczek harmonogramu w wizualizacji:

