Hi,
bräuchte mal einen Tipp von Euch bezüglich Umsetzung.
Konkret möchte ich pro Bewässerungslauf im Garten speichern wie viel Wasser pro Bewässerung verbraucht wurde. Dies hilft auch um Werte von 0 Liter festzustellen, sprich ein defektes Ventil zu identifizieren.
#
Konkret habe ich verschiedene Dummys definiert, die dann Ventile ansteuern.
Beispiel:
define Bewaesserung_BuchsHecke dummy;
attr Bewaesserung_BuchsHecke setList on off;
defmod Bewaesserung_BuchsHeckeAn notify Bewaesserung_BuchsHecke:on set Bewaesserung_Ventil2 on-for-timer 80;;sleep 100 Hecke-1;; set Bewaesserung_BuchsHecke off;
defmod Bewaesserung_BuchsHeckeAus notify Bewaesserung_BuchsHecke:off cancel Hecke-1;; set Bewaesserung_Ventil2 off;
define Timer_BuchsHecke WeekdayTimer Bewaesserung_BuchsHecke 14|13:20|on 14|13:40|off;
Aktuell kann ich via folgendem Command einen Durchschnittswert von 60 Sekunden Wasserverbrauch auslesen und in Bewaesserung_BuchsHecke speichern.
{ fhem("setreading Bewaesserung_BuchsHecke Wasserverbrauch ".ReadingsVal('Verbrauch_60s','CONSUMPTION','0')) }
Wie komme ich denn nun an die Programmlaufzeit von Bewaesserung_BuchsHecke ran bzw. wie kann ich dies am besten speichern damit ich die Gesamtwassermenge berechnen kann?
Danke vorab!
Du setzt beim Dummy ein Reading bei start und liest das alter des Readings aus wenn Dein Dummy auf off geht.
Hier mal ein Beispiel
Internals:
CFGFN
NAME GeschirrspuelerBetriebDummy
NR 222
STATE off
TYPE dummy
READINGS:
2018-10-10 13:35:27 beginEnd 0
2018-10-10 13:35:27 state off
Attributes:
alias Betrieb
devStateIcon on:scene_dishwasher@green off:scene_dishwasher@red dry:icoLuefter
group Geschirrspüler
oldreadings beginEnd
room Küche
sortby 1
userReadings beginEnd:(on|off) { (ReadingsVal($name,'state',0) eq 'on' ? 1 : 0) }
BeginEnd Reading setze ich entsprechend über state on/off und in der Auswertung schaue ich wie alt das oldReading von beginEnd ist
OldReadingsAge($name,'beginEnd',0)
Das ist das alter des vorherigen Wertes vom Reading beginEnd
Dankeschön!
Werde es dann wie folgt umsetzen:
{ my $timenow = time();;fhem("setreading Bewaesserung_BuchsHecke startDate $timenow");; }
{ my $timenow = time();; fhem("setreading Bewaesserung_BuchsHecke Wasserverbrauch ".ReadingsVal('Verbrauch_60s','CONSUMPTION','0')*($timenow-ReadingsVal('Bewaesserung_BuchsHecke','startDate','0'))/60) }
Kann man so machen.
Aber wie gesagt Du hast ja die Laufzeit wenn Du mit OldReadingsAge das alter des alten Values vom Reading aus liest
Du musst also keine Zeit ins Reading setzen. Setz einfach ein Reading das reicht schon.
Benutze den stopWert auch zur Anzeige in FTUI wann das letzte mal bewässert wurde.
Danke!