Hallo ins Forum!
Habe jetzt mich etwas in FHEM eingearbeitet und soweit alles für den 23017 über I2C hinbekommen. Auf der Weboberfläche erscheint auch eine Birne und die Befehle on und off. Ich möchte einfach nur Port B0 ein- und ausschalten. Dazu habe ich u.a. folgenden Code:
attr i2c20pB0 setFn {($CMD eq "on")?"PortB0:off":"PortB0:on"}
Es kommt dann folgende Fehlermeldung, wenn ich auf on oder off klicke:
Unknown argument PortB0:off, choose one of PortB0:off,on PortB1:off,on PortB2:off,on PortB3:off,on PortB4:off,on PortB5:off,on PortB6:off,on PortB7:off,on
Die Fehlermeldung macht echt keinen Sinn. Habe schon andere Varianten ausprobiert, klappt aber nie :-( Kann mir jemand helfen?
Danke im Vorraus!
VG
Fhemer
Die Fehlermeldung klingt erstmal nciht so überzeugend...
Ich vermute mal Dein zugrundeliegender Device ist ein
I2C_MCP23017?
Dann würde ich mal (ohne setfn) zu versuchen folgendes aufzurufen
Zitatset i2c20pB0 PortB0 off
Wenn das geht, kannst Du ja in Deinem Code leerzeichen statt : einsetzen.
ich verstehe grade nicht, wieso man einen port über ein Attribut schalten will?
Habe jetzt mal meinen Code komplett überarbeitet und so geht es jetzt. Vermutlich hatte ich einen doppelten Alias und/oder falsche Reihenfolgen. Und den Doppelpunkt habe ich rausgenommen :-) Jedenfalls vielen Dank!
On und Off ist zur Zeit noch invertiert.
define i2c RPII2C 1
attr i2c alias Onboard I2C Controller 1
attr i2c room ops
define i2c20 I2C_MCP23017 0x20
attr i2c20 IODev i2c
attr i2c20 room ops
# attr i2c20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7 # wird ueberschrieben #mag kein Umlaut
attr i2c20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
set i2c20 PortB0 on # ausschalten
set i2c20 PortA0 on # ausschalten
setdefaultattr valueFn {($VALUE eq "on")?"off":"on"}
define i2c20pB0 readingsProxy i2c20:PortB0
# define lampeB0 i2c20:PortB0
# define i2c20pB0 i2c20:PortB0
# attr i2c20pB0 direction output
attr i2c20pB0 room ops
attr i2c20pB0 devStateIcon on:on:off off:off:on
attr i2c20pB0 alias Lampe B0
# attr lampeB0 alias Lampe B0
attr i2c20pB0 setList on off
attr i2c20pB0 setFn {($CMD eq "on")?"PortB0 off":"PortB0 on"}