Heizölverbrauch über HourCounter realisieren

Begonnen von Franzel007, 10 Dezember 2023, 17:17:15

Vorheriges Thema - Nächstes Thema

Franzel007

Ein nettes Hallo in die Runde,
ich habe letzten Winter über HourCounter einen Betriebsstundenzähler für unsere Heizung realisiert. Funktioniert sehr gut.
Aus der Laufzeit könnte man mit den Faktor 2,2 Liter Heizöl pro Stunden den Heizölverbrauch errechnen. Das habe ich bisher händisch gemacht.
Nun dachte ich mir das kann ich sparen da fhem das sicher auch automatisch berechnen kann. Nur ich finden keinen Ansatz wie ich die Werte aus dem Modul HourCounter mit 2,2 multiplizieren kann.

Habt ihr sowas schon mal mit HourCounter probiert und hin bekommen oder ist mein Ansatz komplett falsch?
Wie könnte ich die Werte sonst um 2,2 multiplizieren?
Ich habe ja nur das Reading "ESPEasy_esp_easy_heizung_LED_gruen"das den Wert on oder off bringt.

#
define CN.Betriebstunden_Heizung HourCounter ESPEasy_esp_easy_heizung_LED_gruen:Sta:.on ESPEasy_esp_easy_heizung_LED_gruen:Sta:.off
setuuid CN.Betriebstunden_Heizung 6356f60f-f33f-b15e-d3ba-8f3184db5a2d724d
attr CN.Betriebstunden_Heizung event-min-interval tick.*:0,.*:3600
attr CN.Betriebstunden_Heizung event-on-change-reading .*
attr CN.Betriebstunden_Heizung room 00_Heizung_gesamt,21_Heizraum
attr CN.Betriebstunden_Heizung stateFormat pro Tag: [CN.Betriebstunden_Heizung:appOpHoursPerDayTemp:d2] <br> pro Woche: [CN.Betriebstunden_Heizung:appOpHoursPerWeekTemp:d2] <br> pro Monat: [CN.Betriebstunden_Heizung:appOpHoursPerMonthTemp:d2] <br> pro Jahr: [CN.Betriebstunden_Heizung:appOpHoursPerYearTemp:d2]
#

Gruß
Franzel

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DasQ

Jetzt nicht die Lösung für dein Problem, aber vom Grundsatz her das gleiche.

Zur Umrechnung mußt du noch die Dichte berücksichtigen.
Ich hab das für meine alte Buderus Heizung realisiert und ich bin auf plus minus 50 Liter auf 3000liter Tank.

https://forum.fhem.de/index.php?topic=74449.msg661949#msg661949
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org

qlaus

