View Categories

Automatischer Alarm

1. Einführung #

Manchmal vergisst man etwas Wichtiges – das passiert jedem. Im Kontext eines intelligenten Hauses oder Gebäudes betrifft das oft die Sicherheit. Dieses Tutorial zeigt eine Lösung, mit der du nicht vergisst, das Alarmsystem zu aktivieren, wenn du das Haus oder Büro verlässt.

Das Prinzip ist einfach: Wenn für eine bestimmte Zeit keine Bewegung im Gebäude erkannt wird, scharfschaltet das System automatisch den Alarm. Klingt simpel, oder? Fast zu banal. Aber um die Möglichkeiten des DOMIQ-Systems zu zeigen, verwenden wir mehrere Konzepte, die dir auch in anderen Projekten helfen können, da sie zeigen, wie das System allgemein arbeitet. Wir teilen das Problem in logische Schritte und lösen es Stück für Stück.

In diesem Tutorial integrieren wir das System mit der Alarmzentrale Satel Integra. Die Konfiguration erfolgt ausschließlich in der Registerkarte Ereignisse im DOMIQ/Base-Modul.

2. Lösung #

2.1. Bewegungserkennung im Gebäude #

Wir benötigen einen Weg, Bewegung im Gebäude zu erfassen. Dazu nutzen wir die Bewegungsmelder, die an das Alarmsystem angeschlossen sind. Unser Ziel: alle Bewegungen im Gebäude erfassen – global, mit nur einem Ereignis. Du denkst jetzt vielleicht: „Ich habe dutzende Bewegungsmelder – brauche ich jetzt dutzende Ereignisse?“ Nein – wir machen es mit nur einem einzigen Ereignis!

Mustererkennung und Parameter

Hier helfen uns Matching-Muster (Pattern) und Parameter. Das ist eine Funktion des Ereignisprozessors im Base-Modul, mit der man viele Aktionen gleichzeitig abdecken kann – mit nur einer Definition. Man kann sich das Muster wie einen Filter vorstellen – er fängt bestimmte Werte ab und ignoriert andere. Mehr über Muster und Parameter findest du hier: https://domiq.pl/produkt/domiq-base/

Bewegung erkannt von einem beliebigen Sensor der Alarmzentrale. Im DOMIQ-System verwenden wir dafür den Identifikator: E.IDS.input

Der erste Schritt besteht also darin, ein neues Ereignis hinzuzufügen. Zur leichteren Navigation können Sie die Beschreibung vervollständigen.

Geben Sie in das Feld Kanal ein: E.IDS.input.(%d+)

Hier haben wir das passende Muster verwendet: %d+. Es bedeutet „eine oder mehrere Ziffern erfassen“. Hätten wir nur %d geschrieben, dann würde unser Muster nur eine einzige Ziffer im Bereich 0-9 erfassen.

Außerdem ist dank des übereinstimmenden Musters die Nummer des Melders bekannt, der manipuliert wurde. Geben Sie in das Feld Daten ein: 1, da wir an der Bewegungserkennung interessiert sind.

2.2. Untätigkeit im Gebäude #

Wie wir bereits erwähnt haben, soll der Alarm ausgelöst werden, wenn das System eine bestimmte Zeit lang keine Bewegung erkennt. Wie Sie sich wahrscheinlich denken können, benötigen wir also einen Timer. Der laufende Timer soll wieder anfangen, herunterzuzählen, wenn eine Bewegung erkannt wird. An dieser Stelle kommt der TIMER-Befehl zum Einsatz, mit dem Timer mit einem einfachen Befehl auf Ereignisebene erstellt werden können.

Klicken Sie im Bereich Aktionen auf +Befehl und füllen Sie das Fenster wie folgt aus:

Name: TIMER.autoalarm.1h.C.alarmon
Wert: 1

