Zeitmessung so lange GA = on

Begonnen von Fifi, 08 Februar 2016, 20:56:51

Vorheriges Thema - Nächstes Thema

Fifi

Hallo, ich hoffe das ist die richtige Rubrik.
Ein KNX Taster ist On wenn gedrückt und dann wieder Off wenn er los gelasssen wird.
Ich möchte nun die Zeit messen / eine Variable hochlaufen lassen während er On ist.
Kann mich da mal bitte jemand in die richtige Richtung schubsen.........
Ingo

Ellert

Mit einem DOIF geht es etwa so:
di DOIF ([KNX] eq "ON") (setreading di start {(time)})
DOELSEIF  ([KNX] eq "OFF") (setreading di stop {(time)})

und dem Attribut
di stateFormat {ReadingsVal("di","stop","0")-ReadingsVal("di","start","0")}

Die Zeitdifferenz steht im Status des DOIF.

Fifi

Danke, kucke ich mir Morgen an,
Ingo

Fifi

Hallo,
ich bekomme das nicht hin. Ich habe deine Syntax so angepasst:

define ZM_Licht_Nord DOIF ([Licht_WZ_Nord] eq "ON") (setreading ZM_Licht_Nord start {(time)}) DOELSEIF  ([Licht_WZ_Nord] eq "OFF") (setreading ZM_Licht_Nord stop {(time)})
attr ZM_Licht_Nord stateFormat {ReadingsVal("ZM_Licht_Nord","stop","0")-ReadingsVal("ZM_Licht_Nord","start","0")}

Auf der Hauptseit wird nun auch "ZM_Licht_Nord" (unter DOIF) angezeigt. In der rechten Spalte (Status???) steht aber immer "0", auch wenn die GA passiert ist.
Wie gebe ich das Ergebnis (Status) aus? (sprintf?)
Ingo

Ellert

Zitatdi DOIF ([KNX] eq "ON") (setreading di start {(time)})
DOELSEIF  ([KNX] eq "OFF") (setreading di stop {(time)}

Das ist nur ein Beispiel. Ich kenne KNX nicht, daher musst Du die Werte ON/OFF"so anpassen, dass sie für KNX zutreffen, also on/off oder On/Off oder 0/1 oder ein/aus usw.

Falls das nicht klappt mach ein Listing für jedes beteiligte Gerät und poste sie.

Fifi

Ja, Danke, gepennt. Ich hatte mit "on" und "ON" probiert, aber wohl in anderen Kombinationen. Nu geht der teil.
Auflösung sind Sekunden. Geht irgendie auch kleiner, 1/10tel oder ms?
Ingo


Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Fifi

Ich habe ein bischen weiter gesucht. Wenn man es mit "gettimeofday" statt time macht, bekommt man (zumindest in der Anzeige) 14 Stellen hinter dem Komma. Was auch immer man von dieser Genauigkeit halten soll ;)

define Zeitmessung DOIF ([EIB_0002] eq "on") (setreading Zeitmessung start {(gettimeofday)}) DOELSEIF  ([EIB_0002] eq "off") (setreading Zeitmessung stop {(gettimeofday)})
attr Zeitmessung stateFormat {ReadingsVal("Zeitmessung","stop","0")-ReadingsVal("Zeitmessung","start","0")}

Vielleicht hilft's jemandem.
Danke nochmal an alle.