Modul Alarm: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 21: Zeile 21:
*Es wird ein weiterer Raum benötigt, der in der gegenwärtigen Fassung des Moduls den Namen ''Alarm'' trägt
*Es wird ein weiterer Raum benötigt, der in der gegenwärtigen Fassung des Moduls den Namen ''Alarm'' trägt
==Konfiguration==
==Konfiguration==
Beim Anklicken des Begriffes ''Alarm'' im oberen Menü des Webinterfaces wird die Alarmkonfiguration angezeigt (siehe Bilder unten).  Als Default sind 8 Alarmlevel möglich, in der Tabelle 'Settings' können für jeden Level gesetzt werden:
Beim Anklicken des Begriffes ''Alarm'' im oberen Menü des Webinterfaces wird die Alarmkonfiguration angezeigt.  Als Default sind 8 Alarmlevel möglich, in der Tabelle 'Settings' können für jeden Level gesetzt werden:
*Startzeit und Endzeit des Alarmlevels
*Startzeit und Endzeit des Alarmlevels
*Eine Nachricht zur Erläuterung des Alarms (Teil 2)
*Eine Nachricht zur Erläuterung des Alarms (Teil 2)
*Checkbox sharp/unsharp = scharf/unscharf
*Checkbox sharp/unsharp = scharf/unscharf
*Button zum Canceln = Aufheben des Alarms
*Button zum Canceln = Agufheben des Alarms
 
[[Datei:alarm_settings.pn]]
Danach wird die Tabelle der Sensoren angezeigt. Für jeden Sensor kann gesetzt werden:
Danach wird die Tabelle der Sensoren angezeigt. Für jeden Sensor kann gesetzt werden:
*Alarmlevel, die hierdurch ausgelöst werden
*Alarmlevel, die hierdurch ausgelöst werden
Zeile 38: Zeile 38:
* $EVENT wird durch den kompletten Event wersetzt
* $EVENT wird durch den kompletten Event wersetzt
* $EVTPART1... wird durch den 1. Teilstring des Events gefüllt, etc.
* $EVTPART1... wird durch den 1. Teilstring des Events gefüllt, etc.
 
[[Datei:alarm_sensors.png]]
Anschließend wird die Tabelle der Aktoren angezeigt. Für jeden Aktor kann gesetzt werden:  
Anschließend wird die Tabelle der Aktoren angezeigt. Für jeden Aktor kann gesetzt werden:  
*Alarmlevel, die diesen Aktor zu starten
*Alarmlevel, die diesen Aktor zu starten
Zeile 65: Zeile 65:
  attr TFOpen.warn group windowDetector
  attr TFOpen.warn group windowDetector
  attr TFOpen.warn room Alarm
  attr TFOpen.warn room Alarm
 
In der Alarmkonfiguration sieht das dann so aus:
[[Datei:alarm_tf.png]]
Als nächstes muss eine Überwachungsroutine geschrieben werden. Das kann entweder als FHEM-Skript geschehen, oder in der Datei 99_myUtils.pm als perl-Code. Dieses Unterprogramm muss den obigen dummy setzen, und zwar auf den oder die Namen der geöffneten Fenster und Türen. Beispiel:
Als nächstes muss eine Überwachungsroutine geschrieben werden. Das kann entweder als FHEM-Skript geschehen, oder in der Datei 99_myUtils.pm als perl-Code. Dieses Unterprogramm muss den obigen dummy setzen, und zwar auf den oder die Namen der geöffneten Fenster und Türen. Beispiel:


Zeile 106: Zeile 107:
   }
   }
  return $str;
  return $str;
  }
  }
Schließlich wird ein ''dummy'' definiert und mit dem Attribut ''alarmDevice Actor'' versehen, so dass er in der Aktorenliste der Alarmanlage auftaucht
Schließlich wird ein ''dummy'' definiert und mit dem Attribut ''alarmDevice Actor'' versehen, so dass er in der Aktorenliste der Alarmanlage auftaucht


Zeile 135: Zeile 134:
==Rauchmelder als Alarmsignal==
==Rauchmelder als Alarmsignal==
==Funk-Türgong als Alarmsignal==
==Funk-Türgong als Alarmsignal==
 
Hier wird ein FS20-Türgong als akustisches Alarmsignal verwendet


[[Kategorie:Examples]]
[[Kategorie:Examples]]

Version vom 9. September 2014, 04:01 Uhr

Diese Seite beschreibt die Konfiguration und Verwendung des Moduls 95_Alarm.pm.

ACHTUNG. WORK IN PROGRESS

Allgemeines

