98_DOIF.pm: fixed undefined timer

git-svn-id: https://svn.fhem.de/fhem/trunk@22757 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Damian
2020-09-11 16:21:17 +00:00
parent 511d193bf6
commit b5b729391c

View File

@@ -1842,7 +1842,6 @@ DOIF_CheckTimers($$$$)
my $end; my $end;
my $intervaltimer; my $intervaltimer;
$timer =~ s/\s//g; $timer =~ s/\s//g;
($timer,$days)=SplitDoIf('|',$timer); ($timer,$days)=SplitDoIf('|',$timer);
$days="" if (!defined $days); $days="" if (!defined $days);
@@ -1854,13 +1853,14 @@ DOIF_CheckTimers($$$$)
return($timer,"intervaltimer without time interval"); return($timer,"intervaltimer without time interval");
} }
} }
$i=$hash->{helper}{last_timer}++; $i=$hash->{helper}{last_timer};
if (defined $time) { if (defined $time) {
if ($time !~ /^\s*(\[.*\]|\{.*\}|\(.*\)|\+.*|[0-9][0-9]:.*|:[0-5][0-9])$/ and $hash->{MODEL} eq "Perl") { if ($time !~ /^\s*(\[.*\]|\{.*\}|\(.*\)|\+.*|[0-9][0-9]:.*|:[0-5][0-9])$/ and $hash->{MODEL} eq "Perl") {
return ($timer,"no timer"); return ($timer,"no timer");
} }
($result,$err) = DOIF_getTime($hash,$condition,$time,$trigger,$i,$days); ($result,$err) = DOIF_getTime($hash,$condition,$time,$trigger,$i,$days);
return ($result,$err) if ($err); return ($result,$err) if ($err);
$hash->{helper}{last_timer}++;
} else { } else {
return($timer,"no timer defined"); return($timer,"no timer defined");
} }
@@ -1868,12 +1868,14 @@ DOIF_CheckTimers($$$$)
if ($end !~ /^\s*(\[.*\]|\{.*\}|\(.*\)|\+.*|[0-9][0-9]:.*|:[0-5][0-9])$/ and $hash->{MODEL} eq "Perl") { if ($end !~ /^\s*(\[.*\]|\{.*\}|\(.*\)|\+.*|[0-9][0-9]:.*|:[0-5][0-9])$/ and $hash->{MODEL} eq "Perl") {
return ($timer,"no timer"); return ($timer,"no timer");
} }
($result,$err) = DOIF_getTime($hash,$condition,$end,$trigger,$hash->{helper}{last_timer}++,$days); ($result,$err) = DOIF_getTime($hash,$condition,$end,$trigger,$i+1,$days);
return ($result,$err) if ($err); return ($result,$err) if ($err);
$hash->{helper}{last_timer}++
} }
if (defined $intervaltimer) { if (defined $intervaltimer) {
($result,$err) = DOIF_getTime($hash,$condition,$intervaltimer,$trigger,$hash->{helper}{last_timer}++,$days); ($result,$err) = DOIF_getTime($hash,$condition,$intervaltimer,$trigger,$i+2,$days);
return ($result,$err) if ($err); return ($result,$err) if ($err);
$hash->{helper}{last_timer}++
} }
if (defined $end) { if (defined $end) {
if ($days eq "") { if ($days eq "") {
@@ -2593,7 +2595,7 @@ DOIF_Notify($$)
} }
delete ($defs{$hash->{NAME}}{READINGS}{wait_timer}); delete ($defs{$hash->{NAME}}{READINGS}{wait_timer});
if ($hash->{helper}{last_timer} > 0){ if ($hash->{helper}{last_timer} > 0){
for (my $j=0; $j<$hash->{helper}{last_timer};$j++) { for (my $j=0; $j<$hash->{helper}{last_timer};$j++) {
DOIF_SetTimer ($hash,"DOIF_TimerTrigger",$j); DOIF_SetTimer ($hash,"DOIF_TimerTrigger",$j);
} }
} }