Plot Stromverbrauch Heizung in WW und Heizen aufteilen

Begonnen von crispyduck, 22 April 2017, 09:30:55

Vorheriges Thema - Nächstes Thema

crispyduck

Hallo,

Ich habe eine Wärmepumpe welche sowohl fürs Heizen als auch für die WW Bereitung zuständig ist.

Die WP hängt an einem eigenen Stromzähler welchen ich in DBLog logge. Ebenso frage ich alle 3min den aktuellen Betriebszustand der WP ab.

Wäre es möglich dies z.B. über LogProxy in einem Balkendiagramm abzubilden ohne die Daten quasi doppelt in die DB zu schreiben?

Also z.B. ein Balkendiagramm welches mir den Verbrauch pro Tag darstellt, diesen jedoch aufgeteilt in Heizen und WW. Unterer Teil das Balkens wäre dann der Stromverbrauch für WW und der obere der fürs Heizen.

Ist dies überhaupt möglich ohne entsprechenden Log Eintrag?

Sollte man die werte doch separat mitloggen wollen, wie würde man das am besten machen? Über ein dummy device wenn es bei jedem Stromzähler Reading für die Zustände abgespeichert werden soll?

Über DBRep wenn ich nur einen Wert pro Tag odr Stunde möchte?

Welche Möglichkeiten zur Umsätzung gibt es hierfür, und was macht Sinn?

Danke
Crispyduck

Omega

Ich benutze dazu 3 hourcounter:
•   hc.gesamt (zählt den kompletten Gasverbrauch)
•   hc.Heizung (zählt nur, wenn WW-Pumpe aus)
•   hc.WW (zählt nur, wenn WW-Pumpe an)

hc.gesamt nutzt den physischen Zähler, für hc.Heizung und hc.WW habe ich als Zähldevice jeweils einen Dummy definiert, der durch ein notify getriggert wird
Die Definition für das notify sieht so aus:
mys_103_TempHum2Button {
if (ReadingsVal("mys_103_TempHum2Button","status1","") eq "on" && (ReadingsVal("Vitocrossal","Speicherladepumpe","") eq "on" || ReadingsVal("Vitocrossal","BetriebsArt","") eq "WW")) {
fhem "set d.mys_103_GasZaehler_WW on"
} else {
fhem "set d.mys_103_GasZaehler_WW off"
}
}

mys_103_TempHum2Button ist mein physischer Gaszähler (über Reedkontakt).
Das hourcounter Reading ,,appCountsPerDay" wird nur 1 x pro Tag geschrieben - also minimal 3 zusätzliche Sätze). Mehr bräuchtest du nicht in der DB zu speichern. Das hängt dann aber auch mit deiner DbLog-Definition zusammen. DBRep brauchst du dafür nicht.
Ein mögliches Plot kann so aussehen:

LG
Holger
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave

crispyduck

Spitze! Genau so hab ich mir das vorgestellt!

Glaube ich habe es auch verstanden, bis auf das minimal 3 zusätzliche Sätze. Die 3 houercounter müssen doch auch jedes mal schreiben wenn der Zähper gepollt wird, also zumindest immer der Countrr der aktiv ist.
Wärst du so nett und würdest noch deine hourcounter, Dummys als auch den plot posten?!

Danke,
Crispyduck

Omega

Mindestens 3 Sätze zusätzlich pro Tag in der DB, um entsprechende Plots darstellen zu können. Die 3 hourcounter erzeugen sehr viele Events - aber du hast doch selber in der Hand, was davon in die DB aufgenommen wird. In dem gplot siehst du, dass ich nur 3 Readings zur Auswertung benötige.

