Hallo,
vor einiger Zeit hatte ich auch so etwas gesucht und zwar wollte ich mit den Betriebsstunden den Ölverbrauch ermitteln. Mit Hilfe des Forums hier und Recherchen habe ich für mich folgendes "gebastelt":
1.) Heizung.cfg
####################################################################################################
## Heizung.cfg
## Zweck..........................: Sensoren, Schaltaktoren, Ölverbrauch messen + Pumpen schalten
## Standort.......................: Heizungsraum/Werkstatt
## Typ............................: FS20, FS20TFK, DS18S20(HMS), Releais als Kontaktgeber für FS20TFK
## Besonderheiten.................:
####################################################################################################
########################################################################################
## Sensor, der die Ein- und Ausschaltung des Brenners signalisiert
########################################################################################
define Betriebszaehler FS20 acc8 00
attr Betriebszaehler room Heizung
attr Betriebszaehler eventMap on:off off:on
define FileLog_Betriebszaehler FileLog /var/log/fhem/Betriebszaehler-%Y-%m.log Betriebszaehler
attr FileLog_Betriebszaehler logtype fs20:Window,text
attr FileLog_Betriebszaehler room Heizung
define weblink_Betriebszaehler weblink fileplot FileLog_Betriebszaehler:fs20:CURRENT
attr weblink_Betriebszaehler room Heizung
#########################################################################################
## Ermittelte Zeitdifferenz zur Berechnung des Ölverbrauches
## Das Ergebnis wird in einer MySql-Datenbank eingetragen und für weitere Auswertungen
## genutzt; die Webanwendung "Verbrauch" liefert detallierte Übersichten
#########################################################################################
define brenner_log FileLog /var/log/fhem/brenner-%Y-%m.txt brenner_zaehler
attr brenner_log room Heizung
define brenner_zaehler notify Betriebszaehler {\
if("%" eq "on") {\
$data{brenner_Aktuell} = time();;\
} elsif("%" eq "off") {\
$data{brenner_min}=((time()-$data{brenner_Aktuell})/60)*0.0309225;;\
## der Wert 0.0309225 entspricht dem Ölverbrauch/Minute gem. Datenblatt der Brennerdüse fhem "trigger brenner_zaehler $data{brenner_min}";;\
}\
}
attr brenner_zaehler room Heizung
define logdb DbLog /etc/fhem/db.conf brenner_zaehler:.*
attr logdb room Heizung
###########################################################################################
## FS20 zum Schalten der Umwälzpumpe
###########################################################################################
define Umwaelzpumpe FS20 12bc 01
attr Umwaelzpumpe model fs20
attr Umwaelzpumpe room Heizung
define FileLog_Umwaelzpumpe FileLog /var/log/fhem/Umwaelzpumpe-%Y.log Umwaelzpumpe
attr FileLog_Umwaelzpumpe logtype fs20:Window,text
attr FileLog_Umwaelzpumpe room Heizung
define weblink_Umwaelzpumpe weblink fileplot FileLog_Umwaelzpumpe:fs20p:CURRENT
attr weblink_Umwaelzpumpe room Heizung
#############################################################################################
## Dieses Script prüft die Stellung der Actuatoren aller FHT`s
## bei einem Wert >60 wird die Umwälzpumpe eingeschaltet
## bei einem Wert <30 wird die Umwälzpumpe ausgeschaltet
## die Abfrage erfolgt in einem Zeitintervall von 10 Minuten
#############################################################################################
define n_Umwaelzpumpe notify n_Umwaelzpumpe {\
my $need_heat=0;;\
my $idle_actuators=0;;\
my $burner_state=$fs20_c2b{ReadingsVal("Umwaelzpumpe","state","off")};;\
my @@fhts=devspec2array("TYPE=FHT");;\
foreach(@@fhts) {\
my $actuator=ReadingsVal($_, "actuator", "101%");;\
$actuator=(substr($actuator,0, (length($actuator)-1)));;\
if ($actuator > 60) {\
$need_heat=1\
}\
if ($actuator < 30) {\
$idle_actuators++\
}\
}\
if ($need_heat != 0) {\
Log(3,"Es muss geheizt werden. Vorheriger Umwaelzpumpenstatus: " . $burner_state);;\
fhem("set Umwaelzpumpe on") if ($burner_state == 00)\
}\
else {\
if ($idle_actuators == @@fhts) {\
fhem("set Umwaelzpumpe off") if ($burner_state == 11);;\
}\
else {\
Log(3,"Waermebedarf: " . $idle_actuators . " Heizkoerper von " . @@fhts . " im Leerlauf.")\
}\
}\
}
attr n_Umwaelzpumpe room Heizung
#################################################################################################
## Abfrage der Actuatoren
#################################################################################################
define a_Umwaelzpumpe at +*00:10:00 trigger n_Umwaelzpumpe
attr a_Umwaelzpumpe room Heizung
##################################################################################
define BrennerLog FileLog /var/log/fhem/brenner-%Y-%m.txt Oelverbrauch
attr BrennerLog logtype brennerlog,text
attr BrennerLog room Heizung
define Oelverbrauch weblink fileplot BrennerLog:brennerlog:CURRENT
attr Oelverbrauch room Heizung
##################################################################################
2.) Erstellen einer MySql-Datenbank
In diese werden die ermittelten Ölverbrauchswerte geschrieben
3.) Eine Weboberfläche erstellt (CMSimple)
Hier sind verschiedene Abfragen der Sql-Daten möglich mit grafischer Darstellung. siehe angehängte jpg`s
Wenn nähere Info gewünscht, dann bitte melden.
HGO