From e9e0b015cad4c4d12f6320a0044b52ba832242ca Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sun, 14 Nov 2021 20:58:06 +0000 Subject: [PATCH] 91_notify.pm: add setList (Forum #123956) git-svn-id: https://svn.fhem.de/fhem/trunk@25227 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/91_notify.pm | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/91_notify.pm b/fhem/FHEM/91_notify.pm index 1482b79c2..c5e06080b 100644 --- a/fhem/FHEM/91_notify.pm +++ b/fhem/FHEM/91_notify.pm @@ -24,10 +24,11 @@ notify_Initialize($) forwardReturnValue:1,0 ignoreRegexp readLog:1,0 + setList showtime:1,0 ); use warnings 'qw'; - $hash->{AttrList} = join(" ", @attrList); + $hash->{AttrList} = join(" ", @attrList)." $readingFnAttributes"; $hash->{SetFn} = "notify_Set"; $hash->{StateFn} = "notify_State"; @@ -124,7 +125,8 @@ notify_Exec($$) $ntfy->{TRIGGERTIME} = $now; setReadingsVal($ntfy, "triggeredByDev", $n, $dev->{NTFY_TRIGGERTIME}); setReadingsVal($ntfy, "triggeredByEvent", $s, $dev->{NTFY_TRIGGERTIME}); - $ntfy->{STATE} = $dev->{NTFY_TRIGGERTIME} if(AttrVal($ln,'showtime',1)); + $ntfy->{STATE} = $dev->{NTFY_TRIGGERTIME} + if(AttrVal($ln, 'showtime', !AttrVal($ln, "stateFormat", 0))); last if($dat); } } @@ -181,13 +183,21 @@ notify_Set($@) return "no set argument specified" if(int(@a) < 2); my %sets = (addRegexpPart=>2, removeRegexpPart=>1, inactive=>0, active=>0); + my $setList = AttrVal($me, "setList", ""); + my %usrSets = map { $_ =~ s/:.*//; $_ => 1 } split(" ", $setList); my $cmd = $a[1]; - if(!defined($sets{$cmd})) { - my $ret ="Unknown argument $cmd, choose one of ".join(" ", sort keys %sets); + if(!defined($sets{$cmd}) && !defined($usrSets{$cmd})) { + my $ret ="Unknown argument $cmd, choose one of ". + join(" ", sort keys %sets)." $setList"; $ret =~ s/active/active:noArg/g; return $ret; } + if($usrSets{$cmd}) { + readingsSingleUpdate($hash, $cmd, join(" ",@a[2..$#a]), 1); + return; + } + return "$cmd needs $sets{$cmd} parameter(s)" if(@a-$sets{$cmd} != 2); if($cmd eq "addRegexpPart") { @@ -576,6 +586,18 @@ END + +
  • setList
    + space separated list of user-defined commands. When executing such a + command, a reading with the same name is set to the arguments of the + command.
    + Can be used in scenarios like: + +

  • @@ -808,6 +830,18 @@ END + +
  • setList
    + Leerzeichen getrennte Liste von benutzerdefinierten Befehlen. Beim + ausfüren solcher Befehle wird ein gleichnamiges Reading auf dem + Wert des Befehls gesetzt. Kann z.Bsp. wie folgt verwendet werden: + +
  • +