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
vielleicht mit einem userReading?
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
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
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
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