DS2408 gpio schalten

Begonnen von UweH, 25 März 2016, 18:47:46

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Zitat*bewertungshäkchenblödsinnverweigerer*

Gut, noch einer...

LG

pah

klausmrkor

Hallo,
ich habe mir einen Schalter gebaut und diesen über Taster angesprochen.
da er aber dadurch gleich wieder aus ist, habe ich ein  Doif zwischengeschaltet.

define ht_rollo doif ([DS2406_C468C3000000:sensed.A] eq "on")(set s1 on)
wenn DS2406 an dann schalter s1 an

define di_rs1 doif ([s1] eq "on")(set s1 off)
attr di_rs1 waitfortimer 1
attr di_rs1 wait         3      (später 300)
wenn s1 an soll er 3(00s)s  warten dann wieder aus

1 mal funktioniert es dann wieder nicht.
was ist falsch?

kann mir jemand helfen.

gruß
Klaus

klausmrkor

Ich habe es jetzt versucht so zu machen
   
define di_rs1 DOIF ([ht.Rolltaster] eq "on" and [s1] eq "on")(set ht.Rolltaster off)(set s1 off)
do allways
timerWithWait
wait 3

define di_rs2 DOIF ([ht.Rolltaster] eq "off" and [s1] eq "on")(set ht.Rolltaster on)(set s1 off)
do allways
timerWithWait
wait 3

define s1 Dummy
attr s1 listset on off

Wenn ich jetzt s1 drückr, dann springt er zu di_rs1 läuft die Befehle durch und sollte stoppen, damit ht.Rolltaster auf on steht.
jedoch durch die Änderung von ht.Rolltaster springt er zu di_rs2 und stellt ht.Rolladen wieder auf off.

Wie kann ich den zweiten Befehl verhindern?

Mit freundlichen Grüssen
Klaus


Prof. Dr. Peter Henning

1. Beide Schaltvorgänge in EIN DOIF stecken, dann werden sie alternativ ausgeführt. Beispiele im Commandref.
2. Bitte "always" mit EINEM l schreiben.

LG

pah

presskopf

Ich habe das jetzt so gelöst:

Einen Dummy für jedes Relais A - H:
define 1w8s_A dummy
attr 1w8s_A devStateIcon 0:ios-off 1:ios-on-green
attr 1w8s_A eventMap off:0 on:1
attr 1w8s_A setList on off


Einen Dummy für die Anzeige des übertragenen Wertes:
define 1w8s__gpio dummy

Und ein Notify, das den Rest erledigt:
define test3 n_1w8s (1w8s_A|1w8s_B|1w8s_C|1w8s_D|1w8s_E|1w8s_F|1w8s_G|1w8s_H) \
{\
fhem("set 1w8s__gpio " . (255 - (Value("1w8s_A") \
+ 2*Value("1w8s_B") \
+ 4*Value("1w8s_C") \
+ 8*Value("1w8s_D") \
+ 16*Value("1w8s_E") \
+ 32*Value("1w8s_F") \
+ 64*Value("1w8s_G") \
+ 128*Value("1w8s_H"))));;;; \
fhem("set 1wire_8switch gpio " . (Value("1w8s__gpio")))\
}


Was halt nicht geht:
Weder die Schalter noch der GPIO-Dummy werden aktualisiert, wenn man den die Relaiskarte direkt in der Befehlszeile anspricht / schaltet.