Meine Lösung:
define Heizenlaufzeit HourCounter heizen:on heizen:off
attr Heizenlaufzeit group Brennerlaufzeiten
attr Heizenlaufzeit room Heizung
attr Heizenlaufzeit stateFormat {sprintf("heute %02d:%02d:%02d, gesamt %02d:%02d:%02d, Tagesverbrauch %.01f l",\
int(ReadingsVal($name,"pulseTimePerDay",0))/3600, int(ReadingsVal($name,"pulseTimePerDay",0))%3600/60, int(ReadingsVal($name,"pulseTimePerDay",0))%60, int(ReadingsVal($name,"pulseTimeOverall",0))/3600, int(ReadingsVal($name,"pulseTimeOverall",0))%3600/60, int(ReadingsVal($name,"pulseTimeOverall",0))%60, \
ReadingsVal($name,"VerbrauchHeute",0))}
attr Heizenlaufzeit userReadings VerbrauchHeute { (ReadingsVal($name,"pulseTimePerDay",0) - ReadingsVal($name,"countsPerDay",0)*20)*0.00045751634;;;; }
#   DEF        heizen:on heizen:off
#   FUUID      61c06789-f33f-c193-a430-5c8ace797c82e058
#   NAME       Heizenlaufzeit
#   NR         130
#   NTFY_ORDER 50-Heizenlaufzeit
#   STATE      heute 03:18:12, gesamt 1803:59:39, Tagesverbrauch 5.0 l
#   TYPE       HourCounter
#   VERSION    1.0.1.2 - 24.12.2014
#   eventCount 7806
#   READINGS:
#     2023-12-12 13:01:00   VerbrauchHeute  5.02901960928
#     2023-12-12 13:01:00   countsOverall   18904
#     2023-12-12 13:01:00   countsPerDay    45
#     2023-12-12 13:01:00   pauseTimeEdge   833
#     2023-12-12 13:01:00   pauseTimeIncrement 833
#     2023-12-12 13:01:00   pauseTimeOverall 50996464
#     2023-12-12 13:01:00   pauseTimePerDay 34968
#     2023-12-12 13:01:00   pulseTimeEdge   284
#     2023-12-12 13:01:00   pulseTimeIncrement 89
#     2023-12-12 13:01:00   pulseTimeOverall 6494379
#     2023-12-12 13:01:00   pulseTimePerDay 11892
#     2023-12-12 13:01:00   state           45
#     2023-12-12 12:59:31   tickChanged     844
#     2023-12-12 00:00:00   tickDay         6
#     2023-12-12 13:00:00   tickHour        152
#     2023-12-06 05:20:51   tickMonth       0
#     2023-12-12 13:01:00   tickUpdated     206
#     2023-12-10 00:00:00   tickWeek        1
#     2023-12-06 05:20:51   tickYear        0
#     2023-12-12 13:01:00   value           1
#   helper:
#     OFF_Regexp heizen:off
#     ON_Regexp  heizen:on
#     calledByEvent
#     changedTimestamp 2023-12-12 13:01:00
#     forceClear
#     forceDayChange
#     forceHourChange
#     forceMonthChange
#     forceWeekChange
#     forceYearChange
#     isFirstRun
#     sdRoundHourLast 1702382400
#     value      1
#     cmdQueue:
#
setstate Heizenlaufzeit heute 03:18:12, gesamt 1803:59:39, Tagesverbrauch 5.0 l
setstate Heizenlaufzeit 2023-12-12 13:01:00 VerbrauchHeute 5.02901960928
setstate Heizenlaufzeit 2023-12-12 13:01:00 countsOverall 18904
setstate Heizenlaufzeit 2023-12-12 13:01:00 countsPerDay 45
setstate Heizenlaufzeit 2023-12-12 13:01:00 pauseTimeEdge 833
setstate Heizenlaufzeit 2023-12-12 13:01:00 pauseTimeIncrement 833
setstate Heizenlaufzeit 2023-12-12 13:01:00 pauseTimeOverall 50996464
setstate Heizenlaufzeit 2023-12-12 13:01:00 pauseTimePerDay 34968
setstate Heizenlaufzeit 2023-12-12 13:01:00 pulseTimeEdge 284
setstate Heizenlaufzeit 2023-12-12 13:01:00 pulseTimeIncrement 89
setstate Heizenlaufzeit 2023-12-12 13:01:00 pulseTimeOverall 6494379
setstate Heizenlaufzeit 2023-12-12 13:01:00 pulseTimePerDay 11892
setstate Heizenlaufzeit 2023-12-12 13:01:00 state 45
setstate Heizenlaufzeit 2023-12-12 12:59:31 tickChanged 844
setstate Heizenlaufzeit 2023-12-12 00:00:00 tickDay 6
setstate Heizenlaufzeit 2023-12-12 13:00:00 tickHour 152
setstate Heizenlaufzeit 2023-12-06 05:20:51 tickMonth 0
setstate Heizenlaufzeit 2023-12-12 13:01:00 tickUpdated 206
setstate Heizenlaufzeit 2023-12-10 00:00:00 tickWeek 1
setstate Heizenlaufzeit 2023-12-06 05:20:51 tickYear 0
setstate Heizenlaufzeit 2023-12-12 13:01:00 value 1




