Plot mit delta-d / Sprünge und Versatz

Begonnen von asdfex, 03 Januar 2023, 21:06:43

Vorheriges Thema - Nächstes Thema

asdfex

Hallo,
ich habe ein Logfile, das pro Tag eine Zeile enthält, z.B.
2022-12-31_00:00:00 HZ_W2 current_period: 1209

Davon möchte ich jetzt die tägliche Differenz plotten, was auch funktioniert, siehe Anhang "plot_1linie.png".

Sobald ich aber im gleichen Plot einen zweiten Eintrag anlege, wird die Kurve falsch dargestellt, die Zuordnung der delta-Werte sind nicht mehr beim richtigen Tag, manche gibt es doppelt, manche fehlen: Anhang "plot_2linien.png".

Das sieht mir nach einem Bug in der Datenverarbeitung für den Plot aus?

OdfFhem

Fürs "einfache" Nachvollziehen wäre es hilfreich, wenn Du die gplot-Datei sowie die Ausgabe von "Show preprocessed input" (Link auf SVG-Detailseite) zeigen würdest ... im Zweifel auch die relevanten Zeilen aus dem Log-Device ...

asdfex

Aber gerne.

Korrekt:
2022-12-01_12:00:00 5
2022-12-02_12:00:00 5
2022-12-03_12:00:00 7
2022-12-04_12:00:00 8
2022-12-05_12:00:00 4
2022-12-06_12:00:00 5
2022-12-07_12:00:00 5
2022-12-08_12:00:00 6
2022-12-09_12:00:00 6
2022-12-10_12:00:00 8
2022-12-11_12:00:00 7
2022-12-12_12:00:00 7
2022-12-13_12:00:00 10
2022-12-14_12:00:00 8
2022-12-15_12:00:00 10
2022-12-16_12:00:00 9
2022-12-17_12:00:00 8
2022-12-18_12:00:00 9
2022-12-19_12:00:00 8
2022-12-20_12:00:00 7
2022-12-21_12:00:00 6
2022-12-22_12:00:00 6
2022-12-23_12:00:00 7
2022-12-24_12:00:00 4
2022-12-25_12:00:00 5
2022-12-26_12:00:00 5
2022-12-27_12:00:00 6
2022-12-28_12:00:00 5
2022-12-29_12:00:00 5
2022-12-30_12:00:00 6
2022-12-31_12:00:00 0.0
#4:HZ_AZ.current_period\x3a::delta-d


Falsch:
2022-12-01_12:00:00 5
2022-12-02_12:00:00 5
2022-12-03_12:00:00 7
2022-12-04_12:00:00 8
2022-12-05_12:00:00 4
2022-12-06_12:00:00 5
2022-12-07_12:00:00 5
2022-12-09_12:00:00 6
2022-12-09_12:00:00 6
2022-12-10_12:00:00 8
2022-12-11_12:00:00 7
2022-12-12_12:00:00 7
2022-12-14_12:00:00 10
2022-12-14_12:00:00 8
2022-12-15_12:00:00 10
2022-12-16_12:00:00 9
2022-12-17_12:00:00 8
2022-12-18_12:00:00 9
2022-12-19_12:00:00 8
2022-12-20_12:00:00 7
2022-12-21_12:00:00 6
2022-12-22_12:00:00 6
2022-12-23_12:00:00 7
2022-12-25_12:00:00 4
2022-12-25_12:00:00 5
2022-12-26_12:00:00 5
2022-12-27_12:00:00 6
2022-12-28_12:00:00 5
2022-12-29_12:00:00 5
2022-12-30_12:00:00 6
2022-12-31_12:00:00 0.0
#4:HZ_AZ.current_period\x3a::delta-d


gplot:
# Created by FHEM/98_SVG.pm, 2023-01-04 10:21:16
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
set ylabel "Humidity"
set y2label "Temperature"

#HZ_Log_Cnt 4:HZ_AZ.current_period\x3a::delta-d
#HZ_Log_Cnt 4:HZ_B1.current_period\x3a::delta-d

plot "<IN>" using 1:2 axes x1y2 title 'Line 1' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Line 2' ls l1 lw 1 with lines

OdfFhem

"Korrekt" hat jeweils taggenaue Daten für 01.12.-31.12.
"Falsch" kennt kein 8.12. (dafür 2 x Folgetag) - dito bei 13.12. und 24.12.

"Korrekt", "Falsch" ist nicht die komplette Ausgabe, oder ?

rudolfkoenig

Kannst Du bitte auch die Logdateien fuer diesen Intervall hier anhaengen?

asdfex

Habe ihn gefunden...

Das Problem passiert immer dann, wenn die Reihenfolge der Einträge im Logfile wechselt:
2022-12-07_00:00:00 HZ_AZ current_period: 948
2022-12-07_00:00:00 HZ_B1 current_period: 0
2022-12-08_00:00:00 HZ_AZ current_period: 953
2022-12-08_00:00:00 HZ_B1 current_period: 0
2022-12-09_00:00:00 HZ_B1 current_period: 0
2022-12-09_00:00:00 HZ_AZ current_period: 959
2022-12-10_00:00:00 HZ_AZ current_period: 965
2022-12-10_00:00:00 HZ_B1 current_period: 0
2022-12-11_00:00:00 HZ_AZ current_period: 973
2022-12-11_00:00:00 HZ_B1 current_period: 0
2022-12-12_00:00:00 HZ_AZ current_period: 980
2022-12-12_00:00:00 HZ_B1 current_period: 0
2022-12-13_00:00:00 HZ_AZ current_period: 987
2022-12-13_00:00:00 HZ_B1 current_period: 0
2022-12-14_00:00:00 HZ_B1 current_period: 0
2022-12-14_00:00:00 HZ_AZ current_period: 997
2022-12-15_00:00:00 HZ_AZ current_period: 1005
2022-12-15_00:00:00 HZ_B1 current_period: 0
2022-12-16_00:00:00 HZ_AZ current_period: 1015
2022-12-16_00:00:00 HZ_B1 current_period: 0
2022-12-17_00:00:00 HZ_AZ current_period: 1024
...


Und ausgelöst wird es dadurch, dass in 92_FileLog.pm rund um Zeile 1000 die Variable $lastdate global für alle Kurven gilt, und nicht für jede Kurve einzeln.
Wenn lastdate für jede Kurve gespeichert wird, passt zumindest bei mir alles.


> diff 92_FileLog.pm 92_FileLog_changed.pm
diff 92_FileLog.pm 92_FileLog_Jan.pm
955c955
<   my %lastdate;
---
>   my $lastdate;
1003c1003
<             my @lda = split("[_:]", $lastdate{$hd});
---
>             my @lda = split("[_:]", $lastdate->[$i]{$hd});
1021c1021
<         $lastdate{$hd} = $fld[0];
---
>         $lastdate->[$i]{$hd} = $fld[0];
1103c1104
<     if($hd && $lastdate{$hd}) {
---
>     if($hd && $lastdate->[$i]{$hd}) {
1110,1111c1111
<
<       my @lda = split("[_:]", $lastdate{$hd});
---
>       my @lda = split("[_:]", $lastdate->[$i]{$hd});

rudolfkoenig

Danke fuer die Analyse, ich habe den Patch etwas vereinfacht eingecheckt.