Internals:
   DEF        mys_103_TempHum2Button:status1:.on mys_103_TempHum2Button:status1:.off
   NAME       hc.Gasverbrauch_Gesamt
   NR         128
   NTFY_ORDER 50-hc.Gasverbrauch_Gesamt
   STATE      Zaehlerstand: 4084369 Verbrauch: 593
   TYPE       HourCounter
   VERSION    1.0.1.2 - 24.12.2014
   Helper:
     Dblog:
       Appcountsperhour:
         Myfhemdb:
           TIME       1492891200.44971
           VALUE      46
       Countsoverall:
         Myfhemdb:
           TIME       1492888401.4066
           VALUE      4084369
       Countsperday:
         Myfhemdb:
           TIME       1492888401.4066
           VALUE      593
       State:
         Myfhemdb:
           TIME       1492888401.4066
           VALUE      593
   Readings:
     2017-04-22 00:00:00   appCountsPerDay 679
     2017-04-22 22:00:00   appCountsPerHour 46
     2017-04-22 22:00:00   appCountsPerHourTemp 0
     2017-04-01 00:00:00   appCountsPerMonth 18824
     2017-04-22 21:13:21   appCountsPerMonthTemp 12365
     2017-04-16 00:00:00   appCountsPerWeek 4032
     2017-04-22 21:13:21   appCountsPerWeekTemp 4931
     2017-01-01 00:00:00   appCountsPerYear 40628
     2017-04-22 21:13:21   appCountsPerYearTemp 101926
     2017-04-22 00:00:00   appOpHoursPerDay 0.785277777777778
     2017-04-22 22:00:00   appOpHoursPerDayTemp 1.65777777777778
     2017-04-01 00:00:00   appOpHoursPerMonth 75.2322222222223
     2017-04-22 00:00:00   appOpHoursPerMonthTemp 43.5591666666667
     2017-04-16 00:00:00   appOpHoursPerWeek 18.7633333333333
     2017-04-22 00:00:00   appOpHoursPerWeekTemp 15.0405555555556
     2017-01-01 00:00:00   appOpHoursPerYear 103.38
     2017-04-22 00:00:00   appOpHoursPerYearTemp 248.89
     2017-04-22 00:00:00   appUtilization  3.41425120772947
     2017-04-22 22:00:00   appUtilizationTemp 7.53535353535354
     2017-04-22 22:00:00   appUtilizationTempOld 4.14785146791272
     2017-04-22 22:00:00   countsOverall   4084369
     2017-04-22 22:00:00   countsPerDay    593
     2017-04-22 22:00:00   pauseTimeEdge   18
     2017-04-22 22:00:00   pauseTimeIncrement 18
     2017-04-22 22:00:00   pauseTimeOverall 32907087
     2017-04-22 22:00:00   pauseTimePerDay 71312
     2017-04-22 22:00:00   pulseTimeEdge   2
     2017-04-22 22:00:00   pulseTimeIncrement 2799
     2017-04-22 22:00:00   pulseTimeOverall 4156639
     2017-04-22 22:00:00   pulseTimePerDay 5968
     2017-04-22 22:00:00   state           593
     2017-04-22 21:13:21   tickChanged     71
     2017-04-22 10:32:04   tickDay         0
     2017-04-22 22:00:00   tickHour        12
     2017-04-22 10:32:04   tickMonth       0
     2017-04-22 22:00:00   tickUpdated     126
     2017-04-22 10:32:04   tickWeek        0
     2017-04-22 10:32:04   tickYear        0
     2017-04-22 22:00:00   value           1
   Helper:
     OFF_Regexp mys_103_TempHum2Button:status1:.off
     ON_Regexp  mys_103_TempHum2Button:status1:.on
     calledByEvent
     changedTimestamp 2017-04-22 22:00:00
     forceClear
     forceDayChange
     forceHourChange
     forceMonthChange
     forceWeekChange
     forceYearChange
     isFirstRun
     sdRoundHourLast 1492891200
     value      1
     cmdQueue:
Attributes:
   DbLogExclude appUtilization.*,value,pause.*,pulse.*,app.*Temp,tick.*
   event-min-interval tick.*:0,.*:3600
   event-on-change-reading .*
   group      GAS: Verbrauch
   room       Heizung
   stateFormat Zaehlerstand: countsOverall Verbrauch: countsPerDay


