Beschränktes Ausführen eines Befehls

Begonnen von DD, 25 Februar 2017, 23:00:37

Vorheriges Thema - Nächstes Thema

DD

Hallo,
ich möchte nach Statusänderung eines Schalters ein Licht ein bzw. ausschalten.
Aus irgend einem Grund wird dieses Programm aber nicht immer ausgeführt:

DEF    

(
  [Taster_A02:press_short]
)
(
   IF ([A2_Galerie:state] eq "on")
      (set A2_Galerie off)
   ELSE
      (set A2_Galerie on)
)

Das Licht schaltet immer nur ein mal.
Ich muss jedesmal die Definition aufmachen und wieder speichern um den nächsten Schaltbefehl aus zu führen.
Woran liegt das?

Damian

Zitat von: DD am 25 Februar 2017, 23:00:37
Hallo,
ich möchte nach Statusänderung eines Schalters ein Licht ein bzw. ausschalten.
Aus irgend einem Grund wird dieses Programm aber nicht immer ausgeführt:

DEF    

(
  [Taster_A02:press_short]
)
(
   IF ([A2_Galerie:state] eq "on")
      (set A2_Galerie off)
   ELSE
      (set A2_Galerie on)
)

Das Licht schaltet immer nur ein mal.
Ich muss jedesmal die Definition aufmachen und wieder speichern um den nächsten Schaltbefehl aus zu führen.
Woran liegt das?

Zitat aus der Commandref des Moduls:

ZitatDas DOIF-Modul arbeitet mit Zuständen. Jeder Ausführungszweig DOIF/DOELSEIF..DOELSEIF/DOELSE stellt einen eigenen Zustand dar (cmd_1, cmd_2, usw.). Das Modul merkt sich den zuletzt ausgeführten Ausführungszweig und wiederholt diesen standardmäßig nicht. Ein Ausführungszweig wird erst dann wieder ausgeführt, wenn zwischenzeitlich ein anderer Ausführungszweig ausgeführt wurde, also ein Zustandswechsel stattgefunden hat. Dieses Verhalten ist sinnvoll, um zu verhindern, dass zyklisch sendende Sensoren (Temperatur, Feuchtigkeit, Helligkeit, usw.) zu ständiger Wiederholung des selben Befehls oder Befehlsabfolge führen.

und die Lösung

https://fhem.de/commandref_DE.html#DOIF_do_always

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

Thorsten Pferdekaemper

...oder ungefähr so:

define blabla notify Taster_A02:press_short.* IF ([A2_Galerie:state] eq "on") (set A2_Galerie off) ELSE (set A2_Galerie on)

Je nach Device geht auch das:

define blabla notify Taster_A02:press_short.* set A2_Galerie toggle

...oder am elegantesten, wenn es z.B. beides Homematic oder Homematic Wired ist: Direkt verknüpfen.
Gruß,
   Thorsten
FUIP

DD

Super, Danke!

Direkt verknüpfen ist in diesem Fall leider nicht möglich da ich noch weitere Bedingungen einfügen möchte