Programmlaufzeit auswerten und speichern

Begonnen von irenaeusbecker, 12 Oktober 2018, 14:16:56

Vorheriges Thema - Nächstes Thema

irenaeusbecker

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!



CoolTux

Du setzt beim Dummy ein Reading bei start und liest das alter des Readings aus wenn Dein Dummy auf off geht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

irenaeusbecker

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) }

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

irenaeusbecker

Benutze den stopWert auch zur Anzeige in FTUI wann das letzte mal bewässert wurde.

Danke!