[gelöst] Monatsdiagramm für Stromverbrauch

Begonnen von onkel-tobi, 03 April 2018, 12:12:08

Vorheriges Thema - Nächstes Thema

onkel-tobi

Hallo zusammen,

ich würde gerne meinen monatlichen Stromverbrauch tracken und ein entsprechendes balkendiagramm erstellen.

Zum tracken nutze ich den Volkszaehler und das statistics modul:

define Zaehlerstand VZLOGGER localhost 8080 180
attr Zaehlerstand VZLOGGER_corrF 0.001
attr Zaehlerstand VZLOGGER_modus Zählerstand
attr Zaehlerstand VZLOGGER_unit kWh
attr Zaehlerstand connectTimeout 7
attr Zaehlerstand delay 120
attr Zaehlerstand event-on-change-reading .*
attr Zaehlerstand group Strom
attr Zaehlerstand room Volkszaehler
define FileLog_Zaehlerstand FileLog ./log/Zaehlerstand-%Y-%m.log Zaehlerstand
attr FileLog_Zaehlerstand archivedir /opt/fhem/log/archive/
attr FileLog_Zaehlerstand logtype text
attr FileLog_Zaehlerstand nrarchive 0


Das entsprechende log sieht so aus:
2018-03-31_23:56:31 Zaehlerstand 14471336.0 kWh ( 2018-03-31 23:56:29 )
2018-03-31_23:56:31 Zaehlerstand energy: 14471.336
2018-03-31_23:56:31 Zaehlerstand energy_current: 14471336.0
2018-03-31_23:56:31 Zaehlerstand energy_avg: 0.355
2018-03-31_23:56:31 Zaehlerstand statEnergy: Hour: 0.3016 Day: 7.7975 Month: 319.6050 Year: 908.4491
2018-03-31_23:58:31 Zaehlerstand 14471347.8 kWh ( 2018-03-31 23:58:30 )
2018-03-31_23:58:31 Zaehlerstand energy: 14471.3478
2018-03-31_23:58:31 Zaehlerstand energy_current: 14471347.8
2018-03-31_23:58:31 Zaehlerstand energy_avg: 0.352
2018-03-31_23:58:31 Zaehlerstand statEnergy: Hour: 0.3134 Day: 7.8093 Month: 319.6168 Year: 908.4609
2018-03-31_23:59:55 Zaehlerstand statEnergy: Hour: 0.0000 Day: 0.0000 Month: 0.0000 Year: 908.4609
2018-03-31_23:59:55 Zaehlerstand statEnergyLast: Hour: 0.3134 Day: 7.8093 Month: 319.6168 Year: 1893.3475 (since: 2017-06-30_22:20:06 )
2018-03-31_23:59:55 Zaehlerstand statEnergy_currentDayLast: Min: 14463538.5 Avg: 14467439.1 Max: 14471347.8
2018-03-31_23:59:55 Zaehlerstand statEnergy_currentMonthLast: Min: 14151731.0 Avg: 14309732.0 Max: 14471347.8

Da ich die Logs archiviere, habe ich jetzt noch ein log erstellt und darin stehen nun die folgenden Zeilen:

2018-01-31_23:59:55 Zaehlerstand statEnergy_currentMonthLast: Min: 13562886.9 Avg: 13719024.3 Max: 13840946.2
2018-02-28_23:59:55 Zaehlerstand statEnergy_currentMonthLast: Min: 13840946.2 Avg: 13991036.0 Max: 14151731.0
2018-03-31_23:59:55 Zaehlerstand statEnergy_currentMonthLast: Min: 14151731.0 Avg: 14309732.0 Max: 14471347.8


Nur dann müsste ich für den Monatswert die Differenz zwischen Max und Min für das Balkendiagramm errechnen, das kriege ich irgendwie nicht hin.
Kann mir da jemand den richtigen Denkanstoß geben?

Oder denke ich allgemein zu kompliliziert und sollte das anders angehen.
Gefühlt ist das statistics Modul vielleicht etwas übertrieben für mich bzw. zumindest sollte ich mir überlegen die Frequenz zumindest auf 5 / 15 Minuten hochzuschrauben?

Gruß,
Tobi

Frank_Huber

Ich schreibe Verbrauchswerte in einen dummy.
da drin dann mit at's Tages / Wochen und Monatsverbrauchswerte.
läuft schon ewig stabil und zuverlässig.

Für den Monat: (gekürzt auf nur den Strom. deshalb beginnt es mit "wert9")