Internals:
   CHANGED
   DEF        d.mys_103_GasZaehler_Heizung:on d.mys_103_GasZaehler_Heizung:off
   NAME       hc.Gasverbrauch_Heizung
   NR         117
   NTFY_ORDER 50-hc.Gasverbrauch_Heizung
   STATE      472
   TYPE       HourCounter
   VERSION    1.0.1.2 - 24.12.2014
   Helper:
     Dblog:
       Appcountsperhour:
         Myfhemdb:
           TIME       1492891200.68486
           VALUE      1
       Countsoverall:
         Myfhemdb:
           TIME       1492888624.32398
           VALUE      4026195
       Countsperday:
         Myfhemdb:
           TIME       1492888624.32398
           VALUE      472
       State:
         Myfhemdb:
           TIME       1492888624.32398
           VALUE      472
   Readings:
     2017-04-22 00:00:00   appCountsPerDay 449
     2017-04-22 22:00:00   appCountsPerHour 1
     2017-04-22 22:00:00   appCountsPerHourTemp 0
     2017-04-01 00:00:00   appCountsPerMonth 14394
     2017-04-22 21:17:04   appCountsPerMonthTemp 8772
     2017-04-16 00:00:00   appCountsPerWeek 2817
     2017-04-22 21:17:04   appCountsPerWeekTemp 3814
     2017-01-01 00:00:00   appCountsPerYear 120284
     2017-04-22 21:17:04   appCountsPerYearTemp 82993
     2017-04-22 00:00:00   appOpHoursPerDay 0.663611111111111
     2017-04-22 22:22:55   appOpHoursPerDayTemp 1.91833333333333
     2017-04-01 00:00:00   appOpHoursPerMonth 30.3497222222223
     2017-04-22 00:00:00   appOpHoursPerMonthTemp 17.1847222222222
     2017-04-16 00:00:00   appOpHoursPerWeek 7.07
     2017-04-22 00:00:00   appOpHoursPerWeekTemp 4.82555555555555
     2017-01-01 00:00:00   appOpHoursPerYear 371.95138888889
     2017-04-22 00:00:00   appOpHoursPerYearTemp 121.749444444444
     2017-04-22 00:00:00   appUtilization  2.76879570714973
     2017-04-22 22:22:55   appUtilizationTemp 8.5708966801117
     2017-04-22 22:22:55   appUtilizationTempOld 8.5708966801117
     2017-04-22 22:22:55   countsOverall   4026195
     2017-04-22 22:22:55   countsPerDay    472
     2017-04-22 22:22:55   pauseTimeEdge   1518
     2017-04-22 22:22:55   pauseTimeIncrement 1518
     2017-04-22 22:22:55   pauseTimeOverall 36961480
     2017-04-22 22:22:55   pauseTimePerDay 73536
     2017-04-22 22:22:55   pulseTimeEdge   9
     2017-04-22 22:22:55   pulseTimeIncrement 3951
     2017-04-22 22:22:55   pulseTimeOverall 1801843
     2017-04-22 22:22:55   pulseTimePerDay 6906
     2017-04-22 22:22:55   state           472
     2017-04-22 21:17:04   tickChanged     360
     2017-04-22 10:32:04   tickDay         0
     2017-04-22 22:00:00   tickHour        12
     2017-04-22 10:32:04   tickMonth       0
     2017-04-22 22:22:55   tickUpdated     666
     2017-04-22 10:32:04   tickWeek        0
     2017-04-22 10:32:04   tickYear        0
     2017-04-22 22:22:55   value           1
   Helper:
     OFF_Regexp d.mys_103_GasZaehler_Heizung:off
     ON_Regexp  d.mys_103_GasZaehler_Heizung:on
     calledByEvent
     changedTimestamp 2017-04-22 22:22:55
     forceClear
     forceDayChange
     forceHourChange
     forceMonthChange
     forceWeekChange
     forceYearChange
     isFirstRun
     sdRoundHourLast 1492891200
     value      1
     cmdQueue:
Attributes:
   DbLogExclude appUtilization.*,value,pause.*,pulse.*,app.*Temp,tick.*
   event-min-interval tick.*:0
   event-on-change-reading .*
   group      GAS: Verbrauch
   room       Heizung


