dblog: Energiegesamtwerte über mehrere Jahre

Begonnen von Markus1965, 26 Januar 2018, 22:48:21

Vorheriges Thema - Nächstes Thema

Markus1965

Ich verwende dblog, um Energiewerte (Gas und Strom) zu loggen und mit SVG darzustellen. Dabei habe ich Tages- Monats- und Jahresanzeige jeweils als Blockdarstellung. Wie ist es möglich die Gesamtverbräuche mehrere Jahre im Diagram darzustellen, d.h. pro Jahr ein Balken?
Schöne Grüße, Markus

KernSani

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

Depechem

Zitat von: KernSani am 26 Januar 2018, 22:56:40
Eine ähnliche Frage kam kürzlich schonmal... mit ohne echter Lösung https://forum.fhem.de/index.php?topic=79412.0

Gibt es da echt keine Lösung mit SVG die werte in Jahren auszugeben. :-(
Also ein Balkendiagramm in dem statt die jeweiligen Monatswerte die Jahreswerte (2015,2016,2017) stehen?
Gruß Thomas
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Prof. Dr. Peter Henning

Warum nicht ? Ich logge seit Jahren auch den Jahresendwert bzw. bisher akkumulierten Wert im laufenden Jahr und habe im System natürlich auch entsprechende Files und Plots.

LG

pah



Depechem

Zitat von: Prof. Dr. Peter Henning am 15 Februar 2018, 18:47:46
Warum nicht ? Ich logge seit Jahren auch den Jahresendwert bzw. bisher akkumulierten Wert im laufenden Jahr und habe im System natürlich auch entsprechende Files und Plots.

LG

pah




Hallo pah,
Würdest du bitte kurz schreiben wie du das SVG definiert hast das die Zeitachsen als Jahre dargestellt werden.
Vielen Dank dafür
LG Thomas
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Prof. Dr. Peter Henning

# Created by FHEM/98_SVG.pm, 2018-02-16 12:07:59
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 "Energie [kWh]"
set xrange [2006:2018]
set y2range [0:10000]

#PlotProxy Func:logProxy_xy2Plot([[2007,1056.7],[2008,5141.2],[2009,5169.4],[2010,4781.0],[2011,5442.4],[2012,5405.6],[2013,4770.9],[2014,5146.1],[2015,5303.9],[2016,5009.3],[2017,5197.3]])
#PlotProxy Func:logProxy_xy2Plot([[2006,8792.52],[2007,8061.31],[2008,7408.60],[2009,7639.60],[2010,8366.50],[2011,9020.86],[2012,8037.90],[2013,7066.10],[2014,5279.40],[2015,4738.78],[2016,5013.90],[2017,5071.55]])

plot "<IN>" using 1:2 axes x1y2 title 'Erzeugung' ls l1fill lw 1 with ibars,\
     "<IN>" using 1:2 axes x1y2 title 'Verbrauch' ls l0fill lw 1 with ibars


Kann Problemlos um aktuelle Daten ergänzt werden (ReadingsVal eintragen).

LG

pah

Depechem

Zitat von: Prof. Dr. Peter Henning am 16 Februar 2018, 12:09:32


#PlotProxy Func:logProxy_xy2Plot([[2007,1056.7],[2008,5141.2],[2009,5169.4],[2010,4781.0],[2011,5442.4],[2012,5405.6],[2013,4770.9],[2014,5146.1],[2015,5303.9],[2016,5009.3],[2017,5197.3]])
#PlotProxy Func:logProxy_xy2Plot([[2006,8792.52],[2007,8061.31],[2008,7408.60],[2009,7639.60],[2010,8366.50],[2011,9020.86],[2012,8037.90],[2013,7066.10],[2014,5279.40],[2015,4738.78],[2016,5013.90],[2017,5071.55]])


Hallo pah,
trägst du die Werte hinter "Func: händisch nach oder werden sie durch ein File-Log erstellt?

Ich habe es jetzt mit deiner Hilfe in etwa hinbekommen.
Sieht aber nicht schön aus da nur sehr schmale Balken und zu viel Luft dazwischen.
Ich habe schon alles mögliche ausprobiert aber irgendwie bekomme ich es nicht besser hin.
Kannst du evtl. nochmal ein Bild von deinem SVG zeigen und hast Du / jemand noch Ideen wie es schöner wird.
Bei der Wochen-Monatsansicht sind doch auch alle Balkendiagramme schön nebeneinander.
Andere Plot_Type, erweitern/schmälern der Jahre habe ich alles schon versucht.

Internals:
   DEF        CN.Gasverbrauch.File.MonatJahr:SVG_CN.Gasverbrauch.File.MonatJahr_2:CURRENT
   GPLOTFILE  SVG_CN.Gasverbrauch.File.MonatJahr_2
   LOGDEVICE  CN.Gasverbrauch.File.MonatJahr
   LOGFILE    CURRENT
   NAME       SVG_CN.Gasverbrauch.File.MonatJahr_2
   NOTIFYDEV  global
   NR         1595
   STATE      initialized
   TYPE       SVG
Attributes:
   captionPos right
   fixedrange 2012-01-01 2018-01-01
   plotsize   1000,250
   room       Gaszähler
   sortby     4


# Created by FHEM/98_SVG.pm, 2018-02-21 14:40:07
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 'Gasverbrauch im Jahr in m³'
set ytics
set y2tics
set grid ytics y2tics
set ylabel "m³"
set y2label "m³"
set xrange [2012:2018]
set yrange [0:]
set y2range [0:]

#lp FileLog:CN.Gasverbrauch.File.MonatJahr,offset=-60*60*8460:4:CN.Gasverbrauch.appCountsPerYear\x3a::

plot "<IN>" using 1:2 axes x1y1 title 'Jahreverbrauch in m³' ls l0fill lw 1.5 with bars
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Prof. Dr. Peter Henning

Der Witz liegt im XY-Plot begründet, also darin, dass nicht sekundengenaue Zeitstempel ausgewertet werden, sondern Ganzzahlwerte 2006, 2007 etc.

Das geht sowohl durch den manuellen Eintrag im Beispiel oben, als auch durch Lesen eines durch Logs befüllten Files. Siehe Punkt logProxy_xyFile2Plot($file,$column,$regex)

in der Datei https://wiki.fhem.de/wiki/LogProxy

LG

pah

Depechem

#8
Zitat von: Prof. Dr. Peter Henning am 21 Februar 2018, 18:10:53
Der Witz liegt im XY-Plot begründet, also darin, dass nicht sekundengenaue Zeitstempel ausgewertet werden, sondern Ganzzahlwerte 2006, 2007 etc.

Das geht sowohl durch den manuellen Eintrag im Beispiel oben, als auch durch Lesen eines durch Logs befüllten Files. Siehe Punkt logProxy_xyFile2Plot($file,$column,$regex)

in der Datei https://wiki.fhem.de/wiki/LogProxy

LG

pah

Hallo pah,
habe das jetzt getestet und belesen.
Wenn ich meinen Logfile mit folgender Funktion im .gplot nutze:
#lp Func:logProxy_xyFile2Plot("./log/CN.Gasverbrauch.File.MonatJahr.log",4,"CN.Gasverbrauch.appCountsPerYear:")
können die Zahlenwerte gelesen werden aber mit dieser Funktion kann er den dazugehörigen Zeitstempel nicht zuordnen!? Richtig!?

Mein Logfile: CN.Gasverbrauch.File.MonatJahr.log
Mein Loginhalt: 2013-01-01_00:00:19 CN.Gasverbrauch appCountsPerYear: 3574
2014-01-01_00:00:19 CN.Gasverbrauch appCountsPerYear: 3765.3
2015-01-01_00:00:19 CN.Gasverbrauch appCountsPerYear: 3029.2
2016-01-01_00:00:19 CN.Gasverbrauch appCountsPerYear: 2124
2017-01-01_00:00:19 CN.Gasverbrauch appCountsPerYear: 2126.5
2018-01-01_00:00:19 CN.Gasverbrauch appCountsPerYear: 2160


Das heisßt der SVG-Plot kann die Zeiten nicht zuordnen und damit auch keine Diagramme zeichnen!?
Also dürfte das Logfile nur feste Zahlenwerte drin haben!?
Wie so z.B.: 2006 8792.52 oder wie!?

Das würde heißen das ich aus meinem Logfile doch keine Balkendiagramme gebaut bekomme.
Ich möchte die Werte/Jahre nicht händisch eintragen dafür ist eine Automation ja eigentlich da.

Oder habe ich da in der Anleitung etwas falsch verstanden?

Verrückt, das es in FHEM nicht ohne weiteres möglich ist, ein schönes Balkendiagramm für mehrere Jahre zu erstellen  :-\

Gruß Thomas



RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Prof. Dr. Peter Henning

Aber natürlich ist das möglich (wenn auch nicht "einfach", das hat mit der Historie zu tun). Man muss einfach nur durch eine kleine Routine aus den Zeitstempeln die Jahreszahlen herausholen, das kostet ca. 5 Minuten.

LG

pah

Depechem

Zitat von: Prof. Dr. Peter Henning am 26 Februar 2018, 16:46:07
Aber natürlich ist das möglich (wenn auch nicht "einfach", das hat mit der Historie zu tun). Man muss einfach nur durch eine kleine Routine aus den Zeitstempeln die Jahreszahlen herausholen, das kostet ca. 5 Minuten.

LG

pah

:-\ leider bin ich dafür zu doof..
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Prof. Dr. Peter Henning


Depechem

Zitat von: Prof. Dr. Peter Henning am 26 Februar 2018, 18:01:40
man sed
man awk

LG

pah

Danke ich habe mich mal reingelesen, aber als nicht Informatiker ist mir dies grundlegend leider zu hoch

Zitat von: Prof. Dr. Peter Henning am 16 Februar 2018, 12:09:32
# Created by FHEM/98_SVG.pm, 2018-02-16 12:07:59
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 "Energie [kWh]"
set xrange [2006:2018]
set y2range [0:10000]

#PlotProxy Func:logProxy_xy2Plot([[2007,1056.7],[2008,5141.2],[2009,5169.4],[2010,4781.0],[2011,5442.4],[2012,5405.6],[2013,4770.9],[2014,5146.1],[2015,5303.9],[2016,5009.3],[2017,5197.3]])
#PlotProxy Func:logProxy_xy2Plot([[2006,8792.52],[2007,8061.31],[2008,7408.60],[2009,7639.60],[2010,8366.50],[2011,9020.86],[2012,8037.90],[2013,7066.10],[2014,5279.40],[2015,4738.78],[2016,5013.90],[2017,5071.55]])

plot "<IN>" using 1:2 axes x1y2 title 'Erzeugung' ls l1fill lw 1 with ibars,\
     "<IN>" using 1:2 axes x1y2 title 'Verbrauch' ls l0fill lw 1 with ibars


Kann Problemlos um aktuelle Daten ergänzt werden (ReadingsVal eintragen).

LG

pah

Grundlegend würde mir auch das Layout mit den "ibars" ausreichen.
Nur habe ich mit meinem Code das gleiche Problem wie, wenn ich deinen 1 zu 1 übernehme.
Es fehlt immer ein Balken.
Bei "Erzeugung" hast du 11 Werte händisch hinterlegt, aber es werden nur 10 angezeigt.
Bei "Verbrauch" hast du 12 Werte händisch hinterlegt, aber es werden nur 11 angezeigt.

Das Problem muss doch bei dir auch auftreten!?
Wenn man aus "ibars" in "bars" wechselt werden wieder alle Balken komplett angezeigt. aber halt schmaler
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Prof. Dr. Peter Henning

Einfach einen weiteren Wert  mit der vorhergehenden Jahreszahl und dem Datenwert 0 am Anfang einfügen.

LG

pah

Depechem

Zitat von: Prof. Dr. Peter Henning am 26 Februar 2018, 19:50:50
Einfach einen weiteren Wert  mit der vorhergehenden Jahreszahl und dem Datenwert 0 am Anfang einfügen.

LG

pah

Super vielen Dank
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...