DOIF/Mehrfachnutzung eines Tasters: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 13: Zeile 13:
Beim nächsten '''short''' wird die zweite Bedingung wahr und Lampe2 wird eingeschaltet, '''$cmd''' ist jetzt 2.<br>
Beim nächsten '''short''' wird die zweite Bedingung wahr und Lampe2 wird eingeschaltet, '''$cmd''' ist jetzt 2.<br>
Beim nächsten '''short''' wird die dritte Bedingung wahr '''Lampe1''' und '''Lampe2''' werden eingeschaltet, '''$cmd''' ist jetzt 3.<br>
Beim nächsten '''short''' wird die dritte Bedingung wahr '''Lampe1''' und '''Lampe2''' werden eingeschaltet, '''$cmd''' ist jetzt 3.<br>
Beim nächsten '''short''' wird die vierte Bedingung wahr '''Lampe1''' und '''Lampe2''' werden ausgeschaltet, '''$cmd''' ist jetzt 4. Weil '''$cmd''' gleich vier ist, wird beim nächsten '''short''' wieder die erste Bedingung wahr und der Zyklusbeginnt von vorn.
Beim nächsten '''short''' wird die vierte Bedingung wahr '''Lampe1''' und '''Lampe2''' werden ausgeschaltet, '''$cmd''' ist jetzt 4. Weil '''$cmd''' gleich vier ist, wird beim nächsten '''short''' wieder die erste Bedingung wahr und der Zyklus beginnt von vorn.
 
===Definition===
===Definition===
<pre>
<pre>

Version vom 13. November 2016, 21:03 Uhr

Mehrfachbelegung eines Tasters

Die Mehrfachbelegung eines Tasters wird durch die Nutzung des DOIF als Zustandsautomat (State Maschine) realisiert.

Funktionsweise

Info green.pngHinweis
  • Verwendung von DOIF als State Maschine durch Bezug auf den eigenen Status ($cmd) in der Bedingung
  • triggern durch Events ["<Regex Device>:<Regex Event>"]
Mehrfachnutzung eines Tasters.png

Taster simuliert ein Tastergerät das short und long sendet.
Lampe1 und Lampe2 simulieren 2 Lampengeräte.
schrittSchalter_Labor bildet die Mehrfachbelegung eines Tasters nach.
$cmd ist nach der Initialisierung des DOIF 0 und ist die Kurzform für [$SELF:cmd] oder [schrittSchalterDOIF:cmd].
Wenn Taster short sendet, dann wird die erste Bedingung wahr und Lampe1 wird eingeschaltet, $cmd ist jetzt 1.
Beim nächsten short wird die zweite Bedingung wahr und Lampe2 wird eingeschaltet, $cmd ist jetzt 2.
Beim nächsten short wird die dritte Bedingung wahr Lampe1 und Lampe2 werden eingeschaltet, $cmd ist jetzt 3.
Beim nächsten short wird die vierte Bedingung wahr Lampe1 und Lampe2 werden ausgeschaltet, $cmd ist jetzt 4. Weil $cmd gleich vier ist, wird beim nächsten short wieder die erste Bedingung wahr und der Zyklus beginnt von vorn.

Definition

## 1 
(["button_Labor000:short"] and $cmd=~"0|4") 
   (set lamp1_Labor000 on)
## 2
DOELSEIF (["button_Labor000:short"] and $cmd==1) 
   (set lamp2_Labor000 on, set lamp1_Labor000 off)
## 3
DOELSEIF (["button_Labor000:short"] and $cmd==2) 
   (set lamp(1|2)_Labor000 on)
## 4
DOELSEIF (["button_Labor000:short"] and $cmd==3) 
   (set lamp(1|2)_Labor000 off)

Übungsvorschlag

  • Verändere das DOIF so, dass nicht beide Lampen auf einmal ausgeschaltet werden, sondern Eine nach der Anderen.
  • Lasse die Lampen mit long ausschalten, egal welcher Befehlszweig aktiv ist.

Laborgruppe zum Import mit Raw definition

define schrittSchalter_Labor001 DOIF ## 1 \
(["button_Labor000:short"] and $cmd=~"0|4") \
   (set lamp1_Labor000 on)\
## 2\
DOELSEIF (["button_Labor000:short"] and $cmd==1) \
   (set lamp2_Labor000 on, set lamp1_Labor000 off)\
## 3\
DOELSEIF (["button_Labor000:short"] and $cmd==2) \
   (set lamp(1|2)_Labor000 on)\
## 4\
DOELSEIF (["button_Labor000:short"] and $cmd==3) \
   (set lamp(1|2)_Labor000 off)
attr schrittSchalter_Labor001 alias Schrittschalter
attr schrittSchalter_Labor001 cmdState Schritt 1|Schritt 2|Schritt 3|Schritt 4
attr schrittSchalter_Labor001 group Mehrfachnutzung eines Tasters
attr schrittSchalter_Labor001 room DOIF_Labor

define button_Labor000 dummy
attr button_Labor000 alias Taster
attr button_Labor000 group Mehrfachnutzung eines Tasters
attr button_Labor000 room DOIF_Labor
attr button_Labor000 setList short long
attr button_Labor000 webCmd short:long

define lamp1_Labor000 dummy
attr lamp1_Labor000 alias Lampe1
attr lamp1_Labor000 group Mehrfachnutzung eines Tasters
attr lamp1_Labor000 room DOIF_Labor

define lamp2_Labor000 dummy
attr lamp2_Labor000 alias Lampe2
attr lamp2_Labor000 group Mehrfachnutzung eines Tasters
attr lamp2_Labor000 room DOIF_Labor

Links