FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: beSmart am 10 Dezember 2014, 20:10:11

Titel: Mcp23017 mit Taster und Relaismodul
Beitrag von: beSmart am 10 Dezember 2014, 20:10:11
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
Titel: Antw:Mcp23017 mit Taster und Relaismodul
Beitrag von: Grisu am 10 Dezember 2014, 22:55:14
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
Titel: Antw:Mcp23017 mit Taster und Relaismodul
Beitrag von: beSmart am 11 Dezember 2014, 11:25:42
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
Titel: Antw:Mcp23017 mit Taster und Relaismodul
Beitrag von: Grisu am 11 Dezember 2014, 14:47:56
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
Titel: Antw:Mcp23017 mit Taster und Relaismodul
Beitrag von: beSmart am 11 Dezember 2014, 22:03:29
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
Titel: Antw:Mcp23017 mit Taster und Relaismodul
Beitrag von: beSmart am 14 Dezember 2014, 21:02:34
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
Titel: Antw:Mcp23017 mit Taster und Relaismodul
Beitrag von: Frank_Huber am 19 November 2015, 21:16:31
Hi, hast du das Thema gelöst? Ich versuche mich auch gerade vergeblich am toggle mit dem 23017...
Titel: Antw:Mcp23017 mit Taster und Relaismodul
Beitrag von: Frank_Huber am 20 November 2015, 17:51:49
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