Internals:
   CHANGED
   DEF        d.mys_103_GasZaehler_WW:on d.mys_103_GasZaehler_WW:off
   NAME       hc.Gasverbrauch_WW
   NR         79
   NTFY_ORDER 50-hc.Gasverbrauch_WW
   STATE      122
   TYPE       HourCounter
   VERSION    1.0.1.2 - 24.12.2014
   Helper:
     Dblog:
       Appcountsperhour:
         Myfhemdb:
           TIME       1492891200.71862
           VALUE      46
       Countsoverall:
         Myfhemdb:
           TIME       1492888401.45921
           VALUE      3941990
       Countsperday:
         Myfhemdb:
           TIME       1492888401.45921
           VALUE      122
       State:
         Myfhemdb:
           TIME       1492888401.45921
           VALUE      122
   Readings:
     2017-04-22 00:00:00   appCountsPerDay 230
     2017-04-22 22:00:00   appCountsPerHour 46
     2017-04-22 22:00:00   appCountsPerHourTemp 0
     2017-04-01 00:00:00   appCountsPerMonth 4490
     2017-04-22 21:13:21   appCountsPerMonthTemp 3621
     2017-04-16 00:00:00   appCountsPerWeek 1223
     2017-04-22 21:13:21   appCountsPerWeekTemp 1131
     2017-01-01 00:00:01   appCountsPerYear 42437
     2017-04-22 21:13:21   appCountsPerYearTemp 19094
     2017-04-22 00:00:00   appOpHoursPerDay 0.118611111111111
     2017-04-22 22:22:55   appOpHoursPerDayTemp 0.118611111111111
     2017-04-01 00:00:00   appOpHoursPerMonth 44.9249999999999
     2017-04-22 00:00:00   appOpHoursPerMonthTemp 26.3413888888888
     2017-04-16 00:00:00   appOpHoursPerWeek 11.6877777777778
     2017-04-22 00:00:00   appOpHoursPerWeekTemp 10.2080555555555
     2017-01-01 00:00:01   appOpHoursPerYear 513.897777777778
     2017-04-22 00:00:00   appOpHoursPerYearTemp 127.104444444444
     2017-04-22 00:00:00   appUtilization  0.494877381669835
     2017-04-22 22:22:55   appUtilizationTemp 0.52994104871238
     2017-04-22 22:22:55   appUtilizationTempOld 0.52994104871238
     2017-04-22 22:22:55   countsOverall   3941990
     2017-04-22 22:22:55   countsPerDay    122
     2017-04-22 22:22:55   pauseTimeEdge   18
     2017-04-22 22:22:55   pauseTimeIncrement 3951
     2017-04-22 22:22:55   pauseTimeOverall 47869480
     2017-04-22 22:22:55   pauseTimePerDay 80027
     2017-04-22 22:22:55   pulseTimeEdge   223
     2017-04-22 22:22:55   pulseTimeIncrement 223
     2017-04-22 22:22:55   pulseTimeOverall 2348940
     2017-04-22 22:22:55   pulseTimePerDay 427
     2017-04-22 22:22:55   state           122
     2017-04-22 21:17:04   tickChanged     344
     2017-04-22 10:31:59   tickDay         0
     2017-04-22 22:00:00   tickHour        12
     2017-04-22 10:31:59   tickMonth       0
     2017-04-22 22:22:55   tickUpdated     399
     2017-04-22 10:31:59   tickWeek        0
     2017-04-22 10:31:59   tickYear        0
     2017-04-22 22:22:55   value           0
   Helper:
     OFF_Regexp d.mys_103_GasZaehler_WW:off
     ON_Regexp  d.mys_103_GasZaehler_WW:on
     calledByEvent
     changedTimestamp 2017-04-22 22:22:55
     forceClear
     forceDayChange
     forceHourChange
     forceMonthChange
     forceWeekChange
     forceYearChange
     isFirstRun
     sdRoundHourLast 1492891200
     value      0
     cmdQueue:
Attributes:
   DbLogExclude appUtilization.*,value,pause.*,pulse.*,app.*Temp,tick.*
   event-min-interval tick.*:0
   event-on-change-reading .*
   group      GAS: Verbrauch
   room       Heizung


Internals:
   NAME       d.mys_103_GasZaehler
   NR         132
   STATE      on
   TYPE       dummy
   Readings:
     2017-04-22 22:24:55   state           on
Attributes:
   DbLogExclude state
   group      GAS: Verbrauch
   room       Heizung
   setList    state:on,off

Internals:
   NAME       d.mys_103_GasZaehler_Heizung
   NR         115
   STATE      on
   TYPE       dummy
   Readings:
     2017-04-22 22:24:55   state           on
Attributes:
   DbLogExclude state
   group      GAS: Verbrauch
   room       Heizung
   setList    state:on,off

Internals:
   NAME       d.mys_103_GasZaehler_WW
   NR         78
   STATE      off
   TYPE       dummy
   Readings:
     2017-04-22 22:24:55   state           off
