MCP23017 - Portextender

Begonnen von Pf@nne, 28 Dezember 2014, 18:57:17

Vorheriges Thema - Nächstes Thema

Pf@nne

Moin,

damit der andere Beitrag nicht zu unübersichtlich wird habe ich einen neuem aufgemacht.

Ich sitze auch gerade vor meinem Raspberry mit MCP23017 über I2C.
Läuft auch soweit alles auf Anhieb!!
Da ich vor 5 Stunden erst mit FHEM begonnen habe, habe ich noch einige Verständnisfragen.

fhem.cfg

####################################################################
###I2C-Device####
define i2cBus RPII2C 1
attr i2cBus group MCP23017

###Interrupt A&B####
define Interrupt RPI_GPIO 4
attr Interrupt active_low yes
attr Interrupt direction input
attr Interrupt group MCP23017
attr Interrupt interrupt both
attr Interrupt userReadings test {fhem ("get 0x20_icMCP23017")}

###MCP23017-0x20###
define 0x20_icMCP23017 I2C_MCP23017 0x20
attr 0x20_icMCP23017 IODev i2cBus
attr 0x20_icMCP23017 Interrupt A0,A1,A2,A3,A4,A5,A6,A7
attr 0x20_icMCP23017 InterruptOut connected_active-low
attr 0x20_icMCP23017 OutputPorts B0,B1,B2,B3,B4,B5,B6,B7
attr 0x20_icMCP23017 Pullup A0,A1,A2,A3,A4,A5,A6,A7
attr 0x20_icMCP23017 group MCP23017
#attr 0x20_icMCP23017 invert_input A0
#attr 0x20_icMCP23017 OnStartup B0=on,B1=off

###Sensoren (Input)####
#--Bank-A--#
define prxPortA0 readingsProxy 0x20_icMCP23017:PortA0
attr prxPortA0 group InputPorts
attr prxPortA0 valueFn {($VALUE eq "on")?"off":"on"}

####Aktoren (Output)####
#--Bank-B--#
define prxPortB0 readingsProxy 0x20_icMCP23017:PortB0
attr prxPortB0 group OutputPorts
attr prxPortB0 setFn {($CMD eq "on")?"PortB0 off":"PortB0 on"}
attr prxPortB0 setList on off
attr prxPortB0 valueFn {($VALUE eq "on")?"off":"on"}


Taster an A0, LED an B0 und IRQ an GPIO4 funktionieren grundsätzlich!!!
Folgende Probleme habe ich noch:

  • A0 hat einen Pullup, der Taster schaltet gegen Masse.
    Bei gedrücktem Taster wird im WEB-IF "OFF" angezeigt, was ja auch erstmal logisch erscheint.
    Ich hätte jetzt gedacht, dass ich mit attr 0x20_icMCP23017 invert_input A0
    den Eingang invertieren könnte, scheint aber nicht der Fall zu sein.
  • Auch der Ausgang B0 ist invertiert. Bei OFF im WEB-IF stehen am PIN 3V3 an.
  • Wie verknüpfe ich jetzt den Eingang A0 (Taster) mit dem Ausgang B0 (LED)?

Wo liegt mein Gedankenfehler, bzw. was mache ich falsch?
Für ein paar kleine Tips wäre ich dankbar.

Gruß
Pf@nne
FHEM auf: DS415+ (Master), Raspberry Pi 2

IPPhoner2b

#1
Hi Pf@nne,

Da ich auch die gleichen Probleme hatte, kann ich dir direkt die Antwort dazu geben:
Für deinen Eingang aus
attr prxPortA0 valueFn {($VALUE eq "on")?"off":"on"}
Machst du ein:
attr prxPortA0 valueFn {($VALUE eq "on")?"on":"off"}

Und das gleiche für deinen Ausgang auch, aus:

attr prxPortB0 setFn {($CMD eq "on")?"PortB0 off":"PortB0 on"}
attr prxPortB0 valueFn {($VALUE eq "on")?"off":"on"}

Machst du:

