myDiff für Homematic Kombisensor ändern

Begonnen von sylvester, 18 August 2015, 11:42:06

Vorheriges Thema - Nächstes Thema

sylvester

Hallo zusammen,

es gibt ja die myDiff-Funktion um die Regenmengen des Homematic Kombisensors OC-3 zu berechnen:

# myDiff
# berechnet die Differenz aus der ersten Zeile eines LogFiles und der letzten Zeile eines LogFiles über einen Zeitraum zwischen einem Zeitpunkt in der Vergangenheit und dem Zeitpunkt des Aufrufs
sub
myDiff($$$)
{
my ($offset,$logfile,$cspec) = @_;
my $period_s = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime(time-$offset);
my $period_e = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime;
my $oll = $attr{global}{verbose};
$attr{global}{verbose} = 0;
my @logdata = split("\n", fhem("get $logfile - - $period_s $period_e $cspec"));
$attr{global}{verbose} = $oll;
my ($cnt, $first, $last, $diff) = (0)x4;
foreach (@logdata){
  my @line = split(" ", $_);
  if(defined $line[1] && "$line[1]" ne ""){
   $cnt += 1;
    if ($cnt == 1) {
     $first = $line[1];
    }
   $last = $line[1];
  }
}
$diff = $last - $first;
Log 4, ("myDiff: File: $logfile, Field: $cspec, Period: $period_s bis $period_e, First: $first, Last: $last, Diff: $diff");
return $diff;
}


Nun werden die Log-Dateien des Sensors sehr groß. Ich habe daher Monats-Dateien erzeugt (WetterSensor-%Y-%m.log . Leider findet nun die myDiff-Funktion die Daten nicht mehr.
Kann mir jemand sagen, wie ich die Funktion ändern muss, damit es wieder funktioniert? Meine Perl-Kenntnisse reichen da leider noch nicht aus ...

Viele Grüße Stephan

fruit

I keep two logs
define FileLog_WeatherStation FileLog ./log/WeatherStation-%Y-%m.log WeatherStation:.*

define FileLog_Weather_Year FileLog ./log/Weather_Year-%Y.log WeatherStation:T:.*

the second holds only lines such as
2015-08-18_10:51:15 WeatherStation T: 12.8 H: 90 W: 10.9 R: 1394.76 IR: 0 WD: 245 WDR: 67.5 S: 136 B: 122  D: 11.2 A: 10.1
2015-08-18_10:48:18 WeatherStation T: 12.8 H: 91 W: 8.5 R: 1394.76 IR: 0 WD: 235 WDR: 67.5 S: 134 B: 141  D: 11.4 A: 10.2
Feel free to follow up in German if you prefer