Tach zusammen,
um beim Scharf-/Unscharfschalten auf die einzelnen Level zurückgreifen zu können und gleichzeitig Rückwärtskompatibilität bestehender Installationen zu gewährleisten habe ich folgende Änderung bei mir vorgenommen und möchte das gerne hier kurz besprechen:
diff -u FHEM/95_Alarm.pm_orig FHEM/95_Alarm.pm
--- FHEM/95_Alarm.pm_orig 2019-12-08 11:03:23.826718987 +0100
+++ FHEM/95_Alarm.pm 2019-12-08 13:07:07.397461060 +0100
@@ -766,6 +766,8 @@
my $msg = '';
my $mga;
my $cmd;
+
+ #Log3 $hash,1,"[Alarm $level] Arm called with dev $dev evt $evt act $act]";
#-- arming the alarm
if( ($act eq "arm") && ( $xac ne "armed") ){
@@ -785,9 +787,15 @@
my @cmdactarr = split(/;/,$cmdact);
my $cmdactf;
if( int(@cmdactarr) == 1 ){
+ $cmdact =~ s/\$NAME/$dev/g;
+ $cmdact =~ s/\$EVENT/$evt/g;
+ $cmdact =~ s/\$LEVEL/$level/g;
fhem("$cmdact");
}else{
for(my $i=0;$i<int(@cmdactarr);$i++){
+ $cmdactarr[$i] =~ s/\$NAME/$dev/g;
+ $cmdactarr[$i] =~ s/\$EVENT/$evt/g;
+ $cmdactarr[$i] =~ s/\$LEVEL/$level/g;
fhem("$cmdactarr[$i]");
}
}
@@ -832,6 +840,9 @@
#--
$msg = "[Alarm $level] disarmed from alarmSensor $dev with event $evt";
$cmd = AttrVal($name, "disarmact", 0);
+ $cmd =~ s/\$NAME/$dev/g;
+ $cmd =~ s/\$EVENT/$evt/g;
+ $cmd =~ s/\$LEVEL/$level/g;
fhem("define alarm".$level.".disarm.T at +00:00:03 ".$cmd)
if( $cmd );
}
Somit kann ich jetzt:
{my_alarm_arm('$NAME','$EVENT','$LEVEL')}
ins Feld zum Scharfschalten eintragen und kann dies in meiner Funktion nutzen:
sub my_alarm_arm($$$) {
my ($dev, $evt, $level) = @_;
if (int($level) == 5) {
fhem( "...." );
}
}
Was haltet Ihr davon?
Markus
ps. an mein erstes Posting hier möchte ich ein sehr großes Danke für die geleistete Mühe aller Beteiligten hängen.
ZitatWas haltet Ihr davon?
Nichts.
LG
pah