Das Modul 95_Alarm.pm stellt eine komfortable Oberfläche bereit, um per Webinterface bestimmte auslösende Elemente (nachfolgend 'Sensoren' genannt) mit bestimmten Aktionen (nachfolgend 'Aktoren' genannt) zu verknüpfen - und zwar nur innerhalb bestimmter Zeitfenster sowie an- und abschaltbar ("scharf/sharp" bzw. "unscharf/unsharp"). Diese Verknüpfungen werden als "normale" FHEM-Definitionen gespeichert.

Erste Schritte

Damit FHEM-Devices als Aktoren oder Sensoren für die Alarmanlage genutzt werden können, müssen zwei neue globale Attribute eingeführt werden. Dazu muss in der Grundkonfiguration von FHEM die Zeile mit der Definition der nutzerspezifischen Attribute userattr angepasst werden:

attr global userattr alarmDevice alarmSettings devStateIcon devStateStyle ...(hier folgen weitere Attribute)
  • Soll ein FHEM-Device als Sensor für die Alarmanlage genutzt werden, wird der Wert seines alarmDevice-Attributes auf 'Sensor' gesetzt.
  • Soll ein FHEM-Device als Aktor für die Alarmanlage genutzt werden, wird der Wert seines alarmDevice-Attributes auf 'Actor' gesetzt
  • Das Attribute alarmSettings wird beim Setzen der Alarme auf der Alarmkonfigurationsseite automatisch befüllt.

Ferner muss das Modul 95_Alarm.pm im Modulpfad installiert werden, ebenso die JavaScript-Datei alarm.js in www/pgm2.

Definition

Die Alarmanlage - hier mit dem Namen AAA versehen - selbst wird über

define AAA Alarm
attr AAA room AlarmRoom

definiert. Zusätzlich soll sie im oberen Menü des Webinterfaces auftauchen, dazu benötigen wir noch

define AAA_weblink weblink htmlCode {Alarm_Html("AAA")}
attr AAA_weblink room AlarmRoom
  • Der Raum AlarmRoom ist ein versteckter Raum, der nicht im unteren Menü auftaucht.
  • Es wird ein weiterer Raum benötigt, der in der gegenwärtigen Fassung des Moduls den Namen Alarm trägt

Konfiguration

Beim Anklicken des Begriffes Alarm im oberen Menü des Webinterfaces wird die Alarmkonfiguration angezeigt. Als Default sind 8 Alarmlevel möglich, in der Tabelle 'Settings' können für jeden Level gesetzt werden:

  • Startzeit und Endzeit des Alarmlevels
  • Eine Nachricht zur Erläuterung des Alarms (Teil 2)
  • Checkbox sharp/unsharp = scharf/unscharf
  • Button zum Canceln = Agufheben des Alarms

Datei:Alarm settings.pn Danach wird die Tabelle der Sensoren angezeigt. Für jeden Sensor kann gesetzt werden:

  • Alarmlevel, die hierdurch ausgelöst werden
  • Ein regulärer Ausdruck, bei dessen Erkennung die Auslösung erfolgt
  • Eine Nachricht zur Erläuterung des Alarms (Teil 1)
  • Ein Radiobutton, um festzulegen, ob dieser Sensor den Alarm auslöst (=Raise) oder aufhebt (=Cancel).

Die insgesamt in den STATE der Alarmanlage geschriebene Nachricht besteht dann aus

(Nachricht Teil 1)' '(Nachricht Teil 2).

In diesen Nachrichten werden die folgenden Ersetzungen vorgenommen

  • $NAME vird durch den Namen des auslösenden Devices ersetztrun
  • $EVENT wird durch den kompletten Event wersetzt
  • $EVTPART1... wird durch den 1. Teilstring des Events gefüllt, etc.

Alarm sensors.png Anschließend wird die Tabelle der Aktoren angezeigt. Für jeden Aktor kann gesetzt werden:

  • Alarmlevel, die diesen Aktor zu starten
  • Ein FHEM-Kommando zum Starten des Aktors
  • Ein FHEM-Kommando zum Stoppen des Aktors
  • Eine Zeitverzögerung - entweder als Angabe von Sekunden (<60) oder im Format mm:ss

Einrichten

Durch Anklicken des Buttons Set Alarms werden die alarmSettings-Attribute befüllt. Achtung: Es empfiehlt sich, danach ein Save Config auszuführen, damit die Attribute und Notifier permanent sind.

Sensoren

Rauchalarm

Dieser Alarm ist mit Lebensgefahr verbunden und wird deshalb unabhängig von FHEM ausgelöst, und von FHEM nur registriert und mit weiteren Aktoren verbunden.

Im Beispiel werden vernetzte Rauchmelder des Typs HM-SEC-SD verwendet. Deren Teamleader erhalten das Attribut alarmDevice Sensor, so dass sie in der Sensorenliste der Alarmanlage auftauchen. Sie lösen den Alarm mit dem höchsten Level aus. Die Realisierung lässt sich aber auch über beliebige andere in FHEM eingebundene Rauchmelder erreichen.

