DOIF - Fragen zu Verzögerungen

Begonnen von Kai-Alfonso, 12 Juni 2015, 10:01:11

Vorheriges Thema - Nächstes Thema

Kai-Alfonso

Hallo,

ich habe mal eine Frage zu DOIF. In der Doku steht:

Verzögerungen

Verzögerungen für die Ausführung von Kommandos werden pro Kommando über das Attribut "wait" definiert. Syntax:

attr <Modulname> wait <Sekunden für das erste Kommando>:<Sekunden für das zweite Kommando>:...

Für Kommandos ohne Verzögerung werden Sekundenangaben ausgelassen oder auf Null gesetzt. Die Verzögerungen werden nur auf Events angewandt und nicht auf Zeitsteuerung. Eine bereits ausgelöste Verzögerung wird zurückgesetzt, wenn während der Wartezeit ein anders Kommando, ausgelöst durch ein neues Ereignis, ausgeführt werden soll.



Ich habe folgendes DOIF erstellt

([MicroServer] eq "Stop")({system "/opt/scripts/test.sh&"} set steckdose.11 off)

Jetzt will ich, das zwischen dem ersten Befehl ({system "/opt/scripts/test.sh&"}) und dem Set Befehl eine Verzögerung stattfindet. Leider scheint aber das Wait Attribut sich nur darauf zu Beziehen, wie lange die Verzögerung nach dem Triggern des DOIF ist, bevor der erste Befehl ausgeführt wird.

Irgendwie blicke ich da nicht durch, dachte eigentlich, das ein wait 10:100  10 Sekunden vor dem ersten Befehl warten und dann 100 Sekunden bis zum 2. Befehl. So habe ich zumindest den Teil der Doku verstanden

Vielleicht kann mir jemand ein Tipp geben?

Vielen Dank


Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)

Virsacer

ZitatIrgendwie blicke ich da nicht durch, dachte eigentlich, das ein wait 10:100  10 Sekunden vor dem ersten Befehl warten und dann 100 Sekunden bis zum 2. Befehl.
Nein, diese Trennung ist nur dafür da, wenn du mehrere Befehle (also mit DOELSE(IF)) hast...

Evtl. gehts mit einem (perl) wait Befehl im Code?

Kai-Alfonso

Hi, mit sleep hab ich auch schon gearbeitet, allerdings blockiert er dann fhem für die angebene Zeitspanne, obwohl in der Doku folgendes steht

Bemerkung: sleep gefolgt von weiteren Befehlen blockiert die Abarbeitung von FHEM nicht, und ist vergleichbar mit einem namenlosen at Kommando

Was mache ich falsch?
Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)

flurin

So könnte es klappen:

define du_count dummy



define di_name DOIF ([MicroServer] eq "Stop") ({system "/opt/scripts/test.sh&"}, setreading  du_count state 1)
DOELSEIF ([du_count] == 1) (set steckdose.11 off, setreading  du_count state 0)
attr di_name wait 10:100