DbLog, mehr Nachkommastellen bei delta-h/delta-d

Begonnen von Niko, 24 August 2013, 12:15:58

Vorheriges Thema - Nächstes Thema

Niko

Hallo,

in den Beitrag "FileLog get -> delta-h Funktion" ging es um kleine / sehr kleine stündliche bzw. tägliche Änderungen in den Logfiles. Diese wurde bei den Plotfunktionen delta-h/delta-d nicht berücksichtigt.

Rudolf Köning hat damals das Modul FileLog entsprechend geändert. Dazu hat er die Datenausgabe an den entsprechenden Stellen von %0.1f auf %g geändert.

Ich habe hier ebenfalls mit sehr kleinen Änderungen zu tun (Standby Verbrauch). Ich logge allerdings in eine Datenbank mit den Modul DbLog. Hier ist diese Änderung noch nicht eingeflossen. Ich habe bei mir das Modul DbLog entsprechend geändert. Dies wird nun allerdings bei einem Update von DbLog wieder überschrieben (oder ich müsste DbLog von Update ausnehmen, was ich nicht möchte).

Es wäre daher schön wenn die entsprechenden Änderungen an dem Modul FileLog auch in DbLog aufgenommen werden könnten. Es handelt sich um die Zeilen 771, 787 und 831 in denen jeweils

$out_value = sprintf("%0.1f", $maxval - $minval);

durch

$out_value = sprintf("%g", $maxval - $minval);

ersetzt werden müsste.

Vielen Dank im Voraus!

VG Niko

betateilchen

Zitat von: Niko schrieb am Sa, 24 August 2013 12:15Es handelt sich um die Zeilen 771, 787 und 831 in denen jeweils

Die angegebenen Zeilennummern stimmen nicht mit der aktuellen Version überein, Zeilen 776, 792 und 836 sind wohl die richtigen.



Index: 93_DbLog.pm
===================================================================
--- 93_DbLog.pm (revision 3775)
+++ 93_DbLog.pm (working copy)
@@ -773,7 +773,7 @@
         }
         if("$tstamp{hour}" ne "$lasttstamp{hour}") {
           # Aenderung der stunde, Berechne Delta
-          $out_value = sprintf("%0.1f", $maxval - $minval);
+          $out_value = sprintf("%g", $maxval - $minval);
           $out_tstamp = DbLog_implode_datetime($lasttstamp{year}, $lasttstamp{month}, $lasttstamp{day}, $lasttstamp{hour}, "30", "00");
           $minval =  999999;
           $maxval = -999999;
@@ -789,7 +789,7 @@
         }
         if("$tstamp{day}" ne "$lasttstamp{day}") {
           # Aenderung des Tages, Berechne Delta
-          $out_value = sprintf("%0.1f", $maxval - $minval);
+          $out_value = sprintf("%g", $maxval - $minval);
           $out_tstamp = DbLog_implode_datetime($lasttstamp{year}, $lasttstamp{month}, $lasttstamp{day}, "00", "00", "00");
           $minval =  999999;
           $maxval = -999999;
@@ -833,7 +833,7 @@
 
     ######## den letzten Abschlusssatz rausschreiben ##########
     if($readings[$i]->[3] && ($readings[$i]->[3] eq "delta-h" || $readings[$i]->[3] eq "delta-d")) {
-      $out_value = sprintf("%0.1f", $maxval - $minval);
+      $out_value = sprintf("%g", $maxval - $minval);
       $out_tstamp = DbLog_implode_datetime($lasttstamp{year}, $lasttstamp{month}, $lasttstamp{day}, $lasttstamp{hour}, "30", "00") if($readings[$i]->[3] eq "delta-h");
       $out_tstamp = DbLog_implode_datetime($lasttstamp{year}, $lasttstamp{month}, $lasttstamp{day}, "00", "00", "00") if($readings[$i]->[3] eq "delta-d");
       if(uc($outf) eq "ALL") {

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Niko

Danke für die Klarstellung. Ich dachte ich hätte im aktuellen Modul geschaut ...

VG Niko

Niko

Hallo,

nach dem letzten Update sollten es jetzt die Zeilen 801, 817 und 861 sein.

Danke und VG Niko