FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: NeuFehm am 10 Dezember 2016, 12:30:48

Titel: Wie kann man den Zeitstempel adressieren?
Beitrag von: NeuFehm am 10 Dezember 2016, 12:30:48
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...)
Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: viegener am 10 Dezember 2016, 12:45:27
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 )

Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: NeuFehm am 10 Dezember 2016, 12:58:13
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
Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: viegener am 10 Dezember 2016, 13:55:53
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!

Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: viegener am 10 Dezember 2016, 13:59:14
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
Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: NeuFehm am 10 Dezember 2016, 14:40:59
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.... :(
Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: FranzB94 am 10 Dezember 2016, 14:46:54
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>
Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: NeuFehm am 10 Dezember 2016, 16:18:14
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....
Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: NeuFehm am 10 Dezember 2016, 16:26:26
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
Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: viegener am 10 Dezember 2016, 18:24:13
Ich mag diese Protokolle eines erfolgreichen Erkenntnisprozesses - Schön, dass wir den Anstoss liefern konnten  ;)
Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: FranzB94 am 10 Dezember 2016, 19:23:13
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.  :'(
Titel: Antw:Wie kann man den Zeitstempel adressieren?
Beitrag von: NeuFehm am 12 Dezember 2016, 08:11:00
Ihr wisst gar nicht, wie schwer eine Sekunde ist  ;D