[erneut gelöst] Befehl solange wiederholen wie Bedingung zutrifft

Begonnen von accessburn, 14 Juni 2017, 19:06:07

Vorheriges Thema - Nächstes Thema

accessburn

Ich lasse beim klingeln des Telefons eine Lampe blinken. Wie stellt man DOIF ein damit es den Befehl so lange im Kreis laufen lässt bis "event" nicht mehr "ring" ist?

([Fritzboxanrufe:event] eq "ring") (set LEDcontrol RGB FF0000; sleep 1; set LEDcontrol RGB 000000; sleep 1;)
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Damian

Zitat von: accessburn am 14 Juni 2017, 19:06:07
Ich lasse beim klingeln des Telefons eine Lampe blinken. Wie stellt man DOIF ein damit es den Befehl so lange im Kreis laufen lässt bis "event" nicht mehr "ring" ist?

([Fritzboxanrufe:event] eq "ring") (set LEDcontrol RGB FF0000; sleep 1; set LEDcontrol RGB 000000; sleep 1;)

https://fhem.de/commandref_DE.html#DOIF_repeatcmd
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

accessburn

okay, so weit habe ich das verstanden, jedoch geiere ich auf den Status:

ZitatStatt Sekundenangaben können ebenfalls Status in eckigen Klammen oder Perlbefehle angegeben werden.

Wie müsste das denn aussehen? Wie vorne?


attr Anruf_blink repeatcmd [Fritzboxanrufe:event] eq "ring"


Sieht nicht aus als wäre das so gedacht
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Damian

Zitat von: accessburn am 14 Juni 2017, 21:37:50
okay, so weit habe ich das verstanden, jedoch geiere ich auf den Status:

Wie müsste das denn aussehen? Wie vorne?


attr Anruf_blink repeatcmd [Fritzboxanrufe:event] eq "ring"


Sieht nicht aus als wäre das so gedacht

nee

zu deinem ursprünglichen DOIF definieren:

z. B.

attr Anruf_blink repeatcmd 60

wenn die Befehlsabfolge alle 60 Sekunden wiederholt werden soll
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

accessburn

Der Befehl soll sich doch garnicht nach x Sekunden wiederholen. Die Ursprüngliche Frage lautete wie ich das DOIF dazu bekomme das es so lange im Kreis läuft wie der Fritzboxanrufstatus "ring" ist.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Damian

Zitat von: accessburn am 14 Juni 2017, 21:45:58
Der Befehl soll sich doch garnicht nach x Sekunden wiederholen. Die Ursprüngliche Frage lautete wie ich das DOIF dazu bekomme das es so lange im Kreis läuft wie der Fritzboxanrufstatus "ring" ist.


([Fritzboxanrufe:event] eq "ring") (set LEDcontrol RGB FF0000; sleep 1; set LEDcontrol RGB 000000)

attr Anruf_blink repeatcmd 1
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

accessburn

Teilerfolg... Jetzt blinkt es am Stück, hört aber gar nicht mehr auf. Der Status ist nicht mehr "ring", aber das wird da ja überhaupt nicht berücksichtigt.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Damian

Zitat von: accessburn am 14 Juni 2017, 21:58:16
Teilerfolg... Jetzt blinkt es am Stück, hört aber gar nicht mehr auf. Der Status ist nicht mehr "ring", aber das wird da ja überhaupt nicht berücksichtigt.

Dann wolle wir mal hoffen, dass du kein do always drin hast, sonst kann kein Zustandswechsel erfolgen und das Blinken hört nicht auf.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

accessburn

yeah... Das wars dann also.
Mal sehen ob ich da auch was gelernt hab, das Doif macht mir immer wieder Kopfweh.

Merci...
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Damian

Zitat von: accessburn am 14 Juni 2017, 22:12:48
yeah... Das wars dann also.
Mal sehen ob ich da auch was gelernt hab, das Doif macht mir immer wieder Kopfweh.

Merci...

Nur zur Erklärung: Bei do always musst du einen weiteren Zustand definieren, wenn das Modul den Zustand wechseln soll, z. B. einfach DOELSE hinten dranhängen. Wenn du kein do always angibst, wird automatisch DOELSE (intern) drangehängt. Warum das so ist, steht in der Commandref zu DOIF ;)

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

accessburn

Also hätte ich es drin lassen können, hätte nur ein ELSE gebraucht?
Sachen gibts...
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Damian

#11
Zitat von: accessburn am 14 Juni 2017, 22:18:34
Also hätte ich es drin lassen können, hätte nur ein ELSE gebraucht?
Sachen gibts...

So ist es. Hier die Stelle aus der Commandref:

ZitatSoll bei Nicht-Erfüllung aller Bedingungen ein Zustandswechsel erfolgen, so muss man ein DOELSE am Ende der Definition anhängen. Ausnahme ist eine einzige Bedingung ohne do always, wie im obigen Beispiel, hierbei wird intern ein virtuelles DOELSE angenommen, um bei Nicht-Erfüllung der Bedingung einen Zustandswechsel in cmd_2 zu provozieren, da sonst nur ein einziges Mal geschaltet werden könnte, da das Modul aus dem cmd_1-Zustand nicht mehr herauskäme.

Edit: DOIF ist halt auch ein kleiner Zustandsautomat ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

accessburn

Hallo Profi, du müsstest mir nochmal helfen dabei :-p

Ich hab das DOIF angelegt das es so lange ein LED String blinken lässt wie es klingelt: "AN; sleep 1; AUS; sleep 1;"
Das zweite Sleep muss also sein damit der Blinkeffekt auch da ist. Jedoch bekomme ich nun folgenden Log:
Zitat2017.06.16 11:21:13 1: WARNING: sleep without additional commands is deprecated and blocks FHEM

Hast du da eine Idee oder Geistesblitz zu?
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

the ratman

#13
bei mir hats geholfen, das dämliche sleep zu entfernen und aufs doif-interne wait umzusteigen.
https://fhem.de/commandref_DE.html#DOIF_wait

änderungen dazu:

bis jetzt hattest du als ausführungsteil:
(AN; sleep 1; AUS; sleep 1)

das änderst du in:
(AN;) (AUS;)
dazu in den attributen "wait" mit verögerungen für jede klammer
also z.b. 1,1 für 1 sek. beim ersten teilbefehl warten, 1 sek beim 2. teilbefehl warten
bei mehreren DOELSEIF arbeitest mit doppelpunkten - also: cmd_1.1,cmd_1.2,cmd_1.x:cmd_2.1,cmd_2.2,cmd_2.x:...
→do↑p!dnʇs↓shit←

accessburn

#14
Würde das nicht zutreffen von "ring" das LED String nicht komplett in Anspruch nehmen?
Aktuell nutze ich es ja noch als normale Beleuchtung. Das würde dann wohl wegfallen, sehe ich das richtig?
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole