Hallo Forum.
Ich habe etwas herumprobiert und stehe jetzt vor dem Problem, wie ich mit Hilfe eines Tasters ein Relais dauerhaft ein- und ausschalte.
Taster und Relaismodul hängen an einem MCP23017 und funktionieren.
Mit:
define relaisschalten notify Fk.Test { fhem "set Relais on" }
kann ich das Relais einschalten.
Mit:
define relaisschalten notify Fk.Test { fhem "set Relais toggle" }
Schaltet es bei Tastendruck ein und beim Loslassen aus.
Ich habe jetzt schon eine Menge an Code hier aus dem Forum ausprobiert aber die Lösung war noch nicht dabei.
Wie bekomme ich es hin, dass beim ersten Tastendruck das Relais eingeschaltet und beim zweiten Tastendruck wieder ausgeschaltet wird?
Gruß
beSmart
probier mal sowas
define relaisschalten notify Fk.Test {\
if (Value("Relais") eq "off") {fhem ("set Relais on")};;\
if (Value("Relais") ne "off") {fhem ("set Relais off");;\
};;\
ungetestet!! geht jedoch wahrscheinlich auch einfacher...
Gruss Grisu
Hallo und Dank für die Unterstützung.
Ich habe es noch nicht ausprobiert, aber schon die nächste Frage.
Was ist eq und ne? gehört dies zu fhem? wenn ja, wo ist dies dokumentiert?
Gruß
beSmart
Diese Zaubersprache heisst perl. Google weiss Rat. Mit perl lasst sich sehr kryptischer, kompakter code erstellen. Deshalb meine Devise: lieber etwas mehr Code dafür für jedermann lesbar. Auch jahre später ...
Gruss Grisu
http://de.m.wikibooks.org/wiki/Perl-Programmierung:_Einfache_Beispiele
Hallo und nochmals Dank für deine Hilfe.
Habe mich etwas eingelesen, meinen Code mehrfach geändert und bin jetzt noch verwirrter als vorher.
Kann sich Bitte jemand meinen aktuellen Code anschauen und mir sagen wo er klemmt.
Im Log sind keine Fehlermeldungen und der Event Monitor zeigt nur an, das Fk.Haustür betätigt wurde. Sonst nichts..
##Fk.Haustuer
define Fk.Haustuer readingsProxy icMCP23017:PortA0
attr Fk.Haustuer event-on-change-reading 1
attr Fk.Haustuer group InputPorts
attr Fk.Haustuer valueFn {($VALUE eq "on")?"open":"closed"}
##Ausgang1
define Ausgang1 readingsProxy icMCP23017:PortA1
attr Ausgang1 devStateIcon aus:off an:on
attr Ausgang1 eventMap on:aus off:an
attr Ausgang1 group OutputPorts
attr Ausgang1 setFn {($CMD eq "on")?"PortA1 off":"PortA1 on"}
attr Ausgang1 setList off on
attr Ausgang1 valueFn {($VALUE eq "on")?"off":"on"}
##Muster aus dem Fhem-Wiki
##define einschalten at +*00:15 {if(Value("Variable") eq "on") { fhem("set Funkschalter on") } else { fhem("set funkschalter off")}}
##Notify zu Fk.Haustuer und Ausgang 1
define relaisschalten notify Fk.Haustuer { if(Value("Fk.Haustuer") eq "closed" && (Value("Ausgang1") eq "an")) { fhem ("set Ausgang1 aus")} else { fhem ("set Ausgang1 an")}}
Dank und Gruß
beSmart
Hallo.
Es funktioniert einfach nicht. Habe jetzt zig Stunden an diesem Problem verbracht und bin keinen Schritt weiter. Nicht mal die richtige Syntax habe ich.
Gibt es eine Möglichkeit zum debuggen? Zur Zeit gibt es nichts im Log und der Event-Monitor zeigt auch nichts an.
Die folgenden und einige hundert andere Varianten habe ich probiert.
define relaisschalten1 notify Fk.Haustuer { if(Value("Fk.Haustuer") eq "off") { fhem ("set Ausgang1 aus")}
define einschalten at +*00:15 {if(Value("Variable") eq "on") { fhem("set Funkschalter on") } else { fhem("set funkschalter off")}}
define relaisschalten notify Fk.Haustuer { if($Fk.Haustuer eq "off" && ($Ausgang1 eq "on") \ { fhem "set Ausgang1 off"} \ else \ { fhem "set Ausgang1 on"} \ }
define relaisschalten notify define relaisschalten notify Fk.Haustuer {if ((ReadingsVal("Fk.Haustuer") eq "Closed") && (ReadingsVal("Ausgang1") eq "off") {fhem "set Ausgang1 on") {if ((ReadingsVal("Fk.Haustuer") eq "closed") && (ReadingsVal("Ausgang1") eq ##"on") {fhem "set Ausgang1 off";;} } }
define relaisschalten DOIF ([icMCP23017:PortA0] eq "off" and [icMCP23017:PortA1] eq "an") (set icMCP23017:PortA1 aus) DOELSEIF ([icMCP23017:PortA0] eq "off" and [icMCP23017:PortA1] eq "aus") (set icMCP23017:PortA1 an)
define relaisschalten DOIF ([Fk.Haustuer] eq "off" and [Ausgang1] eq "an") (set Ausgang1 aus) DOELSEIF ([Fk.Haustuer] eq "off" and [Ausgang1] eq "aus") (set Ausgang1 an)
Ich bin echt am verzweifeln. Bitte gebt mir einen Hinweis wo es klemmt.
Dank und Gruß
beSmart
Hi, hast du das Thema gelöst? Ich versuche mich auch gerade vergeblich am toggle mit dem 23017...
Bei mir funktioniert es jetzt.
Wenn du noch Probleme hast Kuck mal hier:
http://forum.fhem.de/index.php/topic,44324.0.html
Grüße
Frank