Autor Thema: Wiederholung eines Commands  (Gelesen 459 mal)

Offline Rampler

  • Sr. Member
  • ****
  • Beiträge: 773
  • Experience is what causes you to make new mistakes
Wiederholung eines Commands
« am: 27 August 2021, 10:48:38 »
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, RPI (Wheezy), und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Offline rabehd

  • Hero Member
  • *****
  • Beiträge: 1174
Antw:Wiederholung eines Commands
« Antwort #1 am: 27 August 2021, 11:00:59 »
Wie wäre es damit?
Zitat
Wiederholungen 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.

Offline Rampler

  • Sr. Member
  • ****
  • Beiträge: 773
  • Experience is what causes you to make new mistakes
Antw:Wiederholung eines Commands
« Antwort #2 am: 27 August 2021, 11:11:37 »
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, RPI (Wheezy), und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Offline Rampler

  • Sr. Member
  • ****
  • Beiträge: 773
  • Experience is what causes you to make new mistakes
Antw:Wiederholung eines Commands
« Antwort #3 am: 27 August 2021, 11:38:04 »
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, RPI (Wheezy), und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Offline Rampler

  • Sr. Member
  • ****
  • Beiträge: 773
  • Experience is what causes you to make new mistakes
Antw:Wiederholung eines Commands
« Antwort #4 am: 27 August 2021, 12:02:15 »
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, RPI (Wheezy), und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Offline rabehd

  • Hero Member
  • *****
  • Beiträge: 1174
Antw:Wiederholung eines Commands
« Antwort #5 am: 27 August 2021, 15:01:06 »
Zitat
Ich 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.

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8807
Antw:Wiederholung eines Commands
« Antwort #6 am: 27 August 2021, 16:32: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

Offline Rampler

  • Sr. Member
  • ****
  • Beiträge: 773
  • Experience is what causes you to make new mistakes
Antw:Wiederholung eines Commands
« Antwort #7 am: 28 August 2021, 16:39:54 »
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI (Wheezy), und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

 

decade-submarginal