attr Heizenlaufzeit userReadings VerbrauchHeute { (ReadingsVal($name,"pulseTimePerDay",0) - ReadingsVal($name,"countsPerDay",0)*20)*0.00045751634;;;; }

Düse 0,40
bei 10 bar 1,4 kg/h = (1.4 / 0.85) / 3600 l/s =  0,00045751634 l/s

Um unötige Rechenarbeit jeweils erneut auszuführen wurde im Userreading der oben berechnete Faktor verwendet.

Gruß
qlaus
Raspberry Pi 3, , Sonoff, Shelly
Raspberry Pi 3, , 1-Wire
Raspberry Pi 3, , 1-Wire, Sonoff, Shelly

Franzel007

Hallo qlaus,

nicht schlecht. Verstanden habe ich schon mal. Ich werde es nächste Woche probieren ob ich es auch live hinbekomme.

Danke auch für die anderen Antworten.

Gruß
Franzel

Franzel007

Hallo nochmal,

nach etwas längerem Lauf auf dem falschen Weg, habe ich es nun so hinbekommen wie ich es wollte. Nochmals danke für die Hilfen, die alle etwas dazu beigetragen haben.
#
define CN.Betriebstunden_Heizung HourCounter ESPEasy_esp_easy_heizung_LED_gruen:Sta:.on ESPEasy_esp_easy_heizung_LED_gruen:Sta:.off
setuuid CN.Betriebstunden_Heizung 6356f60f-f33f-b15e-d3ba-8f3184db5a2d724d
attr CN.Betriebstunden_Heizung event-min-interval tick.*:0,.*:3600
attr CN.Betriebstunden_Heizung event-on-change-reading .*
attr CN.Betriebstunden_Heizung room 00_Heizung_gesamt,21_Heizraum
attr CN.Betriebstunden_Heizung stateFormat Betriebsstunden pro Tag: [CN.Betriebstunden_Heizung:appOpHoursPerDayTemp:d2] <br> Betriebsstunden pro Woche: [CN.Betriebstunden_Heizung:appOpHoursPerWeekTemp:d2] <br> Betriebsstunden pro Monat: [CN.Betriebstunden_Heizung:appOpHoursPerMonthTemp:d2] <br> Betriebsstunden pro Jahr: [CN.Betriebstunden_Heizung:appOpHoursPerYearTemp:d2] <br> ----------------------------------------------------- <br> Heizoelverbrauch pro Tag: [CN.Betriebstunden_Heizung:verbrauchprotag:d2] Liter <br> Heizoelverbrauch pro Woche: [CN.Betriebstunden_Heizung:verbrauchprowoche:d2] Liter <br> Heizoelverbrauch pro Monat: [CN.Betriebstunden_Heizung:verbrauchpromonat:d2] Liter <br> Heizoelverbrauch pro Jahr: [CN.Betriebstunden_Heizung:verbrauchprojahr:d2] Liter <br>
attr CN.Betriebstunden_Heizung userReadings verbrauchprotag { ReadingsVal("CN.Betriebstunden_Heizung","appOpHoursPerDayTemp",0)*26/10 } , verbrauchprowoche { ReadingsVal("CN.Betriebstunden_Heizung","appOpHoursPerWeekTemp",0)*26/10 } , verbrauchpromonat { ReadingsVal("CN.Betriebstunden_Heizung","appOpHoursPerMonthTemp",0)*26/10 } , verbrauchprojahr { ReadingsVal("CN.Betriebstunden_Heizung","appOpHoursPerYearTemp",0)*26/10 }
#

Die 26/10 sind nur ein Näherungswert, da dies von der Düse (das passt) und der Temperatur des Heizöls abhängig ist.
Bei 10 Liter verbrauchten Heizöl (gemessen) liege ich bei der Berechnung ca. 0,014 Liter .



Gruß
Franzel