Ölverbrauchsanzeige / Betriebsstundenzähler: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Krikan (Diskussion | Beiträge) K (Änderung 18918 von Krikan (Diskussion) rückgängig gemacht.) |
||
(5 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Problem: oft weiß man nicht wie viel Öl man tatsächlich verbraucht und welche Veränderungen an der | {{Randnotiz|RNTyp=y|RNText=Die gezeigten (''notify'') Codebeispiele sind für die (nicht empfohlene) direkte Eingabe in die Konfigurationsdatei. Bei Eingabe über das Webinterface müssen entsprechende Anpassungen vorgenommen werden.}} | ||
Problem: oft weiß man nicht, wie viel Öl man tatsächlich verbraucht und welche Veränderungen an der Heizung welche Auswirkungen haben. | |||
Die Lösung: eine Ölverbrauchsanzeige direkt in FHEM. | Die Lösung: eine Ölverbrauchsanzeige direkt in FHEM. | ||
Hierfür habe ich ein Relais (Finder 55.34.8.230.0040 [http://www.elv.de/elv-fs20-kse-funk-klingelsignal-erkennung.html ELV] angeschlossen | |||
FHEM erstellt durch autocreate automatisch ein neues Device, definiert sieht es bei mir so aus: | Hierfür habe ich ein Relais (Finder 55.34.8.230.0040 [http://www.elv.de/elv-fs20-kse-funk-klingelsignal-erkennung.html ELV]) so angeschlossen, dass wenn der Brenner einschaltet sich der Kontakt am anderen Ende öffnet, dadurch kein Strom mehr zum KSE fließt und der dann "on" an FHEM sendet. Logischerweise hätte ich gedacht, es muss so angeschlossen sein, dass Strom zum KSE fließt wenn der Brenner an ist, dies hat aber nicht funktioniert, daher andersrum. Das Relais ist ein Wechsler, daher kein Problem. | ||
FHEM erstellt durch [[autocreate]] automatisch ein neues Device, definiert sieht es bei mir so aus: | |||
<nowiki>define fs_boiler FS20 1be4 00 | <nowiki>define fs_boiler FS20 1be4 00 | ||
Zeile 17: | Zeile 20: | ||
Die Icons für die Heizung habe ich irgendwo aus dem Forum, weiß allerdings nicht mehr welcher Thread. | Die Icons für die Heizung habe ich irgendwo aus dem Forum, weiß allerdings nicht mehr welcher Thread. | ||
So, nun wird zumindest schonmal dargestellt wann die Heizung an oder aus ist. | So, nun wird zumindest schonmal dargestellt, wann die Heizung an oder aus ist. | ||
Um den Ölverbauch zu messen werden einige weitere | Um den Ölverbauch zu messen werden einige weitere Definitionen benötigt. | ||
Zuerst ein [[notify]]: | |||
<nowiki>define boiler_consumption notify fs_boiler {\ | <nowiki>define boiler_consumption notify fs_boiler {\ | ||
if( | if("$EVENT" eq "on") {\ | ||
$data{boiler_last} = time();;\ | $data{boiler_last} = time();;\ | ||
} elsif( | } elsif("$EVENT" eq "off") {\ | ||
$data{boiler_min} = (time()-$data{boiler_last})/60*0.03626;;\ | $data{boiler_min} = (time()-$data{boiler_last})/60*0.03626;;\ | ||
fhem "trigger boiler_consumption $data{boiler_min}";;\ | fhem "trigger boiler_consumption $data{boiler_min}";;\ | ||
}\ | }\ | ||
}</nowiki> | }</nowiki> | ||
Dieser berechnet aus der Differenz zwischen on und off Minutengenau den Verbrauch. Hierfür muss man wissen welche Düse verbaut ist und was für einen Durchsatz sie hat. Unsere hat 2,5kg/Stunde Durchsatz (steht auf der Düse) dies habe ich in Liter umgerechnet (laut Wikipedia besitzt Heizöl eine Dichte von 0,820–0,860 kg/l [http://de.wikipedia.org/wiki/Heizöl [1]]) und dies anschließend durch 60 geteilt um es als Liter/Minute darzustellen. Daher kommt der Wert 0.03626 im | |||
Dieser berechnet aus der Differenz zwischen on und off Minutengenau den Verbrauch. Hierfür muss man wissen, welche Düse verbaut ist und was für einen Durchsatz sie hat. Unsere hat 2,5kg/Stunde Durchsatz (steht auf der Düse) dies habe ich in Liter umgerechnet (laut Wikipedia besitzt Heizöl eine Dichte von 0,820–0,860 kg/l [http://de.wikipedia.org/wiki/Heizöl [1]]) und dies anschließend durch 60 geteilt um es als Liter/Minute darzustellen. Daher kommt der Wert 0.03626 im ''notify''. | |||
Hierzu nun der Log und Plot: | Hierzu nun der Log und Plot: | ||
Zeile 59: | Zeile 63: | ||
<nowiki>define boiler_time notify fs_boiler {\ | <nowiki>define boiler_time notify fs_boiler {\ | ||
if( | if("$EVENT" eq "on") {\ | ||
$data{boiler_last} = time();;\ | $data{boiler_last} = time();;\ | ||
} elsif( | } elsif("$EVENT" eq "off") {\ | ||
$data{boiler_min} = (time()-$data{boiler_last})/60;;\ | $data{boiler_min} = (time()-$data{boiler_last})/60;;\ | ||
fhem "trigger boiler_time $data{boiler_min}";;\ | fhem "trigger boiler_time $data{boiler_min}";;\ | ||
Zeile 67: | Zeile 71: | ||
} | } | ||
define boiler_time_log FileLog ./log/boiler_time-%Y-%m.log boiler_time</nowiki> | define boiler_time_log FileLog ./log/boiler_time-%Y-%m.log boiler_time</nowiki> | ||
Hier lasse ich nur ein Log schreiben, ich benötige | Hier lasse ich nur ein Log schreiben, ich benötige keinen Plot, müsste aber mit leichter Anpassung der oben stehenden gplot-Definition leicht zu bewerkstelligen. | ||
Zusätzlich binde ich noch eine Grafik mit dem Ölpreisverlauf direkt von Tecson ein: | Zusätzlich binde ich noch eine Grafik mit dem Ölpreisverlauf direkt von Tecson ein: | ||
Zeile 73: | Zeile 77: | ||
<nowiki>define Heizoel weblink image http://www.tecson.de/tl_files/pepesale/bilder_inhalt/_hoel.gif | <nowiki>define Heizoel weblink image http://www.tecson.de/tl_files/pepesale/bilder_inhalt/_hoel.gif | ||
attr Heizoel htmlattr width="551" height="594"</nowiki> | attr Heizoel htmlattr width="551" height="594"</nowiki> | ||
== Links == | |||
* Forenthread, in dem eine {{Link2Forum|Topic=15641|LinkText=Änderung/Erweiterung}} diskutiert wird | |||
[[Kategorie:HOWTOS]] | [[Kategorie:HOWTOS]] | ||
[[Kategorie:Energieverbrauchsmessung]] |
Aktuelle Version vom 24. Januar 2017, 17:48 Uhr
Problem: oft weiß man nicht, wie viel Öl man tatsächlich verbraucht und welche Veränderungen an der Heizung welche Auswirkungen haben.
Die Lösung: eine Ölverbrauchsanzeige direkt in FHEM.
Hierfür habe ich ein Relais (Finder 55.34.8.230.0040 ELV) so angeschlossen, dass wenn der Brenner einschaltet sich der Kontakt am anderen Ende öffnet, dadurch kein Strom mehr zum KSE fließt und der dann "on" an FHEM sendet. Logischerweise hätte ich gedacht, es muss so angeschlossen sein, dass Strom zum KSE fließt wenn der Brenner an ist, dies hat aber nicht funktioniert, daher andersrum. Das Relais ist ein Wechsler, daher kein Problem. FHEM erstellt durch autocreate automatisch ein neues Device, definiert sieht es bei mir so aus:
define fs_boiler FS20 1be4 00 attr fs_boiler devStateIcon on:HeizungOn off:HeizungOff attr fs_boiler dummy 1 attr fs_boiler eventMap on:off off:on attr fs_boiler icon icoHEIZUNG attr fs_boiler model fs20kse
Und der entsprechende Plot:
define FileLog_fs_boiler FileLog ./log/fs_boiler-%Y.log fs_boiler attr FileLog_fs_boiler logtype fs20:Window,text define weblink_fs_boiler weblink fileplot FileLog_fs_boiler:fs20:CURRENT
Die Icons für die Heizung habe ich irgendwo aus dem Forum, weiß allerdings nicht mehr welcher Thread.
So, nun wird zumindest schonmal dargestellt, wann die Heizung an oder aus ist. Um den Ölverbauch zu messen werden einige weitere Definitionen benötigt.
Zuerst ein notify:
define boiler_consumption notify fs_boiler {\ if("$EVENT" eq "on") {\ $data{boiler_last} = time();;\ } elsif("$EVENT" eq "off") {\ $data{boiler_min} = (time()-$data{boiler_last})/60*0.03626;;\ fhem "trigger boiler_consumption $data{boiler_min}";;\ }\ }
Dieser berechnet aus der Differenz zwischen on und off Minutengenau den Verbrauch. Hierfür muss man wissen, welche Düse verbaut ist und was für einen Durchsatz sie hat. Unsere hat 2,5kg/Stunde Durchsatz (steht auf der Düse) dies habe ich in Liter umgerechnet (laut Wikipedia besitzt Heizöl eine Dichte von 0,820–0,860 kg/l [1]) und dies anschließend durch 60 geteilt um es als Liter/Minute darzustellen. Daher kommt der Wert 0.03626 im notify. Hierzu nun der Log und Plot:
define boiler_log FileLog ./log/boiler-%Y-%m.log boiler_consumption define Oilconsumption weblink fileplot boiler_log:oil:CURRENT attr Oilconsumption label sprintf("Consumption (l) today: %.2f total %.2f avg/h", $data{sum1}, ($data{sum1}/$hour))
Der Gplot-Syntax folgt gleich. Zuerst eine kurze Erklärung. Ich lasse im Label den Tagesverbrauch auf 2 Nachkommastellen gerundet sowie den aktuellen Durschnittsverbrauch Anzeigen. Leider funktioniert der Durschnittsverbrauch nur für den aktuellen Tag und nicht für vorherige, da immer durch die Aktuelle Stunde geteilt wird, bei vorherigen Tagen müsste aber durch 24 geteilt werden. Habe ich noch nicht geschafft. Die gplot für den Plot:
############################ # Display the oil consumption. # 2012-12-24_14:48:31 boiler_consumption 0.2634893333 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 ytics set y2tics set title '<L1>' set grid xtics y2tics set y2label "Oilconsumption (l)" set ylabel "Oilconsumption (l)" #FileLog 3::0: plot "<IN>" using 1:3 title 'Oilconsumption (l)' with lines
Das wärs für die Verbrauchsanzeige. Das meiste hiervon basiert auf verschiedene Beiträge aus dem Forum und google-groups.
Zur Kontrolle oder Alternativ kann man auch einen Betriebsstundenzähler programmieren:
define boiler_time notify fs_boiler {\ if("$EVENT" eq "on") {\ $data{boiler_last} = time();;\ } elsif("$EVENT" eq "off") {\ $data{boiler_min} = (time()-$data{boiler_last})/60;;\ fhem "trigger boiler_time $data{boiler_min}";;\ }\ } define boiler_time_log FileLog ./log/boiler_time-%Y-%m.log boiler_time
Hier lasse ich nur ein Log schreiben, ich benötige keinen Plot, müsste aber mit leichter Anpassung der oben stehenden gplot-Definition leicht zu bewerkstelligen.
Zusätzlich binde ich noch eine Grafik mit dem Ölpreisverlauf direkt von Tecson ein:
define Heizoel weblink image http://www.tecson.de/tl_files/pepesale/bilder_inhalt/_hoel.gif attr Heizoel htmlattr width="551" height="594"
Links
- Forenthread, in dem eine Änderung/Erweiterung diskutiert wird