Modul Alarm: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 5: | Zeile 5: | ||
=Sensoren= | =Sensoren= | ||
===Ö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 | ||
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 | 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 ebtfallen) | |||
attr TFOpen.warn group windowDetector | |||
attr TFOpen.warn room Alarm | |||
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 | define LBatt.N .*:[Bb]attery.*[Ll]ow.* set LBatt.warn $NAME | ||
Zeile 18: | Zeile 79: | ||
attr LBatt.warn group deviceDetector | 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. | 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...) | ||
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...) | |||
[[Datei:alarm_lbatt.png]] | [[Datei:alarm_lbatt.png]] | ||
[[Kategorie:Examples]] | [[Kategorie:Examples]] |
Version vom 8. September 2014, 05:20 Uhr
Diese Seite beschreibt die Konfiguration und Verwendung des Moduls 95_Alarm.pm.
ACHTUNG. WORK IN PROGRESS
Sensoren
Ö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 ebtfallen) attr TFOpen.warn group windowDetector attr TFOpen.warn room Alarm
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...)