[Gelöst] SVG: Aktueller Tag wird nicht angezeigt

Begonnen von KernSani, 23 April 2017, 23:34:32

Vorheriges Thema - Nächstes Thema

KernSani

Hi zusammen,

Ich habe einen Plot der mir meinen Energieverbrauch (aus dem ElectricityCalculator Modul) tageweise darstellt - dabei wird auf das LastDay reading zugegriffen, das immer kurz nach Mitternacht geschrieben wird. Mit logprocy und offset funktioniert das wunderbar.
ich habe nun versucht gemäß Wiki die aktuellen Tageswerte noch hinzu zu fügen. Der pre-processed Input sieht eigentlich gut aus:

get lp CURRENT INT 2017-04-01_00:00:00 2017-05-01_00:00:01 DbLog:fhemDbLog,offset=-60*60*1:KG_ElectricityCalc:KG_powerSensor_energyCalc_EnergyDayLast Func:current2Plot($from,$to,"KG_ElectricityCalc","KG_powerSensor_energyCalc_EnergyDay")

2017-04-17_23:02:03 8.933
2017-04-18_23:02:04 7.373
2017-04-19_23:02:02 7.174
2017-04-20_23:01:54 15.200
2017-04-21_23:00:08 8.614
2017-04-22_23:00:04 8.973
#KG_ElectricityCalc:KG_powerSensor_energyCalc_EnergyDayLast:::
2017-04-23_23:20:36 15.066
#plotCurrent: KG_ElectricityCalc:KG_powerSensor_energyCalc_EnergyDay
#Func:current2Plot($from,$to,"KG_ElectricityCalc","KG_powerSensor_energyCalc_EnergyDay")


Leider wird der heutige Tag nicht dargestellt... Hier noch das gplot file:


# Created by FHEM/98_SVG.pm, 2017-04-23 21:34:42
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid y2tics
set ylabel ""
set y2label "Power"
set y2range [0:20]


#lp DbLog:fhemDbLog,offset=-60*60*1:KG_ElectricityCalc:KG_powerSensor_energyCalc_EnergyDayLast
#lp Func:current2Plot($from,$to,"KG_ElectricityCalc","KG_powerSensor_energyCalc_EnergyDay")

plot "<IN>" using 1:2 axes x1y2 title 'Gesamt' ls l0 lw 3 with bars,
     "<IN>" using 1:2 axes x1y1 title 'Dry' ls l1fill lw 3 with bars,


Welchen Fehler sehe ich nun seit 2 Stunden nicht?

Danke,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

KernSani

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

KernSani

Unterhalte ich mich halt weiter ein bisschen mit mir selbst ;-)

Die Lösung des Problems war dann doch recht einfach: "with bars" benötigt offensichtlich mindestens 2 Datenpunkte, ich habe also die sub current2Plot aus dem Wiki erweitert, so dass sie mir einen zweiten Datenpunkt mit dem selben Wert am selben Tag liefert und schwupps war der Balken da. Allerdings fängt der Balken aus einem mir unverständlichem Grund (mag an der fehlenden Doku liegen) am Vortag an. "with fsteps" macht aber das selbe - nur am richtigen Tag :-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

hoods

Hallo Oli,

ich stehe gerade vor dem gleichen Problem. Würdest Du deine Anpassungen hier verewigen?

Danke & Gruss,
Sven
Odroid C2, FHEM 5.8, HMUSB, Jeelink, Rademacher DuoFern Stick, Benning WR über HTTPMOD

KernSani

aber klar... keine Garantie auf vollständige Funktionalität, aber bei mir tut's...

sub
current2Plot($$$$)
{
  my($from,$to,$device,$reading) = @_;
  my $fromsec = SVG_time_to_sec($from);
  my $tosec   = SVG_time_to_sec($to);

  my $ret = "";

  my $rt = ReadingsTimestamp( $device, $reading, undef );
  return $ret if( !$rt );

  my $sec = time_str2num($rt);
  return $ret if ( $sec < $fromsec || $sec > $tosec );

  my $val = ReadingsVal( $device, $reading, undef );

  my @t = localtime($sec);
  my $timestamp2 = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $t[5]+1900, $t[4]+1, $t[3], "00", $t[1], $t[0]);
  my $timestamp = sprintf("%04d-%02d-%02d_%02d:%02d:%02d", $t[5]+1900, $t[4]+1, $t[3], $t[2], $t[1], $t[0]);
 
  $ret .= "$timestamp2 $val\n";
  $ret .= "$timestamp $val\n";
 
  #$ret .= "#plotCurrent$device: $device:$reading\n";
  #Log3 "Plot",1,$ret;
  return $ret;
}

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...