diff --git a/fhem/FHEM/98_DOIF.pm b/fhem/FHEM/98_DOIF.pm
index a50680c05..d6751bddc 100644
--- a/fhem/FHEM/98_DOIF.pm
+++ b/fhem/FHEM/98_DOIF.pm
@@ -1404,8 +1404,13 @@ sub addDOIF_Readings
sub setDOIF_Reading
{
- my ($hash,$DOIF_Reading,$reading,$ReadingType) = @_;
+ my ($hash,$DOIF_Reading,$reading,$ReadingType,$eventa,$eventas,$dev) = @_;
$lastWarningMsg="";
+ $hash->{helper}{triggerEvents}=$eventa;
+ $hash->{helper}{triggerEventsState}=$eventas;
+ $hash->{helper}{triggerDev}=$dev;
+ $hash->{helper}{event}=join(",",@{$eventa}) if ($eventa);
+
my $ret = eval $hash->{$ReadingType}{$DOIF_Reading};
if ($@) {
$@ =~ s/^(.*) at \(eval.*\)(.*)$/$1,$2/;
@@ -2350,6 +2355,7 @@ sub DOIF_Trigger
}
+
sub
DOIF_Notify($$)
{
@@ -2496,7 +2502,7 @@ DOIF_Notify($$)
#readingsBeginUpdate($hash);
foreach my $reading (keys %{$hash->{Regex}{"DOIF_Readings"}{$device}}) {
my $readingregex=CheckRegexpDoIf($hash,"DOIF_Readings",$dev->{NAME},$reading,$eventas,0);
- setDOIF_Reading($hash,$reading,$readingregex,"DOIF_Readings") if (defined($readingregex));
+ setDOIF_Reading($hash,$reading,$readingregex,"DOIF_Readings",$eventa, $eventas,$dev->{NAME}) if (defined($readingregex));
}
#readingsEndUpdate($hash, 1);
}
@@ -2504,7 +2510,7 @@ DOIF_Notify($$)
if (defined ($hash->{helper}{DOIF_eventas})) { #$SELF events
foreach my $reading (keys %{$hash->{Regex}{"DOIF_Readings"}{$hash->{NAME}}}) {
my $readingregex=CheckRegexpDoIf($hash,"DOIF_Readings",$hash->{NAME},$reading,$hash->{helper}{DOIF_eventas},0);
- setDOIF_Reading($hash,$reading,$readingregex,"DOIF_Readings") if (defined($readingregex));
+ setDOIF_Reading($hash,$reading,$readingregex,"DOIF_Readings",$eventa, $eventas,$dev->{NAME}) if (defined($readingregex));
}
}
}
@@ -2534,7 +2540,7 @@ DOIF_Notify($$)
#readingsBeginUpdate($hash);
foreach my $reading (keys %{$hash->{Regex}{"event_Readings"}{$device}}) {
my $readingregex=CheckRegexpDoIf($hash,"event_Readings",$dev->{NAME},$reading,$eventas,0);
- setDOIF_Reading($hash,$reading,$readingregex,"event_Readings") if (defined($readingregex));
+ setDOIF_Reading($hash,$reading,$readingregex,"event_Readings",$eventa, $eventas,$dev->{NAME}) if (defined($readingregex));
}
#readingsEndUpdate($hash,1);
}
@@ -2542,7 +2548,7 @@ DOIF_Notify($$)
if (defined ($hash->{helper}{DOIF_eventas})) { #$SELF events
foreach my $reading (keys %{$hash->{Regex}{"event_Readings"}{$hash->{NAME}}}) {
my $readingregex=CheckRegexpDoIf($hash,"event_Readings",$hash->{NAME},$reading,$hash->{helper}{DOIF_eventas},0);
- setDOIF_Reading($hash,$reading,$readingregex,"event_Readings") if (defined($readingregex));
+ setDOIF_Reading($hash,$reading,$readingregex,"event_Readings",$eventa, $eventas,$dev->{NAME}) if (defined($readingregex));
}
}
}
@@ -3274,7 +3280,7 @@ DOIF_Attr(@)
} else {
if ($init_done) {
foreach my $reading (keys %{$hash->{$a[2]}}) {
- setDOIF_Reading ($hash,$reading,"",$a[2]);
+ setDOIF_Reading ($hash,$reading,"",$a[2],"","","");
}
}
}
@@ -4871,7 +4877,6 @@ Zwischen 5:00 und 22:00 Uhr läuft die Zirkulationspumpe alle 60 Minuten jeweils
define di_presence_simulation DOIF ([19:00-00:00])(set lamp on-for-timer {(int(rand(1800)+300))}) DOELSE (set lamp off)
attr di_presence_simulation repeatcmd rand(3600)+2200
-
wait und waitdel lassen sich für versch
attr di_cmd wait 2:0
attr di_cmd waitdel 0:2initialize Wird der Status vorbelegt, mit Initiali
di_lamp mit "initialized" vorbelegt werden. Das Reading cmd_nr wird auf 0 gesetzt, damit wird ein Zustandswechsel provoziert, das Modul wird initialisiert - der nächste Trigger führt zum Ausführen eines Kommandos.attr di_lamp intialize initializedattr di_lamp initialize initializedstate
@@ -6099,6 +6097,9 @@ subs { ## Definition der Perlfunktion lamp
{[08:00];lamp("off")} ## Um 08:00 Uhr wird die Funktion lamp mit dem Parameter "off" aufgerufen
::<perlfunction>fhem, Log, Log3, InternVal, InternalNum, OldReadingsVal, OldReadingsNum, OldReadingsTimestamp, ReadingsVal, ReadingsNum, ReadingsTimestamp, ReadingsAge, Value, OldValue, OldTimestamp, AttrVal, AttrNumfhem_set(<content>), mit <content> Übergabeparameter des FHEM set-Befehlsfhem entfällt.set_Event(<Event>)set_Event("on");set_State(<value>,<trigger>), mit <trigger>: 0 ohne Trigger, 1 mit Trigger, <trigger> ist optional, default ist 1set_State("on");get_State()fhem_set("lamp ".get_State());set_Reading(<readingName>,<value>,<trigger>), mit <trigger>: 0 ohne Trigger, 1 mit Trigger, <trigger> ist optional, default ist 0set_Reading("weather","cold");get_Reading(<readingName>)fhem_set("lamp ".get_Reading("dim"));set_Reading_Begin()set_Reading_Update("humidity",$hum);set_Reading_End(1);set_Exec(<timerName>, <seconds>, <perlCode>, <parameter>), mit <timerName>: beliebige Angabe, sie spezifiziert eindeutig einen Timer,
welcher nach Ablauf den angegebenen Perlcode <perlCode> aufruft. Falls als Perlcode eine Perlfunktion angegeben wird, kann optional ein Übergabeparameter <parameter> angegeben werden. Die Perlfunkion muss eindeutig sein und in FHEM zuvor deklariert worden sein.
Wird set_Exec mit dem gleichen <timerName> vor seinem Ablauf erneut aufgerufen, so wird der laufender Timer gelöscht und neugesetzt.get_Exec(<timerName>), Returnwert: 0, wenn Timer abgelaufen oder nicht gesetzt ist, sonst Anzahl der Sekunden bis zum Ablauf des Timersdel_Exec(<timerName>)set_Exec("off_Event",30,'set_Event("off")');if (defined $_...) ...$_betrag{heute}=100;