Hallo zusammen,
vermutlich ein Anfängerfehler, ich dachte eigentlich, ich bin genau nach Doku und Beispielen vorgegangen:
Ausgangsbasis ist folgendes Beispiel aus der commandref-Doku zum DOIF:
Zitat
Anwendungsbeispiel: Nach dem Eintreffen des Ereignisses wird die push-Meldung stündlich wiederholt, bis Frost ungleich "on" ist.
define di_push DOIF ([frost] eq "on")(set pushmsg "danger of frost")
attr di_push repeatcmd 3600
Das wollte ich nutzen, um in Analogie eine HUE-Lampe
alle 2 Sekunden weiter zu dimmen, bis der Tradifri-Schalter nicht mehr gedrückt ist (2 Sekunden sind mit Absicht erstmal langsam gewählt)
define dimDownLamp DOIF ([Tradfri] eq "3001")(set Lamp dimDown)
attr dimDownLamp repeatcmd 2
Damit das auch mehrfach funktioniert, habe ich auch noch ein do always ergänzt.
Im Ergebnis wird dann aber endlos alle 2 Sekunden runtergedimmt, auch wenn der Knopf längst nicht mehr gedrückt ist (und Tradfri längst auf 3003 steht)
Was habe ich da denn am Beispiel falsch verstanden?
Es wird mit repeatcmd der Befehlszweig solange wiederholt, bis der Zustand des Moduls wechselt. Wenn do always setzt, kann der Zustand nur wechseln, wenn du einen weiteren Zweig angibst, z. B. mit DOELSE:
define dimDownLamp DOIF ([Tradfri] eq "3001")(set Lamp dimDown)DOELSE
Besten Dank, das hat geholfen
Zur Info
https://forum.fhem.de/index.php?topic=105604.0