attr prxPortB0 setFn {($CMD eq "on")?"PortB0 on":"PortB0 off"}
attr prxPortB0 valueFn {($VALUE eq "on")?"on":"off"}


Das wars, und damit läuft alles wieder wie gewünscht.

Ach ja, und ne Verknüpfung könnte wie folgt aussehen:

define led_an notify prxPortA0:on set prxPortB0 on
define led_aus notify prxPortA0:off set prxPortB0 off


Das ist erstmal zum testen

Pf@nne

Jo, supie.....
Werde ich nachher gleich testen!
Vielen Dank.

Ich hatte auch schon angefangen die ON und OFFs zu tauschen, da sich mir die Syntax noch nicht so ganz erschließt,
waren meine Versuche nicht von Erfolg gekrönt.

Hast du weitere Infos zur Syntax,  beim Googlen bin ich bisher nicht so richtig fündig geworden.
Gleiches triftigen auf die Verknüpfungen zu.

Gruß
Pf@nne
FHEM auf: DS415+ (Master), Raspberry Pi 2

Pf@nne

Super, läuft wie verrückt!
http://youtu.be/nER72xh69kM

Zum Schalten toggle ich....
define led_01 notify prxPortA0:on set prxPortB0 toggle

So langsam wird es.....
Danke für den Tipp!

Gruß
Pf@nne
FHEM auf: DS415+ (Master), Raspberry Pi 2

IPPhoner2b

Na freut mich, dass ich auch mal helfen konnte.
Habe nämlich auch viel Hilfe hier in Anspruch nehmen müssen, und bin froh, Wenn ich wenigstens ein wenig von es was hängen geblieben ist, auch mal weitergeben kann  ;D :o

beSmart

Hallo Forum.

Ich schlage mich immer noch mit dem Problem mit dem Taster herum und brauche jetzt mal dringend die Hilfe von Fachleuten.
In meiner fhem.cfg steht nur noch der folgende Code. Alles andere habe ich herausgenommen, um auszuschließen, dass ein anderes Gerät den Fehler verursacht. Diese Konfiguration ist auch nur als Beispiel zu sehen, da ich schon einige Versuche unternommen habe und aufgrund der Menge hier nicht alles Posten kann.


attr global userattr devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .

attr global statefile log/fhem.save
attr global verbose 5
define WEBtablet FHEMWEB 8085 global
attr WEBtablet hiddenroom DashboardRoom
attr WEBtablet longpoll 1
attr WEBtablet stylesheetPrefix ios7
define autocreate autocreate
attr autocreate autosave 1
attr autocreate device_room %TYPE
attr autocreate filelog ./log/%NAME-%Y.log

###I2C-Device###
define i2cBus RPII2C 1
attr i2cBus group MCP23017
##
##
###MCP23017-0x20###
define icMCP23017 I2C_MCP23017 0x20
attr icMCP23017 IODev i2cBus
attr icMCP23017 Interrupt A0
attr icMCP23017 InterruptOut connected_active-low
attr icMCP23017 OutputPorts A1
attr icMCP23017 Pullup A0
attr icMCP23017 group MCP23017

###Interrupt A&B####
define Interrupt RPI_GPIO 4
attr Interrupt active_low yes
attr Interrupt direction input
attr Interrupt group MCP23017
attr Interrupt interrupt both
attr Interrupt userReadings test {fhem ("get icMCP23017")}

###Sensoren (Input)####

#--Bank-A--#
define Taster1 readingsProxy icMCP23017:PortA0
attr Taster1 event-on-change-reading state
attr Taster1 group InputPorts
attr Taster1 valueFn {($VALUE eq "on")?"open":"closed"}

define Ausgang1 readingsProxy icMCP23017:PortA1
attr Ausgang1 group OutputPorts
attr Ausgang1 setFn {($CMD eq "on")?"PortA1 off":"PortA1 on"}
attr Ausgang1 setList on off
attr Ausgang1 valueFn {($VALUE eq "on")?"off":"on"}

define Switch1 DOIF ([Taster1] eq "closed") (set Ausgang1 toggle)
attr Switch1 cmdState toggle
attr Switch1 do always


