FHEM Forum

FHEM - Entwicklung => Wunschliste => Thema gestartet von: Niko am 24 August 2013, 12:15:58

Titel: DbLog, mehr Nachkommastellen bei delta-h/delta-d
Beitrag von: Niko am 24 August 2013, 12:15:58
Hallo,

in den Beitrag "FileLog get -> delta-h Funktion (//forum.fhem.de/index.php?t=msg&goto=86753&rid=846#msg_86753)" 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
Titel: Aw: DbLog, mehr Nachkommastellen bei delta-h/delta-d
Beitrag von: betateilchen am 24 August 2013, 12:25:35
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") {

Titel: Aw: DbLog, mehr Nachkommastellen bei delta-h/delta-d
Beitrag von: Niko am 25 August 2013, 11:25:23
Danke für die Klarstellung. Ich dachte ich hätte im aktuellen Modul geschaut ...

VG Niko
Titel: Aw: DbLog, mehr Nachkommastellen bei delta-h/delta-d
Beitrag von: Niko am 02 September 2013, 15:00:18
Hallo,

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

Danke und VG Niko