From f190b545385d12fad13d472247312bb081a5a3fa Mon Sep 17 00:00:00 2001 From: Damian <> Date: Sat, 23 Feb 2019 21:48:22 +0000 Subject: [PATCH] 98_DOIF.pm: new internal VERSION, fixed commandref for event_Readings git-svn-id: https://svn.fhem.de/fhem/trunk@18706 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_DOIF.pm | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/fhem/FHEM/98_DOIF.pm b/fhem/FHEM/98_DOIF.pm index 08abf13cb..ac29f45da 100644 --- a/fhem/FHEM/98_DOIF.pm +++ b/fhem/FHEM/98_DOIF.pm @@ -2369,7 +2369,7 @@ DOIF_Notify($$) if ($dev->{NAME} eq "global" and (EventCheckDoif($dev->{NAME},"global",$eventa,'^INITIALIZED$') or EventCheckDoif($dev->{NAME},"global",$eventa,'^REREADCFG$'))) { $hash->{helper}{globalinit}=1; - # delete old timer-readings + # delete old timer-readings foreach my $key (keys %{$defs{$hash->{NAME}}{READINGS}}) { delete $defs{$hash->{NAME}}{READINGS}{$key} if ($key =~ "^timer_"); } @@ -3139,6 +3139,9 @@ DOIF_Define($$$) my $err; my $msg; $hs=$hash; + if (AnalyzeCommandChain(undef,"version 98_DOIF.pm noheader") =~ "^98_DOIF.pm (.*)Z") { + $hash->{VERSION}=$1; + } if (!$cmd) { $cmd=""; @@ -3149,7 +3152,7 @@ DOIF_Define($$$) } if ($cmd =~ /^\s*(\(|$)/) { - $hash->{MODEL}="FHEM"; + $hash->{MODEL}="FHEM"; ($msg,$err)=CmdDoIf($hash,$cmd); #delete $defs{$hash->{NAME}}{".AttrList"}; setDevAttrList($hash->{NAME}); @@ -4095,6 +4098,7 @@ Funktion: med
Bsp.:

define di_frost DOIF ([$SELF:outTempMed] < 0) (set warning frost)
+
attr di_frost event_Readings outTempMed:[outdoor:temperature:med]


Die Definition über das Attribut event_Readings hat den Vorteil, dass der bereinigte Wert im definierten Reading visualisiert und geloggt werden kann (med entspricht med3).
@@ -4107,9 +4111,9 @@ Funktion: diff

Bsp.:

-define temp_abfall ([outdoor:temperature:diff5] > 3) (set temp fall in temperature)
+define temp_abfall DOIF ([outdoor:temperature:diff5] < -3) (set temp fall in temperature)

-Wenn die Temperaturdifferenz zwischen dem letzten und dem fünftletzten Wert um drei Grad fällt, dann Anweisung ausführen.
+Wenn die Temperaturdifferenz zwischen dem letzten und dem fünftletzten Wert um mindestens drei Grad fällt, dann Anweisung ausführen.

anteiliger Anstieg

@@ -5376,9 +5380,15 @@ Hierbei wird der aufwändig berechnete Durchschnittswert nur einmal berechnet, s Erzeugen berechneter Readings mit Events   back

-Dieses Atrribut hat die gleiche Syntax wie DOIF_Readings. Der Unterschied besteht darin, dass event_Readings im Gegensatz zu DOIF_Readings beim Setzen der definierten Readings jedes mal Events produziert. +Mit Hilfe des Attributes event_Readings können eigene Readings innerhalb des DOIF definiert werden. Dieses Atrribut hat die gleiche Syntax wie DOIF_Readings. Der Unterschied besteht darin, dass event_Readings im Gegensatz zu DOIF_Readings beim Setzen der definierten Readings jedes mal Events produziert. Die Nutzung von event_Readings ist insb. dann sinnvoll, wenn man eventgesteuert außerhalb des Moduls auf die definierten Readings zugreifen möchte.

+Syntax
+
+attr <DOIF-Modul> event_Readings <readingname1>:<definiton>, <readingname2>:<definition>,...
+
+<definition>: Beliebiger Perlausdruck ergänzt um DOIF-Syntax in eckigen Klammern. Angaben in eckigen Klammern wirken triggernd und aktualisieren das definierte Reading.
+
Bsp.:

define outdoor DOIF ##