Alarm smoke.png

Öffnung von Fenstern oder Türen

Hier werden verschiedene Sensoren definiert.

  • Einerseits werden alle überwachten Fenster- und Türkontakte, die überwacht werden sollen, mit dem Attribut alarmDevice Sensor versehen, so dass sie in der Sensorenliste der Alarmanlage auftauchen. Das dient der Überwachung von Zustandsänderungen.
  • Andererseits soll auch geprüft werden können, ob und welche Fenster oder Türen offen sind - z.B. abends, oder bei Regenwetter. Dazu muss zunächst ein dummy definiert werden, der als alarmDevice Sensor attributiert wird und somit in der Sensorenliste der Alarmanlage auftaucht.
define TFOpen.warn dummy
attr TFOpen.warn alarmDevice Sensor
attr TFOpen.warn alarmSettings |||on (Diese Zeile wird vom Modul 95_Alarm.pm automatisch erzeugt und kann bei der ersten Definition entfallen)
attr TFOpen.warn group windowDetector
attr TFOpen.warn room Alarm

In der Alarmkonfiguration sieht das dann so aus: Alarm tf.png Als nächstes muss eine Überwachungsroutine geschrieben werden. Das kann entweder als FHEM-Skript geschehen, oder in der Datei 99_myUtils.pm als perl-Code. Dieses Unterprogramm muss den obigen dummy setzen, und zwar auf den oder die Namen der geöffneten Fenster und Türen. Beispiel:

sub HouseOpen()
{
 my $kfo = 0;
 my $kfs = "";
 my $kto = 0;
 my $kts = "";
 my $str = "";
 if( $main::value{'BK.F'} ne "Closed" ){
   $kfo++;
   $kfs = "BK/";
 }
 if( $main::value{'WK.F'} ne 'Closed' ){
   $kfo++;
   $kfs = $kfs."WK/";
 }
 if( $main::value{'VK.T'} ne "Closed" ){
   $kto++;
   $kts = "VK/";
 }
 if( $main::value{'WZ.T'} ne 'Closed' ){
   $kto++;
   $kts = $kts."WZ/";
 }
 if( ($kfo >= 1) && ($kto == 0) ){
   $kfs = substr($kfs,0,-1);
   fhem("set TFOpen.warn $kfs Fenster"); 
 }elsif( ($kfo == 0) && ($kto >= 1) ){
   $kts = substr($kts,0,-1);
   fhem("set TFOpen.warn $kts Tür"); 
 }elsif( ($kfo >= 1) && ($kto >= 1)){
    $kts = substr($kts,0,-1);
    $kfs = substr($kfs,0,-1);
    $str = "$kts Tür + $kfs Fenster";
    fhem("set TFOpen.warn $kts T / $kfs F");
 }else{
    fhem("set TFOpen.warn none");
 }
return $str;
}

Schließlich wird ein dummy definiert und mit dem Attribut alarmDevice Actor versehen, so dass er in der Aktorenliste der Alarmanlage auftaucht

define TFOpen.check dummy
attr TFOpen.check alarmDevice Actor
attr TFOpen.check alarmSettings alarm4,alarm5,|{HouseOpen()}||600 (Diese Zeile wird vom Modul 95_Alarm.pm automatisch erzeugt und kann bei der ersten Definition entfallen)
attr TFOpen.check group windowDetector
attr TFOpen.check room Alarm

Batterie schwach bei FHEM-Devices

Dieser Sensor besteht aus einem notify und einem dummy, der bei einer 'battery low'-Meldung eines beliebigen FHEM-Device auf dessen Namen gesetzt wird. Der dummy wird als alarmDevice Sensor attributiert, so dass er in der Sensorenliste der Alarmanlage auftaucht.

define LBatt.N .*:[Bb]attery.*[Ll]ow.* set LBatt.warn $NAME
attr LBatt.N room Alarm
attr LBatt.N group deviceDetector
define LBatt.warn dummy
attr LBatt.warn alarmDevice Sensor
attr LBatt.warn room Alarm
attr LBatt.warn group deviceDetector

Auf einen Test, ob gleichzeitig bei anderen FHEM-Devices die Batterie ebenfalls schwach ist, wird hier verzichtet. Für diesen Sensor wird ein eigener Alarmlevel (niedriger Priorität) erzeugt. Bei einem beliebigen 'battery low' Event wird somit der STATE der Alarmanlage gesetzt auf Batt. <devicename> schwach. Dieser Alarm muss manuell zurückgesetzt werden (schließlich sollten die Batterien ja erst gewechselt werden...) Alarm lbatt.png

Aktoren

Rauchmelder als Alarmsignal

Funk-Türgong als Alarmsignal

Hier wird ein FS20-Türgong als akustisches Alarmsignal verwendet