[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

the ratman

verstehe die frage nicht ganz, interpretiere mal:

naja, blöd is vor allem, das dann die lampe aus ist nach dem telefonalarm, auch wenn sie vorher an war.
weiß ja ned, was du da verwendest, aber meine philips hue können alarme und merken sich dabei, wie der zusstand vorher war.

bei hue schaut dann ein befehl im doif zum einschalten so aus: set Buecherregal_RGB alert lselect;
und zum ausschalten so: set Buecherregal_RGB alert none;
das spart jegliche spielereien mit zeiten oder sonst was. ist wieder alles o.k, geht meine lampe somit in den vorherigen zustand über
→do↑p!dnʇs↓shit←

accessburn

Sagen wir mal so, es ist nicht so wichtig ob sie anschließend wieder an ist oder nicht.

Nur hab ich folgende Theorie mit dem DOIF mit zwei Klammern:

Die erste Klammer ist relevant wenn Telefon = ring, die zweite wenn das Telefon nicht klingelt. Müsste dann nicht immer, wenn das telefon gerade nicht klingelt das Licht ausgehen sobald ich es anschalte?
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

#17
wenn es klingelt hat du deine befehle,
wenns nicht klingelt geht dein doif zum DOELSE und da gibts keine befehle.

du darfst halt nur keine befehle für den fall des nicht klingelns basteln.


jetzt versteh ich erst.
dachte das an und aus soll dein blinken sein.
→do↑p!dnʇs↓shit←

accessburn

Zitat von: the ratman am 16 Juni 2017, 13:27:55
jetzt versteh ich erst.
dachte das an und aus soll dein blinken sein.

Ahhh, da hab ich es also versäumt zu erklären. Ja das der String kann nicht selbstständig blinken, ich muss ihn einschalten, warten, ausschalten, warten ....

Ich hab es mal so konfiguriert wie du sagtest, die frage ist, ist es jetzt noch gültig wo du verstanden hast was ich dachte statt zu sagen :D
Zitat

Internals:
   DEF        ([Fritzboxanrufe:event] eq "ring") (set LEDcontrol RGB FF0000;) (set LEDcontrol RGB 000000;) DOELSE ()
   NAME       Anruf_blink
   NR         470
   NTFY_ORDER 50-Anruf_blink
   STATE      initialized
   TYPE       DOIF
   Readings:
     2017-06-16 13:32:48   cmd             0
     2017-06-16 13:32:48   state           initialized
     2017-06-16 13:34:55   wait_timer      no timer
   Condition:
     0          ReadingValDoIf($hash,'Fritzboxanrufe','event') eq "ring"
   Devices:
     0           Fritzboxanrufe
     all         Fritzboxanrufe
   Do:
     0:
       0          set LEDcontrol RGB FF0000;
       1          set LEDcontrol RGB 000000;
     1:
       0
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   Itimer:
   Readings:
     0           Fritzboxanrufe:event
     all         Fritzboxanrufe:event
   Regexp:
     All:
   State:
     State:
Attributes:
   repeatcmd  1
   wait       1,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

the ratman

#19
das müsste so hinhauen - ruf dich halt mal an *g*
→do↑p!dnʇs↓shit←

accessburn

Bringt nix, niemand daheim der glotzen kann :-)
Aber ich machs trotzdem mal  ;D
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

hat da einer noch keinen tunnel zu seinem fhem?

btw  ich bin von dieser blinkerei weg und lass mir per amad/dlna ansagen wer anruft und am ende, wie lange der anruf gedauert hat.
wenn du also n tablet fürs wohnzimmer oder z.b. auch dlna-lautsprecher hast ...
→do↑p!dnʇs↓shit←

accessburn

Hab ich, aber ich sage es mal so, ich bin ein Fan von lauter Musik :-D

Also laut FHEM Status scheint es zu klappen. Aber ich kann es halt nicht Live sehen ob es funktioniert, aber scheint zu gehen.
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

wow, dann hats bei mir also nur 1 jahr gedauert, bis ich jemanden bei fhem sinnvoll helfen konnt ...
naja, wenns besser geht, wird sich sowieso damian melden - der mags nicht, wenn man sein modul falsch mißbraucht (scheint mir)

btw - elegant wärs natürlich, wenn du deine musik per mtp/icecast2 oder ähnlichem streamst. so machs ich, wenn mir die qualität ned gar so wichtig is zu dem zeitpunkt.
dann kann man nämlich wunderbar die musik leiser schalten, durchsage machen, musik wieder auf 100% fahren.
zahlt sich aber nur aus, wenn du brauchbare boxen-hardware iwe z.b. sonos, squeezebox, ... hast. bei meiner billigsdorfer-lösung weiß ich nämlich ned, wie lang der text rennt und kann nur schätzen, wie lange die musik leise sein muß. gibt lustige effekte.
→do↑p!dnʇs↓shit←

accessburn

Ja Alexa spielt ab, ich warte noch bisschen und will ihr dann befehlen das sie die Klappe halten soll bei einem eingehenden Anruf.
Aber das kommt langsam alles nach.

Aber die Blinkerei ist schonmal ein guter Anfang.
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

