Zakładka Timery służy do definiowania reguł czasowych (dalej zwanymi timerami), które mają być wykonane przez moduł Base w określonym czasie. Dla każdej reguły można określić dokładną datę i czas wykonania, dodatkowe warunki oraz listę akcji, które będą wykonane przy każdorazowym wywołaniu timera.
Dzięki timerom możliwe jest zautomatyzowanie powtarzalnych czynności, co sprawia, że pamiętanie o
nich przestaje być konieczne.
Zakładka Timery w swojej budowie jest identyczna, jak zakładka Zdarzenia. Znajdziesz w niej listę reguł –
Struktura, formularz z parametrami timera – Szczegóły oraz interfejs do definiowania akcji – Akcje.
Omówimy okno Szczegóły, gdyż ono różni się od tego z zakładki Zdarzenia, opis pozostałych elementów
jest tożsamy z tym przedstawionym dla zakładki Zdarzenia.
1. Szczegóły #
Sekcja Szczegóły służy do definowania atrybutów timerów i grup.
Grupy mają trzy atrybuty:
- Aktywny – Odznacz, aby deaktywować grupę. Nieaktywne elementy są wyświetlane w drzewie struktury z przekreśloną etykietą. Domyślnie to pole jest zaznaczone.
- Opis – Krótki opis grupy, który jest wyświetlany w Strukturze.
- Warunek: Warunek dodany do grupy timerów tworzy iloczyn logiczny z warunkami poszczególnych
timerów. Zatem jeżeli warunek grupy nie zostanie spełniony, wówczas nie zostanie wyzwolony żaden
timer przypisany do grupy.
Każdy timer ma natomiast zestaw dziewięciu atrybutów.
- Aktywny – Odznacz, aby deaktywować timer. Nieaktywne elementy są wyświetlane w drzewie struktury z przekreśloną etykietą. Domyślnie to pole jest zaznaczone.
- Opis – Krótki opis timera, który jest wyświetlany w Strukturze.
- Miesiąc – Miesiąc w przedziale od 1 do 12. Jeżeli pole pozostanie puste, a pole Dzień zostanie uzupełnione, wówczas timer będzie wywoływany w każdym miesiącu w roku, w wybrany dzień.
- Dzień – Dzień miesiąca w przedziale od 1 do 31. Jeżeli pole pozostanie puste, wówczas timer będzie
wywoływany codziennie. - Godzina – Godzina w przedziale od 0 do 23. Nie należy wpisywać tu wartości poprzedzonych zerem np. 06, 02 itp.
- Minuta – Minuta w przedziale od 0 do 59. Jeżeli pole Minuta jest uzupełnione, natomiast pole Godzina pozostanie puste, wówczas timer będzie wyzwalany co godzinę, w wybranej minucie. Natomiast
jeżeli pole Minuta pozostaje puste, a pole Godzina jest uzupełnione, wówczas timer będzie wykonywany co minutę przez całą wskazaną godzinę.
Nie należy wpisywać tu wartości poprzedzonych zerem np. 06, 02 itp. - Sekunda – Sekunda w przedziale od 0 do 59. Jeżeli pole Sekunda jest uzupełnione, natomiast pola
Godzina i Minuta pozostaną puste, wówczas timer będzie wyzwalany co minutę w wybranej sekundzie. Uwaga! Jeżeli wprowadzanych jest kilka pozycji, wartości muszą się różnić o co najmniej 2, np.
34, 36, 38 itd. Jeżeli chcesz, aby zdarzenie było wywoływane co minutę o pełnej minucie, wówczas w
polu Sekunda wpisz: 0. Nie należy wpisywać tu wartości poprzedzonych zerem np. 06, 02 itp. - Dzień tygodnia – Dzień tygodnia w przedziale od 1 do 7, gdzie 1 odpowiada niedzieli, 2 poniedziałkowi, itd. Pozostaw to pole puste, jeżeli chcesz, aby timer był wywoływany każdego dnia tygodnia. Z
użyciem tego pola łatwo jest utworzyć np. osobne reguły dla dni powszednich i weekendów. - Warunek – Dodatkowy warunek, który musi być spełniony, aby timer został wzbudzony. Obowiązują
tutaj identyczne zasady, jak w przypadku Zdarzeń.
W każdym z powyższych pól można podać więcej niż jedną wartość, używając przecinka jako separatora
(poza polem Warunek) pomiędzy kolejnymi wartościami. Jeżeli pola są ze sobą powiązane, wówczas
utworzone zostają kombinacje z zawartości pól. Przestudiuj poniższe przykłady:
- W polu Godzina wpisano 16,20, natomiast w polu Minuta 15,45. W takim przypadku timer będzie wywoływany o 16:15, 16:45, 20:15 oraz 20:45.
- W polu Dzień wpisano 1,2,3,4,5,6,7, natomiast w polu Dzień tygodnia: 2,3,4,5,6. W
tym przypadku timer będzie wywołany w dni powszednie, w pierwszym tygodniu
miesiąca. - W polu Dzień wpisano 1, w polu Godzina: 6, a w polu Minuta: 0. Timer będzie wówczas
wykonany każdego pierwszego dnia miesiąca o godzinie 6:00.
2. Zegar astronomiczny #
Moduł Base umożliwia wykonywanie timerów w oparciu o godziny wschodu i zachodu słońca (zegar
astronomiczny). W ten sposób utworzysz reguły np. załączające oświetlenie po zmroku nie angażując do
tego żadnych dodatkowych czujników.
Aby zegar astronomiczny funkcjonował, niezbędne jest uzupełnienie danych w sekcji Lokalizacja w zakładce Ustawienia.
Aby zdefiniować timer z użyciem zegara astronomicznego użyj jednego ze słów kluczowych:
- sunset – Wprowadź tę wartość w polu Godzina, aby timer był wykonany dokładnie w godzinie i minucie zachodu słońca.
- sunrise – Wprowadź tę wartość w polu Godzina, aby timer był wykonany dokładnie w godzinie i minucie wschodu słońca.
Możliwe jest również wykonywanie timerów przesuniętych w czasie względem godziny wschodu i zachodu słońca. W tym celu należy wprowadzić przesunięcie w polu Minuta. Przesunięcie może mieć wartość dodatnią lub ujemną. Możliwe jest użycie wielu wartości przesunięć w tej samej definicji timera.
Wówczas ich wartości należy wpisać w polu Minuta rozdzielone przecinkiem.
- W polu Godzina wpisano: sunrise, a w polu Minuta: 30 – timer zostanie wykonany 30
minut po wschodzie słońca. - Analogicznie, jeżeli w polu Godzina wpisano: sunrise, a w polu Minuta: -30, timer zostanie wykonany 30 minut przed wschodem słońca.
- Identyczne reguły mają zastosowanie dla wyrażenia sunset.
- Jeżeli w polu Minuta zostało wpisane kilka wartości np. 15,30,45, wówczas timer zostanie wywołany trzykrotnie dla każdego przesunięcia osobno.
3. Timery wywoływane komendami #
Obok timerów uruchamianych w oparciu o definicje w zakładce Timery, istnieje również możliwość utworzenia timerów przy użyciu komend. Jest to bardziej dynamiczna forma tworzenia timerów, która może
być efektem np. naciśnięcia przycisku, wywołania zdarzenia lub akcją wywołaną przez inny timer.
W module Base są dwa rodzaje komend do tworzenia timerów dynamicznie: timer z referencją i timer bez
referencji.
3.1. TIMER (timer z referencją) #
Komenda TIMER służy do dynamicznego tworzenia timera, który wykona określoną czynność po wskazanym czasie. Ten rodzaj komendy wymaga nadania timerowi nazwy unikalnej w całym systemie – dlatego
nazywany jest timerem z referencją, gdyż nazwa stanowi referencję do timera, umożliwiającą jego
anulowanie.
Każdorazowe wywołanie komendy TIMER z tą samą nazwą, usuwa poprzednią instancję timera i tworzy
nową, rozpoczynając odliczanie czasu od początku. Możliwe jest również anulowanie timera poprzez ponowne wywołanie go z czasem równym 0.
Przykładowym zastosowaniem dla komendy TIMER jest implementacja oświetlenia schodowego, automatyczne uzbrojenie alarmu itp.
Składnia komendy jest następująca:
TIMER.nazwa.opóźnienie.komenda=dane, gdzie
nazwa – Nazwa timera (bez polskich znaków i spacji), która jest unikalna pośród innych komend typu TIMER,
opóźnienie – Czas po którym zostanie wykonana akcja przypisana do tego timera. Opóźnienie może być wyrażane w godzinach, minutach oraz sekundach oraz milisekundach, Kolejno skróty: h, m, s, ms.
Opóźnienie może być również dynamicznie zczytywane z bieżącej wartości dowolnego identyfikatora w systemie DOMIQ. Dzięki temu możliwe jest użycie jednej definicji do wywołania timerów z różnymi opóźnieniami. Zmiana długości opóźnienia bazuje na wartości wskazanej zmiennej. Składnia poleceń: TIMER.<nazwa>.{nazwa_identyfikatora}<jednostka>.<komenda>=<wartość>;
komenda – Akcja, która zostanie wykonana po upłynięciu odliczania.
wartość – Wartość jaką ma przyjąć identyfikator, do którego wysyłana jest komenda. W przypadku zdarzeń jest wartość, z jaką zdarzenie zostanie rozgłoszone.
Przestudiuj następujące przykłady:
- Wyłączenie oświetlenia po określonym czasie.
Klasycznym przykładem dla takiego scenariusza jest sterowanie oświetleniem załączanym z czujki ruchu, które ma zostać automatycznie wyłączone w przypadku braku ruchu. Włączenie oświetlenia i wywołanie komendyTIMERjest efektem wykonania zdarzenia, dlatego ono również zostanie zaprezentowane w tym przykładzie.
Załóżmy, że czujka ruchu podłączona jest do wejścia nr 1 modułu Satel INT-IORS o adresie 1, sterowanego przez moduł DOMIQ/Expander. Natomiast oświetlenie jest sterowane przekaźnikiem nr 3 w tym samym module.
Kanał: E.EXP.input.1.1
Dane: 1
Następnie należy dodać dwie komendy z użyciem opcji + Komenda:
Komenda 1 – załączenie oświetlenia
Nazwa: C.EXP.output.1.3
Wartość: 1
Komenda 2 – uruchomienie timera na zgaszenie światła po 2 minutach.
Nazwa: TIMER.czujka_korytarz.2m.C.EXP.output.1.3
Wartość: 0
Komendę nr 2 należy rozumieć następująco: utwórz timer o nazwie czujka_korytarz, który po 2 minutach wywoła komendę C.EXP.output.1.3 z wartością 0. - Automatyczne uzbrojenie alarmu.
Jest to przykład zdarzenia, które w przypadku niewykrycia ruchu przez żadną z czujek
przez określony czas, uzbroi strefy w centrali Satel. Takie zdarzenie może służyć jako zabezpieczenie na wypadek zapomnienia o uzbrojeniu alarmu podczas wychodzenia z
domu.
Kanał: E.IDS.input.(%d+)
Dane: 1 Komenda: Nazwa: TIMER.autoalarm.2h.C.ALARMON Wartość: 1 Zdarzenie wychwyci każde naruszenie czujki ruchu i w efekcie utworzy timer o nazwie autoalarm, który po upływie 2 godzin wykona komendę C.ALARMON z wartością 1. Dla komendy C.ALARMON należy utworzyć osobne zdarzenie, które w rezultacie wykona komendy uzbrojenia poszczególnych stref alarmowych. Kanał: C.ALARMON Dane: 1 Następnie należy dodać komendy z użyciem opcji + Komenda w liczbie odpowiedniej do liczby stref, które mają zostać uzbrojone. Poniżej przykładowa pojedyncza komenda: Nazwa: C.IDS.armed.1 Dane: 1;pin:12345 - Automatyczne wyłączenie oświetlenia w pokoju dziecięcym z użyciem aplikacji
Remote.
Załóżmy, że światło w pokoju dziecięcym ma być włączone (30% jasności) przez 30 minut, po czym ma automatycznie zgasnąć. Światło jest sterowane przez wyjście ściemniane nr 2 w module LCN o adresie 50. Cała procedura ma być inicjowana w aplikacji
Remote. W tym celu zastosowana zostanie kontrolka Przycisk. Jej definicja jest następujaca:
W zakładce Krótko należy dodać dwie komendy.
Komenda 1:
Kliknij + LCN
Moduł: 50
Wyjście: 2
Wartość: 30
Komenda 2:
Kliknij + Komenda:
Nazwa: TIMER.pokoj_dzieciecy.30m.C.LCN.output.0.50.2
Wartość: 0 - Anulowanie timera.
Ten przykład prezentuje anulowanie timera z użyciem komendy. Komenda może
być efektem wykonania zdarzenia, innego timera, naciśnięcia przycisku w aplikacji Remote, kontrolki na wizualizacji itd. Na potrzeby przykładu załóżmy, że jest to efekt wykonania zdarzenia. Wówczas należy dodać następującą komendę (+ Komenda):
Nazwa: TIMER.alarm1.0
Wartość: 0
W wyniku tej komendy zostanie anulowany timer o nazwiealarm1. - Timer z dynamicznie ustalanym opóźnieniem
Na potrzeby przykładu załóżmy, że jest to efekt wykonania zdarzenia. Wówczas należy
dodać następującą komendę (+ Komenda):
Nazwa: TIMER.test.{VAR.test}s.C.LCN.output.0.10.1
Wartość: 100
Ten przykład należy czytać następująco – wywołaj timer o nazwie test z opóźnieniem
równym wartości zmiennejVAR.test. Po upływie wartości opóźnienia włącz na
100% wyjście nr 1 w module LCN o adresie 10. Analogicznie można używać nazw identyfikatorów w komendachDELAY.
3.2. DELAY (timer bez referencji) #
Komenda DELAY również służy do dynamicznego tworzenia timera, który wykona określoną czynność po wskazanym czasie. Jednakże w odróżnieniu od komendy TIMER nie umożliwia anulowania biegnącego odliczania. Każdorazowe wywołanie komendy DELAY tworzy nową instancję timera, który po upływie określonego czasu wykona przypisaną czynność.
DELAY.opóźnienie.komenda=dane, gdzie
opóźnienie – czas po którym zostanie wykonana akcja przypisana do tego timera. Opóźnienie może być wyrażane w godzinach, minutach oraz sekundach oraz milisekundach, Kolejno skróty: h, m, s, ms.
Opóźnienie może być również dynamicznie zczytywane z bieżącej wartości dowolnego identyfikatora w systemie DOMIQ. Dzięki temu możliwe jest użycie jednej definicji do wywołania timerów z różnymi opóźnieniami. Zmiana długości opóźnienia bazuje na wartości wskazanej zmiennej. Składnia poleceń: DELAY.{nazwa_identyfikatora}<jednostka>.<komenda>=<wartość>;
komenda – Akcja, która zostanie wykonana po upłynięciu odliczania.
wartość – Wartość jaką ma przyjąć identyfikator, do którego wysyłana jest komenda. W przypadku zdarzeń jest wartość, z jaką zdarzenie zostanie rozgłoszone.
4. Zagadnienia zaawansowane #
4.1. Bindowanie identyfikatorów dla timerów #
Bindowanie identyfikatorów jest dostępne także dla timerów. Umożliwia odwołanie się w definicji timera
do bieżącej wartości dowolnego identyfikatora. Gdy użyjesz takiego zapisu, moduł Base automatycznie w
momencie wywołania danej reguły, pobierze aktualną wartością wskazanego identyfikatora.
Bindowanie identyfikatorów możesz użyć w oknie + Komenda w sposób identyczny, jak zostało to przedstawione dla zdarzeń.
Użycie bindowania identyfikatorów w polach formularza Szczegóły umożliwia tworzenie bardziej interaktywnych timerów. Przykładem tego mogą być reguły, których czas uruchomienia jest zależny od opcji wybranych przez użytkownika w aplikacji Remote. Bindowanie identyfikatorów można użyć we wszystkich
polach formularza Szczegóły poza polem Opis i nie jest wymagane tu zastosowanie nawiasów
klamrowych.
- Podnoszenie rolet o godzinie wybranej przez użytkownika
Załóżmy scenariusz, w którym rolety w budynku mają się podnosić o określonej godzinie, którą użytkownik systemu ustala samodzielnie w aplikacji Remote.
W tym celu należy utworzyć kontrolkę Czas w zakładce Remote. Nastawy powinny być
odporne na restarty modułu, dlatego w polach Kanał dla godzin i Kanał dla minut należy wpisać nazwy identyfikatorów, będących zmiennymi typu MEM. W naszym przykładzie: MEM.roletyH oraz MEM.roletyM.
Nastepnie możemy użyć tych identyfikatorów w definicji timera:
Godzina: MEM.roletyH
Minuta: MEM.roletyM
W sekcji Akcje należy zdefiniować komendy sterujące roletami. - Uruchomienie timera w dni tygodnia wybrane przez użytkownika
Jest to rozwinięcie przykładu nr 1. Dodatkowo załóżmy, że użytkownik chce mieć kontrolę na tym, w które dni tygodnia reguła ma być wykonywana.
W tym celu należy zdefiniować kontrolkę Wybór w zakładce Remote wg przykładu
przedstawionego w opisie tej kontrolki. W polu Kanał należy wpisać nazwę identyfikatora będącego zmienną MEM, gdyż chcemy również, aby nastawy były zapamiętywane
w pamięci nieulotnej. W naszym przykładzie: MEM.roletyDni
W definicji timera przedstawionej w przykładzie 1, należy dodatkowo uzupełnić pole
Dzień tygodnia wpisując MEM.roletyDni. - Warunkowe wykonanie timera na podlewanie ogrodu.
Załóżmy, że timer ma cyklicznie uruchamiać system podlewania ogrodu o 4:00 oraz o
20:00, każdego dnia tygodnia. Jednakże ma być on również uzależniony od czujnika
deszczu oraz mieć możliwość ręcznej deaktywacji przez użytkownika z poziomu aplikacji Remote. Załóżmy, że czujnik deszczu jest dostępny jako identyfikator:MODBUS.int.sensor.rain.
Ręczna deaktywacja
W zakładce Remote dodaj Przełącznik. Aby ustawienia były odporne na restarty urządzenia, wpisz identyfikator wskazujący zmienną MEM, np. MEM.autopodlewanie. Przełącznik w zależności od stanu nada zmiennej wartość: on lub off.
Następnie zdefiniuj timer:
Godzina: 4, 20
Minuta: 0
Dzień tygodnia: Pozostaw to pole puste, aby timer wykonywał się każdego dnia.
Warunek: MEM.autopodlewanie==’on’ and MODBUS.int.sensor.rain == 0
W sekcji Akcje należy zdefiniować komendy inicjujące podlewanie.
4.2. Arytmetyka #
Moduł Base umożliwia wykonywanie działań arytmetycznych na wartościach identyfikatorów.
Dostępne są następujące operacje: dodawanie, odejmowanie, mnożenie, dzielenie, potęgowanie (^),
dzielenie modulo (%). Arytmetyka dostepna jest w polach: Warunek oraz Wartość w oknie + Komenda.
- Automatyczne uruchomienie ogrzewania pod warunkiem, że temperatura mierzona jest niższa od wartości zadanej o określoną wartość. Na potrzeby przykładu załóżmy, że: tempeartura zadana jest przechowywana w zmiennej MEM o nazwie
MEM.temp.salon. Natomiast temperatura mierzona jest dostępna w identyfikatorzeMODBUS.int.sensor.temp. Ogrzewanie ma być załączone o określonej porze, ale wyłącznie gdy różnica temperatury pomieszczenia i zadanej jest na określonym poziomie (1,5°C lub większa). Jeżeli warunek jest spełniony, wówczas załączony zostanie przekaźnik sterujący zaworem pętli grzewczej. Przekaźnik jest podłączony do bloku Satel INT-IORS, sterowanego modułem DOMIQ/Expander. Blok ma adres 1, a przekaźnik nr 3. Godzina: 5 Minuta: 0 Warunek: MODBUS.int.sensor.temp – 1,5 <= MEM.temp.salon Ważne! Jest to jednocześnie przykład bindowania identyfikatorów i działań arytmetycznych w polu Warunek. W sekcji Akcje -> + Komenda Nazwa: C.EXP.output.1.3 Wartość: 1
Użycie arytmetyki w oknie + Komenda zostało zaprezentowane przy okazji opisu zdarzeń.
4.3. Przykład implementacji #
Na koniec przedstawimy kompletny przykład użycia timera, który jest zarządzany z poziomu aplikacji
Remote.
Ustawianie godziny i dni timera z poziomu aplikacji DOMIQ/Remote.
Interfejs użytkownika (zakładka Remote):
- Dodaj element typu Czas.
- Kliknij na nim dwukrotnie i uzupełnij jego właściwości:
- W polu Opis wpisz opis kontrolki.
- W komórce Kanał dla godzin wpisz MEM.godzina.
- W polu Kanał dla minut wpisz MEM.minuta.
- Nazwy tu przyjęte są umowne i możesz wprowadzić inne.
- Dodaj element typu Wybór.
- Kliknij na nim dwukrotnie i uzupełnij jego właściwości:
- W polu Opis wpisz opis, np. Dni tygodnia.
- W komórce Kanał wpisz nazwę zmiennej, w której będą zapamiętywane dni tygodnia, kiedy zdarzenie ma zostać wywołane, np. MEM.dni.
- Zaznaczając pole wyboru Wielokrotny wybór użytkownik ma możliwość wyboru
opcji, kiedy zdarzenie ma być wywoływane. - Po zaznaczeniu pola wyboru Przynajmniej jeden niemożliwe będzie odznaczenie
wszystkich dni tygodnia w menu aplikacji. Użytkownik będzie musiał zaznaczyć co
najmniej jedną opcję, kiedy timer będzie wywoływany.
- Zapisz zakładkę Remote, aby zatwierdzić ustawienia.
Definicja timera:
- Dodaj nowy timer i uzupełnij jego właściwości:
- W komórce Opis wpisz jego opis w zależności od przeznaczenia timera.
- Uzupełnij atrybuty w sekcji Szczegóły – tu wykonujemy odwołanie do nazw zmiennych
MEM, które zostały zadeklarowane w interfejsie Remote. - W polu Godzina wpisz: MEM.godzina
- W polu Minuta wpisz: MEM.minuta
- W polu Dzień tygodnia wpisz: MEM.dni
- W sekcji Akcje zdefiniuj działania, które będą wykonane po wywołaniu timera.
- Zapisz zakłądkę Timery, aby zatwierdzić ustawienia.