Ich möchte gerne einen Befehl in x Minuten von jetzt ausführen und diesen dann für y mal alle z Minuten wiederholen. Mit AT habe ich nur folgendes hinbekommen:
define sample at +*{3}00:00:15 <befehl>
Das macht im Prinzip schon was ich will, wiederholt den Befehl aber 3x in 15 Sekunden Abstand. Ich würde gerne die Abstände der Wiederholung unabhängig vom ersten Ausführen machen (also z.B. erste Ausführung in 15 Sekunden, nächste Ausführung 60 Sekunden später und wieder die nächste auch 60 Sekunden später usw.
Kann mir jemand helfen? Danke!
P.S. "on-for-timer" wird in diesem Fall vermutlich nicht gehen, da <befehl> eine Sprachausgabe oder ein Gong über Sonos sein soll.
Wenn Du möchtest schau Dir mal DOIF (http://fhem.de/commandref_DE.html#DOIF)an. Ich denke, damit geht das.
Gruß Otto
define sample1 at +00:00:15 set ....; define sample2 at +00:00:60 set ...; define sample3 at +00:02:00 seit ...
Mit DOIF
([<Dein Trigger>]) (set ...) (set ...) (set ...)
und dem Attribut
wait 15,60,60
Hallo,
Ich habe etwas ähnliches.
Hierbei wird ein Bewässerungsystem angesteuert, welches immer nur 1 Minute läuft wenn der Strom angeschaltet wird.
Da ich jedoch länger Bewässern möchte, muss ich den Strom öfter an und aus schalten.
Hierfür habe ich mir einige Dummys erzeugt.
define water1start dummy
attr water1start room Pflanzen
attr water1start setList state:time
attr water1start webCmd state
define water1repeat dummy
attr water1repeat room Pflanzen
attr water1repeat setList state:slider,0,1,10
attr water1repeat webCmd state
define water1interval dummy
attr water1interval room Pflanzen
attr water1interval setList state:slider,10,5,100
attr water1interval webCmd state
Über die Dummys wird der Startzeitpunkt festgelegt. Die Anzahl der Wiederholungen und der Abstand zwischen den Wiederholungen.
Das passende DOIF sieht dann so aus:
define Bewaesserung_doif DOIF ([[water1start]] and [water1repeat] > 0) (set Switch01 on-for-timer 60)
attr Bewaesserung_doif repeatcmd 65
attr Bewaesserung_doif repeatsame 0
attr Bewaesserung_doif room Pflanzen
Außerdem gibt es noch 2 Notifies um die Änderungen aus den Dummys ins DOIF zu schreiben
define notify_water1repeat notify water1repeat {fhem("attr Bewaesserung_doif repeatsame $EVENT");;fhem("save")}
attr notify_water1repeat room Pflanzen
define notify_water1interval notify water1interval {fhem("attr Bewaesserung_doif repeatcmd $EVENT");;fhem("save");;}
attr notify_water1interval room Pflanzen
Zitat von: gloob am 04 Februar 2016, 11:12:03
Außerdem gibt es noch 2 Notifies um die Änderungen aus den Dummys ins DOIF zu schreiben
define notify_water1repeat notify water1repeat {fhem("attr Bewaesserung_doif repeatsame $EVENT");;fhem("save")}
attr notify_water1repeat room Pflanzen
define notify_water1interval notify water1interval {fhem("attr Bewaesserung_doif repeatcmd $EVENT");;fhem("save");;}
attr notify_water1interval room Pflanzen
@gloob: Ohne notify geht es auch, direkt den Dummy angeben:
Zitatdefine Bewaesserung_doif DOIF ([[water1start]] and [water1repeat] > 0) (set Switch01 on-for-timer 60)
attr Bewaesserung_doif repeatcmd [water1interval]
attr Bewaesserung_doif repeatsame [water1repeat]
attr Bewaesserung_doif room Pflanzen
Vielen Dank für die Hilfe. Das hilft mir doch auch.
Vielen Dank für die vielen Lösungsansätze. Am besten gefallen hat mir DOIF zusammen mit WAIT von "Ellert". So werde ich das jetzt umsetzen!
Zitat von: m0urs am 04 Februar 2016, 15:44:59
Vielen Dank für die vielen Lösungsansätze. Am besten gefallen hat mir DOIF zusammen mit WAIT von "Ellert". So werde ich das jetzt umsetzen!
Da du den gleichen Befehl wiederholen willst, der schon mal länger ausfallen kann, kannst du es auch so lösen:
([<Dein Trigger>]) (set ...)
wait 15
repeatcmd 60
repeatsame 3
do always
Gruß
Damian
Super! Vielen Dank! DOIF ist wirklich genial, Ich muss mich wirklich mal sehr intensiv damit befassen.
Zitat von: m0urs am 04 Februar 2016, 20:11:42
Super! Vielen Dank! DOIF ist wirklich genial, Ich muss mich wirklich mal sehr intensiv damit befassen.
ja, es gibt ja genug zu lesen in der Commandref dazu ;)
Gruß
Damian