Hallo ,
ich bin gerade dabei ein erstes Projekt mit fhem zu realisieren. Ich habe hier einen Raspberry mit einem PiFace IO Board und versuche mich gerade an einer Klappensteuerung. Der Istzustand ist folgender:
- Ich habe zwei Buttons die jeweils bei Aktivierung einen Impuls von 1s auf je einen Relaisausgang für "Auf" bzw. "Zu" geben.
- Ich habe 2 Inputs die je nach Endlage der Klappe aktiv sind und als "Lampe" anzeigen, ob die Klappe auf oder zu ist.
Funktioniert alles wunderbar, allerdings sind mir 2 Schalter und 2 Lampen einfach zuviel.
Sollzustand soll folgender werden:
Ich möchte nur noch einen Button, der je nach Lage der Klappe den richtigen Impuls an das entsprechende Relais gibt und je nach Endlage sein Aussehen so verändert, dass man sieht, ob die Klappe auf oder zu ist.
Hat jemand von euch eine Idee?
Was hast Du schon in Fhem angelegt? Zeig mal ein "list" von jeweiligen Devices.
hier meine angelegten sachen:
define pif PIFACE
attr pif portMode0 up
attr pif portMode1 up
attr pif portMode2 up
attr pif portMode3 up
attr pif portMode4 up
attr pif portMode5 up
attr pif portMode6 up
attr pif portMode7 up
attr pif room hidden
define Klappe_Auf readingsProxy pif:in0
attr Klappe_Auf eventMap on:0 off:1
attr Klappe_Auf getFn 0
attr Klappe_Auf getList 0:noArg
attr Klappe_Auf group Rückmeldung
attr Klappe_Auf room Hühnerstall
attr Klappe_Auf valueFn ""
define pif_poll at +*00:00:01 get pif in
define Klappe_Zu readingsProxy pif:in1
attr Klappe_Zu eventMap on:0 off:1
attr Klappe_Zu getFn 0
attr Klappe_Zu getList 0:noArg
attr Klappe_Zu group Rückmeldung
attr Klappe_Zu room Hühnerstall
attr Klappe_Zu valueFn ""
define zu_imp notify Zu:on set pif 1 1;; sleep 1;; set pif 1 0;; set Zu off
attr zu_imp room hidden
define Zu dummy
attr Zu devStateIcon on:general_an:off off:general_aus:on
attr Zu group Relais
attr Zu room Hühnerstall
attr Zu setList state:on,off
attr Zu webCmd state
define Auf dummy
attr Auf devStateIcon on:general_an:off off:general_aus:on
attr Auf group Relais
attr Auf room Hühnerstall
attr Auf setList state:on,off
attr Auf webCmd state
define auf_imp notify Auf:on set pif 0 1;; sleep 1;; set pif 0 0;; set Auf off
ich hoffe das hilft weiter
Gruß Michael
Man kann viel durch ein einziges DOIF ersetzen.
Wenn ich richtig verstanden habe,
set pif 1 1 => starte "zu" Vorgang
set pif 1 0 => "zu" Vorgang beenden
set pif 0 1 => starte "auf" Vorgang
set pif 0 0 => "auf" Vorgang beenden
pif:in0 = 1 => die Klappe ist auf
pif:in0 = 0 => ?? Klappe zu, oder undefined ??
pif:in1 = 1 => die Klappe ist zu
pif:in1 = 0 => ?? Klappe auf oder undefined ??
Aber zeig bitte zur Sicherheit noch ein "list pif". Nicht die raw Definition. Sondern gib einfach "list pif" im Kommandofeld von Fhem ein, und poste das Ergebnis davon.
Internals:
CHANGED
NAME pif
NOTIFYDEV global
NR 20
NTFY_ORDER 50-pif
STATE active
TYPE PIFACE
READINGS:
2017-10-31 16:28:10 in0 1
2017-10-31 16:28:08 in1 0
2017-10-31 13:17:19 in2 1
2017-10-31 13:17:19 in3 1
2017-10-31 13:17:19 in4 1
2017-10-31 13:17:19 in5 1
2017-10-31 13:17:19 in6 1
2017-10-31 13:17:20 in7 1
2017-10-31 16:27:58 out0 0
2017-10-31 16:28:08 out1 0
2017-10-31 13:17:25 out2 0
2017-10-31 13:17:25 out3 0
2017-10-31 13:17:25 out4 0
2017-10-31 13:17:25 out5 0
2017-10-31 13:17:25 out6 0
2017-10-31 13:17:25 out7 0
2017-10-31 13:17:19 state active
Attributes:
portMode0 up
portMode1 up
portMode2 up
portMode3 up
portMode4 up
portMode5 up
portMode6 up
portMode7 up
room hidden
die Klappe ist gerade zu
set pif 1 1 => starte "zu" Vorgang
set pif 1 0 => "zu" Vorgang beenden , Klappe fährt weiter bis zu
set pif 0 1 => starte "auf" Vorgang
set pif 0 0 => "auf" Vorgang beenden , Klappe fährt weiter bis auf
pif:in0 = 0 & pif:in1 = 1 => die Klappe ist auf
pif:in0 = 1 & pif:in1 = 0 => die Klappe ist zu
pif:in0 = 1 & pif:in1 = 1 => die Klappe bewegt sich
pif:in0 = 0 & pif:in1 = 0 => dieser Zustand ist nicht möglich
Fahrzeit von Ende zu Ende ca. 3-4 sec
Probier mal damit:
define Klappe DOIF (["$SELF:mybutton: auf"])\
(set pif 0 1)\
(set pif 0 0)\
DOELSEIF (["$SELF:mybutton: zu"])\
(set pif 1 1)\
(set pif 1 0)\
DOELSEIF ([pif:in0] eq "0" and [pif:in1] eq "1")\
DOELSEIF ([pif:in0] eq "1" and [pif:in1] eq "0")\
attr Klappe cmdState set_auf,fahre_auf|set_zu,fahre_zu|auf|zu
attr Klappe devStateIcon set_auf:fts_shutter_80 fahre_auf:fts_shutter_60 auf:fts_shutter_10 set_zu:fts_shutter_20 fahre_zu:fts_shutter_40 zu:fts_shutter_100
attr Klappe do always
attr Klappe readingList mybutton
attr Klappe setList mybutton:auf,zu
attr Klappe wait 0,1:0,1
attr Klappe webCmd mybutton