1. Wprowadzenie #
Czasem każdemu zdarza się zapomnieć o zrobieniu czegoś w istotnej sprawie. W aspek- cie inteligentnego domu/budynku taką sferą jest sfera bezpieczeństwa. Ten samouczek przedstawia rozwiązanie, dzięki któremu unikniesz problemu zapomnienia o uzbrojeniu alarmu, kiedy opuszczasz dom lub firmę.
Założenie jest następujące: jeżeli przez określoną ilość czasu system nie wykryje ruchu w budynku, wtedy automatycznie uzbroi alarm. Brzmi prosto, prawda? Wręcz banalnie. Ale żeby pokazać możliwości systemu DOMIQ, użyjemy kilku koncepcji, które mogą przy- dać Ci się w przyszłości, ponieważ ukazują ogólny model działania systemu i podejścia do rozwiązywania problemów. Nasz problem podzielimy na etapy i będziemy go rozwiązywać krok po kroku.
Dla potrzeb samouczka przedstawiamy integrację z system alarmowym Satel Integra. Opis konfiguracji będzie w całości dotyczył zakładki Zdarzenia w konfiguratorze modułu Base.
2. Rozwiązanie #
2.1. Wykrywanie ruchu w budynku #
Do naszego rozwiązania potrzebujemy sposobu na wykrycie ruchu w budynku. Tu z po- mocą przychodzą nam czujniki ruchu podłączone do systemu alarmowego. Aby potrakto- wać budynek globalnie interesuje nas wykrywanie ruchu na wszystkich czujnikach jednocześnie. W tym momencie możesz myśleć: „w moim budynku jest ich kilkadziesiąt (lub nawet więcej), będe potrzebować dużo zdarzeń”. Nic podobnego, wszystko zrobimy w użyciem pojedynczego zdarzenia!
Wzorce dopasowania i parametry
Pomogą nam w tym wzorce dopasowania i parametry. Jest to funkcjonalność procesora zdarzeń w module Base, która umożliwia tworzenie reguł dla przechwytywania wielu akcji w systemie w obrębie pojedynczej definicji. O wzorcach dopasowania można myśleć jak o filtrze, który przechwytuje określone rzeczy, a inne przepuszcza. Więcej o wzorcach i parametrach możesz przeczytać w dokumentacji modułu Base. https://www.domiq.pl/ produkt/domiq-base/
Zdarzeniem bazowym będzie wykrycie ruchu przez dowolny czujnik podłączony do cen- trali alarmowej. W systemie DOMIQ służy do tego identyfikator E.IDS.input.
Zatem pierwszym krokiem jest dodanie nowego zdarzenia. Możesz uzupełnić jego opis dla łatwiejszej nawigacji.
W polu Kanał wpisz: E.IDS.input.(%d+)
Tu właśnie użyliśmy wzorca dopasowania: %d+. Oznacza on „przechwyć jedną lub więcej cyfr„. Gdybyśmy zapisali samo %d, wówczas nasz wzorzec przechwyci tylko pojedynczą cyfrę w zakresie od 0-9.
Dodatkowo dzięki wzorcowi dopasowania znany będzie nr czujki, która została naruszona. W polu Dane wpisz: 1, ponieważ interesuje nas wykrycie ruchu.
2.2. Brak aktywności w budynku #
Jak wspomnieliśmy wcześniej, alarm ma zostać uzbrojony, gdy system nie wykryje ruchu przez określony czas. Zatem jak pewnie się domyślasz, będzie potrzebny nam timer. Bie- gnący timer powinien rozpoczynać odliczanie od nowa, jeżeli zostanie wykryty ruch. Tutaj z pomocą przychodzi komenda TIMER, która umożliwiwa tworzenie timerów z użyciem zwykłej komendy wywoływanej z poziomu zdarzenia.
W sekcji Akcje kliknij+Komenda i uzupełnij okno następująco:
Nazwa: TIMER.autoalarm.1h.C.alarmon
Wartość: 1
Kilka słów omówienia. Komenda TIMER.autoalarm.1h.C.alarmon tworzy timer o nazwie autoalarm (nazwa musi być unikalna na poziomie całej konfiguracji systemu, gdyż stanowi rodzaj unikalnego identyfikatora dla timera). Timer ma zdefiniowane opóźnienie 1h – oczy- wiście możesz użyć innej wartości. Po upływie czasu timer wykona komendę C.alarmon. Póki co nie będę omawiał, co oznacza ta komenda, dojdziemy do tego później.
Za jednym podejściem, korzystamy tutaj również z właściwości komendy TIMER, która umożliwia resetowanie timera przy ponownym wywołaniu komendy z użyciem tego same- go identyfikatora timera. Innymi słowy, przy każdym wykryciu ruchu przez dowolny z czuj- ników, nasz timer zostanie zresetowany i rozpocznie od nowa odliczanie czasu nieaktywności. Zatem kolejne założenie zrealizowane – mamy funkcjonalność wychwtytu- jącą brak aktywności!
2.3. Uzbrojenie alarmu #
Ostatnim etapem naszego rozwiązania jest uzbrojenie stref alarmowych, gdy system wy- kryje brak ruchu w budynku.
Wracamy teraz do „tajemniczej” komendy C.alarmon, która została przypisana w definicji timera.
W zasadzie nie ma tu nic z tajemnicy, bo użyjemy po prostu kolejnej ważnej funkcjonalno- ści dostępnej w systemie DOMIQ – makrodefinicji zdarzeń. Moduł Base umożliwia wysy- łanie dowolnych komend tekstowych w systemie i jednocześnie definiowanie zdarzeń, które na te komendy będą reagować. Przykładem tego jest właśnie nasza komenda C.alarmon, która zostanie wysłana przez timer, kiedy ten zakończy odliczanie. Treść tej komendy może być dowolna, pod warunkiem że zachowuje pewne reguły:
- Poprzedzona jest prefiksem C. lub E.
- Nie zawiera polskich znaków i spacji oraz innych znaków specjalnych. Dopuszczalne są jedynie kropki i podkreślniki. Zatem komenda tej formy jest prawidłowa: C.alarm.on lub C.alarm_on.
Staraj się myśleć o tej komendzie, jak o unikalnym identyfikatorze dla Twojego makra.
Aby system mógł na taką komendę zareagować trzeba zdefiniować kolejne zdarzenie, które nazwaliśmy makrodefinicją lub w skrócie makrem.
Po co są makrodefinicje?
Makrodefinicje dają dwie fundamentalne korzyści:
- „Opakowanie” wielu komend w jedną definicję, którą można łatwo przywołać w syste- mie. Jest to zatem mechanizm umożliwiający powtórne użycie tej samej definicji w wielu miejscach. Makro zdefiniowane w zdarzeniach możesz wywołać np. naciskając przycisk w aplikacji Remote, jako efekt wykonania się timera lub jako rezultat funkcji w Logice.
- Dzięki opakowaniu wielu komend w jedną, z łatwością można użyć tego makra w in- nym miejscu, dzięki czemu unikasz redefinicji tych samych komend w innych zdarze- niach, zatem oszczędzasz czas i zasoby modułu Base.
Bazując na naszym scenariuszu, wyobraź sobie, że w Twoim systemie alarmowym jest 10 stref. Zatem bez opakowania komend w makrodefinicję nie byłoby możliwe ich jednocze- sne uzbrojenie z poziomu timera (komenda TIMER może wywołać tylko jedną komendę). Ponadto możliwym jest, że chciałbyś również mieć możliwość ręcznego uzbrojenia całego systemu alarmowego np. z aplikacji Remote. Zamiast ręcznie uzbrajać wszystkie 10 stref, możesz wywołać swoje makro, a system sam wyśle 10 komend, które uzbroją całość.
Makrodefinicje nie różnią się niczym w swojej definicji od zwykłego zdarzenia poza zawar- tością pola Kanał, które w tym przypadku nie zawiera predefiniowanego identyfikatora, a komendę, która stanowi unikalny identyfikator Twojego makra.
Zatem do dzieła! Dodaj nowe zdarzenie i zdefiniuj je następująco:
Kanał: C.alarmon
Dane: 1
W sekcji Akcje dodaj komendy do uzbrojenia poszczególnych stref alarmowych. Poniżej prezentujemy przykład dla jednej strefy:
Nazwa: C.IDS.armed.1
Wartość: 1;pin:1234.
3. Podsumowanie #
Tak doszliśmy do końca naszego rozwiązania. Aby zebrać to w całość przejrzyjmy jeszcze raz najważniejsze kroki:
1. Zdefiniowaliśmy zdarzenie dla wykrywania ruchu przez dowolny z czujników, które ustawi timer odliczający czas do automatycznego uzbrojenia alarmu:
Kanał: E.IDS.input.(%d+)
Dane: 1
Akcje -> +Komenda
Nazwa: TIMER.autoalarm.1h.C.alarmon Wartość: 1
2. Zdefiniowaliśmy makrodefinicję dla akcji uzbrojenia stref alarmowych. Makrodefinicja będzie wywoływana przez timer pod zakończeniu odliczania.
Kanał: C.alarmon
Dane: 1
Akcje -> tu definiujesz dowolną liczbę komend wysyłanych do poszczególnych stref alarmowych.
Nasz samouczek dotyczy automatycznego uzbrojenia alarmu, ale z przedstawione tu kon- cepty możesz użyć do zrealizowania innych funkcjonalności w systemie. Przykładem tu może być makrodefinicja dla wyłączenia wszystkich świateł w budynku lub dla makro glo- balnej zmiany nastaw temperatur ogrzewania/chłodzenia.
4. Dodatek (dla ciekawych) #
Przy opisywaniu zdarzenia na wykrywanie ruchu z dowolnej czujki, napisałem o wzorcach dopasowania i parametrach. Jednakże informacja o tym, która czujka wywołała ruch nie została nigdzie użyta. Aby przechwycić tą informację wykorzystywane są właśnie parame- try. Tak, jak wzorce dopasowania stanowią rodzaj filtra dla zdarzeń, tak parametry są ro- dzajem kontenerów, które przechowują to, co odfiltrowały wzorce.
Aby pokazać jak to działa przedstudiuj poniższą definicję zdarzenia:
Kanał: E.IDS.input.(%d+)
Dane: 1
Akcje -> +Komenda:
Nazwa: C.VAR.lastInput
Wartość: $C1
Powyższe zdarzenie zapisze w zmiennej VAR.lastInput numer czujki ruchu, która jako ostatnia wykryła ruch. Parametr $C1 to zmienna przechowująca wartość odfiltrowa- ną przez wzorzec %d+. W pojedynczej definicji zdarzenia może być maks. 9 parametrów. Które są kolejno numerowane $C1 – $C9.
Poniżej przedstawiam przykład, który ma 3 wzorce dopasowania i trzy parametry.
Kanał: E.LCN.output.(%d+).(%d+).(%d+)
Tak zdefiniowane zdarzenie pozwala przechwycić akcje z dowolnego segmentu, modułu i wyjścia ściemnialnego LCN.
Jeżeli chciałbyś osobno przechwycić nr segmentu, ID modułu LCN i nr wyjścia, wówczas te wartości są dostępne odpowiednio w parametrach $C1, $C2 i $C3.
Wzorce i parametry to potężny mechanizm, które wprowadza naprawdę dużą elastycz- ność w deklarowaniu zdarzeń w module DOMIQ/Base.