accessburn

Nachtrag!

Das DOIF hat einen faden beigeschmack:

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

Wenn ich den Anruf annehme während das Licht gerade an ist beim blinken, bleibt es an, wenn es aus ist a.t.m. bleibt es aus.
Jemand da einen Geistesblitz dazu?
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 24 Juli 2017, 17:01:04
Nachtrag!

Das DOIF hat einen faden beigeschmack:

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

Wenn ich den Anruf annehme während das Licht gerade an ist beim blinken, bleibt es an, wenn es aus ist a.t.m. bleibt es aus.
Jemand da einen Geistesblitz dazu?

([Fritzboxanrufe:event] eq "ring") (set LEDcontrol RGB FF0000) (set LEDcontrol RGB 000000) DOELSE (set LEDcontrol RGB 000000)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

accessburn

Wieder spricht der natürlichen Sache des Lichtes :-) Es Leuchtet, auch mal beim gemütlichen fernsehen. Mit dieser Variante wäre es doch dann dauernd aus wenn nicht gerade das Telefon klingelt, oder irre ich da?
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

Ellert

Zitat von: accessburn am 24 Juli 2017, 17:27:51
Wieder spricht der natürlichen Sache des Lichtes :-) Es Leuchtet, auch mal beim gemütlichen fernsehen. Mit dieser Variante wäre es doch dann dauernd aus wenn nicht gerade das Telefon klingelt, oder irre ich da?

Zwischenspeichern
([Fritzboxanrufe:event] eq "ring") (setreading $SELF T_empRGB [LEDcontrol:RGB], set LEDcontrol RGB FF0000) (set LEDcontrol RGB 000000) DOELSE (set LEDcontrol RGB [$SELF:T_empRGB])

accessburn

Zwischenspeichern... das war der Geistesblitz den ich brauchte. Ich hab als an dem DOIF selbst gebastelt und mich 200 mal angerufen :-)

Danke für das Workaround.
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

accessburn

Funktioniert nicht so ganz:

Bei jedem zweiten Aufruf wird T_empRGB mit der aktuellen Farbe überschrieben, das reading müsste also gesetzt werden ohne das es bei jedem Blinkvorgang wieder neu geschrieben wird.
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

Per

([Fritzboxanrufe:event] eq "ring") (setreading $SELF T_empRGB [LEDcontrol:RGB];set $SELF cmd_2)
DOELSIF (0) (set LEDcontrol RGB FF0000) (set LEDcontrol RGB 000000)
DOELSEIF ([Fritzboxanrufe:event] ne "ring") (set LEDcontrol RGB [$SELF:T_empRGB])


und
attr Fritzboxanrufe event-on-change-reading .*


accessburn

Okay, abgesehen davon das jetzt überhaupt nichts mehr geht verstehe ich davon kein Wort mehr  :'(


Hier mal der aktuelle Zwischenstand:
ZitatInternals:
   DEF        ([Fritzboxanrufe:event] eq "ring") (setreading $SELF T_empRGB [LEDcontrol:RGB]; set $SELF cmd_2)
DOELSEIF (0) (set LEDcontrol RGB FF0000) (set LEDcontrol RGB 000000)
DOELSEIF ([Fritzboxanrufe:event] ne "ring") (set LEDcontrol RGB [$SELF:T_empRGB])
   NAME       Anruf_blink
   NR         470
   NTFY_ORDER 50-Anruf_blink
   STATE      cmd_3
   TYPE       DOIF
   READINGS:
     2017-07-25 14:57:38   Device          Fritzboxanrufe
     2017-07-25 14:57:37   T_empRGB        000000
     2017-07-25 14:57:38   cmd             3
     2017-07-25 14:57:38   cmd_event       Fritzboxanrufe
     2017-07-25 14:57:38   cmd_nr          3
     2017-07-25 14:57:38   e_Fritzboxanrufe_event connect
     2017-07-25 14:57:38   state           cmd_3
     2017-07-25 14:57:38   wait_timer      no timer
   condition:
     0          ReadingValDoIf($hash,'Fritzboxanrufe','event') eq "ring"
     1          0
     2          ReadingValDoIf($hash,'Fritzboxanrufe','event') ne "ring"
   devices:
     0           Fritzboxanrufe
     2           Fritzboxanrufe
     all         Fritzboxanrufe
   do:
     0:
       0          setreading Anruf_blink T_empRGB [LEDcontrol:RGB]; set Anruf_blink cmd_2
     1:
       0          set LEDcontrol RGB FF0000
       1          set LEDcontrol RGB 000000
     2:
       0          set LEDcontrol RGB [Anruf_blink:T_empRGB]
     3:
   helper:
     event      event: connect
     globalinit 1
     last_timer 0
     sleepdevice Fritzboxanrufe
     sleepsubtimer 0
     sleeptimer -1
     timerdev   Fritzboxanrufe
     timerevent event: connect
     triggerDev Fritzboxanrufe
     timerevents:
       event: connect
     timereventsState:
       event: connect
     triggerEvents:
       event: connect
     triggerEventsState:
       event: connect
   internals:
   itimer:
   readings:
     0           Fritzboxanrufe:event
     2           Fritzboxanrufe:event
     all         Fritzboxanrufe:event
   regexp:
     0:
     1:
     2:
     all:
   state:
     STATE:
   trigger:
