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
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.
Danke, kucke ich mir Morgen an,
Ingo
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
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.
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
Schau mal hier http://forum.fhem.de/index.php/topic,24607.msg177053.html#msg177053
Zitat von: Ellert am 11 Februar 2016, 18:22:22
Schau mal hier http://forum.fhem.de/index.php/topic,24607.msg177053.html#msg177053
wait-Angaben im DOIF-Modul können inzwischen auch unter einer Sekunde sein.
Gruß
Damian
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.