Attributes:
   DbLogExclude state
   group      GAS: Verbrauch
   room       Heizung
   setList    state:on,off


# Created by FHEM/98_SVG.pm, 2017-03-16 09:03:50
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 "Verbrauch in â,¬"
set y2label "Gasverbrauch in m³"
set yrange [0:<L2>]
set y2range [0:<L1>]

#lp DbLog:myFHEMdb_LT,offset=-60*60*1:hc.Gasverbrauch_Gesamt:appCountsPerDay:::$val=($val/=100)
#lp DbLog:myFHEMdb_LT,offset=-60*60*1:hc.Gasverbrauch_WW:appCountsPerDay:::$val=($val/=100)
#lp DbLog:myFHEMdb_LT,offset=-60*60*1:hc.Gasverbrauch_Gesamt:appCountsPerDay:::$val=($val/100*9.4585275*0.0532)

plot "<IN>" using 1:2 axes x1y2 title 'Verbrauch gesamt m³' ls l0 lw 3 with bars,\
     "<IN>" using 1:2 axes x1y2 title 'davon Verbrauch WW-Erzeugung m³' ls l2fill lw 1 with bars,\
     "<IN>" using 1:2 axes x1y1 title 'Verbrauch Gesamt in â,¬' ls l1fill lw 3 with bars
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave

crispyduck

Tolle Arbeit!

Die Frage zur Formel im Plot hat sich mit einer Forumssuche erübrigt. ;-)

Noch eine Verständnisfrage zum hourcounter, wenn ich wirklich nur das Reading für den countperday abspeichere, was pssiert bei einem Stromausfall, count wieder bei 0?


Habe ursprünglich nicht erwähnt das ich einen Modbus Stromzähler habe der mir schon die kWh, Aktuellen Verbrauch,... liefert. Ich habe die Daten daher immer in Werten in der DB und brauche nicht selbst zu zählen.
Daher hatte ich auch die Idee ob es nicht mehr sinn macht mir die 3 Werte so wie du sie im Plot hast 1x am Tag bzw. Nacht per DBRep zu errechnen.
Müsste doch weitaus resourcen schonender sein?

Ich habe ausserdem zwei LogDBs, eine als Langzeitspeicher, wo genau solche Daten rein sollen, und eine kurzzeit DB, wo ich vorallem jetzt mal sehr viel logge.

Passt zwar jetzt nicht mehr wirklich zur ursprünglichen Frage; aber Hintergrund ist auch das ich gerade eine kleine PV Anlage 2,1kWp selbst baue und um den Eigenverbrauch zu erhöhen WW Produktion steuern möchte.
Dazu wäre es aber schon mal nicht schlecht wenn ich überhaupt wüsste wie oft und wann meine Wärmepumpe mit wie viel Strom WW bereitet.

Also wann, wie oft, wie lange und mit wie Viel Strom wird pro Tag WW bereitet.

Lg
Crispyduck

Omega

Zitatwas pssiert bei einem Stromausfall
Dann musst du die Readings countsOverall und countsPerDay neu setzen über die set-Anweisung im hourcounter.

Meine LogDB-Konfiguration sieht genau so aus, eine Kurz- und eine Langzeit-DB.

Ich verstehe nicht, wozu dur DBRep benötigst. Deine Daten vom Modbus Stromzähler hast du doch in Readings. Mit denen rechnest du zum Tageswechsel und schreibst die Ergebnisse weg, z.B. in userReadings.
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave

crispyduck

Stimmt eigentlich, ich brauche ja eigentlich immer nur die aktuellen Stromzähler Werte von WW_aus weniger WW_an rechnen und ich hab die kWh für 1x WW bereiten.
Ich könnte also bei jedem Schalterwechsel, also WW_an, WW_aus, Heizen_an und Heizen _aus mir entsprechende Readings erzeugen und damit rechnen.

Ich hab nur noch keine Ahnung wie ich mir das aus Readings unterschiedlicher devices zusammen bastel.

Habe z.B. jede Minute ein Reading vom Stromzähler mit aktuellem Totalverbrauch. Und ein paar mal am Tag ein Reading vom der Heizunung das WW_an oder WW_aus geschaltet wurde. Wie könnte ich mir jetzt die Summe des Stromverbrauchs während WW_an war von 00:00 - 23:59 ausrechnen?