Hi,
folgender Code sollte den Gasverbrauch pünktlich zur vollen Stunde logen. Anstatt diesen Wert pro Stunde einmal in die Log-Datei zu schreiben, wird er aber 100 mal geschrieben. Finde aber einfach keinen Fehler. Zum testen lasse ich das ganze momentan minütlich ablaufen.
Zitatdefine Gaszaehler OWDevice 1D.3D000E000000 600
attr Gaszaehler IODev myLocalOWServer
attr Gaszaehler model DS2423
attr Gaszaehler room OWDevice
define Verbrauch_Stunde dummy
define Verbrauch_Gas dummy
define evtRoutineEveryMinute at +*00:01:00 set {GasproStunde}
attr evtRoutineEveryMinute alignTime 00:00
Zitatsub GasproStunde
{
#
# Zunächst Differenz aktueller Wert - Wert von letzter Stunde berechnen
my $WertGas = ReadingsVal("Gaszaehler","counters.A",0) - Value("Verbrauch_Gas");
# Stundenverbrauch in Verbrauch_Stunde speichern
fhem ("set Verbrauch_Stunde $WertGas");
# Aktuellen Wert speichern
my $WertGas = ReadingsVal("Gaszaehler","counters.A",0);
fhem ("set Verbrauch_Gas $WertGas");
}
Hallo,
die Berechnung des Verbrauchs ist leichter mit userReadings zu implementieren, die von Dir angegebene Funktion ist nicht notwendig. Schau mal in der Commandref nach userReadings und dem modifier monotonic.
attr Gaszaehler userReadings Verbrauch_Gas monotonic {ReadingsVal("Gaszaehler","counters.A",0)}
ist ungetestet. Der Code sollte den Verbrauch über die Zeit addieren. Wenn gewünscht kann das Reading mit at stündlich auf 0 resettet werden.
VG
Sven
Ich probiere deinen Vorschlag gleich mal aus. Hab aber mein Problem gelöst. Habe beim Aufruf der sub {GasproStunde} das "set" weggelassen. Jetzt wird pro Stunde(Minute) nur ein Wert gelogt. Warum das so funkioniert verstehe ich jedoch nicht.
Würe das auf 0 setzen dann so aussehen?
Zitatattr Gaszaehler userReadings Verbrauch_Gas {ReadingsVal("Gaszaehler",0,0)}
Hallo!
ZitatWüre das auf 0 setzen dann so aussehen?
Nein.
Readings werden mit
setreading gesetzt. Der Code zum Setzen lautet dann:
setreading Gaszaehler Verbrauch_Gas 0
Weiteres steht in der Commandref http://fhem.de/commandref_DE.html#setreading
VG
Sven