Fehlermeldung bei movingAverage

Begonnen von locodriver, 18 April 2021, 12:22:37

Vorheriges Thema - Nächstes Thema

locodriver

Hallo, ich benutze movingAverage, um über die Feuchtigkeit einen gleitenden Mittelwert zu bilden.

Ich erhalte folgende Meldung:

2021.04.17 21:20:59.162 1: PERL WARNING: Use of uninitialized value $SVG_lt in addition (+) at ./FHEM/99_Utils.pm line 117.

Das entsprechende userreading sieht so aus:

humdiff:humidity.* differential {ReadingsNum("BD_Regler_Climate","humidity",0);; },
humdiff_avg:humidity.* {movingAverage("BD_Regler_Climate","humdiff",600)},
schwelle -0.003


MovingAverage ist in der 99_myutils definiert:

sub movingAverage($$$){
    my ($name,$reading,$avtime) = @_;
    my $hash = $defs{$name};
    my @new = my ($val,$time) = ($hash->{READINGS}{$reading}{VAL},$hash->{READINGS}{$reading}{TIME});
    my ($cyear, $cmonth, $cday, $chour, $cmin, $csec) = $time =~ /(\d+)-(\d+)-(\d+)\s(\d+):(\d+):(\d+)/;
    my $ctime = $csec+60*$cmin+3600*$chour;
    my $num;
    my $arr;
    #-- initialize if requested
    if( ($avtime eq "-1") ){
      $hash->{READINGS}{$reading}{"history"}=undef;
    }
    #-- test for existence
    if( !$hash->{READINGS}{$reading}{"history"}){
       #Log 1,"ARRAY CREATED";
       push(@{$hash->{READINGS}{$reading}{"history"}},\@new);
       $num = 1;
       $arr=\@{$hash->{READINGS}{$reading}{"history"}};
    } else {
       $num = int(@{$hash->{READINGS}{$reading}{"history"}});
       $arr=\@{$hash->{READINGS}{$reading}{"history"}};
       my $starttime = $arr->[0][1];
       my ($syear, $smonth, $sday, $shour, $smin, $ssec) = $starttime =~ /(\d+)-(\d+)-(\d+)\s(\d+):(\d+):(\d+)/;
       my $stime = $ssec+60*$smin+3600*$shour;
       #-- correct for daybreak
       $stime-=86400
         if( $stime > $ctime);
       if( ($num < 25)&&( ($ctime-$stime)<$avtime) ){
         #Log 1,"ARRAY has $num elements, adding another one";
         push(@{$hash->{READINGS}{$reading}{"history"}},\@new);
       }else{
         shift(@{$hash->{READINGS}{$reading}{"history"}}); <------- von hier kommt die Fehlermeldung
         push(@{$hash->{READINGS}{$reading}{"history"}},\@new);
       }
     }
     #-- output and average
     my $average = 0;
     for(my $i=0;$i<$num;$i++){
       $average+=$arr->[$i][0];
       Log 4,"[$name moving average] Value = ".$arr->[$i][0]." Time = ".$arr->[$i][1];
     }
     $average=sprintf( "%5.3f", $average/$num);
     #--average
     Log 4,"[$name moving average] calculated over $num values is $average"; 
     return $average;
  }


Der Funktionswert wird aber offenbar richtig berechnet.

Wie kommt es zur o.g. Meldung?
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster