diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index 361e8a9aa..a1b699a11 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -1804,32 +1804,29 @@ sub _evaluateThresholds { return if(!$pt); my $aaref = CurrentVal ($hash, "genslidereg", ""); - my @aa = @{$aaref} if (ref $aaref eq "ARRAY"); + my @aa = (); + @aa = @{$aaref} if (ref $aaref eq "ARRAY"); return if(scalar @aa < $defslidenum); - my $gen = $aa[0]; - my ($gt,$lt) = (1,1); - - for my $elem (@aa) { - if($elem < $gen) { - $gt = 0; - } - if($elem > $gen) { - $lt = 0; - } - } + my $gen1 = $aa[0]; + my $gen2 = $aa[1]; + my $gen3 = $aa[2]; my ($a,$h) = parseParams ($pt); for my $key (keys %{$h}) { my ($knum,$cond) = $key =~ /^([0-9]+)(on|off)$/x; - if($cond eq "on" && $gt && $gen > $h->{$key}) { + if($cond eq "on" && $gen1 > $h->{$key}) { + next if($gen2 < $h->{$key}); + next if($gen3 < $h->{$key}); push @$daref, "powerTrigger_${knum}<>on" if(ReadingsVal($name, "powerTrigger_${knum}", "off") eq "off"); } - if($cond eq "off" && $lt && $gen < $h->{$key}) { + if($cond eq "off" && $gen1 < $h->{$key}) { + next if($gen2 > $h->{$key}); + next if($gen3 > $h->{$key}); push @$daref, "powerTrigger_${knum}<>off" if(ReadingsVal($name, "powerTrigger_${knum}", "on") eq "on"); } } @@ -3739,7 +3736,8 @@ werden weitere SolarForecast Devices zugeordnet.