defmod Verbrauch_Monat at *00:01:00 {\
if ($mday == 1) {\
\
# MONATSVERBRAUCH STROM GESAMT\
my $wert9=ReadingsVal("Stromzaehler","total_consumption","--");; # einlesen Zählerstand\
my $wert10=$wert9/1000;; # umrechnen Zählerstand Wh zu KWh\
my $wert11=ReadingsVal("Verbrauch","Stromzaehler1ter","--");; # einlesen Zählerstand Vormonat\
my $wert12=ReadingsVal("Energiekosten","Strompreis","--");; # einlesen Strompreis\
my $wert13=$wert10-$wert11;; # berechnen Monatsverbrauch\
my $wert14=round($wert13,1);; # runden Monatsverbrauch auf eine Stelle nach Komma\
my $wert15=$wert13*$wert12;; # berechnen Monatskosten\
my $wert16=round($wert15,2);; # runden Monatskosten auf cent\
fhem("setreading Verbrauch Stromzaehler1ter $wert9");; # setzen ZählerstandMonat\
fhem("setreading Verbrauch StromverbrauchMonat $wert14");; # setzen Monatsverbrauch gerundet\
fhem("setreading Energiekosten StromKostenMonat $wert16");; # setzen Monatskosten gerundet\
\
WriteStatefile()\
}}

onkel-tobi

Hi,

danke. Das werde ich mal probieren, war krankheitsbedingt außer Gefecht. Kann ich auch entsprechend ein anderes log definieren?

Gruß,
Tobi


Gesendet von iPad mit Tapatalk

KNUT345

Ich mach sowas ähnliches, Homematic-Steckdose mit Statistics,
muss man nichts rechnen, läßt sich am statistics einstellen.
Zitat
myEnergy 552778.3 2018-05-13 20:40:20
myEnergyN 552778.3 2018-05-13 20:40:20
power 0 2018-05-13 20:52:29
statMyEnergy Hour: 0.0 Day: 0.0 Month: 7132.0 Year: 127383.8 2018-05-13 20:42:24
statMyEnergyDay 0.0 2018-05-13 20:42:24
statMyEnergyDayLast 0.000000000 2018-05-12 23:59:55
statMyEnergyHour 0.0 2018-05-13 20:42:24
statMyEnergyHourLast 0.0 2018-05-13 19:59:55
statMyEnergyLast Hour: 0.0 Day: 0.000000000 Month: 28426.999999982 Year: 208936.899999943 2018-05-13 19:59:55
statMyEnergyMonth 7132.0 2018-05-13 20:42:24
statMyEnergyMonthLast 28426.999999982 2018-04-30 23:59:55
statMyEnergyYear 127383.8 2018-05-13 20:42:24
statMyEnergyYearLast 208936.899999943 2017-12-31 23:59:55

defmod Steckdose2_Pwr CUL_HM 25182F02
attr Steckdose2_Pwr alias Wäschetrockner
attr Steckdose2_Pwr event-min-interval power:1800,voltage:1800,statMyEnergyYear:1800,energy:1800
attr Steckdose2_Pwr event-on-change-reading power:1,voltage:1,statMyEnergyYear:1,energy:.*
attr Steckdose2_Pwr group Steckdose
attr Steckdose2_Pwr model HM-ES-PMSw1-Pl
attr Steckdose2_Pwr peerIDs 00000000,
attr Steckdose2_Pwr room Unsorted
attr Steckdose2_Pwr userReadings myEnergyN:energy.* monotonic {sprintf("%.1f",ReadingsVal("Steckdose2_Pwr","energy",0))},\
myEnergy:energy.* {sprintf("%.1f",ReadingsVal($name,"myEnergyN",0))}


defmod Statistik_Energie statistics Steckdose1_Pwr|Steckdose2_Pwr|Steckdose3|Steckdose4|Steckdose5|Steckdose6_Pwr|Steckdose7_Pwr|Energie_BZneu|Licht_Anrichte_KUE|Deckenfluter|Steckdose6X.
attr Statistik_Energie deltaReadings myEnergy
attr Statistik_Energie disable 0
attr Statistik_Energie ignoreDefaultAssignments 1
attr Statistik_Energie room System->FHEM
attr Statistik_Energie singularReadings (Steckdose.*|Energie.*|Licht_Anrichte.*|Deckenfluter):myEnergy:Delta:(Hour|Day|Month|Year)

Für deinen Fall müsstes du event-min-interval und event-on-change-reading so anpassen, dass auch die entsprechenden Monatswerte ins Logfile geschrieben werden.

Grüße
Knut

onkel-tobi

So, letzte Woche hatte ich mal einen freien Abend und habe mir das in Ruhe noch mal angeschaut.
Mit dem Ergebnis, dass ich das via statistics einfach hinbekomme.
Alle Alt-Daten habe ich einfach ebenfalls ins Log geschrieben, sodass nun in meinem Balkendiagramm alles drin ist.

Ich schreibe mir via statistics statEnergy_currentMonthLast / YearLast in ein log und nehme die Daten dann für mein Diagramm.

Vielen Dank nochmal an euch für eure Ideen.

Gruß,
Tobi