Hauptmenü

Wiederholung eines Commands

Begonnen von Rampler, 27 August 2021, 10:48:38

Vorheriges Thema - Nächstes Thema

Rampler

Hallo DOIF Spezialisten,
ich möchte bei eintreffen eines Ereignisses immer wieder mit zeitlichen Versatz (20 sekunden) das gleiche Kommando absetzen, bis ein anderes Ereignis kommt. Das Ereigniss kommt nur einmal.

In der Vergangenheit habe ich das über einen Timer (defmod timer at +*00:00:20 set Soundausgabe playTone 1,1)  gelöst, welchen ich im DOIF dann aktiviert (set timer active) bzw. deaktiviert habe. Meine Hoffnung ist nun das ich das direkt im DOIF machen kann, und keinen zusätzlichen Timer mehr benötige.
Hat jemand eine Idee ?

VG Klaus


3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

rabehd

Wie wäre es damit?
ZitatWiederholungen der Ausführung von Kommandos werden pro Befehlsfolge über das Attribut repeatcmd definiert.
Erläuterungen und Beispiele in der Hilfe
Auch funktionierende Lösungen kann man hinterfragen.

Rampler

Danke, das Leben kann so einfach sein.
Keine Ahnung, warum ich das damals über einen Timer gelöst habe
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Rampler

Sorry, muss nochmal stören.
Das repeatcmd unterstützt leider keine Subcommands (kommas, ähnlich wait):

([PR.button:1_press] eq "1" and [FL.EG.gong.mp3.muteswitch] eq "off") 
(setreading FL.EG.dummyanzeige.led08 PR.button red)
((set FL.EG.gong.mp3 playTone 47,47))

wait ,60:,60:,...
repeatcmd ,20:.....
Ich kann also nur repaetcmd 20:... angeben, dadurch durchläuft er aber wieder beide Kommandos, also wieder mit wait.
Ich möchte aber nur das zweite Kommand unendlich ausführen ..
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Rampler

Ich glaube das funktioniert so nicht.
Repeatcmd lässt keine Definition auf Subcommand Ebene zu. Es wird also immer der jeweilige Kommandzweig komplett durchlaufen auch mit den Waits...

3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

rabehd

ZitatIch möchte aber nur das zweite Kommand unendlich ausführen ..
Dann das DOIF anderes aufbauen oder ein "IF" in den Zweig einfügen.
Das Du nur einen Teil des Zweiges ausführen willst, sehe ich in Deinem Text nicht.
Auch funktionierende Lösungen kann man hinterfragen.

Damian

Zitat von: Rampler am 27 August 2021, 12:02:15
Repeatcmd lässt keine Definition auf Subcommand Ebene zu. Es wird also immer der jeweilige Kommandzweig komplett durchlaufen auch mit den Waits...

Das ist auch gut so. Es handelt sich um eine unendliche Wiederholung und eine sequentielle Abarbeitung. Würde der erste Teil eines Zweiges unendlich oft wiederholt werden, dann würde der zweite Teil nie ausgeführt werden. 
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Rampler

3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!