Attributes:
   repeatcmd  1
   wait       1,1


Ich tendiere dazu das es wait ist, aber 1,1:1,1 ist schon mal falsch.
Bei der aktuellen Konfiguration geht das Licht beim anruf einfach aus und ende.
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

Per

Zitat von: accessburn am 25 Juli 2017, 14:59:06Ich tendiere dazu das es wait ist, aber 1,1:1,1 ist schon mal falsch.
Ja.
wait 0:1,1:0
repeatcmd  1:1:1
repeatsame 1:0:1

Alle drei Attribute beziehen sich auf den jeweiligen DO-Fall.

Ellert

#34
Zitat von: accessburn am 25 Juli 2017, 13:02:51
Funktioniert nicht so ganz:

Bei jedem zweiten Aufruf wird T_empRGB mit der aktuellen Farbe überschrieben, das reading müsste also gesetzt werden ohne das es bei jedem Blinkvorgang wieder neu geschrieben wird.
Ich hatte repeatcmd übersehen.

Statt
(setreading $SELF T_empRGB [LEDcontrol:RGB], set LEDcontrol RGB FF0000)
etwa so
(IF (ReadingsAge("LEDcontrol","RGB",0) > 5) (setreading $SELF T_empRGB [LEDcontrol:RGB]), set LEDcontrol RGB FF0000)

accessburn

Sorry, aber das klappt auch nicht. Weder blinkt es, noch wird T_empRGB auf die Ursprungsfarbe geschrieben sondern ändert sich im zwei Sekundentakt. Ich bin mit meiner Pseudo-Weißheit am Ende.
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

Ellert

Zitat von: accessburn am 25 Juli 2017, 16:26:32
Sorry, aber das klappt auch nicht. Weder blinkt es, noch wird T_empRGB auf die Ursprungsfarbe geschrieben sondern ändert sich im zwei Sekundentakt. Ich bin mit meiner Pseudo-Weißheit am Ende.
Hast Du alles richtig geschrieben?
Stimmen alle Klammern?
Ändert sich der Zeitsempel von LEDcontrol:RGB?
Gibt es Fehlermelungen?
Leider wird das Listing nicht angezeigt!

Damian

Zitat von: accessburn am 25 Juli 2017, 16:26:32
Sorry, aber das klappt auch nicht. Weder blinkt es, noch wird T_empRGB auf die Ursprungsfarbe geschrieben sondern ändert sich im zwei Sekundentakt. Ich bin mit meiner Pseudo-Weißheit am Ende.


Dann wird es langsam Zeit für eine funktionsfähige Lösung:

   
([Fritzboxanrufe:event] eq "ring") (setreading $SELF zustand [LEDcontrol:RGB], set LEDcontrol RGB FF0000)
DOELSEIF ([$SELF] =~ "cmd_1|cmd_3") (set LEDcontrol RGB 000000)
DOELSEIF ([$SELF] eq "cmd_2") (set LEDcontrol RGB FF0000)
DOELSEIF ([Fritzboxanrufe:event] ne "ring") (set LEDcontrol RGB [$SELF:zustand])

attr selftrigger all
attr wait 0:1:1


Ich gehe davon aus, dass im Reading RGB bei LEDcontrol der aktuelle Zustand (FF0000 bzw. 00000) steht.

P.S. repeadcmd hat mit Selbsttriggerung offenbar noch Probleme
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#38
Ich habe repeatcmd gefixed.

([Fritzboxanrufe:event] eq "ring") (setreading $SELF zustand [LEDcontrol:RGB])
DOELSEIF ([$SELF:state] eq "cmd_1") (set LEDcontrol RGB 000000) (set LEDcontrol RGB FF0000)
DOELSEIF ([Fritzboxanrufe:event] ne "ring") (set LEDcontrol RGB [$SELF:zustand])

attr selftrigger all
attr wait 0:0,1
attr repeatcmd 0:1
attr checkReadingEvent 1



Übersetzt bedeutet das: wenn es klingelt:[Fritzboxanrufe:event] eq "ring" merke Zustand von [LEDcontrol:RGB] ->Übergang in den zweiten DO-Fall:[$SELF:state] eq "cmd_1"-> wiederhole an,aus bis dritter DO-Fall eintritt: [Fritzboxanrufe:event] ne "ring" -> setze auf den gemerkten Zustand zurück

Ab morgen per Update verfügbar oder sofort unter : https://svn.fhem.de/trac/browser/trunk/fhem/FHEM?order=date&desc=1
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

accessburn

Mein Held, mein Held  ;D

Es geht... Kann ich das trotzdem so lassen nach dem Update? Denn es funktioniert perfekt :-)
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 26 Juli 2017, 13:28:16
Mein Held, mein Held  ;D

Es geht... Kann ich das trotzdem so lassen nach dem Update? Denn es funktioniert perfekt :-)

Ja. Nach dem Update werden beide Versionen funktionieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF