DOIF/Mehrfachnutzung eines Tasters: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
[[Datei:Mehrfachnutzung eines Tasters.png|mini|455px|right|]]
==Mehrfachbelegung eines Tasters==
==Mehrfachbelegung eines Tasters==
Die Mehrfachbelegung eines Tasters wird durch die Nutzung des DOIF als Zustandsautomat (State Maschine) realisiert.
Die Mehrfachbelegung eines Tasters wird durch die Nutzung des DOIF als Zustandsautomat (State Maschine) realisiert.
Zeile 5: Zeile 6:
* Verwendung von DOIF als State Maschine durch Bezug auf den eigenen Status ($cmd) in der Bedingung
* Verwendung von DOIF als State Maschine durch Bezug auf den eigenen Status ($cmd) in der Bedingung
* triggern durch Events ["<Regex Device>:<Regex Event>"]}}
* triggern durch Events ["<Regex Device>:<Regex Event>"]}}
[[Datei:Mehrfachnutzung eines Tasters.png|mini|455px|right|]]
'''Taster''' simuliert ein Tastergerät das short und long sendet.<br>
'''Taster''' simuliert ein Tastergerät das short und long sendet.<br>
'''Lampe1''' und '''Lampe2''' simulieren 2 Lampengeräte.<br>
'''Lampe1''' und '''Lampe2''' simulieren 2 Lampengeräte.<br>

Version vom 13. November 2016, 21:09 Uhr

Mehrfachnutzung eines Tasters.png

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>"]

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