Folgendes möchte ich erreichen:
Ich möchte Ausgang1 per Webbrowser oder Taster1 ein- und ausschalten.( Habe gedacht das ist einfach. Ist es aber nicht  :-[)

Das Ein- und Ausschalten per Webbrowser funktioniert!

Das Schalten über die Fhem-Befehlszeile mit

set Ausgang1 on,off bzw. toggle
funktioniert auch, solange nicht über Taster1 geschaltet wurde.

Wenn ich Taster1 betätige, schaltet Ausgang1 ein. Das Ausschalten über Taster1 funktioniert dann aber nicht. Dies mach ich dann per Webbrowser, da auch das Schalten über die Fhem-Befehlszeile nicht mehr funktioniert.
Wenn ich per Webbrowser den Ausgang1 einschalte, kann ich ihn mit Taster1 ausschalten. Das Einschalten mit Taster1 ist dann aber nicht möglich. Es muss dann erst per Webbrowser geschaltet werden. Die Befehlszeile funktioniert auch in diesem Fall nicht mehr.

Meine Versuche habe ich mit den Modulen notify und DOIF sowie den Kommandos on,off und toggle gemacht.

Ich glaube, dass der Ausgang blockiert ist und nicht schalten kann. Warum??

Ich hoffe auf eure Hilfe bei der Problemlösung.

Gruß

beSmart





Pf@nne

Hi beSmart,

hast du den Beitrag eigentlich durchgelesen?
Du hast doch die on off Geschichte noch gar nicht geändert!

Wenn das nicht klappt, dann nimm meinen Code von oben und führe die Änderungen durch.
Der läuft dann auf jeden Fall. ....
FHEM auf: DS415+ (Master), Raspberry Pi 2

beSmart

#7
Hallo.

Die von mir gepostet config ist nur einer von vielen Versuchen. Deine Version habe ich auch schon Probiert. (Gerade eben noch einmal)Funktioniert leider ncht. Problem wie beschrieben ein ja, aus nur über Webbrowser// oder eben umgekehrt.

Dank und Gruß

beSmart

IPPhoner2b

Gibt denn das log bzw der Event Monitor etwas Aufschluss?

Scheint ja irgendwie, dass dein Taster etwas blockiert, wenn er einmal betätigt wurde?!

Wechselt denn der State des Tasters von Open zu closed und wieder zurück?

Was ist denn, wenn der Taster auf on/Off umgestellt wird? Denke mal, dass dort evtl der Fehler sein könnte.

Pf@nne

Hast du denn meine Version angepasst oder so benutzt wie sie ist?
FHEM auf: DS415+ (Master), Raspberry Pi 2

Spuckiii

Hallo Leute,

ich habe ein kleines Problem und hoffe ihr könnt mir helfen. Ich habe 2 MCPs am Start. 1 für die Eingänge (normale Schalter mit externen pulldown Widerständen) und 1 für den Ausgang (8 Kanal Relais von Saintsmart - wird extern durch ein 5V 6A versorgt).

Wenn ich die Schalter betätige wird alles schön angezeigt. wenn ich auf die OutputPorts klicke dann kann es sein dass sich Fhem verschluckt und nichts mehr reagiert (weder Schalter noch die OUtputs, erst ein Neustart bereinigt das ganze...
Ich weiß nicht woran es liegt. Kann jemand helfen?

IPPhoner2b

Also so komplett ohne Config oder ähnliches wird es schwierig zu raten wo es herkommen kann, du kannst ja mal ein paar Zeilen deiner Config posten, und evtl etwas vom Log.

Denke mal, dass in der Config was enthalten ist, der den Befehl wohl absetzt, und halten will, wie eine Art Schleife, und er sich deswegen aufhängt, weil er den Befehl immer am abarbeiten ist....

Wie ist das ganze angeschlossen, oder steht das schon irgendwo im Forum?
Bin nicht mehr so oft hier unterwegs, so ist das ja meist, wenn alles Problemlos funktioniert *g*