[erledigt]Möchte TimeSeries.pm erweitern

Begonnen von knxhm, 21 Januar 2016, 14:41:08

Vorheriges Thema - Nächstes Thema

knxhm

Hallo,

ich versuche die Verwendung des Modules TimeSeries.pm zu verstehen weil ich zusätzlich ein "median" als Agregatfunktion implementieren möchte.
Warum: Bei meinen Temperaturmessungen gibts manchmal arge Ausreisser, z.B. -3,5   -3,46   85    -3,4    -3,33   ....
Daraus den mean zu berechnen ergibt leider nonsense. Mit den falschen Werten mittendrin sind die svg kaputt.
Mit min könnte man in diesem Fall ev. auch leben, aber ein median wäre besser.
Das sollte eigentlich mit ein paar zusätzlichen code Zeilen machbar sein - wenn man weiß wo.

Ich habe nur diese Stelle in fhem.pl gefunden in der TimeSeries.pm verwendet wird:


  if($changed) {
    #Debug "Processing $reading: $value";
    my @v = grep { my $l = $_;
                  $l =~ s/:.*//;
                  ($reading=~ m/^$l$/) ? $_ : undef} @{$hash->{".attraggr"}};
    if(@v) {
      # e.g. power:20:linear:avg
      my (undef, $duration, $method, $function) = split(":", $v[0], 4);
      my $ts;
      if(defined($readings->{".ts"})) {
        $ts= $readings->{".ts"};
      } else {
        require "TimeSeries.pm";
        $ts= TimeSeries->new( { method => $method, autoreset => $duration } );
        $readings->{".ts"}= $ts;
        # access from command line:
        # { $defs{"myClient"}{READINGS}{"myValue"}{".ts"}{max} }
        #Debug "TimeSeries created.";
      }
      my $now = $hash->{".updateTime"};
      my $val = $value; # save value
      $changed = $ts->elapsed($now);
      $value = $ts->{$function} if($changed);
      $ts->add($now, $val);
    } else {
      # If no event-aggregator attribute, then remove stale series if any.
      delete $readings->{".ts"};
    }
  }


Jetzt sehe ich hier ein $ts->add($now, $val); wo ein Einzelwert geschrieben wird aber mir ist nicht klar wo und wie der berechnete agregierte Wert am Ende des Intervalls wieder ausgelesen wird, könnte mir das bitte jemand erklären ?

knxhm
KNX, HM, HMLAN, RPi 2 mit Raspbian Jessie, knxd und FHEM, 1w Temperaturmessung mit gpio4, Dämmerungssensor, autom. Rolladensteuerung

knxhm

KNX, HM, HMLAN, RPi 2 mit Raspbian Jessie, knxd und FHEM, 1w Temperaturmessung mit gpio4, Dämmerungssensor, autom. Rolladensteuerung