Ein paar Worte zur Erläuterung. Der Befehl TIMER.autoalarm.1h.C.alarmon erzeugt einen Timer mit dem Namen autoalarm (der Name muss auf der Ebene der gesamten Systemkonfiguration eindeutig sein, da er eine Art eindeutiger Bezeichner für den Timer ist). Der Timer hat eine definierte Verzögerung von 1h – Sie können natürlich auch einen anderen Wert verwenden. Wenn der Timer abläuft, wird der Befehl C.alarmon ausgeführt. Was dieser Befehl bedeutet, werde ich hier nicht weiter erläutern, dazu kommen wir später.

In einem Ansatz verwenden wir hier auch die Eigenschaft des TIMER-Befehls, die es ermöglicht, den Timer zurückzusetzen, wenn der Befehl erneut mit der gleichen Timer-ID aufgerufen wird. Mit anderen Worten: Sobald eine Bewegung von einem der Detektoren erkannt wird, wird unser Timer zurückgesetzt und beginnt erneut, die Inaktivitätszeit herunterzuzählen. Damit ist eine weitere Annahme erfüllt – wir haben eine Funktion zur Erkennung von Inaktivität!

2.3. Scharfschalten des Alarms #

Die letzte Stufe unserer Lösung besteht darin, die Alarmzonen zu aktivieren, wenn das System eine fehlende Bewegung im Gebäude feststellt.

Wir kehren nun zu dem „mysteriösen“ Befehl C.alarmon zurück, der in der Timer-Definition zugewiesen wurde.

Im Prinzip gibt es hier kein Geheimnis, denn wir werden einfach eine andere wichtige Funktionalität von DOMIQ nutzen – die Makrodefinition von Ereignissen. Das Base-Modul ermöglicht es, beliebige Textbefehle an das System zu senden und gleichzeitig die Ereignisse zu definieren, die auf diese Befehle reagieren sollen. Ein Beispiel hierfür ist der Befehl C.alarmon, der vom Timer gesendet wird, wenn er den Countdown beendet. Der Inhalt dieses Befehls kann alles sein, solange er bestimmten Regeln folgt:

  1. Ihm geht die Vorsilbe C. oder E. voraus.
  2. Polnische Zeichen und Leerzeichen oder andere Sonderzeichen sind nicht erlaubt. Nur Punkte und Unterstriche sind erlaubt. Daher ist der Befehl in dieser Form korrekt: C.alarm.on oder C.alarm_on.

Betrachten Sie diesen Befehl als einen eindeutigen Bezeichner für Ihr Makro.

Damit das System auf einen solchen Befehl reagieren kann, muss ein weiteres Ereignis definiert werden, das wir Makro-Definition oder kurz Makro genannt haben.

Wofür sind Makrodefinitionen da?

Makrodefinitionen bieten zwei grundlegende Vorteile:

  1. „Verpackung“ mehrerer Befehle in eine einzige Definition, die im System leicht abrufbar ist. Es handelt sich also um einen Mechanismus, mit dem dieselbe Definition an mehreren Stellen wiederverwendet werden kann. Sie können ein in Ereignissen definiertes Makro aufrufen, z. B. durch Drücken einer Taste in der Remote-Anwendung, als Ergebnis der Ausführung eines Timers oder als Ergebnis einer Funktion in Logik.
  2. Durch die Zusammenfassung mehrerer Befehle in einem einzigen ist es einfach, dieses Makro an anderer Stelle zu verwenden, wodurch die Neudefinition derselben Befehle in anderen Ereignissen vermieden wird, was Zeit und Ressourcen für das Basismodul spart.

Stellen Sie sich in unserem Szenario vor, dass es in Ihrer Alarmanlage 10 Zonen gibt. Ohne die Befehle in eine Makrodefinition zu packen, wäre es also nicht möglich, sie gleichzeitig über die Zeitschaltuhr scharf zu schalten (ein TIMER-Befehl kann nur einen Befehl auslösen). Außerdem ist es möglich, dass Sie das gesamte Alarmsystem auch manuell scharfschalten möchten, z. B. über die Remote-Anwendung. Anstatt alle 10 Zonen manuell scharf zu schalten, können Sie Ihr Makro aufrufen und das System selbst sendet 10 Befehle, um das Ganze scharf zu schalten.

Makro-Definitionen unterscheiden sich in ihrer Definition nicht von einem regulären Ereignis, abgesehen vom Inhalt des Feldes Kanal, das in diesem Fall keinen vordefinierten Bezeichner enthält, sondern einen Befehl, der der eindeutige Bezeichner Ihres Makros ist.

Machen Sie sich also an die Arbeit! Fügen Sie ein neues Ereignis hinzu und definieren Sie es wie folgt:

Kanal: C.alarmon

Daten: 1

Fügen Sie im Abschnitt Aktionen Befehle zum Scharfschalten einzelner Alarmzonen hinzu. Nachfolgend finden Sie ein Beispiel für eine Zone:

Bezeichnung: C.IDS.armed.1

Wert: 1; pin:1234.

3. Zusammenfassung #

So haben wir das Ende unserer Lösung erreicht. Um sie zusammenzusetzen, gehen wir noch einmal die wichtigsten Schritte durch:

1. Wir haben ein Ereignis für die Erkennung einer Bewegung durch einen der Sensoren definiert, das einen Timer setzt, der bis zur automatischen Scharfschaltung des Alarms herunterzählt:

Kanal: E.IDS.input.(%d+)
Dane: 1
Aktionen->+Befehl
Nazwa: TIMER.autoalarm.1h.C.alarmon Wartość: 1

2. Wir haben eine Makro-Definition für die Aktion der Scharfschaltung der Alarmzonen definiert. Die Makrodefinition wird vom Timer am Ende des Countdowns aufgerufen.

Kanal: C.alarmon

Daten: 1

Aktionen -> Hier definieren Sie eine beliebige Anzahl von Befehlen, die an einzelne Alarmzonen gesendet werden sollen.

In unserem Tutorial geht es um die automatische Scharfschaltung eines Alarms, aber Sie können die hier vorgestellten Konzepte nutzen, um andere Funktionalitäten im System zu realisieren. Ein Beispiel hierfür wäre eine Makrodefinition für das Ausschalten aller Lichter in einem Gebäude oder für eine globale Makroänderung der Heizungs-/Kühlungseinstellungen.

4. Nachtrag (für Neugierige) #

Bei der Beschreibung des Ereignisses zur Erkennung von Bewegungen durch einen beliebigen Melder habe ich über übereinstimmende Muster und Parameter geschrieben. Die Information, welcher Melder die Bewegung ausgelöst hat, wurde jedoch nirgends verwendet. Es sind die Parameter, die verwendet werden, um diese Information zu erfassen. Genauso wie die übereinstimmenden Muster eine Art Filter für Ereignisse sind, sind die Parameter die Rodome von Containern, die speichern, was die Muster herausgefiltert haben.

Um zu zeigen, wie dies funktioniert, studieren Sie die folgende Ereignisdefinition:

Kanal: E.IDS.input.(%d+)
Daten: 1
Aktionen -> +Befehl:

Bezeichnung: C.VAR.lastInput

Wert: $C1

Das obige Ereignis speichert die Nummer des Bewegungsmelders, der die letzte Bewegung erkannt hat, in der Variablen VAR.lastInput. Der Parameter $C1 ist eine Variable, die den nach dem Muster %d+ gefilterten Wert speichert. In einer einzigen Ereignisdefinition können bis zu 9 Parameter enthalten sein. Diese sind fortlaufend nummeriert $C1 – $C9.

Im Folgenden finden Sie ein Beispiel mit drei übereinstimmenden Mustern und drei Parametern.

Kanal: E.LCN.output.(%d+).(%d+).(%d+)

Ein auf diese Weise definiertes Ereignis ermöglicht die Erfassung von Aktionen von jedem Segment, Modul und dimmbaren LCN-Ausgang.

Wenn Sie die Segment-Nr., die LCN-Modul-ID und die Ausgangs-Nr. separat erfassen möchten, dann sind diese Werte in den Parametern $C1, $C2 bzw. $C3 verfügbar.

Muster und Parameter sind ein leistungsfähiger Mechanismus, der eine wirklich große Flexibilität bei der Deklaration von Ereignissen in DOMIQ/Base ermöglicht.

Powered by BetterDocs