Modul 95_Alarm.pm: Erste Überlegungen zu kleinen Erweiterungen

Begonnen von m23, 08 Dezember 2019, 13:57:36

Vorheriges Thema - Nächstes Thema

m23

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.

Prof. Dr. Peter Henning