Ich möchte gern für einen Befehl die jetzige Zeit mit dem Zeitstempel eines Events vergleichen.
Wie kann man das Event adressieren?
$DEVICE.$EVENTNAME.$TIME? also bsp:
für das Device "myDummy" und das Event "on"
so was in die Richtigung wie myDummy.on.time?
Also ich möchte das dann späte in einer Bedingung einbauen.... if(myDummy.on.time < bla bla bal...)
Nicht wirklich der Zeitstempel eines Events, aber zumindest relativ nah dran, ist der Zeitstempel eines Readings, diesen bekommt man durch Aufruf von ReadingsTimestamp( "device", "reading", default )
ja, das meinte ich auch ;)
also in meinem Fall das Device:"PIR1" und das reading ist "pir1"
also könnte das ungefähr so aussehen?
define Lampeaus at +*00:02:00 { if (TimeNow() > (ReadingsTimestamp( PIR1,pir1, default) + 120) { fhem("set myLICHT off") } }
Erklärung: Fhem schaut alle 2 Minuten nach, ob das Reading "pir1" des Devices PIR1 älter als 2 Minuten ist, wenn dem so ist, dann schaltet FHEM die Lampe "myLicht" aus
Vermutlich ist für Deinen Zweck "ReadingsAge" noch besser geeignet, denn das gibt bereits das Alter des Readings wieder.
Aber für beide gilt, dass die Namen für Device/Reading in "" gehören --> das sind ja perl-Aufrufe!
Eigentlich ist Dein Szenario aber genau ein watchdog -> Also reagier auf ein Ereignis und auf das Ausbleiben eines weiteren Ereignisses innerhalb einer gewissen Zeit. Hierbei ist das zweite Event eben dasselbe wie das erste
Siehe in der Commandref zu watchdog
define mywatchdog DOIF ([PIR1:pir1:sec] < 10) (set 40Relais2 on) DOELSE (set 40Relais2 off)
der watchdog schaut nicht nach 10 Sekunden nach, ob ein Event gekommen ist... also das funktioniert auch nicht :(
Theoretisch müsste er ja Befehl 1 ausführen und nach 10 Sekunden Befehl 2, falls nicht in der Zwischenzeit
der Status von Device PIR1 und das Reading pir1 aktualisiert wurde.... :(
Hi NeuFehm!
Zitat von: NeuFehm am 10 Dezember 2016, 14:40:59
define mywatchdog [b]DOIF[/b] ([PIR1:pir1:sec] < 10) (set 40Relais2 on) DOELSE (set 40Relais2 off)
der watchdog...
Wieso sollte watchdog etwas tun, wenn du ein DOIF anlegst?
Lt. commandref wird ein watchdog doch so angelegt:
Zitat
define <name> watchdog <regexp1> <timespec> <regexp2> <command>
Wow, das scheint ein guter Hinweis.
Ich Depp habe einfach nach "watchdog" mit STR-F gesucht und mein erstes Ergebnis war mit DOIF überschrieben....
Aber ja, watchdog gibt es wirklich... ;)
Ich probiere gleich mal....
define keineBewegung watchdog PIR1 00:00:01 SAME set 40Relais1 off
funktioniert nicht.... mh
Ziel war: Wenn Device PIR1 über eine Minute nix mehr "sagt" dann schalte ein Relais aus.
Update, gelesen, dass watchdog sich selber trggern muss...:
define keineBewegung watchdog PIR1 00:00:01 SAME set 40Relais1 off;; trigger keineBewegung .
arbeitet falsch herum. Also sobald PIR1 einen Status aktualisiert schaltet 40Relais1 off.....
Wo ist der Fehler?
Ha!!! GEIL
define keineBewegung watchdog PIR1 00:00:15 SAME set 40Relais1 off;; trigger keineBewegung .
00:00:01 sind 1 Sekunde ;) bei 00:00:15 klappt es genau wie es soll!!!!!
Super!
Hier die Beiden Befehle für meinen Bewegungsmelder.... wenn der (PIR1) nix mehr meldet, warte noch 15 Sekunden und schalte dann die Lampe (40Relais1) aus...
define Bewegung notify PIR1 set 40Relais1 on
define keineBewegung watchdog PIR1 00:00:15 SAME set 40Relais1 off;; trigger keineBewegung .
Danke an Alle
Ich mag diese Protokolle eines erfolgreichen Erkenntnisprozesses - Schön, dass wir den Anstoss liefern konnten ;)
Hi!
Zitat von: NeuFehm am 10 Dezember 2016, 16:26:26
Ha!!! GEIL
00:00:01 sind 1 Sekunde
Super!
Ja stimmt. Diese Zitate lassen Erinnerungen an die Grundschulzeit in Einem hochkommen. Mit PISA kommen die diese Erkentnisse nun leider erst später. Es wird Einem so weihnachtlich um's Herz. :'(
Ihr wisst gar nicht, wie schwer eine Sekunde ist ;D