FHEM Forum

FHEM => Sonstiges => Thema gestartet von: klausw am 03 Mai 2014, 01:02:40

Titel: Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 03 Mai 2014, 01:02:40
Hallo zusammen,

hier die neue Version des Moduls.

Die Initialisierung nach dem Hochfahren, sowie jede weitere (z.B. nach I2C Busunterbrechung) initialisiert sämtliche über die Attribute gesetzen Register.
Damit sollte der Output und auch der Interrupt endlich funktionieren.
Ich habe diesen neuen Thread angelegt, da der Andere (http://forum.fhem.de/index.php/topic,16519.120.html) ausschließlich für die GPIO's am Pi sein sollte.

besondere Attribute:
OutputPorts
Pullup
active_low
Interrupt


Die Werte für die Attribute müssen Kommagetrennte Portbezeichnungen sein.
z.B A1,B4,B7

Bitte Intensiv testen  8)
Wenn es rund läuft werde ich es einchecken.
!!!neuste Version hier und im SVN!!!
bei Problemen ist eine ältere funktionierende Version in Post 24!!!


Grüße
Klaus
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: linusd am 03 Mai 2014, 08:56:55
Hallo zusammen,

und von mir eine Beispielkonfiguration die bei mir im Testbetrieb funktioniert.
Ich habe hier 4 REED-Kontakte abgebildet, da dies auch eine der Einsatzbereich sein wird.
Getestet habe ich erfolgreich mit dieser Konfiguration jedoch auch Abstandsmesser, Regensensoren (auf digital gestellt) und Bewegungssensoren.

Optimierungsvorschläge (in besondere bei den Notify'er) sind selbstverständlich wilkommen!
 

###I2C-Device###
define chip RPII2C 1

###MCP23017-0x20###
define testMCP23017 I2C_MCP23017 0x20
attr testMCP23017 IODev chip
attr testMCP23017 Interrupt A0,A1
attr testMCP23017 Pullup A0,A1

###Interrupt A&B####
define INTA RPI_GPIO 4
attr INTA active_low yes
attr INTA direction input
attr INTA interrupt both

define INTB RPI_GPIO 17
attr INTB active_low yes
attr INTB direction input
attr INTB interrupt both

###Dummy- z.B.REED-Kontakte####

#--Bank-A--#
define dummyMCP23017_A0 dummy
define dummyMCP23017_A1 dummy

#--Bank-B--#
define dummyMCP23017_B0 dummy
define dummyMCP23017_B1 dummy

###Notify####

define notifyINTA notify INTA {my $A0state=ReadingsVal("testMCP23017","PortA0",0);; \
fhem ("set dummyMCP23017_A0 $A0state");;\
my $A1state=ReadingsVal("testMCP23017","PortA1",0);; \
fhem ("set dummyMCP23017_A1 $A1state");;\
fhem ("get testMCP23017 PortA0")}

define notifyINTB notify INTB {my $B0state=ReadingsVal("testMCP23017","PortB0",0);; \
fhem ("set dummyMCP23017_B0 $B0state");;\
my $B1state=ReadingsVal("testMCP23017","PortB1",0);; \
fhem ("set dummyMCP23017_B1 $B1state");;\
fhem ("get testMCP23017 PortB0")}


Dank Dir nochmal für das Modul Klaus!

Im Post 40 ist eine aktuelle Version der Konfiguration mit ausführlicher Beschreibung.

Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 03 Mai 2014, 09:33:25
Ich danke euch beiden für die klasse Arbeit, kann es zwar jetzt erstmal nicht testen, weil mein Rechner für nen Bekannten auseinander genommen wurde, und nächste Woche bin ich auch nicht da, aber danach wirds mit großen Schritten weiter gehen  ::) ;D

Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: hajo23 am 03 Mai 2014, 18:29:22
Auch von mir hezlichen Dank! Initialisieren funktioniert jetzt, allerdings habe ich immer noch ein Problem. Der Status eines Ports wird nach "poweroff" nicht wieder hergestellt. Auch wird z.B. ein "set mcp_20 PortA0 on" in der fhem.cfg nicht ausgeführt.

Im log steht:
2014.05.03 18:13:37 3: mcp_20: failurei in message from chip
2014.05.03 18:13:37 3: Direction: i2cwrite I2Caddress: 32 Register: 0 Data: 0 received: undef
2014.05.03 18:13:37 3: mcp_20: failurei in message from chip
2014.05.03 18:13:37 3: Direction: i2cwrite I2Caddress: 32 Register: 1 Data: 0 received: undef

Am liebsten würde ich gern definieren, ob ein Port nach "poweroff" einen bestimmten Status haben soll, oder ob der letzte Status (vor poweroff) wieder hergestellt werden soll. :-)

Viele Grüße,
Hajo
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 04 Mai 2014, 22:26:59
Zitat von: hajo23 am 03 Mai 2014, 18:29:22
Auch von mir hezlichen Dank! Initialisieren funktioniert jetzt, allerdings habe ich immer noch ein Problem. Der Status eines Ports wird nach "poweroff" nicht wieder hergestellt. Auch wird z.B. ein "set mcp_20 PortA0 on" in der fhem.cfg nicht ausgeführt.

Im log steht:
2014.05.03 18:13:37 3: mcp_20: failurei in message from chip
2014.05.03 18:13:37 3: Direction: i2cwrite I2Caddress: 32 Register: 0 Data: 0 received: undef
2014.05.03 18:13:37 3: mcp_20: failurei in message from chip
2014.05.03 18:13:37 3: Direction: i2cwrite I2Caddress: 32 Register: 1 Data: 0 received: undef

Am liebsten würde ich gern definieren, ob ein Port nach "poweroff" einen bestimmten Status haben soll, oder ob der letzte Status (vor poweroff) wieder hergestellt werden soll. :-)

Viele Grüße,
Hajo
Das war zu befürchten, das jetzt die Wünsche kommen  8)

Set in der fhem.cfg wird nicht gehen, da erstmal alles initialisiert werden muss.
...ich schau mir das bei Gelegenheit mal an
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: hajo23 am 04 Mai 2014, 23:06:19
Hallo Klaus,

hat keine Eile. ich hatte gehofft, dass etwas in der Art

define Relais0_laststate notify mcp20:Initialized set Relais0 {ReadingsVal("Relais0","state","on")}

funktioniert. Vorerst habe ich mein Problem mit dem "definierten Status" in /etc/init.d/fhem gelöst:

i2cset -y 1 0x20 0x14 0xFF
i2cset -y 1 0x20 0x00 0x00

damit werden die Register zuerst auf high gesetzt und dann die bank auf Output gestellt.  Somit bleiben meine Lastrelais nach einem poweroff durchgehend ausgeschaltet, was mir wichtig ist.  ;)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 04 Mai 2014, 23:17:08
Zitat von: hajo23 am 04 Mai 2014, 23:06:19
hat keine Eile. ich hatte gehofft, dass etwas in der Art

define Relais0_laststate notify mcp20:Initialized set Relais0 {ReadingsVal("Relais0","state","on")}

funktioniert. Vorerst habe ich mein Problem mit dem "definierten Status" in /etc/init.d/fhem gelöst:
ist mir zu kompliziert ... vielleicht liegt es an der Uhrzeit ;)

wenn dann doch eher:

attr <name> onstart A0=last,A1=on,A2=off
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: hajo23 am 04 Mai 2014, 23:59:44
Zitat von: klausw am 04 Mai 2014, 23:17:08
ist mir zu kompliziert ... vielleicht liegt es an der Uhrzeit ;)

auf solche Ideen komme ich als Newbie, wenn ich Suchmaschinen zur Lösungsfindung bemühe :)

ich erkläre es nochmal ausführlich:
am MCP23017 hängen bei mir 8 Relais (Optokoppler) mit empfindlichen Lasten, die bei low anziehen. Wenn das Modul 52_I2C_MCP23017 startet, wird zuerst auf Output geschaltet. Nach poweron stehen die Register des chips standardmäßig auf low, was dann folglich zum AKtivieren der 8 Relais führt. Das muss ich vermeiden.

Zitat von: klausw am 04 Mai 2014, 23:17:08
wenn dann doch eher:

attr <name> onstart A0=last,A1=on,A2=off


sieht gut aus  :D
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 07 Mai 2014, 00:09:21
Hier eine Version mit Wiederherstellung der Outputs nach reboot.

bitte testen

kann so verwendet werden
attr <name> OnStartup A0=last,A1=on,A2=off
OutputPorts die fehlen werden auf den letzten gespeicherten Zustand gesetzt.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: hajo23 am 12 Mai 2014, 21:12:39
Zitat von: klausw am 07 Mai 2014, 00:09:21
Hier eine Version mit Wiederherstellung der Outputs nach reboot.

bitte testen

kann so verwendet werden
attr <name> OnStartup A0=last,A1=on,A2=off
OutputPorts die fehlen werden auf den letzten gespeicherten Zustand gesetzt.

hallo klaus,

konnte gerade einen ersten Test machen. Die Ports werden leider noch nicht gesetzt.


define chip RPII2C 1
# attr chip verbose 5
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 OnStartup A0=last,A1=on,A2=off

logfile:
2014.05.12 20:58:16 1: Including /opt/fhem/FHEM/mcp23017.cfg
2014.05.12 20:58:27 1: mcp_20: Attribut OutputPorts wird gesetzt
2014.05.12 20:58:27 1: Including ./log/fhem.save
2014.05.12 20:58:28 1: mcp_20: Port = A0
2014.05.12 20:58:28 1: mcp_20: PortA0 soll auf Altzustand: on gesetzt werden
2014.05.12 20:58:28 1: mcp_20 set regaddr: 12 inhalt: 01
2014.05.12 20:58:28 1: mcp_20: Port = A1
2014.05.12 20:58:28 1: mcp_20: PortA1 soll auf on gesetzt werden
2014.05.12 20:58:28 1: mcp_20 set regaddr: 12 inhalt: 03
2014.05.12 20:58:28 1: mcp_20: Port = A2
2014.05.12 20:58:28 1: mcp_20: PortA2 soll auf off gesetzt werden
2014.05.12 20:58:28 1: mcp_20 set regaddr: 12 inhalt: 03
2014.05.12 20:58:28 1: mcp_20: Port = A3
2014.05.12 20:58:28 1: mcp_20: PortA3 wird auf Altzustand: on gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 12 inhalt: 0F
2014.05.12 20:58:28 1: mcp_20: Port = A4
2014.05.12 20:58:28 1: mcp_20: PortA4 wird auf Altzustand: on gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 12 inhalt: 1F
2014.05.12 20:58:28 1: mcp_20: Port = A5
2014.05.12 20:58:28 1: mcp_20: PortA5 wird auf Altzustand: on gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 12 inhalt: 3F
2014.05.12 20:58:28 1: mcp_20: Port = A6
2014.05.12 20:58:28 1: mcp_20: PortA6 wird auf Altzustand: on gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 12 inhalt: 7F
2014.05.12 20:58:28 1: mcp_20: Port = A7
2014.05.12 20:58:28 1: mcp_20: PortA7 wird auf Altzustand: on gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 12 inhalt: FF
2014.05.12 20:58:28 1: mcp_20: Port = B0
2014.05.12 20:58:28 1: mcp_20: PortB0 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 13 inhalt: 00
2014.05.12 20:58:28 1: mcp_20: Port = B1
2014.05.12 20:58:28 1: mcp_20: PortB1 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 13 inhalt: 00
2014.05.12 20:58:28 1: mcp_20: Port = B2
2014.05.12 20:58:28 1: mcp_20: PortB2 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 13 inhalt: 00
2014.05.12 20:58:28 1: mcp_20: Port = B3
2014.05.12 20:58:28 1: mcp_20: PortB3 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 13 inhalt: 00
2014.05.12 20:58:28 1: mcp_20: Port = B4
2014.05.12 20:58:28 1: mcp_20: PortB4 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 13 inhalt: 00
2014.05.12 20:58:28 1: mcp_20: Port = B5
2014.05.12 20:58:28 1: mcp_20: PortB5 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 13 inhalt: 00
2014.05.12 20:58:28 1: mcp_20: Port = B6
2014.05.12 20:58:28 1: mcp_20: PortB6 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 13 inhalt: 00
2014.05.12 20:58:28 1: mcp_20: Port = B7
2014.05.12 20:58:28 1: mcp_20: PortB7 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.12 20:58:28 1: mcp_20 set regaddr: 13 inhalt: 00

2014.05.12 20:58:28 3: mcp_20: failurei in message from chip
2014.05.12 20:58:28 3: Direction: i2cwrite I2Caddress: 32 Register: 0 Data: 0 received: undef
2014.05.12 20:58:28 3: mcp_20: failurei in message from chip
2014.05.12 20:58:28 3: Direction: i2cwrite I2Caddress: 32 Register: 1 Data: 0 received: undef


Gruß,
Hajo
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 14 Mai 2014, 00:39:27
Zitat von: hajo23 am 12 Mai 2014, 21:12:39
konnte gerade einen ersten Test machen. Die Ports werden leider noch nicht gesetzt.

So, jetzt müsste es gehen...theoretisch ;)

In der vorangegangenen Version wurden die Ports vor Abschluss der Initialisierung gesetzt. Das kann natürlich nicht gehen.


Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: slonnet am 14 Mai 2014, 16:41:11
Hallo klausw,
ich teste gerade auch dein Modul.
Erst einmal vorab: tolle Arbeit!

Hab allerdings das Problem das das Ausschalten der Ports zu einem "transmission error" führt.

Einschalten geht problemlos, aber bei ausschalten steht im Log folgender Inhalt:

2014.05.14 16:38:25 1: MCP23017_1 set regaddr: 12 inhalt: 01
2014.05.14 16:38:25 1: MCP23017_1 set regaddr: 12 inhalt: 00
2014.05.14 16:38:25 3: MCP23017_1: failurei in message from chip
2014.05.14 16:38:25 3: Direction: i2cwrite I2Caddress: 32 Register: 18 Data: 0 received: undef

Kann das jemand bestätigen?
Bzw. das könnte auch der Grund sein, warum "attr <name> OnStartup" nicht funktioniert.

Gruss slonnet
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 14 Mai 2014, 16:59:53
Zitat von: slonnet am 14 Mai 2014, 16:41:11
Hab allerdings das Problem das das Ausschalten der Ports zu einem "transmission error" führt.
das er bisher noch keinem aufgefallen ist verwundert mich :)

das war ein anderer Fehler, eine 0 im Registerinhalt wurde als ungültig erkannt (den "transmission error" solltest Du nur bekommen, wenn Du alle Ports ausschaltest)

Hat aber nix mit OnStartup zu tun. Das sollte auch jetzt auch gehen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: slonnet am 14 Mai 2014, 17:35:31
Wow,

das ging ja mal flott!
Mit dem neuen Modul klappt es jetzt auch mit dem Ausschalten ;)

Vielen Dank für die schnelle Hilfe!
Hatte schon an einen Hardware Fehler meinerseits gedacht, weil es wirklich noch keiner gemeldet hatte ;)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 14 Mai 2014, 17:53:03
Zitat von: slonnet am 14 Mai 2014, 17:35:31
Wow,

das ging ja mal flott!
Mit dem neuen Modul klappt es jetzt auch mit dem Ausschalten ;)

Vielen Dank für die schnelle Hilfe!
Hatte schon an einen Hardware Fehler meinerseits gedacht, weil es wirklich noch keiner gemeldet hatte ;)
sehr schön

funktioniert OnStartup bei Dir?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: slonnet am 14 Mai 2014, 19:00:21
Nutze es zwar nicht, aber ich habs mal getestet.

Gibt direkt einen Fehler beim fhem.cfg speichern!
Error messages while initializing FHEM:
configfile: MCP23017_1: unknown attribute OnStartup. Type 'attr MCP23017_1 ?' for a detailed list.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 14 Mai 2014, 19:07:52
Zitat von: slonnet am 14 Mai 2014, 19:00:21
Nutze es zwar nicht, aber ich habs mal getestet.

Gibt direkt einen Fehler beim fhem.cfg speichern!
Error messages while initializing FHEM:
configfile: MCP23017_1: unknown attribute OnStartup. Type 'attr MCP23017_1 ?' for a detailed list.

Wähle es bitte mal direkt unten auf der Detail Seite aus. Die Fehlermeldung ist mir suspekt
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: slonnet am 14 Mai 2014, 19:25:55
So weit komm ich ja garnicht!

Es kommt schon zum Fehler bei Speichern der fhem.cfg

ERROR:
MCP23017_1: unknown attribute OnStartup. Type 'attr MCP23017_1 ?' for a detailed list.


So sieht bei mir die Initialisierung aus
###I2C-Device###
define chip RPII2C 1

define MCP23017_1 I2C_MCP23017 0x20
attr MCP23017_1 IODev chip
attr MCP23017_1 Interrupt B0
attr MCP23017_1 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr MCP23017_1 OnStartup A0=last,A1=on,A2=off


Er kennt scheinbar das Attribut "OnStartup" nicht.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 14 Mai 2014, 19:34:29
reco statt last sollte gehen

Mein Fehler
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: slonnet am 14 Mai 2014, 19:47:03
So, jetzt bin ich ganz raus!

reco statt last???

Das Attribut "OnStartup" scheint es nicht zu geben!
Oder hab ich was Grundlegendes übersehn? :/
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: linusd am 14 Mai 2014, 20:59:37
Hallo Klaus,

ich habe Dein neues Modul getestet.
Die Relais werden nach dem boot zwar in den letzten Schaltzustand versetzt, aber dennoch zunächst alle "ganz kurz" angeschaltet.
(Szenario ist z.B. ein Stromausfall)

Auch wenn die Funktionalität sonst nicht weiter beinflusst wird, erhalte ich leider im stdout die Meldung
Meine Testkonfiguration hast Du ja bereits, wobei ich aktuell das Attribut "OnStartup" nicht verwende.
(Aber die Wiederherstellung ist ja dann die Standartfunktion für OutputPorts)


Use of uninitialized value in index at ./FHEM/52_I2C_MCP23017.pm line 196, <$fh> line 57
Use of uninitialized value in index at ./FHEM/52_I2C_MCP23017.pm line 196, <$fh> line 61
Use of uninitialized value in index at ./FHEM/52_I2C_MCP23017.pm line 196, <$fh> line 62
Use of uninitialized value in index at ./FHEM/52_I2C_MCP23017.pm line 196, <$fh> line 63
Use of uninitialized value in index at ./FHEM/52_I2C_MCP23017.pm line 196, <$fh> line 64
Use of uninitialized value in index at ./FHEM/52_I2C_MCP23017.pm line 196, <$fh> line 65
Use of uninitialized value in index at ./FHEM/52_I2C_MCP23017.pm line 196, <$fh> line 66


Die Log gibt folgendes aus

2014.05.14 20:41:50 1: Including fhem.cfg
2014.05.14 20:41:50 3: telnetPort: port 7072 opened
2014.05.14 20:41:51 3: WEB: port 8083 opened
2014.05.14 20:41:51 3: WEBphone: port 8084 opened
2014.05.14 20:41:51 3: WEBtablet: port 8085 opened
2014.05.14 20:41:52 2: eventTypes: loaded 115 events from ./log/eventTypes.txt
2014.05.14 20:41:52 1: Including /opt/fhem/FHEM/I2C_MCP23017_READ.cfg
2014.05.14 20:41:58 1: Including ./log/fhem.save
2014.05.14 20:41:58 4: testMCP23017: STATE kann auf Ok wiederhergestellt werden 2014-05-14 20:41:58
2014.05.14 20:41:58 4: testMCP23017: PortA0 kann auf on wiederhergestellt werden 2014-05-10 14:34:28
2014.05.14 20:41:58 5: testMCP23017: Port = A0
2014.05.14 20:41:58 5: testMCP23017: PortA0 ist Eingang
2014.05.14 20:41:58 4: testMCP23017: PortA1 kann auf off wiederhergestellt werden 2014-05-10 14:34:28
2014.05.14 20:41:58 5: testMCP23017: Port = A1
2014.05.14 20:41:58 5: testMCP23017: PortA1 ist Eingang
2014.05.14 20:41:58 4: testMCP23017: PortA2 kann auf off wiederhergestellt werden 2014-05-10 14:29:37
2014.05.14 20:41:58 5: testMCP23017: Port = A2
2014.05.14 20:41:58 5: testMCP23017: PortA2 ist Eingang
2014.05.14 20:41:58 4: testMCP23017: PortA3 kann auf on wiederhergestellt werden 2014-05-10 14:34:28
2014.05.14 20:41:58 5: testMCP23017: Port = A3
2014.05.14 20:41:58 5: testMCP23017: PortA3 ist Eingang
2014.05.14 20:41:58 4: testMCP23017: PortA4 kann auf on wiederhergestellt werden 2014-05-13 21:17:34
2014.05.14 20:41:58 5: testMCP23017: Port = A4
2014.05.14 20:41:58 5: testMCP23017: PortA4 wird auf Altzustand: on gesetzt (kein Eintrag in on Startup)
2014.05.14 20:41:58 4: testMCP23017: PortA5 kann auf on wiederhergestellt werden 2014-05-13 21:17:34
2014.05.14 20:41:58 5: testMCP23017: Port = A5
2014.05.14 20:41:58 5: testMCP23017: PortA5 wird auf Altzustand: on gesetzt (kein Eintrag in on Startup)
2014.05.14 20:41:58 4: testMCP23017: PortA6 kann auf on wiederhergestellt werden 2014-05-10 14:34:28
2014.05.14 20:41:58 5: testMCP23017: Port = A6
2014.05.14 20:41:58 5: testMCP23017: PortA6 ist Eingang
2014.05.14 20:41:58 4: testMCP23017: PortA7 kann auf off wiederhergestellt werden 2014-05-10 14:34:37
2014.05.14 20:41:58 5: testMCP23017: Port = A7
2014.05.14 20:41:58 5: testMCP23017: PortA7 ist Eingang
2014.05.14 20:41:58 4: testMCP23017: PortB0 kann auf on wiederhergestellt werden 2014-05-10 14:34:28
2014.05.14 20:41:58 5: testMCP23017: Port = B0
2014.05.14 20:41:58 5: testMCP23017: PortB0 ist Eingang
2014.05.14 20:41:58 4: testMCP23017: PortB1 kann auf off wiederhergestellt werden 2014-05-10 14:29:39
2014.05.14 20:41:58 5: testMCP23017: Port = B1
2014.05.14 20:41:58 5: testMCP23017: PortB1 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.14 20:41:58 4: testMCP23017: PortB2 kann auf off wiederhergestellt werden 2014-05-10 14:29:44
2014.05.14 20:41:58 5: testMCP23017: Port = B2
2014.05.14 20:41:58 5: testMCP23017: PortB2 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.14 20:41:58 4: testMCP23017: PortB3 kann auf on wiederhergestellt werden 2014-05-13 21:21:03
2014.05.14 20:41:58 5: testMCP23017: Port = B3
2014.05.14 20:41:58 5: testMCP23017: PortB3 wird auf Altzustand: on gesetzt (kein Eintrag in on Startup)
2014.05.14 20:41:58 4: testMCP23017: PortB4 kann auf off wiederhergestellt werden 2014-05-10 14:29:34
2014.05.14 20:41:58 5: testMCP23017: Port = B4
2014.05.14 20:41:58 5: testMCP23017: PortB4 wird auf Altzustand: off gesetzt (kein Eintrag in on Startup)
2014.05.14 20:41:58 4: testMCP23017: PortB5 kann auf on wiederhergestellt werden 2014-05-10 14:32:43
2014.05.14 20:41:58 5: testMCP23017: Port = B5
2014.05.14 20:41:58 5: testMCP23017: PortB5 wird auf Altzustand: on gesetzt (kein Eintrag in on Startup)
2014.05.14 20:41:58 4: testMCP23017: PortB6 kann auf on wiederhergestellt werden 2014-05-10 14:32:43
2014.05.14 20:41:58 5: testMCP23017: Port = B6
2014.05.14 20:41:58 5: testMCP23017: PortB6 wird auf Altzustand: on gesetzt (kein Eintrag in on Startup)
2014.05.14 20:41:58 4: testMCP23017: PortB7 kann auf on wiederhergestellt werden 2014-05-10 14:34:28
2014.05.14 20:41:58 5: testMCP23017: Port = B7
2014.05.14 20:41:58 5: testMCP23017: PortB7 ist Eingang
2014.05.14 20:41:58 4: testMCP23017: state kann auf Ok wiederhergestellt werden 2014-05-14 20:41:08
2014.05.14 20:41:58 5: im init client fuer testMCP23017
2014.05.14 20:41:58 5: chip: vom client empfangen|direction: i2cwrite|reg: 0|data: 207|i2caddress: 32
2014.05.14 20:41:58 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:41:58 5: chip; Register 00 schreiben - Inhalt: CF Returnvar.: 0
2014.05.14 20:41:58 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 207
2014.05.14 20:41:58 5: chip: vom client empfangen|direction: i2cwrite|reg: 1|data: 129|i2caddress: 32
2014.05.14 20:41:58 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:41:58 5: chip; Register 01 schreiben - Inhalt: 81 Returnvar.: 0
2014.05.14 20:41:58 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 129
2014.05.14 20:41:58 5: chip: vom client empfangen|direction: i2cwrite|reg: 12|data: 255|i2caddress: 32
2014.05.14 20:41:58 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:41:58 5: chip; Register 0C schreiben - Inhalt: FF Returnvar.: 0
2014.05.14 20:41:58 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 255
2014.05.14 20:41:58 5: chip: vom client empfangen|direction: i2cwrite|reg: 13|data: 255|i2caddress: 32
2014.05.14 20:41:58 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:41:58 5: chip; Register 0D schreiben - Inhalt: FF Returnvar.: 0
2014.05.14 20:41:58 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 255
2014.05.14 20:41:58 5: chip: vom client empfangen|direction: i2cwrite|reg: 2|data: 54|i2caddress: 32
2014.05.14 20:41:58 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:41:58 5: chip; Register 02 schreiben - Inhalt: 36 Returnvar.: 0
2014.05.14 20:41:58 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 54
2014.05.14 20:41:58 5: chip: vom client empfangen|direction: i2cwrite|reg: 3|data: 126|i2caddress: 32
2014.05.14 20:41:58 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:41:58 5: chip; Register 03 schreiben - Inhalt: 7E Returnvar.: 0
2014.05.14 20:41:58 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 126
2014.05.14 20:41:58 5: chip: vom client empfangen|direction: i2cwrite|reg: 4|data: 135|i2caddress: 32
2014.05.14 20:41:58 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:41:58 5: chip; Register 04 schreiben - Inhalt: 87 Returnvar.: 0
2014.05.14 20:41:58 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 135
2014.05.14 20:41:58 5: chip: vom client empfangen|direction: i2cwrite|reg: 5|data: 129|i2caddress: 32
2014.05.14 20:41:58 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:41:58 5: chip; Register 05 schreiben - Inhalt: 81 Returnvar.: 0
2014.05.14 20:41:58 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 129
2014.05.14 20:41:58 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:41:58 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:41:58 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:41:58 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:41:58 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:41:58 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:41:58 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:41:58 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:41:58 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:41:58 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:41:58 1: usb create starting
2014.05.14 20:41:59 3: Probing CUL device /dev/ttyAMA0
2014.05.14 20:41:59 3: Probing TCM310 device /dev/ttyAMA0
2014.05.14 20:42:00 3: Probing FRM device /dev/ttyAMA0
2014.05.14 20:42:05 1: usb create end
2014.05.14 20:42:05 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2014.05.14 20:42:05 0: Server started with 33 defined entities (version $Id: fhem.pl 5728 2014-05-03 09:41:12Z rudolfkoenig $, os linux, user fhem, pid 1999)
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 lesen - Inhalt: 79
2014.05.14 20:42:05 5: chip; Register 13 lesen - Inhalt: E9
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 lesen - Inhalt: 79
2014.05.14 20:42:05 5: chip; Register 13 lesen - Inhalt: E9
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:05 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:05 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.14 20:42:05 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:05 5: chip; Register 12 lesen - Inhalt: 79
2014.05.14 20:42:05 5: chip; Register 13 lesen - Inhalt: E9
2014.05.14 20:42:05 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32
2014.05.14 20:42:05 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 lesen - Inhalt: 79
2014.05.14 20:42:06 5: chip; Register 13 lesen - Inhalt: E9
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 lesen - Inhalt: 79
2014.05.14 20:42:06 5: chip; Register 13 lesen - Inhalt: E9
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 lesen - Inhalt: 79
2014.05.14 20:42:06 5: chip; Register 13 lesen - Inhalt: E9
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 1: testMCP23017 set regaddr: 13 inhalt: E9
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 233|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 13 schreiben - Inhalt: E9 Returnvar.: 0
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.14 20:42:06 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:06 5: chip; Register 12 lesen - Inhalt: 79
2014.05.14 20:42:06 5: chip; Register 13 lesen - Inhalt: E9
2014.05.14 20:42:06 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:06 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:07 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:07 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:07 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:07 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:07 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:07 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:07 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:07 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:07 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:07 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:07 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:07 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:07 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:07 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:07 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:07 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:07 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:07 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:07 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:07 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:07 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:07 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:07 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:07 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:07 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:07 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:07 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:07 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:07 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:07 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:07 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:07 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:07 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:07 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:07 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:07 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:07 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:07 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:07 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:07 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:07 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:07 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:07 1: testMCP23017 set regaddr: 12 inhalt: 79
2014.05.14 20:42:07 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 121|i2caddress: 32
2014.05.14 20:42:07 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:07 5: chip; Register 12 schreiben - Inhalt: 79 Returnvar.: 0
2014.05.14 20:42:07 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32 Data: 121
2014.05.14 20:42:07 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:42:07 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.14 20:42:07 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:42:07 5: chip; Register 12 lesen - Inhalt: 79
2014.05.14 20:42:07 5: chip; Register 13 lesen - Inhalt: E9
2014.05.14 20:42:07 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32
2014.05.14 20:42:07 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:42:07 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121
2014.05.14 20:44:12 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.14 20:44:12 5: chip: HWaccess I2CAddr: 20
2014.05.14 20:44:12 5: chip; Register 12 lesen - Inhalt: 79
2014.05.14 20:44:12 5: chip; Register 13 lesen - Inhalt: E9
2014.05.14 20:44:12 5: chip ->Client gefunden: testMCP23017, I2Caddress: 32
2014.05.14 20:44:12 5: testMCP23017 UpdReadings Register: 19, Inhalt: 233
2014.05.14 20:44:12 5: testMCP23017 UpdReadings Register: 18, Inhalt: 121


Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 14 Mai 2014, 23:55:58
Neue Version:

Fehler im stdout sollten weg sein
last im OnStartup geht jetzt

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: linusd am 15 Mai 2014, 01:38:02
Hallo Klaus,

die Meldung im stdout ist weg und die Wiederherstellung des Schaltzustandes ohne Verwendung von "OnStartup" funktioniert einwandfrei!  8)
Ich werde morgen mal das Verhalten von "OnStartup" testen und die Invertierung prüfen .

Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: hajo23 am 15 Mai 2014, 12:47:13
Zitat von: klausw am 14 Mai 2014, 23:55:58
Neue Version:

Fehler im stdout sollten weg sein
last im OnStartup geht jetzt



Hallo Klaus,

ich habe gestern die erste Version vom 14.05 getestet. Es funktionierte alles wie beschrieben, auch schon onstartup mit last.

Vielen Dank dafür!
HaJo
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 15 Mai 2014, 13:07:25
So, ich habe noch eine Änderung vorgenommen:

mit Befehlen wie: set <name> PortA0,B3,B5 on

kann man mehrere als Output definierte Ports mit einem mal setzen.
Testet das bitte.
Wenn alles funktioniert, werde ich das Modul dem FHEM repository hinzufügen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: willybauss am 15 Mai 2014, 22:51:02
Hallo,


ich verfolge euer Projekt seit einiger Zeit, da ich demnächst was ähnliches brauchen könnte. Wird dieses fhem-Modul denn mit den 128 Ports dieser IO-Karte (http://www.pridopia.co.uk/pi-23017-8-lp.html) zurecht kommen? Wenn ja, dann wäre es genau das, was ich brauche, um meine Fensterkontakte zu kontrollieren und Lichter und Rollläden zu steuern.

Gruß

Willy
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 16 Mai 2014, 00:16:24
Zitat von: willybauss am 15 Mai 2014, 22:51:02
ich verfolge euer Projekt seit einiger Zeit, da ich demnächst was ähnliches brauchen könnte. Wird dieses fhem-Modul denn mit den 128 Ports dieser IO-Karte (http://www.pridopia.co.uk/pi-23017-8-lp.html) zurecht kommen? Wenn ja, dann wäre es genau das, was ich brauche, um meine Fensterkontakte zu kontrollieren und Lichter und Rollläden zu steuern.
Das sollte gehen, da sind genau, die ICs drauf, für die dieses Modul geschieben wurde
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: timo74 am 18 Mai 2014, 18:50:51
Hallo zusammen,

ich bin neu hier und sehr interessiert an dem Thema. Nachdem ich seit einigen Wochen (mit Unterbrechungen) immer wieder überlege, wie ich möglichst viele Ein- und Ausgänge an den RPI bekomme, scheint das von Willy genannte Addon-Board genau diese Frage zu beantworten.
Zwei Fragen stellen sich mir aber noch:
1. könnte man mit dem Modul von Klaus auch Eingänge falls die Interrupt-Ausgänge der 23017's nicht auf die GPIO-Ports des RPI geschaltet sind? Auf der Händler-Homepage ist es nicht ersichtlich und ich könnte mir vorstellen, dass bei 8x 23017 ja immerhin 16 Interrupt-Leitungen irgendwo aufzulegen wären.
2. (Achtung, FHEM-Anfänger-Frage): solange das Modul von Klaus noch nicht im Update-Repository liegt, reicht es aus, wenn man das manuell an die richtige Stelle kopiert?

Viele Grüße
Timo
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: linusd am 18 Mai 2014, 20:54:12
Hallo timo74,

da das von willibauss angesprochene Modul die Pins des RPI zur weiteren Verwendung bereitstellt
und ich in der Beschreibung von den Interrupts nichts gesehen habe, würde ich vermuten das diese auch nicht verdrahtet sind.
Vielleicht habe ich es aber auch nur übersehen!

Bei diesem Preis würde ich auch überlegen, oder der Einsatz eines Arduino in Verbindung mit einem Ethernetmodul nicht auch zum Ziel führt.
Der kann dann auch mit fhem angesteuert und ausgelesen werden.

-Vorteil ist hierbei, dass auch analoge Signale verarbeitet werden können.
-Nachteil ist das fehlen eines Interrupts zum fhem.

Ja, es reicht das Modul vom klaus an die richtige Stelle im fhem abzulegen!

Sollen wirklich 128 Module in einer relativen Nähe zum RPI betrieben werden?

Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 18 Mai 2014, 23:07:36
Zitat von: timo74 am 18 Mai 2014, 18:50:51
1. könnte man mit dem Modul von Klaus auch Eingänge falls die Interrupt-Ausgänge der 23017's nicht auf die GPIO-Ports des RPI geschaltet sind? Auf der Händler-Homepage ist es nicht ersichtlich und ich könnte mir vorstellen, dass bei 8x 23017 ja immerhin 16 Interrupt-Leitungen irgendwo aufzulegen wären.
Der Interrupt ist natürlich nur nutzbar, wenn er auch an einen GPIO angeschlossen wird. Er kann als Open Collector betrieben werden...d. h. Du kannst alle 16 Interrupt pins einfach verbinden und auf einen GPIO legen. Mit ruhiger Hand und Lötkolben lässt sich das auch problemlos nachrüsten 8).
Alternativ kannst Du mit dem Attribut poll_intervall zyklisch den Pinstatus abfragen. Was willst Du denn anschließen? Tastenabfragen kannst Du so nicht sinnvoll realisieren.

Zitat von: linusd am 18 Mai 2014, 20:54:12
Bei diesem Preis würde ich auch überlegen, oder der Einsatz eines Arduino in Verbindung mit einem Ethernetmodul nicht auch zum Ziel führt.
Der kann dann auch mit fhem angesteuert und ausgelesen werden.

-Vorteil ist hierbei, dass auch analoge Signale verarbeitet werden können.
-Nachteil ist das fehlen eines Interrupts zum fhem.

Vielleicht lässt sich der Interrupt auch dem Ardunio beibringen. Alternativ dazu kann man das Netzer Modul mit Inzerrupt nutzen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: timo74 am 22 Mai 2014, 11:09:31
Zitat von: linusd am 18 Mai 2014, 20:54:12
Hallo timo74,

da das von willibauss angesprochene Modul die Pins des RPI zur weiteren Verwendung bereitstellt
und ich in der Beschreibung von den Interrupts nichts gesehen habe, würde ich vermuten das diese auch nicht verdrahtet sind.
Vielleicht habe ich es aber auch nur übersehen!

Richtig. Aber die Idee von Klaus, alle INT-Ausgänge auf einen GPIO zu legen, klingt vielversprechend. Ich glaube, man spricht dann von einem maskierten Interrupt, oder?

Zitat von: linusd am 18 Mai 2014, 20:54:12
Sollen wirklich 128 Module in einer relativen Nähe zum RPI betrieben werden?

Ist halt wirklich relativ. :-). Ich plane (ähnlich wie willibaus) einige Reed-Kontakte und Bewegungsmelder anzuschließen. Dazu sollen später mal noch Rolladen-Steuerungen kommen. Alles in allem komme ich auf ca. 20 Eingänge und 40 Ausgänge. Und da etwas Reserven für die "spontanen Ideen an einem Samstag Vormittag" sicherlich nicht schlecht sind, passt das Modul eigentlich optimal.

Viele Grüße
Timo
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: linusd am 22 Mai 2014, 12:10:44
Hi Timo,

was ich meinte ist, ob alle 128 Aktoren/Sensoren auf einer Etage liegen.
Wenn die sich über mehere Etage erstrecken, könnte man sich entwender mit dem Arduino (inkl. Netzer) oder einzelnen RPI's (inkl. FHEM2FHEM) einen dicken Kabelbnaum sparen.  ;)

Eine slebst gelötete Lösung mit dem MCP23017 in der Nähe der Aktoren/Sensoren könnte ebenfalls günstiger sein und via I²C die Anzahl der Leitungen zum RPI klein halten.

Ich plane etwas vergleichbares und komme auch auf >40 Geräte, aber über mehrer Etagen.
In der Kosten-Nutzen-Betrachtung habe ich mich für RPI's in den Etagen entschlossen, da ich Netzwerkkabel verlegt habe.

Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: willybauss am 22 Mai 2014, 13:38:18
Bei mir sind es ca. 15 Fensterkontakte (Reedkontakte => Eingänge), sowie eine zentrale Licht- und Rollladensteuerung (Peha PHC), ca. 60 Ausgänge. Da muss ich nur zu jedem Lichtschaltereingang einen Relaiskontakt parallel legen, dann kann ich sämtliche Lichter und Rollläden im Haus schalten.

Dadurch, dass ich mit den Relais nur Lichtschalter-Tastendrücke simuliere, geht weiterhin alles über die Logik der PHC => keine "Datenverwirrung" über unqualifizierte Eingriffe in deren Busprotokoll. Mit dieser Lösung ist dann auch der Zugriff z.B. zum "Panikschalter" möglich, d.h. wenn der Homematic-Rauchmelder Alarm signalisiert, kann die PHC (über FHEM informiert) direkt die Fluchtwege frei schalten (Rollläden hoch und Lichter an).
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: volley am 22 Mai 2014, 23:36:00
@KlausW: Macht es nicht Sinn, die beiden Interrupts A+B per Mirror (Register IOCON (0x0A) , Bit 6=1) zu koppeln, da beim Get sowieso immer beide Ports (A+B) gelesen werden.
Spart eine GPIO Leitung am Raspi pro MCP23017 ohne zusätzliches Löten ;)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: linusd am 23 Mai 2014, 14:19:59
Hallo Willy,

ZitatDa muss ich nur zu jedem Lichtschaltereingang einen Relaiskontakt parallel legen, dann kann ich sämtliche Lichter und Rollläden im Haus schalten.
Liefert Dir die zentrale Licht- und Rollladensteuerung (Peha PHC) den Schaltzustand an den RPI, wenn ein Schalter und nicht das Relais benutzt wurde?

ZitatDadurch, dass ich mit den Relais nur Lichtschalter-Tastendrücke simuliere, geht weiterhin alles über die Logik der PHC => keine "Datenverwirrung" über unqualifizierte Eingriffe in deren Busprotokoll.
Wenn Du kurz vor den Zetrale an die Leitungen gehst ist das I2C 23017 x8 - 128 GPIO Board (http://www.pridopia.co.uk/pi-23017-8-lp.html) sicher eine sher gute Lösung.

ZitatMit dieser Lösung ist dann auch der Zugriff z.B. zum "Panikschalter" möglich, d.h. wenn der Homematic-Rauchmelder Alarm signalisiert, kann die PHC (über FHEM informiert) direkt die Fluchtwege frei schalten (Rollläden hoch und Lichter an).
So etwas in der Art habe ich auch vor, aller Ding mit dem RPI und FHEM. 8)

Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 23 Mai 2014, 18:36:20
Zitat von: volley am 22 Mai 2014, 23:36:00
@KlausW: Macht es nicht Sinn, die beiden Interrupts A+B per Mirror (Register IOCON (0x0A) , Bit 6=1) zu koppeln, da beim Get sowieso immer beide Ports (A+B) gelesen werden.
Spart eine GPIO Leitung am Raspi pro MCP23017 ohne zusätzliches Löten ;)
es macht vieles Sinn  8)

ich habe es mal eingebaut ...hoffe es funktioniert

die aktuelle Version ist jetzt im SVN und wird morgen per Update offiziell verteilt
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: willybauss am 23 Mai 2014, 19:32:07
Zitat von: linusd am 23 Mai 2014, 14:19:59
Hallo Willy,
Liefert Dir die zentrale Licht- und Rollladensteuerung (Peha PHC) den Schaltzustand an den RPI, wenn ein Schalter und nicht das Relais benutzt wurde?
Nein, dazu müsste ich tatsächlich den PHC-Bus "anzapfen". Aber das ist für meine Zwecke nicht soooo wichtig. Mir genügt im Prinzip die Panikschaltung - alle Lichter an, oder die "Alles-Aus" Funktion. Danach ist der Zustand ja klar.
Vielleicht baut ja mal Jemand ein PHC-Modul für FHEM - wundert mich ohnehin, dass es das noch nicht gibt.
Zitat von: linusd am 23 Mai 2014, 14:19:59
Wenn Du kurz vor den Zetrale an die Leitungen gehst ist das I2C 23017 x8 - 128 GPIO Board (http://www.pridopia.co.uk/pi-23017-8-lp.html) sicher eine sher gute Lösung.
Meinst Du das hier  ;) ?
Zitat von: willybauss am 15 Mai 2014, 22:51:02
Hallo,


ich verfolge euer Projekt seit einiger Zeit, da ich demnächst was ähnliches brauchen könnte. Wird dieses fhem-Modul denn mit den 128 Ports dieser IO-Karte (http://www.pridopia.co.uk/pi-23017-8-lp.html) zurecht kommen? Wenn ja, dann wäre es genau das, was ich brauche, um meine Fensterkontakte zu kontrollieren und Lichter und Rollläden zu steuern.

Gruß

Willy
Zitat von: linusd am 23 Mai 2014, 14:19:59
So etwas in der Art habe ich auch vor, aller Ding mit dem RPI und FHEM. 8)
[confused]
Ich nehme ja auch den RPI und FHEM. Aber allein damit schaltet sich kein Licht und kein Rollladen. Da braucht es schon noch irgendwelche Aktoren - bei mir halt PHC.
[/confused]
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: linusd am 25 Mai 2014, 18:27:43
ZitatIch nehme ja auch den RPI und FHEM. Aber allein damit schaltet sich kein Licht und kein Rollladen. Da braucht es schon noch irgendwelche Aktoren - bei mir halt PHC.
Nun.. , ich denke das man diese Erkenntins bei Nutzern von FHEM voraussetzten kann! ;)

ZitatDadurch, dass ich mit den Relais nur Lichtschalter-Tastendrücke simuliere, geht weiterhin alles über die Logik der PHC => keine "Datenverwirrung" über unqualifizierte Eingriffe in deren Busprotokoll.
Auf Grund dieser Aussage bin ich davon ausgegangen, dass Du eine entsprechende zentrale Regelung im Einsatz hast und RPI (ink.l FHEM) nur als eine Erweiterung/Fernsteuerung betrachtest.

ZitatMeinst Du das hier  ;) ?
Ich wollte Dir nicht den Eindruck vermittel, dass ich Dein vorgestelltes Modul als meine Idee verkaufe.

(Daher würde ich vorschlagen, dass wir uns in diesem Thread lieber wieder auf das Modul vom Klaus konzentrieren)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: thobastian am 26 Mai 2014, 15:17:42
Hallo !
wie schaut es mit dem MPC23S17 aus ? Ich bin relativ neu hier auf FHEM und habe das Gefühl, dass der mpc23s17 nicht einbindbar ist, oder?
Er wird über SPI angesteuert. Ist der nicht zum I2C ähnlich?

Schöne Grüße
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 27 Mai 2014, 14:40:03
Zitat von: thobastian am 26 Mai 2014, 15:17:42
wie schaut es mit dem MPC23S17 aus ? Ich bin relativ neu hier auf FHEM und habe das Gefühl, dass der mpc23s17 nicht einbindbar ist, oder?
Er wird über SPI angesteuert. Ist der nicht zum I2C ähnlich?
Sind zwar beides serielle Schnittstellen, aber nicht kompatibel. I2C hat eine bidirektionale Datenleitung und SPI 2 unidirektionale.
Allerdings sind die Registeradressen identisch. Alles was du machen musst, ist ein Modul schreiben das analog zum 00_RPII2C.pm arbeitet.
Dann kannst Du mit diesem Modul auch die SPI Variante ansteuern.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: linusd am 27 Mai 2014, 22:14:23
Hallo zusammen,

auf Basis des aktuellen Moduls, dass ich mir eben mit "update" geholt habe,  konnte ich meine (Beispiel-)Testkonfiguration erheblich optimieren.
Hierzu einen Dank an Klaus (neben dem Modul selbst) für den Tipp <readingsProxy> zu verwenden, aber auch an volley für seinen Vorschlag der zum Attribut <InterruptOut>
führte!  8)

Diese (Beispiel-)Konfiguration stelle ich Euch gerne nachstehend zur Verfügung:
Zur Erläuterung:

Nur zum Test hatte ich (ganz bewusst) die Ein- und Ausgänge über die Bänke A und B verteilt. ;)
(Logik habe ich keine eingebaut, da ich nur zeigen möchte wie auf Ein- und Ausgänge zugegriffen werden kann.) 8)


###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,A1,A2,A3,A6,A7,B0,B7
attr icMCP23017 InterruptOut connected_active-low
attr icMCP23017 OnStartup A5=on,B1=off
attr icMCP23017 OutputPorts A4,A5,B1,B2,B3,B4,B5,B6
attr icMCP23017 Pullup A0,A1,A2,A3,A6,A7,B0,B7
attr icMCP23017 invert_input A1,A2,A7,B0
attr icMCP23017 group MCP23017

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

###Sensoren (Input)####

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

define prxPortA1 readingsProxy icMCP23017:PortA1
attr prxPortA1 group InputPorts
attr prxPortA1 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA2 readingsProxy icMCP23017:PortA2
attr prxPortA2 group InputPorts
attr prxPortA2 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA3 readingsProxy icMCP23017:PortA3
attr prxPortA3 group InputPorts
attr prxPortA3 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA6 readingsProxy icMCP23017:PortA6
attr prxPortA6 group InputPorts
attr prxPortA6 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA7 readingsProxy icMCP23017:PortA7
attr prxPortA7 group InputPorts
attr prxPortA7 valueFn {($VALUE eq "on")?"off":"on"}

#--Bank-B--#

define prxPortB0 readingsProxy icMCP23017:PortB0
attr prxPortB0 group InputPorts
attr prxPortB0 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB7 readingsProxy icMCP23017:PortB7
attr prxPortB7 group InputPorts
attr prxPortB7 valueFn {($VALUE eq "on")?"off":"on"}


####Aktoren (Output)####
#---A-Kanal-----

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

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

#---B-Kanal-----

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

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

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

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

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

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


Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: thobastian am 28 Mai 2014, 16:10:31
Zitat von: klausw am 27 Mai 2014, 14:40:03
Sind zwar beides serielle Schnittstellen, aber nicht kompatibel. I2C hat eine bidirektionale Datenleitung und SPI 2 unidirektionale.
Allerdings sind die Registeradressen identisch. Alles was du machen musst, ist ein Modul schreiben das analog zum 00_RPII2C.pm arbeitet.
Dann kannst Du mit diesem Modul auch die SPI Variante ansteuern.
Ich habe mir Dein Modul angeschaut. Keine Chance. Das ist für mich viel zu schwierig. Gibt es hier nicht jemand, der daran interessiert ist ? Ich frage deshalb, weil mich das Konzept von FHEM überzeugt hat. Ich würde gerne eine FHEM Installation aufsetzen.Nur dazu benötige ich ein Modul für den SPI.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 28 Mai 2014, 17:26:35
Zitat von: thobastian am 28 Mai 2014, 16:10:31
Ich habe mir Dein Modul angeschaut. Keine Chance. Das ist für mich viel zu schwierig. Gibt es hier nicht jemand, der daran interessiert ist ? Ich frage deshalb, weil mich das Konzept von FHEM überzeugt hat. Ich würde gerne eine FHEM Installation aufsetzen.Nur dazu benötige ich ein Modul für den SPI.
Die einfachste Lösung wäre, den MPC23S17 durch einen MPC23017 zu ersetzen ;)
Dann noch die Steuerleitungen anpassen und fertig. Ist halt ein bisschen Lötarbeit.

In Perl kommt man, besonders durch die Hilfe hier im Forum recht schnell rein (ich habe auch erst vor nem halben Jahr damit angefangen)
Das Modul umzustricken ist das kleinste Problem. Du musst ja nur den Hardwareteil ändern. Das ist nicht viel.
Das größere Problem ist es, eine passende Perl Bibliothek für den SPI Zugriff zu finden.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 30 Mai 2014, 19:58:21
Hallo Klaus,
nur mal ne Frage, kann es sein, dass mit dem Befehl "Active_low" bzw. "Active-low" was gemacht wurde?

Gibt da immer ne Fehlermeldung raus, habe den Text jetzt umbenannt, war allerdings vorher nicht so.
Bei Gelegenheit sonst bitte wieder zurückändern.


Komischerweise lief es auf einmal wieder, wie es vorher auch war, keine Ahnung was das jetzt war, habe von "_" auf "-" geändert, und dann wieder auf "_" zurück, und jetzt funktioniert es wieder  :o

Gruß
Chris
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 31 Mai 2014, 01:20:22
Hallo Chris,

Zitat von: IPPhoner2b am 30 Mai 2014, 19:58:21
nur mal ne Frage, kann es sein, dass mit dem Befehl "Active_low" bzw. "Active-low" was gemacht wurde?

Gibt da immer ne Fehlermeldung raus, habe den Text jetzt umbenannt, war allerdings vorher nicht so.
Bei Gelegenheit sonst bitte wieder zurückändern.


Komischerweise lief es auf einmal wieder, wie es vorher auch war, keine Ahnung was das jetzt war, habe von "_" auf "-" geändert, und dann wieder auf "_" zurück, und jetzt funktioniert es wieder  :o
Active_low heisst inzwischen invert_input. Hatte ich vergessen hier zu schreiben, aber im Commandref sollte es stimmen. Active_low war irreführend, da nur Input Pins invertiert werden können.

Grüße
Klaus
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 31 Mai 2014, 08:30:52
Zitat von: klausw am 31 Mai 2014, 01:20:22
Hallo Chris,
Active_low heisst inzwischen invert_input. Hatte ich vergessen hier zu schreiben, aber im Commandref sollte es stimmen. Active_low war irreführend, da nur Input Pins invertiert werden können.

Grüße
Klaus

Das hatte ich bei LinusD in seinem Script gesehen, und in der Hilfe wurde es auch angezeigt, wusste nur nicht, dass auch die Ausgänge umgedreht werden, und habe mich gewundert, warum meine Ausgänge als off gekennzeichnet sind, die LEDs aber brennen.  :o

Aber vielen Dank dafür.

Gruß Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: linusd am 31 Mai 2014, 14:10:15
Hi Christian,

Zitatdass auch die Ausgänge umgedreht werden, und habe mich gewundert, warum meine Ausgänge als off gekennzeichnet sind, die LEDs aber brennen.
Ich habe die Beschreibung meines Eintrags entsprechend ausformuliert. (Die Erklärung war hier wirklich etwas dünn)    ::)

ZitatOutput: Ein 8 Kanal Relais ist an den Ports A4, A5 und B1-B7 angeschlossen, deren Schaltzustände am jeweiligen <readingsProxy> invertiert werden müssen.
(Ein Invertierung des MCP23017-Ausgangsignals, wie zum Beispiel beim Input mit <invert_input>, ist nicht möglich. Somit hat ein aktiviertes Relais "LED=on" im Reading des Moduls den Zustand "off" )

Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 01 Juni 2014, 11:23:30
Hi Christian,

also heißt das für mich, dass ich so ohne weiteres keine Chance habe, das mit die ausgeschalteten Ausgänge auch als "off" angezeigt werden? Finde das nämlich etwas verwirrend, und wenn ich mir vorstelle, ich soll meinen Eltern (das soll hinterher bei meinen Eltern zur Rolladensteuerung eingebaut werden) erklären, "off" ist "an", dann kannst du dir das passende Gesicht wohl vorstellen  :o ;D

Habe aber noch eine Frage zu deinem Script, bzw. eine Anpassung an meine Bedürfnisse:
Wenn ich bei dir jetzt einen Ausgang (z.B. A0) anschalte, wie müsste es geschrieben sein, dass vorher z.B. Ausgang A1 ausgeschaltet wird, und am besten zwischen den Schaltvorgängen noch eine Verzögerung von 0,5 sek ist, damit ich beim Rolladenmotor nicht aus versehen auf beide Seite die Phase lege.

Wenn das Wetter mal wieder schlechter wird, muss ich mich echt mal mehr mit befassen, wollte das eigentlich schon lange drin haben, aber momentan können die noch alles per Schalter bedienen, dann ist es nicht ganz so schlimm.

Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 01 Juni 2014, 12:11:51
Zitat von: IPPhoner2b am 01 Juni 2014, 11:23:30
also heißt das für mich, dass ich so ohne weiteres keine Chance habe, das mit die ausgeschalteten Ausgänge auch als "off" angezeigt werden? Finde das nämlich etwas verwirrend, und wenn ich mir vorstelle, ich soll meinen Eltern (das soll hinterher bei meinen Eltern zur Rolladensteuerung eingebaut werden) erklären, "off" ist "an", dann kannst du dir das passende Gesicht wohl vorstellen  :o ;D
Da würde ich readingsproxy verwenden. Dort kannst Du auch "auf" und "zu" oder was auch immer verwenden.

Zitat von: IPPhoner2b am 01 Juni 2014, 11:23:30
Habe aber noch eine Frage zu deinem Script, bzw. eine Anpassung an meine Bedürfnisse:
Wenn ich bei dir jetzt einen Ausgang (z.B. A0) anschalte, wie müsste es geschrieben sein, dass vorher z.B. Ausgang A1 ausgeschaltet wird, und am besten zwischen den Schaltvorgängen noch eine Verzögerung von 0,5 sek ist, damit ich beim Rolladenmotor nicht aus versehen auf beide Seite die Phase lege.
Eine Hardwareverriegelung wäre da am besten. Im Fehlerfall gibt der Motor sonst eventuell Rauchzeichen von sich.
Z.B. könntest Du ein Relais mit Wechselkontakt nehmen und damit die Richtung schalten und mit einem zweiten Relais bestromst du das ganze einfach.
So ein Konstrukt sollte auch mit readings Proxy gehen oder auch mit einem Dummy

Grüße
Klaus
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: willybauss am 03 Juni 2014, 11:02:50
Zitat von: IPPhoner2b am 01 Juni 2014, 11:23:30
Wenn ich bei dir jetzt einen Ausgang (z.B. A0) anschalte, wie müsste es geschrieben sein, dass vorher z.B. Ausgang A1 ausgeschaltet wird, und am besten zwischen den Schaltvorgängen noch eine Verzögerung von 0,5 sek ist, damit ich beim Rolladenmotor nicht aus versehen auf beide Seite die Phase lege.
Beidseitig Phase am Motor sollte nicht schlimmer sein als beidseitig Null. Er hat dann halt keine Spannung und tut nichts. Viel schlimmer ist, dass in diesem Fall wohl auch eine Direktverbindung von Phase zu Null zustande kommen kann, ohne den Motor dazwischen. Ich habe deshalb eine "richtige" Rollladensteuerung dazwischen, die die Verriegelung incl. Zeitverzögerung automatisch vornimmt.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 03 Juni 2014, 15:23:40
Zitat von: willybauss am 03 Juni 2014, 11:02:50
Beidseitig Phase am Motor sollte nicht schlimmer sein als beidseitig Null. Er hat dann halt keine Spannung und tut nichts. Viel schlimmer ist, dass in diesem Fall wohl auch eine Direktverbindung von Phase zu Null zustande kommen kann, ohne den Motor dazwischen. Ich habe deshalb eine "richtige" Rollladensteuerung dazwischen, die die Verriegelung incl. Zeitverzögerung automatisch vornimmt.
Ein Wechselspannungsmotor mit 2 Anschüssen? Der fährt dann aber nur in eine Richtung....ist für einen Rolladen ungünstig  8)

Ein Rohrmotor ist üblicherweise als Kondensatormotor ausgeführt. Der N ist fest angeschlossen.
Versorgung und Richtungsauswahl erfolgt dadurch, das an den Anschlussdraht für hoch bzw. runter der L angeschlossen wird.
Über eine im Rohrmotor eingebaute Schaltung (z.B. Relais) wird die Hilfswicklung umgepolt und somit die Richtung eingestellt.
Was passiert, wenn hoch und runter gleichzeitig angeschlossen werden ist schwer zu sagen, kann aber unter Umständen zum Kurzschluss führen. Nicht zum Spaß sind Rolladenschalter gegeneinaner verriegelt. Mache es einfach so (http://doku.canathome.de/software/applikationen-sw/appl_rolladen/anschlussrolladenmotor/).
Zwischen der Richtungsumschaltung sollte eine kurze Pause sein. Ein Motor findet es nicht so toll abrupt die Richtung zu ändern.
Das könntest du mit einem Dummy machen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: thobastian am 06 Juni 2014, 16:53:27
Ich habe mir jetzt den MCP23017 zugelegt also auch die I2C-Variante.

Soweit ist alles bei mir angeschlossen und und fkt. über Python. 
Aber wie bekomm ich das nun mit FHEM hin ? Wohin mit dem Modul 52_I2C_MCP23017.PM  ?
und welche Konfigs muss ich machen, damit einfach mal eine Lampe leuchtet oder ein Schalter erkannt wird?

Gruß
Thomas
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 06 Juni 2014, 17:34:36
Zitat von: thobastian am 06 Juni 2014, 16:53:27
Ich habe mir jetzt den MCP23017 zugelegt also auch die I2C-Variante.

Soweit ist alles bei mir angeschlossen und und fkt. über Python. 
Aber wie bekomm ich das nun mit FHEM hin ? Wohin mit dem Modul 52_I2C_MCP23017.PM  ?
und welche Konfigs muss ich machen, damit einfach mal eine Lampe leuchtet oder ein Schalter erkannt wird?
Schau doch mal in die commandref, da findest du alles. Hier im Thread eine Seite zurück gibt es eine Beispielkonfiguration.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: thobastian am 06 Juni 2014, 23:45:10
Ich glaub, mit der config habe ich kapiert, aber wohin mit dem Modul ?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 07 Juni 2014, 00:16:33
Das solltest Du schon haben...wird bei einem ausführen von "update" in FHEM mit installiert. Aber das hast Du sicher schon gemacht, da sonst das Modul auch nicht in der commandref auftauchen würde.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 27 Juli 2014, 19:06:09
Zitat von: gnusmas am 27 Juli 2014, 01:10:14
Hallo ,
ich versuche gerade das Modul 52_I2C_MCP23017 einzubinden.
Bekomme jedoch im Log folgende Fehlermeldung:

sind die Module aktuell?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: gnusmas am 27 Juli 2014, 20:53:05
... vor einer Woche neu installiert v5.5 auf Raspberry. Ich fange gerade mit FHEM neu an.
Sollte also alles auf dem neuesten Stand sein.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 27 Juli 2014, 21:18:27
Naja, wenn Du nach der Installation auch ein Update gemacht hast dann ja.
Die Installation von Fhem selbst hat nicht den neusten Stand.
Gib einfach mal Update oben im Eingabefeld von Fhem ein.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: gnusmas am 27 Juli 2014, 22:52:04
Update? Nein?!?! Aber jetzt gemacht. Super, funktioniert. Vielen Dank
Jürgen
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: hollyghost am 01 September 2014, 22:59:06
Hallo Klaus,
ich spiele hier gerade mit deinem Modul für den Portextendeder und habe auch den Ursprungs-Thread zur Pin-Ansteuerung verfolgt.
Für meine Tastererkennung würde ich gern das Portextender Modul verwenden, bräuchte allerdings auch eine 'Longpress'-Erkennenung.
Wenn ich das richtig verstanden habe (beim GPIO-Modul), startest du nach dem Erkennen einer Flanke einen Timer und überprüfst den Pinzustand nachdem der Timer abgelaufen ist - ist der Taster noch immer gedrückt, geht Longpress auf 'on'.
Siehst du eine Chance ein Longpress-reading auch für die Input-Pins beim Portextender anzulegen oder würde dadurch das 'System' zu stark belastet werden?
Grüße
Holger
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 02 September 2014, 08:13:17
Hallo Holger,
das System ist nicht das Problem.
Aber I2C unterstützt keinen Interrupt. Daher lässt sich ein longpress nicht einbauen.
Du könntest aber eine GPIO vom Raspberry als Interrupt Eingang nutzen und da über einen notify einen Timer ablaufen lassen, der nach 2s ein Reading longpress setz,t bzw. löscht wenn der Pin wieder auf low geht.

Grüße
Klaus
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: hollyghost am 02 September 2014, 08:33:23
Hallo Klaus,
I2C per se ist natürlich nicht Interrupt fähig, der Chip schon & diesen nutze ich auch - wer will schon Pollen :)
Du siehst also kein Problem, wenn im worst case 16 Timer angestoßen werden?
Gruß Holger
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 02 September 2014, 08:45:32
Zitat von: hollyghost am 02 September 2014, 08:33:23
Hallo Klaus,
I2C per se ist natürlich nicht Interrupt fähig, der Chip schon & diesen nutze ich auch - wer will schon Pollen :)
Du siehst also kein Problem, wenn im worst case 16 Timer angestoßen werden?
Gruß Holger
Oh je, willst du Klavier spielen ::)
Sollte funktionieren... Einfach mal probieren. Wenn Du den Interrupt schon nutzt ist es ja kein Riesenaufwand.
Kannst das Ergebnis gern hier posten.
Der Eine oder andere freut sich bestimmt
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: hollyghost am 23 September 2014, 15:43:41
Hallo Klaus,
ich bin dir ja noch ne Antwort schuldig  ;)
Nein, Klavierspielen will ich nicht (wer will das schon auf nur 16 Tasten  ;D )
Ich möchte darüber Rollläden steuern. Deshalb benötige ich den kurzen und langen Tastendruck.
Kurzer Tastendruck - Rollladen fährt bis zur jeweiligen Endposition (wenn er nicht zwischendurch durch einen weiteren Tastendruck angehalten bzw. in die entgegengesetzte Richtung geschickt wird)
Langer Tastendruck - Rollladen fährt in Richtung der jeweiligen Endposition, solange bis die Taste losgelassen wird.
Umgesetzt habe ich das jetzt analog deinem Vorschlag, mit nem dummy, der 2Sekunden nach einem Tastendruck durch ein 'at' gesetzt wird (longPressTimer). Sollte die Taste innerhalb dieser zwei Sekunden losgelassen werden, wird der Timer einfach gelöscht.
Bei der Konfiguration hab ich mich stark an die Einstellungen von Christian (linusd) aus Post #40 in diesem Thread gehalten. Eine Ergänzung musste ich bei den ReadingProxies machen: das Attribut 'event-on-change-reading' musste ich für 'state' aktivieren – da die Eingangspins des MCP23017 ja bei jedem beschreiben der Ausgangspins erneut eingelesen werden. Mein Notify sollte aber nur getriggert werden, wenn sie der Zustand der Pins verändert hat.
Den zweiten Timer (reTriggerTimer) verwende ich für folgendes Szenario: Wenn während einer laufenden Fahrt eine Taste gedrückt wird, wird der Rollladen zunächst gestoppt. Wird die Taste nun gedrückt gehalten, setzt sich der Rollladen in Richtung der jeweiligen Endposition in Bewegung. Klassischer Fall, Umkehrung der Laufrichtung, wenn die Automatik den Rollladen auffährt, der Nutzer aber gerne noch im dunkeln bleiben möchte  ;)
Vielleicht kann ja jemand was damit anfangen:


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

###MCP23017-0x20###
define MCP23017_20 I2C_MCP23017 0x20
attr MCP23017_20 IODev i2cBus
attr MCP23017_20 Interrupt A3,A4
attr MCP23017_20 InterruptOut connected_active-low
attr MCP23017_20 group MCP23017
attr MCP23017_20 invert_input A3,A4

###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 MCP23017_20")}

###Sensoren (Input)####

#--Bank-A--#
define tastGwcUp readingsProxy MCP23017_20:PortA3
attr tastGwcUp group InputPorts
#Events nur senden, wenn sich der Status geändert hat
attr tastGwcUp event-on-change-reading state
attr tastGwcUp valueFn {($VALUE eq "on")?"Up":"Off"}

define tastGwcDown readingsProxy MCP23017_20:PortA4
attr tastGwcDown event-on-change-reading state
attr tastGwcDown group InputPorts
attr tastGwcDown valueFn {($VALUE eq "on")?"Down":"Off"}

#--Longpress Dummy--
define gwc_Longpress dummy
attr gwc_Longpress room Rollo

#--Notify Test--
define gwc_UpOn notify tastGwcUp:Up {\
fhem "set gwc_Longpress no";;\
if(ReadingsVal("gwc_rollladen","locked",1)){\
fhem ("set gwc_rollladen stop;;define gwc_reTriggerTimer at +00:00:02 trigger tastGwcUp Up");;\
}else{\
fhem ("set gwc_rollladen 1;;define gwc_longPressTimer at +00:00:02 set gwc_Longpress yes");;\
}\
}

define gwc_UpOff notify tastGwcUp:Off {\
if(defined $defs{gwc_reTriggerTimer}) {fhem "delete gwc_reTriggerTimer"};;\
if(defined $defs{gwc_longPressTimer}) {fhem "delete gwc_longPressTimer"};;\
if (Value("gwc_Longpress") eq "yes") {fhem "set gwc_rollladen stop"};;\
Log 3, "gwc Longpress-Status: ".Value("gwc_Longpress");;\
}
define gwc_DownOn notify tastGwcDown:Down {\
fhem "set gwc_Longpress no";;\
if(ReadingsVal("gwc_rollladen","locked",1)){\
fhem ("set gwc_rollladen stop;;define gwc_reTriggerTimer at +00:00:02 trigger tastGwcDown Down");;\
}else{\
fhem ("set gwc_rollladen 100;;define gwc_longPressTimer at +00:00:02 set gwc_Longpress yes");;\
}\
}

define gwc_DownOff notify tastGwcDown:Off {\
if(defined $defs{gwc_reTriggerTimer}) {fhem "delete gwc_reTriggerTimer"};;\
if(defined $defs{gwc_longPressTimer}) {fhem "delete gwc_longPressTimer"};;\
if (Value("gwc_Longpress") eq "yes") {fhem "set gwc_rollladen stop"};;\
Log 3, "gwc Longpress-Status: ".Value("gwc_Longpress");;\
}

Grüße
Holger
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: PiUser am 11 Oktober 2014, 16:23:03
Hallo,

Ich bin gerade auch dabei in Projekt mit fhem und zwei MCP23017 zu realisieren. Einer dieser Bausteine ist als Eingang für Taster vorgesehen, der andere als Ausgang für Relais.
Dank klausw ist ja eine Anbindung an den MCP möglich.

Ich habe die Programmierung ähnlich des Post40 vorgenommen, d.h. mit ReadingProxys gearbeitet.
Soweit funktioniert auch alles, ABER:
Während des "bootens" von FHEM schalten alle Relais - durch ein "shutdown restart" zu 100% reproduzierbar.
Dies ist im Moment ein absoluter Showstopper.

Kann mir jemand sagen was ich falsch mache? Oder ist das so gewollt?

Und noch eine Frage habe an klausw:
Wenn ich mehrere Ausgänge gleichzeitig schalten möchte, hattest Du ja extra eine Funktion vorgesehen, der man verschiedene Ports gleichzeitig übergeben kann.
leider werden diese sequentiell geschaltet.
Im Prinzip müsste das aber auch richtig gleichzeitig gehen. Könntest Du die Funktion entsprechend ändern? Das wäre echt toll.


Vielen Dank schon mal für die Rückmeldungen!
PiUser
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 13 Oktober 2014, 13:07:40
Zitat von: PiUser am 11 Oktober 2014, 16:23:03
Ich habe die Programmierung ähnlich des Post40 vorgenommen, d.h. mit ReadingProxys gearbeitet.
Soweit funktioniert auch alles, ABER:
Während des "bootens" von FHEM schalten alle Relais - durch ein "shutdown restart" zu 100% reproduzierbar.
Dies ist im Moment ein absoluter Showstopper.

Kann mir jemand sagen was ich falsch mache? Oder ist das so gewollt?
Gewollt ist das nicht. Vielleicht ist es bisher keinem aufgefallen.
OnStartup ist auf last gestellt?

Bei Neu- und Restart setze ich alle Register im MCP in dieser Reihenfolge neu:

Es ist möglich, das diese Reihenfolge verändert werden muss.
Dazu müsste die ganze Prozedur händisch (z.B. von Dir ;)) über i2cwrite getestet werden.
Ich habe keinen MCP23017 und kann es daher nicht testen.

Zitat von: PiUser am 11 Oktober 2014, 16:23:03
Und noch eine Frage habe an klausw:
Wenn ich mehrere Ausgänge gleichzeitig schalten möchte, hattest Du ja extra eine Funktion vorgesehen, der man verschiedene Ports gleichzeitig übergeben kann.
leider werden diese sequentiell geschaltet.
Im Prinzip müsste das aber auch richtig gleichzeitig gehen. Könntest Du die Funktion entsprechend ändern? Das wäre echt toll.
Nur, das wir nicht aneinader vorbei reden.
Der MCP hat 2 Ports zu je 8 Bit.
Ein Port wird am Stück gesetzt.
Port A und B werden in der Tat sequentiell gesetzt, was daran liegt, das es 2 verschiedene Register sind.
set mod1 PortA2,PortA4,PortB6 off beispielsweise setzt A2 und A4 gleichzeitig und direkt danach B6
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: PiUser am 17 Oktober 2014, 17:24:18
Hallo,

ich konnte jetzt noch mal intensive Tests durchführen.
Die Ergebnisse sind kurz zusammengefasst:

Es funktioniert alles so, wie von klausw beschrieben. Auf der Seite ist also kein Problem feststellbar.
Bei den gleichzeitigen Ports hatte ich tatsächlich übersehen, dass es ich A und B Ports verwende, daher das serielle Schalten.

Ich konnte mein Problem jetzt auf folgendes einkreisen - aber kurz noch mal zu meinem Aufbau:
Ich nutze:
1. Mehrere Dummy-Schalter, die auf der FHEM -Oberfläche als Schalter zu sehen und anklickbar sind.
2. Mehrere readingProxy auf einen MCP23017 (als Eingang initialisiert), die per Notifier einen 'Off' Zustand eines echten Schalters melden und daraufhin die Schalter von 1. schalten. Dadurch wird erreicht, dass beim Loslassen des Hardware-Schalters das gleiche ausgeführt wird, als wenn ich im web klicke. Ich nehme extra den Off-state, damit ich noch messen kann, wielange ein Schalter gedrückt wurde.
3. Mehrere readingProxys auf einem anderen MCP, der als Output definiert ist.

Im laufenden Betrieb funktioniert auch alles wie gewünscht: Egal ob per Web-Oberfläche oder über den echten Schalter (via MCP23017) werden die richtigen Funktionen ausgeführt (d.h. die richtigen Outputs geschaltet).

Die Krux ist jetzt beim Booten:
Der Notifier der ReadingProxy unter 2. melden während der Initialisierung den off-State, schalten daraufhin den dummy-Schalter unter 1., welcher dann (richtigerweise) die Outputs aktiviert.

Die Frage ist nun:
Wie kann ich verhindern, dass der Notifier unter 2. während des Bootens den off-state meldet?

Vielen Dank und viele Grüße
PiUser
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 17 Oktober 2014, 22:59:19
Zitat von: PiUser am 17 Oktober 2014, 17:24:18
Die Krux ist jetzt beim Booten:
Der Notifier der ReadingProxy unter 2. melden während der Initialisierung den off-State, schalten daraufhin den dummy-Schalter unter 1., welcher dann (richtigerweise) die Outputs aktiviert.

Die Frage ist nun:
Wie kann ich verhindern, dass der Notifier unter 2. während des Bootens den off-state meldet?
Die ReadingProxy unter 2. melden den Off state, obwohl der Portpin vom MCP high ist?

Was du versuchen kannst, ist zu schauen, ob Du im notify von 2 nicht schauen kannst, ob der ReadingProxy vorher on war, und nur dann den Dummy schaltest.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: PiUser am 19 Oktober 2014, 10:10:43
Hallo,

ich glaube ich konnte das Problem mit Hilfe des Codes von hollyghost lösen:

Ich habe das Attribut "event-on-change-reading state" dem readingProxy hinzugefügt. Jetzt scheint es so zu laufen.

Vielen Dank zunächst einmal
PiUser
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 02 November 2014, 14:19:16
Hallo zusammen,

ich habe jetzt eine ganze Zeit lang das Projekt auf Eis gelegt, weil es zum Glück noch nicht ganz dringend ist.
Jetzt wollte ich so langsam wieder damit anfangen, und das Script von "hollyghost" sieht auch schon sehr interessant aus.

Da habe ich eine Frage, wenn ich einen Schalter für die Rolläden benutze, und diesen Schalter dauerhaft auf "hochfahren" stehen lasse, wie müsste dann der Code geschrieben werden, dass, wenn dieser Eingang gesetzt ist, dass in dem Fall das Rollo auch nicht geschaltet wird?

Also dieser Fall wäre eben für die Terassentür, dass im Sommer halt eben, wenn man länger draußen sitzt, der Schalter einfach in Hochfahrstellung eingerastet wird, und dadurch das absenken des Rollos verhindert wird.

Über eine Hilfe wäre ich sehr dankbar. muss mir im Urlaub mal endlich die Zeit nehmen, mich damit wieder zu beschäftigen, aber vielen Dank an alle und vor allem an KlausW mit seiner super Arbeit hier  :D :D

Gruß
Christian
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 03 November 2014, 12:44:57
Zitat von: IPPhoner2b am 02 November 2014, 14:19:16
Also dieser Fall wäre eben für die Terassentür, dass im Sommer halt eben, wenn man länger draußen sitzt, der Schalter einfach in Hochfahrstellung eingerastet wird, und dadurch das absenken des Rollos verhindert wird.

Vermutlich möchtest Du durch den Schalter in Hochfahrstellung, ein schließen der Rolläden per Zeitschaltuhr verhindern. Richtig?
Ich diesem Fall kannst du im notify der Zeiteinstellung die Schalterstellung abfragen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 03 November 2014, 18:58:48
Hallo Klaus,

Genau das habe ich gemeint *g*

Jetzt muss ich nur noch verstehen, wie ich das ganze programmieren muss ...

Aber ich denke, es gibt schon hier und da genug Nutzer, die so etwas in der Art zustande gebracht haben.

Da ist ja in dem Sinne die rwe Smarthome Geschichte leichter einzustellen, aber ich freue mich schon auf die Fragen, die noch kommen *hihi*

Schonmal besten Dank
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 06 November 2014, 14:28:07
Zitat von: IPPhoner2b am 03 November 2014, 18:58:48
Hallo Klaus,

Genau das habe ich gemeint *g*

Jetzt muss ich nur noch verstehen, wie ich das ganze programmieren muss ...

Aber ich denke, es gibt schon hier und da genug Nutzer, die so etwas in der Art zustande gebracht haben.
Klar doch, schau mal in den Anfängerfragen.
Das muss so in der Art aussehen (fhem.cfg Format...wenn Du direkt im def änderst fallen der Backslash und das zweite Semikolon weg):

define act_on_rolladentimer notify rolladentimer {\
  if ("$EVENT" eq "down") {\
    my $svar = ReadingsVal("Rollladenschalter","state",0);;\
    if ($svar ne "up") {fhem "set Rolladen down";;}\
  }\
}
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 09 November 2014, 12:33:39
Hallo Klaus,

danke für deine Antwort,
bin jetzt mal wieder ein bissl am lesen, habe aber doch eine sehr "banale" Frage (also eigentlich wie immer  :o )

Wenn ich jetzt eine Bank des MCP als Input, und die andere als Output definiere, und davon dann jeweils 2 Ein- und Ausgänge für jeweils ein Rollo brauche, muss ich dass dann jeweils einzeln definieren, oder kann ich den Define Block als ganzes lassen, und kann mir dann die einzelnen Ports irgendwie zuweisen?

So ist es ja momentan
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip
attr mcp_20 Interrupt B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 InterruptOut connected_active-low
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp_20 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 group MCP23017
attr mcp_20 invert_input B0,B1,B2,B3,B4,B5,B6,B7


Oder müsste ich dann z.B.
define kueche-links I2C_MCP23017 0x20
attr kueche-links IODev chip
attr kueche-links Interrupt B0,B1
attr kueche-links InterruptOut connected_active-low
attr kueche-links OutputPorts A0,A1
attr kueche-links Pullup B0,B1
attr kueche-links group kueche-links
attr kueche-links invert_input B0,B1

define kueche-rechts I2C_MCP23017 0x20
attr kueche-rechts IODev chip
attr kueche-rechts Interrupt B2,B3
attr kueche-rechts InterruptOut connected_active-low
attr kueche-rechts OutputPorts A2,A3
attr kueche-rechts Pullup B2,B3
attr kueche-rechts group kueche-rechts
attr kueche-rechts invert_input B2,B3
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 09 November 2014, 12:59:42
Zitat von: IPPhoner2b am 09 November 2014, 12:33:39
Wenn ich jetzt eine Bank des MCP als Input, und die andere als Output definiere, und davon dann jeweils 2 Ein- und Ausgänge für jeweils ein Rollo brauche, muss ich dass dann jeweils einzeln definieren, oder kann ich den Define Block als ganzes lassen, und kann mir dann die einzelnen Ports irgendwie zuweisen?

so wie Du es hast ist es richtig.
Jedes Ic darf nur einmal definiert werden.
Andernfalls überschreibt die letzte Definition alle Vorangegangenen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 09 November 2014, 14:34:55
Alles klar, habe grade mal einen kleinen Versuch gemacht, hat mich aber nicht so wirklich weitergebracht, aber wenigstens habe ich grade ein Erfolgserlebnis gehabt, und dass nur, weil ich mich immer gewundert habe, warum das mit dem Interrupt nicht klappt, und was ist, ich hatte nen falschen Port genommen in meiner Config, habe 12 statt 14 drin stehen gehabt, jedenfalls klappt das jetzt schon mal.

Nur für mich zum richtigen Verständnis,

den Eingang habe ich jetzt,
dann brauche ich einen Dummy, der dem System sagt, Schalter geschaltet,
dann mit dem Dummy (der auch in der Zeitsteuerung drin ist) setze ich den Ausgang ?
Da ich ja 2 Ausgänge pro Rollo brauche habe ich so meine Probleme damit.

Dein Code, der für die Rolladensteuerung mit Schalterüberwachung ist, wie muss der angepasst werden wenn ich folgende Dinge darin abgefragt haben möchte?

- Sonnenauf und Untergangszeit
- jeweils mit Schalterabfrage
- den einen Ausgang erst deaktivieren, und nach ca. 0,5sek den anderen aktivieren (falls das Rollo gerade am fahren ist)
- und der gesetzte Ausgang soll nach ca. 30 sek wieder deaktiviert werden.

Sorry, aber das ist echt einfach viel zu hoch für mich, ich weiß nicht, ob du mir da weiterhelfen kannst, aber nach dem, was ich bisher von dir / euch gelesen habe, ist scheinbar nichts unmöglich *g*


Dein Beispiel
define act_on_rolladentimer notify rolladentimer {\
  if ("$EVENT" eq "down") {\
    my $svar = ReadingsVal("Rollladenschalter","state",0);;\
    if ($svar ne "up") {fhem "set Rolladen down";;}\
  }\
}


Was ich aus nem Beispiel gefunden habe, aber da gehts nur ums fahren, da sind eben keine Abfragen drin.
######### Rollade rauf
define Rollade_K_auf_WE at *08:04 {if ($we) {fhem("set Rollade_K on")}}
define Rollade_K_auf_Woche at *07:00 {if (!$we){fhem("set Rollade_K on")}}

######### Rollade runter
define Rollade_K_ab at *{sunset("HORIZON=-6",300,"17:00","22:00")} set Rollade_K off


Was ich wohl gefunden habe, könnte man so etwas in einer Art dafür einsetzten? Nur anstatt tilted closed open eben die die Variablen Schalter zu und  Uhrzeit zu benutzen?
define nRollo notify WohnDoor.(tilted|closed|open) {
  if($EVENT eq "tilted") {
    if (ReadingsVal("TerrasseRoll", "state", "on") eq "off") {
  fhem ("set TerrasseRoll 15%");
    }
  }
  if($EVENT eq "closed") {
    if (Value("TerrasseRoll") eq "15") {
  fhem ("set TerrasseRoll off");
    }
  }
  if($EVENT eq "open") {
    if (ReadingsVal("TerrasseRoll", "state", "on") eq "off" || Value("TerrasseRoll") eq "15") {
  fhem ("set TerrasseRoll on");
}
  }
}





:EDITh:

Habe grade irgendwie ein kleines Problem beim Neustart, und zwar bleiben meine Ausgänge real gesetzt, obwohl ich bei OnStartup alle auf Off stelle, lt. WebIF sind auch alle aus, nur die LEDs brennen halt noch, gab es da noch einen Trick für?
###MCP23017-0x20###
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip
attr mcp_20 Interrupt B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp_20 InterruptOut connected_active-low
attr mcp_20 group MCP23017
attr mcp_20 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 invert_input B0,B1,B2,B3,B4,B5,B6,B7
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 09 November 2014, 15:07:14
Stelle die Fragen doch bitte im Anfängerforum, oder schau bei Codeschnipsel ob es schon etwas ähnliches gibt.
Hier sollten nur Fragen rein, die den MCP2301 betreffen...

Du könntest in den at definitionen eine if abfrage zur Schalterposition machen und nur, wenn er nicht oben ist den rolladen fahren.
Für die einzelnen Schalter und Rollandenaktoren kannst du readingsproxy oder dummy nutzen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 09 November 2014, 15:08:31
Sorry, alles klar, wollte den Thread nicht vollspammen :),

hast du denn für das editierte Problem mit dem OnStartup eine Lösung  ::)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 09 November 2014, 15:12:04
Zitat von: IPPhoner2b am 09 November 2014, 15:08:31
hast du denn für das editierte Problem mit dem OnStartup eine Lösung  ::)

was passiert denn, wenn Du sie auf on stellst?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 09 November 2014, 15:32:20
Das ist wirklich interessant, wenn ich es auf on stelle klappt es wie gewünscht, aber bei off nicht, da wird im WebIF alles richtig angezeigt, also "AUS" nur die LEDs bleiben an, sobald ich aber einen der Ausgänge anklicke, auch ruhig auf AUS, dann gehen alle AUS
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 09 November 2014, 16:08:39
und jetzt?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 09 November 2014, 16:31:39
Hmm,
irgendwie komisch, jetzt bleiben die LEDs an, dafür wird es jetzt im WebIf richtig angezeigt, also wenn ich 3 anlasse, bleiben die 3 auch an, und wird auch richtig im WebIf angezeigt.

Oder ist hier irgendwo ein Fehler drin?
Das OnStartup habe ich extra 2x drin, dann kann ich es einmal vor der definition als Ausgang, und danach setzen
###MCP23017-0x20###
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip
attr mcp_20 Interrupt B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 InterruptOut connected_active-low
#attr mcp_20 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp_20 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 group MCP23017
attr mcp_20 invert_input B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 09 November 2014, 19:54:29
Nee, das sieht gut aus.
Aber ich habe nicht verstanden was willst du mir damit sagen?

Zitat von: IPPhoner2b am 09 November 2014, 16:31:39
Hmm,
irgendwie komisch, jetzt bleiben die LEDs an, dafür wird es jetzt im WebIf richtig angezeigt, also wenn ich 3 anlasse, bleiben die 3 auch an, und wird auch richtig im WebIf angezeigt.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 09 November 2014, 20:00:32
Was ich versucht habe auszudrücken ist, das obwohl ich bei OnStartup alle Ausgänge ausschalte, bleiben nach einem Neustart jetzt alle Ausgänge gesetzt, wie sie beim ausschalten vorhanden waren.

In deiner originalen Version, also die in FHEM eingebaut ist, wird im WebIf angezeigt, dass alles aus ist, obwohl der Befehl zum Ausschalten scheinbar nicht an den Chip geschickt wurde, und so die LEDs anbleiben.

Wenn ich dann im WebIf also wo alle Ausgänge aus sind, auf irgendeinen zum Aus oder Einschalten klicke, gehen alle aus, bzw der eine bleibt an.

Weiß nicht, wie ich es sonst erklären soll  ::)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 09 November 2014, 20:44:20
jetzt habe auch ich es verstanden :)

was passiert, wenn du sie auf on, oder last stellst?

was ich rausfinden möchte ist, ob es invers ist

funktoniert es ohne invers input?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 09 November 2014, 20:49:38
Bin grade nicht zuhause, aber werde es morgen mal testen.

Allerdings, wenn es invers wäre, dann müssten ja alle an- oder ausgehen, denke ich.
Denke eher, der Befehl an sich wird zwar intern ausgeführt, allerdings nicht als Befehl zum Chip geschickt wird, denn im WebIf wird ja alles auf AUS gesetzt, nur an der Steuerung kommt nichts an.

Bei der von dir heute geposteten Version würde ich sagen, dass der Befehl LAST genommen wurde, weil sie alle so bleiben, wie sie waren... Und es auch genauso im WebIf angezeigt wurde.

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 10 November 2014, 17:51:07
So, hallo Klaus,

also habe grade den Versuch mit "on" gemacht.
Habe 4 auf off und 4 auf on für "onstartup" gesetzt, und diese dann umgekehrt, also um zu sehen, ob die angeschalteten ausgehen, und andersherum. Nach dem neustart brannten dann 8 LEDs, also der "on"-Befehl wird übernommen, nur das off nicht.

Das gleiche gilt scheinbar auch für den Last Befehl, also die LED wird eben einfach nicht angesteuert.

Habe grade erst gedacht, dass das alles mein Fehler war, weil ich immer nur per "shutdown restart" getestet habe, und mir beim Schalter umlegen auffiel, dass die LEDs ja alle ausgehen, aber es ändert sich nichts, habe jetzt alle 8 auf "Off" stehen, aber es verhält sich genauso wie bei "Last", also die 5 die an waren, gehen auch wieder an.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 11 November 2014, 17:15:52
Bevor du die Logs nochmal aufnimmst, teste bitte diese Version:

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 12 November 2014, 20:43:24
hier eine Testversion mit Input Aktualisierung beim Start.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 16 November 2014, 11:33:26
Hallo Klaus,

habe die Version eingespielt, also die Inputs werden scheinbar richtig gesetzt, muss allerdings dazusagen, dass ich vorher damit bis auf dieses eine Mal noch keine Probleme damit hatte, habe jedenfalls nach dem ausschalten die Eingänge gewechselt, und das wurde richtig erkannt.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 16 November 2014, 12:17:37
Zitat von: IPPhoner2b am 16 November 2014, 11:33:26
habe die Version eingespielt, also die Inputs werden scheinbar richtig gesetzt, muss allerdings dazusagen, dass ich vorher damit bis auf dieses eine Mal noch keine Probleme damit hatte, habe jedenfalls nach dem ausschalten die Eingänge gewechselt, und das wurde richtig erkannt.
Naja, bedeutet keine Probleme, das es fubktionierte, oder ist es Dir nur nicht aufgefallen ? 8)
Wie auch immer, wenn Du keine Fehler oder ungereimtheiten entdecken konntest, dann werde ich es hochladen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 16 November 2014, 12:28:24
Sehr gerne, also ich habe nur dieses eine mal komischerweise 3 Eingänge betätigt gehabt, kann aber eigentlich nicht sein, weil ich diese hier am Schreibtisch immer nur mit einem Draht überbrücke  ::) ;D
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 16 November 2014, 12:33:22
Zitat von: IPPhoner2b am 16 November 2014, 12:28:24
Sehr gerne, also ich habe nur dieses eine mal komischerweise 3 Eingänge betätigt gehabt, kann aber eigentlich nicht sein, weil ich diese hier am Schreibtisch immer nur mit einem Draht überbrücke  ::) ;D
Na toll...
Das kommt mir aber seltsam vor. Das die Eingänge gespiegelt sind kann ich mir vorstellen. Aber das komplett falsche Werte zurückgeliefert werden ist komisch.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 16 November 2014, 12:35:00
Siehste, ich bin immer für ne Überraschung gut  :o ::)

Das kam aber nur das eine mal, wo ich eine neue Version von dir ausprobiert habe, sonst ist mir das noch nie aufgefallen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 16 November 2014, 12:52:22
Zitat von: IPPhoner2b am 16 November 2014, 12:35:00
Siehste, ich bin immer für ne Überraschung gut  :o ::)
Die Art von Überraschungen kann ich ja leiden...

Zitat von: IPPhoner2b am 16 November 2014, 12:35:00
Das kam aber nur das eine mal, wo ich eine neue Version von dir ausprobiert habe, sonst ist mir das noch nie aufgefallen.
Lässt es sich denn reproduzieren?
Ist es die letzte Version von mir in der das auftritt?
Nutzt du jetzt wieder eine andere?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 16 November 2014, 16:30:34
Die Version, bei der mir das aufgefallen war, war die vom 09.11. Es war aber leider nicht reproduzierbar, habe festgestellt, dass komischerweise 3 Eingänge belegt waren, das auch nach einem Neustart erhalten blieb, und wo ich dann einmal einen Eingang "gebrückt" hatte, dann waren alle wieder so, wie es sein sollte.

Also tut mir Leid, aber ich kann keine Fehler auf Befehl produzieren, die mache ich immer so *g*
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 04 Dezember 2014, 19:18:30
Wollte hier einfach nochmal die Frage stellen, ob noch irgendjemand zeitliche Probleme mit dem MCP bekommt, sobald hier 3 oder 4 der Chips am raspberrry anklemmt.

In diesem Thread hier http://forum.fhem.de/index.php/topic,28890.0.html (http://forum.fhem.de/index.php/topic,28890.0.html)

Geht es um die schonmal erwähnte Rolladensteuerung, und solange ich mit 2 MCP Chips arbeite, klappt die Steuerung über Schalter sehr gut, sobald aber ein dritter oder vierter Chip hinzukommt, wird das System extrem langsam, sobald ein notify ausgelöst wird. Schalte ich einzelne Ausgänge über das WebIf klappt alles ohne Probleme.

Wäre halt schön, wenn jemand hier mal testen könnte, ob er das Phänomen nachstellen kann. Vielleicht liegt es ja wirklich einfach an der SCI Schnittstelle, dass die bei so vielen Ausgängen einfach an ihre Grenzen kommt.

:EDITH:
Mal noch ne zweite Frage, habe grade etwas über den neuen Raspi B+ gelesen, und dabei festgestellt, dass der normale Raspi B auf dem P5 Header noch mal nen I2C Bus hat (GPIO 28 + 29).

Könnte man den zweiten Bus auch für diese Aufgabe nutzen? Kann man das Modul zur Ansteuerung auf den zweiten I2C Bus erweitern? Oder ist es so evtl schon zu benutzen?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 10 Dezember 2014, 12:37:21
Zitat von: IPPhoner2b am 04 Dezember 2014, 19:18:30
Wollte hier einfach nochmal die Frage stellen, ob noch irgendjemand zeitliche Probleme mit dem MCP bekommt, sobald hier 3 oder 4 der Chips am raspberrry anklemmt.

In diesem Thread hier http://forum.fhem.de/index.php/topic,28890.0.html (http://forum.fhem.de/index.php/topic,28890.0.html)

Geht es um die schonmal erwähnte Rolladensteuerung, und solange ich mit 2 MCP Chips arbeite, klappt die Steuerung über Schalter sehr gut, sobald aber ein dritter oder vierter Chip hinzukommt, wird das System extrem langsam, sobald ein notify ausgelöst wird. Schalte ich einzelne Ausgänge über das WebIf klappt alles ohne Probleme.

Wäre halt schön, wenn jemand hier mal testen könnte, ob er das Phänomen nachstellen kann. Vielleicht liegt es ja wirklich einfach an der SCI Schnittstelle, dass die bei so vielen Ausgängen einfach an ihre Grenzen kommt.
Der I2C sollte es schaffen, beim I2C_LCD Modul werden über 100 Telegramme auf den Bus geblasen und da geht es doch auch.
Das muss irgendwas anderes sein.

Zitat von: IPPhoner2b am 04 Dezember 2014, 19:18:30
:EDITH:
Mal noch ne zweite Frage, habe grade etwas über den neuen Raspi B+ gelesen, und dabei festgestellt, dass der normale Raspi B auf dem P5 Header noch mal nen I2C Bus hat (GPIO 28 + 29).

Könnte man den zweiten Bus auch für diese Aufgabe nutzen? Kann man das Modul zur Ansteuerung auf den zweiten I2C Bus erweitern? Oder ist es so evtl schon zu benutzen?
Klar, der I2C am P5 ist nutzbar (I2C Bus 0), steht auch in der commandref  ;)
Auch die dafür notwendigen speziellen Schritte.
P5 drauflöten, I2C Gerät anstecken und erstmal mit i2cdetect, i2cget und i2cset probieren ob es geht.
Allerdings wird dies vermutlich nicht das Problem der Zeitverzögerung lösen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 10 Dezember 2014, 19:36:13
Hi Klaus,

für mich würde es ja reichen, wenn ich je 2 MCP Chips relativ verzögerungsfrei ansprechen kann.

Habe aber nen Raspi B+ gekauft, um mal zu sehen, ob der wirklich Stromsparender ist, als der normale "B"

Aber da werde ich mich wohl erst nächste Woche drum kümmern.
So Viel Zeit bis Weihnachten ist ja nicht mehr, und bis dahin soll das ganze ja mehr oder minder stehen, aber das meiste klappt ja schon ganz gut.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Spuckiii am 10 Dezember 2014, 19:48:00
Habe mir die Beispiel Config aus Post 40 gezogen.
die Outs kann ich schalten, aber ich bekomme beim Interrupt als state ??? und folgende Fehlermeldung.

Interrupt GetFn: readout of Pinvalue fail
stehe grade irgendwie auf dem Schlauch
Kann mich mal einer runterschubsen?
Auszug aus dem Log:
2014.06.21 22:01:15 1: Including fhem.cfg
2014.06.21 22:01:15 3: telnetPort: port 7072 opened
2014.06.21 22:01:16 3: WEB: port 8083 opened
2014.06.21 22:01:16 3: WEBphone: port 8084 opened
2014.06.21 22:01:16 3: WEBtablet: port 8085 opened
2014.06.21 22:01:16 2: eventTypes: loaded 118 events from ./log/eventTypes.txt
2014.06.21 22:01:22 1: Can't open file: Interrupt, edge
2014.06.21 22:01:23 1: Including ./log/fhem.save
2014.06.21 22:01:23 1: usb create starting
2014.06.21 22:01:24 3: Probing CUL device /dev/ttyAMA0
2014.06.21 22:01:25 3: Probing TCM_ESP3 device /dev/ttyAMA0
2014.06.21 22:01:25 3: Probing FRM device /dev/ttyAMA0
2014.06.21 22:01:30 1: usb create end
2014.06.21 22:01:30 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2014.06.21 22:01:30 0: Server started with 28 defined entities (version $Id: fhem.pl 7124 2014-12-05 07:10:20Z rudolfkoenig $, os linux, user pi, pid 2473)
2014.06.21 22:01:47 1: Can't open file: Interrupt, value
2014.06.21 22:01:47 1: Interrupt GetFn: readout of Pinvalue fail
2014.06.21 22:01:47 1: PERL WARNING: Use of uninitialized value $zustand in concatenation (.) or string at ./FHEM/51_RPI_GPIO.pm line 141.
2014.06.21 22:01:49 1: Can't open file: Interrupt, value
2014.06.21 22:01:49 1: Interrupt: readout of Pinvalue fail
2014.06.21 22:01:49 1: Can't open file: Interrupt, value
2014.06.21 22:01:49 1: Interrupt GetFn: readout of Pinvalue fail
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 10 Dezember 2014, 20:07:25
Zitat von: Spuckiii am 10 Dezember 2014, 19:48:00
Habe mir die Beispiel Config aus Post 40 gezogen.
die Outs kann ich schalten, aber ich bekomme beim Interrupt als state ??? und folgende Fehlermeldung.

Interrupt GetFn: readout of Pinvalue fail
stehe grade irgendwie auf dem Schlauch
Kann mich mal einer runterschubsen?
gibts noch andere Fehlermeldungen zum Gerät "Interrupt"
Es macht den anschein, das du keine Zugriffsrechte hast
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Spuckiii am 10 Dezember 2014, 20:10:06
Schalten kann ich ja. Also das relay über fhem...
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 10 Dezember 2014, 20:14:08
Zitat von: Spuckiii am 10 Dezember 2014, 20:10:06
Schalten kann ich ja. Also das relay über fhem...
Es um den Interrupt, der hängt doch an einem GPIO. Schalten tust du sicher mit dem Mcp
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Spuckiii am 10 Dezember 2014, 20:41:26
Manchmal liegt die Lösung so nah... habe fhem auf raspi zum tüfteln den hab ich neu aufgesetzt und vergessen fhem zu gpio hinzuzubuchen. ok. die files kann er jetzt lesen
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: beSmart am 27 Dezember 2014, 21:28:48
Hallo.

Ich habe mit Hilfe des Beispiels in Post 40 folgendes erstellt.




define Fk.Haustuer readingsProxy icMCP23017:PortA0
attr Fk.Haustuer fp_Fensterkontakte 80,200,0,
attr Fk.Haustuer fp_UG 210,900,0,
attr Fk.Haustuer group InputPorts
attr Fk.Haustuer 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 ([Fk.Haustuer] eq "closed" and [Ausgang1] eq "off") (set Ausgang1 on) DOELSEIF ([Fk.Haustuer] eq "closed" and [Ausgang1] eq "on") (set Ausgang1 off)




Per Webbrowser kann Ausgang1 ein- und ausgeschaltet werden.

Das Einschalten per Taster (Fk.Haustuer) funktioniert, aber Ausgang1 kann per Taster nicht ausgeschaltet werden.

Wo mache ich den Denkfehler?

Dank und Gruß

beSmart
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 27 Dezember 2014, 22:09:03
Kenne mich da zwar nicht so aus, aber könnte hinten als Befehl nicht auch
    fhem "set Ausgang1 on"
Bzw off rein?

Und beim Schalter weis ich nicht, ob da auch noch ein
attr FK.Haustuer event-on-change-reading state
Rein müsste
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: beSmart am 28 Dezember 2014, 12:53:52
Hallo und vielen Dank für deine Hilfe.

Aber es funktioniert immer noch nicht. Hat sonst jemand eine Idee, warum Ausgang1 nicht per Taster ausschaltet?

Gruß

beSmart
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 28 Dezember 2014, 13:04:08
Nur ne Vermutung, aber wird das DOIF nicht nur einmal ausgeführt, außer wenn du mit DOIF always arbeitest?

Und würde dir der Ausgang nicht anfangen zu rattern, weil wenn die Änderung in Kraft tritt, und der Ausgang ist aus, muss er ihn anschalten, dann merkt er, oh der Ausgang ist an, und schaltet ihn aus usw. Oder habe ich da jetzt nen Denkfehler?

Was mir noch auffällt.

Wie hast du den Eingang am Mcp angeschlossen? Da ich das so nicht erkennen kann, müsstest du eigentlich mit dem interrupt Eingang arbeiten, damit fhem überhaupt mitbekommt, dass sich der State vom Eingang überhaupt geändert hat.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: beSmart am 28 Dezember 2014, 13:40:51
Hallo.

attr Switch1 do always

habe ich hinzugefügt. Funktioniert immer noch nicht.
ZitatUnd würde dir der Ausgang nicht anfangen zu rattern, weil wenn die Änderung in Kraft tritt, und der Ausgang ist aus, muss er ihn anschalten, dann merkt er, oh der Ausgang ist an, und schaltet ihn aus usw. Oder habe ich da jetzt nen Denkfehler?

Da kannst Du Recht haben. Ich habe da keine Erfahrung und auch keine bessere Idee wie man es sonst lösen könnte. Mir geht es im Prinzip nur darum, den Ausgang auf Tastendruck umzuschalten.

Interrupt habe ich eingerichtet, angeschlossen und funktioniert.

###I2C-Device###
define i2cBus RPII2C 1
attr i2cBus group MCP23017
##
##
###MCP23017
define icMCP23017 I2C_MCP23017 0x20
attr icMCP23017 IODev i2cBus
attr icMCP23017 Interrupt A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr icMCP23017 InterruptOut connected_active-low
attr icMCP23017 OutputPorts A1,A2
attr icMCP23017 Pullup A0,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
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")}

define Fk.Haustuer readingsProxy icMCP23017:PortA0
attr Fk.Haustuer event-on-change-reading state
attr Fk.Haustuer fp_Fensterkontakte -80,200,0,
attr Fk.Haustuer fp_UG 210,900,0,
attr Fk.Haustuer group InputPorts
attr Fk.Haustuer 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 ([Fk.Haustuer] eq "closed" and [Ausgang1] eq "off") (set Ausgang1 on) DOELSEIF ([Fk.Haustuer] eq "closed" and [Ausgang1] eq "on") (set Ausgang1 off)
attr Switch1 do always



Sonst noch eine Idee?

Vielen Dank und Gruß

beSmart

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: IPPhoner2b am 28 Dezember 2014, 13:51:26
Ah ok, wenn du nur den Ausgang umschalten willst, gibt es für das GPIO Tool auch den Befehl "toggle" , damit müsste es dann ja eigentlich klappen
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: beSmart am 28 Dezember 2014, 16:03:28
Ähm... toggle hört sich gut an!
Meinst du das Modul Rpi_Gpio? Ich dachte das ist nur für den Gpio-Port des Raspberry. Ich muß das aber über die MCP's machen.

Oder habe ich dich falsch verstanden?

Gruß

beSmart
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Newima1201 am 08 November 2015, 15:30:59
Hallo zusammen,

ich bin relativ frisch in Sachen fhem unterwegs und habe schon versucht, den PCA9555 zu integrieren, leider nur mit mässigen Erfolg :-(
Daher hab ich jetzt den MCP23017 gewählt.
Ich hab bereits einige Forenbeiträge gesehen und teilweise recht umständliche Konstruktionen mit perl-code gesehen.
Eine recht simple Codierung der Grundfunktion hab ich mal hier:

#************** I2C initialisieren ******************
define i2c RPII2C 1
attr i2c alias Onboard I2C Controller 1
attr i2c room Hardware
#****************************************************

#************** MCP23017 at 0x21 ********************
define ioPort21 I2C_MCP23017 0x21
attr ioPort21 IODev i2c
attr ioPort21 Interrupt B0
attr ioPort21 InterruptOut separate_active-low
attr ioPort21 OnStartup A7=on,A6=on
attr ioPort21 OutputPorts A6,A7
attr ioPort21 invert_input B0
attr ioPort21 room Hardware
#************ Einmal den Chip auslesen, *************
#********** um den I2C zu initialisieren ************
#****************************************************

#*************** GPIO 4 als IRQ-Eingang *************
define IRQ21B RPI_GPIO 4
attr IRQ21B active_low no
attr IRQ21B debounce_in_ms 80
attr IRQ21B direction input
attr IRQ21B interrupt both
attr IRQ21B room Hardware
attr IRQ21B userReadings Port { fhem "get ioPort21" }
#************** Entprellen der Aktion ***************
#** Steigende und fallende Flanke registrieren   ****
#** Wenn IRQ ausgeloest wurde, dann Register lesen **
#** Entprellen des Tasters                         **
#** IRQ Reaktion beide Flanken beide auswerten     **
#** Port lesen und damit den IRQ zurücksetzen      **
#** RPI_GPIO IRQ21B Longpress:on/off wenn Taster   **
#** lange gedrueckt war                            **
#***********************************************

#****************** Output A7 ********************
define prxPortA7 readingsProxy ioPort21:PortA7
attr prxPortA7 group OutputPorts
attr prxPortA7 room Hardware
attr prxPortA7 setFn {($CMD eq "on")?"PortA7 off":"PortA7 on"}
attr prxPortA7 setList on off
#attr prxPortA7 off-for-timer 3.0
#*************************************************

#****************** Output A6 ********************
define prxPortA6 readingsProxy ioPort21:PortA6
attr prxPortA6 group OutputPorts
attr prxPortA6 room Hardware
attr prxPortA6 setFn {($CMD eq "on")?"PortA6 off":"PortA6 on"}
attr prxPortA6 setList on off
#*************************************************

#****************** Input Taster *****************
define Taster1 readingsProxy ioPort21:PortB0
attr Taster1 event-on-change-reading state
attr Taster1 group InputPorts
attr Taster1 room Hardware
attr Taster1 setList pressed released
attr Taster1 valueFn { ($VALUE eq "on") ? "on":"off"}
attr Taster1 webCmd pressed:released
#*************************************************

Damit ist zunächst mal das Modul, 2 Ausgänge und ein Taster initialisiert
Meine Ein und Ausgänge sind invertiert, das bedeutet, das eine LED am Ausgang
AUS ist, wenn der Status des Ausgangs ON ist.
Das ist aber Geschmackssache und eine Frage der Hardwarerealisierung.
Meine Taster schalten gegen Masse und ein pullup-Widerstand sorgt für die High-Definition.

Danach kommt die Logik  :D
Ich habe hier folgende Anforderungen, von denen die ersten mit dem folgenden Code umgesetzt wurden:
1) Taster toggelt einen Ausgang (ein Druck an, Ein Druck aus)


#*************************************************
define A6_toggle dummy
attr A6_toggle event-on-change-reading state
attr A6_toggle room Hardware
attr A6_toggle setList on off
#*************************************************

#*************************************************
define A7_toggle dummy
attr A7_toggle event-on-change-reading state
attr A7_toggle room Hardware
attr A7_toggle setList on off
#*************************************************

# Ausgang Toggeln ***
define A7_DI DOIF ([A7_toggle:state] eq "on" && [Taster1:state] eq "on") (set A7_toggle off) DOELSEIF ([A7_toggle:state] eq "off" && [Taster1:$attr A7_DI do always
attr A7_DI room Hardware


2) Taster kann Treppenhauslicht für eine Zeit x aktivieren (z.B. Licht geht nach Zeitablauf aus)

#*** Verzoegertes ausschalten ****
define A7_out DOIF ([Taster1:state] eq "on" && [prxPortA7:state] eq "on") (set prxPortA7 off) (set prxPortA7 on-for-timer 2.3)

#define A7_out DOIF ([A7_toggle:state] eq "on") (set prxPortA7 on) DOELSEIF ([A7_toggle:state] eq "off") (set prxPortA7 off)
#************************************************


3) Taster kann  2 Ausgänge im Wechsel bedienen (A1 aus: A2 aus -> A1 an: A2 aus --> A1 aus: A2 aus --> A1 aus: A2 an); Ist z.B. für eine Markisensteuerung mit einem Taster ganz schick. Mit jedem Druck geht es einen Schritt weiter.
4) Ein langer Druck des Tasters erzeugt eine andere, zusätzliche Reaktion. Ich benutze das z.B. für An-Abwesenheits-Funktion mittels Taster.
5) Ein zweiter kurzer Druck erzeugt eine weitere zweite Reaktion
Wie gesagt, der Code setzt noch nicht alles um, soll nur zur Anregung dienen :)

Viel Spass noch mit dem MCP23017  ;)

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 12 März 2016, 01:31:53
Hallo zusammen,

ich habe eine kurze Frage, welche mich jetzt schon seit Wochen beschäftigt und mich immer wieder probieren und suchen lässt - aber leider ohne positives Ergebnis.

Ich habe einen MCP23017 an meinem Cubieboard angeschlossen und triggere über einen Interrupt-GPIO bei jedem Interrupt-Signal vom MCP ein Neueinlesen der Ports.

die relevanten Konfigurationen:

#Definition des Interrupt an GPIO 231
define InterruptI2C20 RPI_GPIO 231
attr InterruptI2C20 active_low yes
attr InterruptI2C20 direction input
attr InterruptI2C20 group Interrupts
attr InterruptI2C20 interrupt both
attr InterruptI2C20 room Technik
attr InterruptI2C20 userReadings test {fhem ("get mcp23017_1")}

#Definition des I2C-Busses
define i2c RPII2C 1
attr i2c group Bus-Systeme
attr i2c room Technik

#Define des MCP23017
define mcp23017_1 I2C_MCP23017 0x20
attr mcp23017_1 IODev i2c
attr mcp23017_1 Interrupt B0,B1,B2,B3,B4,B5,B6,B7
attr mcp23017_1 InterruptOut separate_active-low
attr mcp23017_1 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp23017_1 Pullup B1,B2,B3,B4,B5,B6,B7
attr mcp23017_1 group Devices
attr mcp23017_1 invert_input B1,B2,B3
attr mcp23017_1 room Technik

#ReadingsProxy für den Port welcher das Relais für das Aussenlicht schaltet
define rpxyA1 readingsProxy mcp23017_1:PortA1
attr rpxyA1 alias Kellertür Licht Außen Dauer-An
attr rpxyA1 group readingsProxy Ausgänge mcp23017_1
attr rpxyA1 room Testraum
attr rpxyA1 setFn {($CMD eq "on")?"PortA1 off":"PortA1 on"}
attr rpxyA1 setList on off
attr rpxyA1 valueFn {($VALUE eq "on")?"off":"on"}

#ReadingsProxy  für den PortB3 definieren an dem der Schalter für das Licht angschlossen ist
define rpxySchalterKellerAussen readingsProxy mcp23017_1:PortB3
attr rpxySchalterKellerAussen alias Schalter Kellertür
attr rpxySchalterKellerAussen event-on-change-reading state
attr rpxySchalterKellerAussen group Schalter
attr rpxySchalterKellerAussen room Steuerungen

#Notify zum Schalten des Außenlichts wenn der Schalter betätigt wird
define ntfySchalterKellerAussen notify rpxySchalterKellerAussen.* set rpxyA1 toggle
attr ntfySchalterKellerAussen disable 0
attr ntfySchalterKellerAussen room Steuerungen



Nun aber das was mich die letzten Wochen so fuchst:

Wenn ich den Rechner komplett neu starte und FHEM gestartet ist funktioniert alles wie gewünscht.
Wird der Schalter betätigt wird auch das Licht an/aus geschaltet.

Starte ich anschliessend FHEM aber durch ein SHUTDOWN RESTART neu funktioniert nichts mehr.
Merkürdigerweise ist dann der Interrupt-GPIO einfach nur auf HIGH.

Erst wenn ich in der Detailanzeige des MCP23017 aktualisiere (mit F5) wird der Interrupt-GPIO auf LOW gesetzt.

Wenn das passiert ist dann geht allerdings gar nichts mehr - weder wenn ich den Schalter betätige noch wenn ich die Detailseite aktualisiere oder sonstiges....der MCP scheint kein Interrupt-Signal mehr zu schicken.

Der Interrupt-GPIO ist an INTB des MCP angeschlossen.
Es hat aber auch keine Auswirkung auf den Fehler wenn ich InterruptOut von separate_active-low auf connected_active-low setze...


Kann das evtl. jemand nachvollziehen?

Das Problem muss vermutlich irgendwo beim SHUTDOWN RESTART liegen - wenn ich das System neustarte dann funktioniert alles wieder wie gehabt...


Viele Grüße

Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 13 März 2016, 22:58:04
Hallo zusammen,

ich habe diesbezüglich ein wenig weitergeforscht und folgendes Festgestellt:

scheinbar werden die Register durch einen SHUTDOWN RESTART verändert.

Ich habe vor dem Restart einen I2CDUMP ausgelesen (Schalter am MCP23017 an Port B3 war aus):

user@host:~$ sudo i2cdump -y 1 0x20
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 ff 00 0e 00 ff 00 00 00 00 40 40 00 fe 00 00    ...?......@@.?..
10: 00 f6 ff f6 ff f6 00 00 00 00 00 00 00 00 00 00    .?.?.?..........


und nach dem SHUTDOWN RESTART sah das ganze so aus:

user@host:~$ sudo i2cdump -y 1 0x20
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 ff 00 0e 00 ff 00 00 00 00 40 40 00 fe 00 01    ...?......@@.?.?
10: 00 f7 ff f6 ff f6 00 00 00 00 00 00 00 00 00 00    .?.?.?..........


...es wurde also durch den Shutdown Restart scheinbar etwas am MCP23017 geändert was den dann irgendwie komplett durcheinander bringt...

Vielleicht hilft das ja beim Nachvollziehen des Problems etwas weiter...


Viele Grüße

Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 15 März 2016, 12:39:38
Zitat von: Punkt am 13 März 2016, 22:58:04
ich habe diesbezüglich ein wenig weitergeforscht und folgendes Festgestellt:

scheinbar werden die Register durch einen SHUTDOWN RESTART verändert.

unwarscheinlich
die beiden Register 0x0F und 0x11 sind nicht Schreibbar. Sie können ausschließlich gelesen werden.
Der Blich ins Datenblatt (http://ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf) zeigt, das es sich um

Register 0x11 -> INTCAPB: zeigt den Zustand des Ports B zum Zeitpunkt des Interrupts an

Register 0x0F ->  INTB: gibt auskunft darüber, welcher Pin des Ports den Interrupt ausgelöst hat
Registerinhalt 0x0F:
00 -> kein Interrupt ist ausgelöst worden -> der Wert in 0x11 ist irrelevant,
   da er nur geändert wird, wenn ein Interrupt auftritt
01 -> GPB0 hat den Interrupt ausgelöst -> 11110110 in 0x11 zeigt, das GPB0 den Wert 0 hat.
   somit hat ein Pegelwechsel von 1 auf 0 am Pin GPB0 einen Interrupt ausgelöst.

Das bedeutet: während des Shutdown/Restart Vorgangs wurde der am Pin GPB0 angeschlossene Schalter betätigt bzw. am GPB0 ist noch etwas anderes angeschlossen.

Das hat also erstmal nix mit deinem Problem zu tun.
Die weiteren Konfigurationsregister sind nach dem Restart wieder exakt so wie vorher eingestellt.

Du hast am MCP23017 den Port A als Ausgang eingestellt. Sind da LEDs/Lampen angeschlossen?
Funktionieren diese nach Shutdown/Restart noch?

Wie legst du den Pi GPIO für den Interrupt an?

Nach meiner Vermutung liegt es am GPIO des Pi, der den Interrupt verarbeiten soll (das einzig komische ist, das aktualisieren auf der Detailseite immer den aktuellen Pinlevel anzeigen müsste).
Bei einem Shutdown/Restart wird der Pi Gpio gewöhnlich erst deaktiviert und dann wieder angelegt.
Wenn dein FHEM allerdings keine Schreibrechte auf den GPIO hat, oder besser gesagt, du die Rechte beim booten in der rc.local oder sonstwo setzt dann kann FHEM in auch nicht mehr anlgen.
Dazu sollte aber eine Fehlermeldung im Log erscheien.

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 15 März 2016, 19:53:25
Hallo Klaus,

erstmal danke für deine Unterstützung!

Kurz zu deinen Hinweisen:

Zitat von: klausw am 15 März 2016, 12:39:38
Das bedeutet: während des Shutdown/Restart Vorgangs wurde der am Pin GPB0 angeschlossene Schalter betätigt bzw. am GPB0 ist noch etwas anderes angeschlossen.

Du hast recht, ich hatte zu dem Zeitpunkt auch noch einen Bewegungsmelder angeschlossen - der hat da ein wenig dazwischengefunkt.

Ich hab die ganze Schaltung jetzt mal soweit zurückgebaut daß ich nur noch den Schalter an B3 angeschlossen hab und an A0 - A7 ein Relaisboard.

Zitat von: klausw am 15 März 2016, 12:39:38
Du hast am MCP23017 den Port A als Ausgang eingestellt. Sind da LEDs/Lampen angeschlossen?
Funktionieren diese nach Shutdown/Restart noch?

Wie oben geschrieben habe ich da ein 8-fach-Relais-Board angeschlossen.
Wenn ich die Ports aus dem Frontend direkt schalte funktionieren die auch noch.

Zitat von: klausw am 15 März 2016, 12:39:38
Wie legst du den Pi GPIO für den Interrupt an?

Die Definition des GPIO hab ich weiter oben ja schon eingefügt - oder was meinst du damit?

Zitat von: klausw am 15 März 2016, 12:39:38
Nach meiner Vermutung liegt es am GPIO des Pi, der den Interrupt verarbeiten soll (das einzig komische ist, das aktualisieren auf der Detailseite immer den aktuellen Pinlevel anzeigen müsste).
Bei einem Shutdown/Restart wird der Pi Gpio gewöhnlich erst deaktiviert und dann wieder angelegt.
Wenn dein FHEM allerdings keine Schreibrechte auf den GPIO hat, oder besser gesagt, du die Rechte beim booten in der rc.local oder sonstwo setzt dann kann FHEM in auch nicht mehr anlgen.
Dazu sollte aber eine Fehlermeldung im Log erscheien.

Das war glaub ich schonmal ein sehr guter Hinweis.

Ich habe nach meinen ganzen Tests festgestellt, daß dem Interrupt-GPIO nach einem shutdown restart das scheinbar ziemlich egal ist wenn der auf LOW gezogen wird (das passiert ja bei einem Interrupt-Signal vom MCP).

Er scheint einfach nicht auszulösen.
Was funktioniert:

Wenn ich fhem beende mit "sudo service fhem stop", dann den GPIO unexportiere und hinterher FHEM wieder starte (ich exportiere den GPIO im Start-Script wenn er noch nicht vorhanden ist), dann funktioniert alles wieder wie gehabt - ich muss also wohl in Richtung Interrupt-GPIO weiterforschen...


....so - viel Text...ich hoffe ich schwafel euch hier nicht voll - eventuell nützt es aber auch mal jemandem der die gleichen Probleme hat...


Viele Grüße

Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 15 März 2016, 22:34:25
Zitat von: Punkt am 15 März 2016, 19:53:25
Die Definition des GPIO hab ich weiter oben ja schon eingefügt - oder was meinst du damit?

nicht die definition, das anlegen (exportieren) ... hast aber weiter unten die entscheidende Info geliefert.
Du legst den Gpio in Startscript an.
Beim shutdown wird ein unexport ausgeführt, evtl geht da oder beim neu anlegen etwas schief.
Setze das Attribut unexportpin mal auf no.
Damit wird der GPIO beim shutdown nicht abgemeldet.

Hast du einen Pi?
Wenn ja sollte es auch ohne export im Startscript gehen.

[/quote]
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 15 März 2016, 23:19:10
Hallo Klaus,

unexportpin auf no hat leider nix gebracht...

Ich hab aktuell einen Cubieboard2 im Einsatz...

Da muss ich die GPIO beim Starten manuell oder eben irgendwo im Script exportieren.

...ich bin jetzt mal noch am ausprobieren ob WiringCB funktioniert...


Viele Grüße

Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 15 März 2016, 23:36:55
...so - WiringCB (WiringPi) funktioniert leider auch nicht.

nach einem Shutdown Restart reagiert der Interrupt einfach nicht mehr...  >:(

Ich werd mich mal in der Richtung weiter schlau machen - will den Thread hier nicht sprengen, da es offensichtlich nicht an dem MCP-Modul liegt...


Viele Grüße

Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 16 März 2016, 10:27:20
Zitat von: Punkt am 15 März 2016, 23:36:55
Ich werd mich mal in der Richtung weiter schlau machen - will den Thread hier nicht sprengen, da es offensichtlich nicht an dem MCP-Modul liegt...
Naja, aber die MCP Nutzer betrifft es auch.

schaue die mal die Rechte von /sys/class/gpio/ und /sys/class/gpio/gpio231 an

ls -l /sys/class/gpio/
ls -l /sys/class/gpio/gpio231/

und zwar:
- nach dem Neustart vom Cubie
- nach dem Shutdown von FHEM  (sudo service fhem stop / oder shutdown direkt in FHEM)
- nach dem erneuten starten von FHEM (sudo service fhem start)

das bitte hier posten
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 16 März 2016, 20:34:35
Zitat von: Punkt am 15 März 2016, 23:36:55
...so - WiringCB (WiringPi) funktioniert leider auch nicht.

wie lautet der komplette Pfad zum gpio utility von WiringCB?
ist es von den Befehlen her kompatibel zu WiringPi?
funktioniert es von der Shell aus?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 17 März 2016, 00:12:07
Hallo Klaus,

WiringCB ist soweit ich weis gleich zu WiringPi - ging meines Wissens daraus hervor.
Was aber ja merkwürdig ist: nach dem Reboot des Cubie funktioniert ja alles.

Die ls-Ausgaben hab ich mal zusammengestellt und häng sie unten an...

...aber mir ist nochwas aufgefallen:

Ich habe jetzt mal zusätzlich noch einen weiteren GPIO aktiviert und getestet (GPIO239).

Der funktioniert genauso (wenig).
Was vielleicht noch ein Hinweis sein könnte:

Nach einem Reboot gehe ich in FHEM auf die Detailseite des GPIO.
Wenn ich nun auf LOW / HIGH schalte (einfach per Draht auf 3.3V / GND) dann aktualisiert sich die Detailseite direkt von alleine und der Pinlevel wird sofort aktualisiert rot dargestellt.

Nach einem shutdown restart funktioniert das nicht mehr.
Der aktuelle Pinlevel wird dann nur wieder korrekt angezeigt wenn ich mit F5 aktualisiere - reproduzierbar immer wieder..


Ich exportiere mittlerweile die GPIO auch nicht mehr im Startscript - mit WiringCB geht das jetzt auch ohne...


so - hier mal jetzt noch die Ausgaben - bitte nicht von den Uhrzeiten irritieren lassen - die Ausgaben nach dem Neustart des Cubie hab ich nach dem ersten shutdown restart gemacht - und die zweite Ausgabe des GPIO239 nach dem 2. shutdown restart...:

nach Neustart

michael@homie:~$ ls -l /sys/class/gpio/
total 0
--w------- 1 root root 4096 Mar 16 23:55 export
lrwxrwxrwx 1 root root    0 Mar 16 23:55 gpio231 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpio231
lrwxrwxrwx 1 root root    0 Mar 16 23:55 gpio239 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpio239
lrwxrwxrwx 1 root root    0 Mar 16 23:55 gpiochip0 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpiochip0
--w------- 1 root root 4096 Mar 16 23:55 unexport
michael@homie:~$ ls -l /sys/class/gpio/gpio231/
total 0
-rw-r--r-- 1 root root    4096 Mar 16 23:55 active_low
lrwxrwxrwx 1 root root       0 Mar 16 23:55 device -> ../../../1c20800.pinctrl
-rw-r--r-- 1 root root    4096 Mar 16 23:55 direction
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:55 edge
drwxr-xr-x 2 root root       0 Mar 16 23:55 power
lrwxrwxrwx 1 root root       0 Mar 16 23:55 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Mar 16 23:55 uevent
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:55 value
michael@homie:~$ ls -l /sys/class/gpio/gpio239/
total 0
-rw-r--r-- 1 root root    4096 Mar 16 23:55 active_low
lrwxrwxrwx 1 root root       0 Mar 16 23:56 device -> ../../../1c20800.pinctrl
-rw-r--r-- 1 root root    4096 Mar 16 23:55 direction
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:55 edge
drwxr-xr-x 2 root root       0 Mar 16 23:56 power
lrwxrwxrwx 1 root root       0 Mar 16 23:56 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Mar 16 23:55 uevent
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:55 value




nach shutdown restart

michael@homie:/sys/class/gpio$ ls -l /sys/class/gpio/
total 0
--w------- 1 root root 4096 Mar 16 23:49 export
lrwxrwxrwx 1 root root    0 Mar 16 23:48 gpio231 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpio231
lrwxrwxrwx 1 root root    0 Mar 16 23:48 gpio239 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpio239
lrwxrwxrwx 1 root root    0 Mar 16 23:48 gpiochip0 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpiochip0
--w------- 1 root root 4096 Mar 16 23:48 unexport
michael@homie:/sys/class/gpio$ ls -l /sys/class/gpio/gpio231/
total 0
-rw-r--r-- 1 root root    4096 Mar 16 23:48 active_low
lrwxrwxrwx 1 root root       0 Mar 16 23:52 device -> ../../../1c20800.pinctrl
-rw-r--r-- 1 root root    4096 Mar 16 23:49 direction
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:49 edge
drwxr-xr-x 2 root root       0 Mar 16 23:52 power
lrwxrwxrwx 1 root root       0 Mar 16 23:52 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Mar 16 23:48 uevent
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:48 value
michael@homie:~$ ls -l /sys/class/gpio/gpio239/
total 0
-rw-r--r-- 1 root root    4096 Mar 16 23:56 active_low
lrwxrwxrwx 1 root root       0 Mar 16 23:56 device -> ../../../1c20800.pinctrl
-rw-r--r-- 1 root root    4096 Mar 16 23:57 direction
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:57 edge
drwxr-xr-x 2 root root       0 Mar 16 23:56 power
lrwxrwxrwx 1 root root       0 Mar 16 23:56 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Mar 16 23:56 uevent
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:55 value


nach shutdown - FHEM ist beendet

michael@homie:~$ sudo service fhem status
[sudo] password for michael:
fhem is not running
michael@homie:~$ ls -l /sys/class/gpio/
total 0
--w------- 1 root root 4096 Mar 16 23:57 export
lrwxrwxrwx 1 root root    0 Mar 16 23:55 gpio231 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpio231
lrwxrwxrwx 1 root root    0 Mar 16 23:55 gpio239 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpio239
lrwxrwxrwx 1 root root    0 Mar 16 23:55 gpiochip0 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpiochip0
--w------- 1 root root 4096 Mar 16 23:55 unexport
michael@homie:~$ ls -l /sys/class/gpio/gpio231/
total 0
-rw-r--r-- 1 root root    4096 Mar 16 23:55 active_low
lrwxrwxrwx 1 root root       0 Mar 16 23:55 device -> ../../../1c20800.pinctrl
-rw-r--r-- 1 root root    4096 Mar 16 23:57 direction
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:57 edge
drwxr-xr-x 2 root root       0 Mar 16 23:55 power
lrwxrwxrwx 1 root root       0 Mar 16 23:55 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Mar 16 23:55 uevent
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:55 value
michael@homie:~$ ls -l /sys/class/gpio/gpio239/
total 0
-rw-r--r-- 1 root root    4096 Mar 16 23:56 active_low
lrwxrwxrwx 1 root root       0 Mar 16 23:56 device -> ../../../1c20800.pinctrl
-rw-r--r-- 1 root root    4096 Mar 16 23:57 direction
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:57 edge
drwxr-xr-x 2 root root       0 Mar 16 23:56 power
lrwxrwxrwx 1 root root       0 Mar 16 23:56 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Mar 16 23:56 uevent
-rw-r--r-- 1 fhem dialout 4096 Mar 16 23:55 value



....ich kann eigentlich keinen Unterschied erkennen...


Viele Grüße

Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 17 März 2016, 16:51:03
Die Dateien edge und value sind durch fhem schreibbar.
Somit sollte RPI_GPIO auch darauf zugreifen können.
Ich kann keinen Fehler erkennen.
Nach dem shutdown restart haben edge und direction den korrekten Wert? direction sollte ja passen, da du mit F5 den wert korrekt aktualisieren kannst.
Evtl. bringt ein Verbose 5 (global) licht ins Dunkel.

Wird beim shutdown auch fhem komplett beendet? Nicht das noch irgendwelche Perl Fragmente die Except Funktion blockieren.

Wenn du WiringCB nutzt dann sollte es grundsätzlich auch ohne export der Pins im Startscript laufen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 17 März 2016, 21:01:06
so....hab mal ein bissl rumprobiert...

kurz Vorweg: die GPIO exportiere ich seit ich WiringCB installiert habe nicht mehr im Start-Script..



zu edge und direction:

nach reboot

michael@homie:/sys/class/gpio/gpio239$ cat edge
both
michael@homie:/sys/class/gpio/gpio239$ cat direction
in


nach shutdown restart

michael@homie:/sys/class/gpio/gpio239$ cat edge
both
michael@homie:/sys/class/gpio/gpio239$ cat direction
in



nach shutdown ist auch kein Perl-Prozess mehr vorhanden...


Wenn ich folgenden Prozess einhalte dann funktioniert es:

- FHEM stoppen
- GPIO manuell unexportieren
- FHEM starten

michael@homie:/sys/class/gpio$ sudo service fhem stop
Stopping fhem...
michael@homie:/sys/class/gpio$ sudo su
root@homie:/sys/class/gpio# echo "239" > unexport
root@homie:/sys/class/gpio# echo "231" > unexport
root@homie:/sys/class/gpio# ll
total 0
drwxr-xr-x  2 root root    0 Mar 17 20:41 .
drwxr-xr-x 53 root root    0 Mar 17 20:41 ..
--w-------  1 root root 4096 Mar 17 20:34 export
lrwxrwxrwx  1 root root    0 Mar 17 20:41 gpiochip0 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpiochip0
--w-------  1 root root 4096 Mar 17 20:41 unexport
root@homie:/sys/class/gpio# service fhem start



Was mich auch etwas verwundert hatte:
nach einem shutdown sind trotz "unexportpin = yes" alle GPIO vorhanden

root@homie:/sys/class/gpio# ll
total 0
drwxr-xr-x  2 root root    0 Mar 17 20:46 .
drwxr-xr-x 53 root root    0 Mar 17 20:41 ..
--w-------  1 root root 4096 Mar 17 20:47 export
lrwxrwxrwx  1 root root    0 Mar 17 20:50 gpio231 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpio231
lrwxrwxrwx  1 root root    0 Mar 17 20:50 gpio239 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpio239
lrwxrwxrwx  1 root root    0 Mar 17 20:41 gpiochip0 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpiochip0
--w-------  1 root root 4096 Mar 17 20:46 unexport



Ich versteh einfach noch nicht was beim shutdown restart anders läuft, was nötig macht daß ich die GPIO manuell unexportieren muss...


Verbose 5 bringt vermutlich auch nicht viel mehr erkenntnis denke ich.
Ich hab das mal laufen lassen - das Logfile sprengt danach alles....riesengroß...


Ich hab aber zum Test einfach mal alle Log-Befehle in der 51_RPI_GPIO.pm auf Verbose 1 umgeschrieben - das kann ich gerne mal hier anhängen - aber ich weis nicht ob da was zu finden ist...
Oder meinst du es könnte noch durch ein anderes Modul etwas zerschossen werden?

...Wenn gar nix hilft sichere ich meine Konfiguration einmal und lasse das ganze einfach mal mit einer absoluten Minimal-Konfiguration laufen....vielleicht bringt uns das weiter...?
Dann wäre das Log auch nicht so voll... :-)


Viele Grüße

Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 17 März 2016, 21:25:19
Hallo Klaus,

...ich hab das jetzt mal mit ner Minimalkonfiguration probiert.

Beim reboot und beim shutdown restart gibts da keine Unterschiede im log... :-/

Was ich aber festgestellt habe:

WENN es funktioniert (also nach dem reboot) hab ich folgendes im Log (wenn ich den Interrupt auslöse):

2016.03.17 21:10:56 4: WEB_192.168.0.80_53339 GET /fhem/icons/favicon; BUFLEN:0
2016.03.17 21:10:56 4: WEB_192.168.0.80_53337 GET /fhem?XHR=1&inform=type=status;filter=InterruptPI10;since=1458245455;fmt=JSON&fw_id=26×tamp=1458245457267; BUFLEN:0
2016.03.17 21:11:10 5: InterruptPI10, in fileaccess: edge
2016.03.17 21:11:10 5: Triggering InterruptPI10 (3 changes)
2016.03.17 21:11:10 5: Notify loop for InterruptPI10 Pinlevel: low
2016.03.17 21:11:10 5: InterruptPI10, in fileaccess: edge
2016.03.17 21:11:10 5: Triggering InterruptPI10 (3 changes)
2016.03.17 21:11:10 5: Notify loop for InterruptPI10 Pinlevel: low
2016.03.17 21:11:13 5: InterruptPI10, in fileaccess: edge
2016.03.17 21:11:13 5: Triggering InterruptPI10 (2 changes)
2016.03.17 21:11:13 5: Notify loop for InterruptPI10 Pinlevel: high
2016.03.17 21:11:14 5: InterruptPI10, in fileaccess: value
2016.03.17 21:11:14 5: Triggering InterruptPI10 (1 changes)
2016.03.17 21:11:14 5: Notify loop for InterruptPI10 Longpress: on
2016.03.17 21:11:27 4: Connection closed for WEB_192.168.0.68_60994: EOF
2016.03.17 21:11:27 4: Connection accepted from WEB_192.168.0.68_32770
2016.03.17 21:11:27 4: WEB_192.168.0.68_32770 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2016-03.log; BUFLEN:0
2016.03.17 21:11:28 4: Connection accepted from WEB_192.168.0.68_32771
2016.03.17 21:11:28 4: Connection accepted from WEB_192.168.0.68_32772


....wenn ich den Interrupt nach dem shutdown restart auslöse ist das nicht mehr im Log zu finden...


Viele Grüße

Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 17 März 2016, 23:23:04
Zitat von: Punkt am 17 März 2016, 21:01:06
zu edge und direction:

nach reboot

michael@homie:/sys/class/gpio/gpio239$ cat edge
both
michael@homie:/sys/class/gpio/gpio239$ cat direction
in


nach shutdown restart

michael@homie:/sys/class/gpio/gpio239$ cat edge
both
michael@homie:/sys/class/gpio/gpio239$ cat direction
in



nach shutdown ist auch kein Perl-Prozess mehr vorhanden...


gut, alles wie es sein soll

Zitat von: Punkt am 17 März 2016, 21:01:06

Wenn ich folgenden Prozess einhalte dann funktioniert es:

- FHEM stoppen
- GPIO manuell unexportieren
- FHEM starten


Das ist ja auch der normale Prozess (GPIOs werden beim stoppen abgemeldet).
Im undefine sollte folgende Schleife ausgeführt werden:
if ( ( AttrVal($hash->{NAME}, "interrupt", "none") ) ne ( "none" ) ) {
delete $selectlist{$hash->{NAME}};
close($hash->{filehandle});
}


Für die Interruptbehandlung wird für die value Datei ein filehandle angelegt über welches das die ExceptFN ausgelöst wird, wenn ein Interrupt auslöst. Dieses muss, wenn ich mich richtig erinnere gelöscht werden.
Du kannst Testweise in die Schleife ein Log reinbauen um zu sehen, ob sie ausgeführt wird.
Wenn das filehandle nicht gelöscht wird, kann es sein, das der Interrupt blockiert wird (beim unexport des GPIO verschwindet vermutlich auch ein noch bestehendes Filehandle).

Zitat von: Punkt am 17 März 2016, 21:01:06


michael@homie:/sys/class/gpio$ sudo service fhem stop
Stopping fhem...
michael@homie:/sys/class/gpio$ sudo su
root@homie:/sys/class/gpio# echo "239" > unexport
root@homie:/sys/class/gpio# echo "231" > unexport
root@homie:/sys/class/gpio# ll
total 0
drwxr-xr-x  2 root root    0 Mar 17 20:41 .
drwxr-xr-x 53 root root    0 Mar 17 20:41 ..
--w-------  1 root root 4096 Mar 17 20:34 export
lrwxrwxrwx  1 root root    0 Mar 17 20:41 gpiochip0 -> ../../devices/platform/soc@01c00000/1c20800.pinctrl/gpio/gpiochip0
--w-------  1 root root 4096 Mar 17 20:41 unexport
root@homie:/sys/class/gpio# service fhem start



Was mich auch etwas verwundert hatte:
nach einem shutdown sind trotz "unexportpin = yes" alle GPIO vorhanden

das ist wirklich seltsam
ohne Attribut "unexportpin" oder mit "unexportpin = yes" sollten die GPIOs bei auch verschwinden.
WiringCB ist ja bei dir installiert und legt die GPIOs auch an wenn ich das richtig verstanden habe.
Ohne WiringCB gehts bei dir natürlich nicht, da export/unexport nur über root gehen.
Machst du den manuellen unexport über WiringCB?


Vielleicht komme ich am We mal zum testen. Es muss aber was mit dem Filehandle zu tun haben. Perl nutzt da irgendeinen Benachrichtigungsprozess vom System ... das ist leider schon bisschen her und ich habe einiges vergessen :-/


Das Log aus deinem letzten Post sagt einfach nur aus, das der Interrupt läuft, wenn diese Meldungen fehlen dann halt nicht ;)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 17 März 2016, 23:34:21
Zitat von: klausw am 17 März 2016, 23:23:04
Im undefine sollte folgende Schleife ausgeführt werden:
if ( ( AttrVal($hash->{NAME}, "interrupt", "none") ) ne ( "none" ) ) {
delete $selectlist{$hash->{NAME}};
close($hash->{filehandle});
}


äh.....dazu kurze Frage:

im sub RPI_GPIO_Undef ist ja schon ein Log-Eintrag drin:

Log3 $hash, 1, "$hash->{NAME}: entfernt";

...der sollte ja immer geschrieben werden wenn ich das richtig verstehe.


...wenn ich aber mein gesamtes Logfile durchsuche finde ich den String "entfernt" überhaupt nicht.  :o

Heist das das Undefine wird gar nicht durchlaufen???
Standardmäßig hab ich verbose 3 eingestellt....die Zeile sollte ja sogar bei verbos 1 geschrieben werden, oder?


Viele Grüße

Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 18 März 2016, 00:03:27
Zitat von: Punkt am 17 März 2016, 23:34:21
äh.....dazu kurze Frage:

im sub RPI_GPIO_Undef ist ja schon ein Log-Eintrag drin:

Log3 $hash, 1, "$hash->{NAME}: entfernt";

...der sollte ja immer geschrieben werden wenn ich das richtig verstehe.


...wenn ich aber mein gesamtes Logfile durchsuche finde ich den String "entfernt" überhaupt nicht.  :o

Heist das das Undefine wird gar nicht durchlaufen???
Standardmäßig hab ich verbose 3 eingestellt....die Zeile sollte ja sogar bei verbos 1 geschrieben werden, oder?


Äh ja, was weich ich, ich ... muss gehen  8)

Wenn ich mich richtig erinnere kam das unexportpin Attribut genau aus diesem Grund rein: beim shutdown werden die GPIOs unexportiert und wenn man die vorher über ein script angelegt und Schreibrechte für alle vergeben hat dann sägte man sich den Ast ab.

und ja
Log3 $hash, 1, "$hash->{NAME}: entfernt";
sollte IMMER ausgeführt werden, wenn unexport aufgerufen wird.

Ich weiss gerade nicht weiter
Bei mir (RPI mit Jessie) werden die GPIOs beim Shutdown auch nicht unexportiert. Aber die Interrupts laufen nach einem Start trotzdem wieder
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 18 März 2016, 00:06:03
...hab mir grade mal als Beispiel das DBLog-Modul angeschaut....

...da gibts ne Funktion "DbLog_Shutdown"...

Kann es sein daß es da an dem Framework irgendwie eine Änderung gegeben hat und man dafür jetzt eine Shutdown-Routine einbauen muss?  :o


Viele Grüße

Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 18 März 2016, 00:15:56
so...noch ein paar Log-Einträge in DBLog beim Undef und beim Shutdown gemacht - aber die stehen auch nicht im Log...
Bin nicht sicher ob das korrekt geloggt wird....ich steh momentan ein bissl aufm Schlauch...


VG
Michael
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 18 März 2016, 00:19:30
stop....Kommando zurück...

Die Shutdown-Methode wird doch durchlaufen - nur die Undef nicht...
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Punkt am 18 März 2016, 00:25:55
das wars....!  ;)

zum Test folgendes eingefügt im Definitions-Teil des Moduls:

       $hash->{ShutdownFn} = "RPI_GPIO_Undef";


....und Tadaaaa....es funktioniert!  ;D

...da soll mal einer drauf kommen...  ::)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 18 März 2016, 15:31:45
Zitat von: Punkt am 18 März 2016, 00:25:55
das wars....!  ;)

zum Test folgendes eingefügt im Definitions-Teil des Moduls:

       $hash->{ShutdownFn} = "RPI_GPIO_Undef";


....und Tadaaaa....es funktioniert!  ;D

...da soll mal einer drauf kommen...  ::)

Super, warum nicht gleich so  8)

Ich habe ne weile die developer threads nur mäßig verfolgt, kann sein, das sich an dieser Stelle was geändert hat.
Die eine Zeile kann ich durchaus noch einbauen :)
Oder ich baue eine neue Funktion, damit Outputs bei shutdown/restart nicht angefasst werden und somit nix flackert.
Es ist trotzdem komisch, das beim Pi der Interrupt nach FHEM Neustart noch läuft und beim Cubie nicht mehr.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 16 Mai 2016, 23:44:48
Hallo!

Leider schaffe ich nicht den "Input"
Ich habe auf A0 einen Taster gegen GND. Leider keine Reaktion.
Die Ausgänge funktionieren. Kann alle Relais schalten.
Hier mein Fhem.cfg

#I2C
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 Interrupt A0,A1,A2,A3,A4,A5,A6,A7
attr i2c20 InterruptOut separate_active-low
attr i2c20 OutputPorts B0,B1,B2,B3,B4,B5,B6,B7
attr i2c20 Pullup A0,A1,A2,A3,A4,A5,A6,A7
attr i2c20 invert_input A0,A1,A2,A3,A4,A5,A6,A7
attr i2c20 room ops

define int RPI_GPIO 20
attr int active_low yes
attr int direction input
attr int interrupt both
attr int pud_resistor up
attr int userReadings get_i2c20 {fhem ("get i2c20")}

#relais1
define relais1 readingsProxy i2c20:PortB1
attr relais1 alias Relais 1 (In1)
attr relais1 devStateIcon on:on:off off:off:on
attr relais1 room ops
attr relais1 setFn {($CMD eq "on")?"PortB1 off":"PortB1 on"}
attr relais1 setList on off
attr relais1 valueFn {($VALUE eq "on")?"off":"on"}

#Relais0 über Taster schalten
define relais0 readingsProxy i2c20:PortB0
attr relais0 alias Relais 0 (In1)
attr relais0 devStateIcon on:on:off off:off:on
attr relais0 room ops
attr relais0 setFn {($CMD eq "on")?"PortB0 off":"PortB0 on"}
attr relais0 setList on off
attr relais0 valueFn {($VALUE eq "on")?"off":"on"}

define i2c20pA0 readingsProxy i2c20:PortA0
attr i2c20pA0 alias Taster A0
attr i2c20pA0 room ops
attr i2c20pA0 valueFn { if ($VALUE eq "on") { fhem "set relais0 toggle" } }

Bitte um Hilfe

lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 17 Mai 2016, 10:21:28
Hallo Wolfgang,

die Konfiguration macht einen guten Eindruck.
Ändert sich der Status von A0 denn, wenn du bei gedrücktem Taster den i2c20 mit get aktualisierst?
Gibt es Meldungen zum genutzten GPIO im Log?

Grüße
Klaus
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 17 Mai 2016, 15:02:34
Hallo Klaus!
Nein nichts. Auch im Event-Monitor keine Reaktion. Ich hab mir grad neue Bausteine bestellt. Morgen Abend werde ich einen neuen testen. Vielleicht habe ich ihn bei meinen ersten Anschlussversuchen geschrottet. 
Danke vorerst. Werde dann berichten.

lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 17 Mai 2016, 15:24:55
Zitat von: wthiess am 17 Mai 2016, 15:02:34
Hallo Klaus!
Nein nichts. Auch im Event-Monitor keine Reaktion. Ich hab mir grad neue Bausteine bestellt. Morgen Abend werde ich einen neuen testen. Vielleicht habe ich ihn bei meinen ersten Anschlussversuchen geschrottet. 
Danke vorerst. Werde dann berichten.

Wenn der Interrupt nicht geht wirst du auch im Event Monitor nicht sehen.
Mit get kannst du die inputs manuell auslesen.
Es wäre interessant, ob der gedrückte Taster dann erkannt wird. (also gedrückt halten, während du mit get die Werte aktualisierst)
Damit würdest du schon einmal wissen, ob der Port funktioniert.

Als nächstes würde ich einen Taster an den GPIO anschließen und schauen, ob der Interrupt dort funktioniert.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 17 Mai 2016, 17:30:29
Neur MCP23017 eingebaut. Keine Änderung. Nach flgender Anleitung beschalten.
http://sp0t.net/pi/fhem/8relay (http://sp0t.net/pi/fhem/8relay)
GPIO Port funktioniert. Driekt ohne I2C.

Ich habe gerade den Taster gedrückt gehalten und "get i2c20" in Fhem eingegeben. "OK"
Schaltet wie es sein soll. Was mache ich jetzt?

lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 17 Mai 2016, 17:43:21
Zitat von: wthiess am 17 Mai 2016, 17:30:29
Neur MCP23017 eingebaut. Keine Änderung. Nach flgender Anleitung beschalten.
http://sp0t.net/pi/fhem/8relay (http://sp0t.net/pi/fhem/8relay)
GPIO Port funktioniert. Driekt ohne I2C.
Also auch der Interrupt?

Zitat von: wthiess am 17 Mai 2016, 17:30:29
Get? Wie benützte ich das?
get <name>
...müsste aber auch beim neu laden der Detailseite von deinem MCP ausgelöst werden.
Ich weiß nicht mehr genau wie ich das implementiert habe.
Anhand der Zeit hinter dem Reading kannst du erkennen, ob die Werte aktualisiert wurden.


Die Verdrahtung muss weitestgehend stimmen, sonst würden die Ausgänge auch nicht funktionieren.
Der Einzige Verdrahtungsfehler kann noch in der Int Leitung liegen.
In der Anleitung ist INT B angeschlossen.
Int B ist für die B Ports. Wenn du aber die A Ports als Eingänge verwendest solltest du Int A verwenden. Oder alternativ connected_active-low verwenden.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 17 Mai 2016, 18:01:54
Danke Klaus!

INTA war die Lösung.

lg
Wolfgang

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 17 Mai 2016, 23:13:34
Hallo!

Alles läuft so wie ich es mir vorstelle bis.....
Hab ein neues Problem. Nun habe ich 2 23017. 1. alle 16 input 2. alle 16 output.
Nach einem Neustart(strom aus ein) funktioniert alles. Reboot hilft nicht. Nach ein paar Minuten geht der 2. auf  "transmission error" und nicht geht mehr. Alle anderen Fhem und Rasperry Funktionen laufen normal. Betreibe den 23017 mit 3.3 V vom Rasperry. Kann es sein das es ein Stromversorgungsproblem ist? Hab den 23017 Teil schon getauscht.

Nachtrag.
Ein bzw. ausschalten von #attr i2c202 InterruptOut separate_active-low
und speichern hilft kurz.

lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 18 Mai 2016, 13:58:06
Zitat von: wthiess am 17 Mai 2016, 23:13:34
Alles läuft so wie ich es mir vorstelle bis.....
Hab ein neues Problem. Nun habe ich 2 23017. 1. alle 16 input 2. alle 16 output.
Nach einem Neustart(strom aus ein) funktioniert alles. Reboot hilft nicht. Nach ein paar Minuten geht der 2. auf  "transmission error" und nicht geht mehr.
Funktionieren beide nicht mehr?
Zitat von: wthiess am 17 Mai 2016, 23:13:34
Alle anderen Fhem und Rasperry Funktionen laufen normal. Betreibe den 23017 mit 3.3 V vom Rasperry. Kann es sein das es ein Stromversorgungsproblem ist? Hab den 23017 Teil schon getauscht.
Das kann möglich sein. Ich glaube mich zu erinnern, das max 50mA abgenommen werden dürfen.
Du kannst die MCP's auch an die 5V hängen (solange du nur die I2C Pullups vom Raspberry selbst nutzt).
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 18 Mai 2016, 18:14:47
Hallo Klaus!

Gelöst: Habe am 2. I2C die Resetleitung vergessen anzuschließen.
Ich denke ich sollte nach 22h keine Elektronik mehr angreifen.
Aber ich werde beim Echtbetrieb auf 5V umsteigen. Derzeit betreibe ich nur Grundlagenforschung.

lg
Wolfgang


Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 19 Mai 2016, 21:28:11
Hallo!

Habe eine Hardwarefrage zu dem MCP23017. Ich wollte mein Projekt auf 5V umstellen. Jedoch ohne Erfolg. Mit 3.3V alles O.K. Mit einem eigenen externen Netzgerät gehts mit 5V. Mein Rasperry-Netzgerät liefert 5,19V. Mein externes 4,95V. Sehe ich das richtig das die i2c's mit über 5V nicht zurecht kommen?

lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 19 Mai 2016, 22:14:45
Zitat von: wthiess am 19 Mai 2016, 21:28:11
Hallo!

Habe eine Hardwarefrage zu dem MCP23017. Ich wollte mein Projekt auf 5V umstellen. Jedoch ohne Erfolg. Mit 3.3V alles O.K. Mit einem eigenen externen Netzgerät gehts mit 5V. Mein Rasperry-Netzgerät liefert 5,19V. Mein externes 4,95V. Sehe ich das richtig das die i2c's mit über 5V nicht zurecht kommen?
Das Problem ist eher, das der MCP irgendwann keinen High Pegel mehr erkennt.
Der I2C auf dem Pi hat Pullups gegen 3,3V.
Der High Pegel wird abhängig von der Versorgung erkannt (steht im Datenblattt ... Vcc -xV)
Mit 5V läuft es gewöhnlich noch, ist aber nicht unbedingt sauber aufgebaut.
Du könntest noch einen Pegelwandler verwenden.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 19 Mai 2016, 23:16:49
Hallo!
Ganz verstehe ich das nicht. Im  Datenblatt steht das Teil kann bis 5.5V betrieben werden. Warum spinnen die Dinger Bei 5.19v?

Hab nun das Netzteil vom Rasperry getauscht. Nun ist alles O.K. Das Packet von Conrad hatte ein nicht optimales Netzteil. Zuviele Störungen drinnen. Hätte nun noch mit Kondensatoren arbeiten können. Aber jetzt ists gut.

Lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 20 Mai 2016, 14:21:41
Zitat von: wthiess am 19 Mai 2016, 23:16:49
Ganz verstehe ich das nicht. Im  Datenblatt steht das Teil kann bis 5.5V betrieben werden. Warum spinnen die Dinger Bei 5.19v?

Das stimmt auch. Du betreibst ihn ja auch, nur funktioniert er nicht ;)
Es müssen noch ein paar mehr Parameter beachtet werden.
Im Datenblatt sind für den I2C Bus (SCL/SCK) auch Spannungswerte für Input Low Voltage und Input High Voltage angegeben. Das sind die Spannungsbereiche, in denen ein Low bzw. High auf dem Bus erkannt wird. Diese Werte sind Spannungsabhängig.
Input High Voltage is z.B. 0,8 x Versorgungsspannung.
Bei 5V Versorgungsspannung müsstest du also 4V für ein High liefern. Da der Pullup auf dem Pi aber auf 3,3V geht hast du folglich als High nur 3,3V anliegen.
Es funktioniert trotzdem, da die Toleranzen für gewöhnlich größer sind, ist aber wie gesagt, nicht die sauberste Lösung. Irgendwo ist aber halt Schluß (in deinem Fall ist das zwischen 5V und 5,19V)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 05 Oktober 2016, 16:53:21
So ich wollte mich auch mal mit dem MCP probieren über Shell läuft soweit alles ganz gut und Fhem mit Shell Kommandos läuft mehr oder weniger auch ganz gut bis auf die Tatsache das  sich die Adresse ab und zu mal ändert  ??? egal. Ich wollt jetzt mal das Modul ausprobieren aber jedesmal wenn ich die config speichern will kommt i2cBus: Error! I2C device not found: /dev/i2c-1... Please check kernelmodules must loaded: i2c_bcm2708, i2c_dev icMCP23017: unknown IODev i2cBus specified no IODev assigned to 'icMCP23017' icMCP23017: unknown attribute InterruptOut. Type 'attr icMCP23017 ?' for a detailed list. no IODev assigned to 'icMCP23017' no IODev assigned to 'icMCP23017' icMCP23017: unknown attribute invert_input. Type 'attr icMCP23017 ?' for a detailed list.

füge ich die config aus dem Forum ein Stürzt Fehm ab beim neu start kommt dann jedes mal
Messages collected while initializing FHEM:
configfile: i2cBus: Error! I2C device not found: /dev/i2c-1... Please check kernelmodules must loaded: i2c_bcm2708, i2c_dev
icMCP23017: unknown IODev i2cBus specified
no IODev assigned to 'icMCP23017'
icMCP23017: unknown attribute InterruptOut. Type 'attr icMCP23017 ?' for a detailed list.
no IODev assigned to 'icMCP23017'
no IODev assigned to 'icMCP23017'
icMCP23017: unknown attribute invert_input. Type 'attr icMCP23017 ?' for a detailed list.


laut aussage soll der aber eigentlich funktionieren

hier ist meine config bestimmt hab ich mich nur wieder vertippt  >:(


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

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

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

###Sensoren (Input)####
#--Bank-B--#

define prxPortB0 readingsProxy icMCP23017:PortB0
attr prxPortB0 group InputPorts
attr prxPortB0 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB1 readingsProxy icMCP23017:PortB1
attr prxPortB1 group InputPorts
attr prxPortB1 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB2 readingsProxy icMCP23017:PortB2
attr prxPortB2 group InputPorts
attr prxPortB2 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB3 readingsProxy icMCP23017:PortB3
attr prxPortB3 group InputPorts
attr prxPortB3 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB4 readingsProxy icMCP23017:PortB4
attr prxPortB4 group InputPorts
attr prxPortB4 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB5 readingsProxy icMCP23017:PortB5
attr prxPortB5 group InputPorts
attr prxPortB5 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB6 readingsProxy icMCP23017:PortB6
attr prxPortB6 group InputPorts
attr prxPortB6 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB7 readingsProxy icMCP23017:PortB7
attr prxPortB7 group InputPorts
attr prxPortB7 valueFn {($VALUE eq "on")?"off":"on"}

####Aktoren (Output)####
#---A-Kanal-----

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

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

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

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

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

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

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

define prxPortA7 readingsProxy icMCP23017:PortA7
attr prxPortA7 group OutputPorts
attr prxPortA7 setFn {($CMD eq "on")?"PortA5 off":"PortA7 on"}
attr prxPortA7 setList on off
attr prxPortA57 valueFn {($VALUE eq "on")?"off":"on"}
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Frank_Huber am 05 Oktober 2016, 17:02:59
hast über die i2c tools die Adresse ausgelesen?
PI2 oder 3? je nachdem hast glaub i2c-1 oder i2c-0

wenn sich die Adresse ändert scheint was mit den Modulen faul zu sein. bei meinen ist die Adresse über Lötbrücken festgesetzt.

gib mal paar mehr Eckdaten zu deinem System.

bei mir laufen sie so einwandfrei: (32port Extender)
define OUT_1 I2C_MCP23017 0x21
attr OUT_1 IODev I2C
attr OUT_1 OnStartup A0=last,A1=last,A2=last,A3=last,A4=last,A5=last,A6=last,A7=last
attr OUT_1 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
define OUT_2 I2C_MCP23017 0x22
attr OUT_2 IODev I2C
attr OUT_2 OnStartup A0=last,A1=last,A2=last,A3=last,A4=last,A5=last,A6=last,A7=last
attr OUT_2 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 05 Oktober 2016, 17:09:15
ja hab ich ich hab eigentlich 0x20 manchmal wenn GPA0 auf output geht hab ich dann 0x27  nachmal hab ich das Gefühl das es am DS18B20 liegt. Oder könnte es auch an der Stromversorgung liegen? War jetzt aber eigentlich nicht mein haupt anliegen mir ging es jetzt mehr um die Fehler Meldung da ich gern das Modul zum laufen bekommen würde

Hab den Pi 2 und das mit der 0 ist nur bei Ver. 1
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Frank_Huber am 06 Oktober 2016, 08:10:45
welches Modul hast denn?
Wegen dem Adresswechsel würde ich von einem Defekt ausgehen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 06 Oktober 2016, 09:08:07
Zitat von: AlphaKingOne am 05 Oktober 2016, 17:09:15
ja hab ich ich hab eigentlich 0x20 manchmal wenn GPA0 auf output geht hab ich dann 0x27  nachmal hab ich das Gefühl das es am DS18B20 liegt. Oder könnte es auch an der Stromversorgung liegen? War jetzt aber eigentlich nicht mein haupt anliegen mir ging es jetzt mehr um die Fehler Meldung da ich gern das Modul zum laufen bekommen würde

Hab den Pi 2 und das mit der 0 ist nur bei Ver. 1

Ich habe nicht nachgeschaut, welchen I2C Bus das Pi2 hat.
Aber dein Befehl aus dem anderen Post:
system("sudo i2cset -y 0 0x20 0x13 0xff &")}
Greift auf den I2C-0 zu.

was gibt denn
ls -l /dev/i* aus?

kannst du auch direkt in FHEM eingeben: {`ls -l /dev/i*`}

den user unter dem fhem läuft hattest du der Gruppe i2c hinzugefügt und neu gestartet?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 08 Oktober 2016, 00:56:20
Zitat von: Frank_Huber am 06 Oktober 2016, 08:10:45
welches Modul hast denn?
Wegen dem Adresswechsel würde ich von einem Defekt ausgehen.
Ich hab das Modul aus beitrag 24

Zitat von: klausw am 06 Oktober 2016, 09:08:07
Ich habe nicht nachgeschaut, welchen I2C Bus das Pi2 hat.
Aber dein Befehl aus dem anderen Post:
system("sudo i2cset -y 0 0x20 0x13 0xff &")}
Greift auf den I2C-0 zu.

was gibt denn
ls -l /dev/i* aus?

kannst du auch direkt in FHEM eingeben: {`ls -l /dev/i*`}

den user unter dem fhem läuft hattest du der Gruppe i2c hinzugefügt und neu gestartet?

Wenn ich zuhause bin werde ich das mal ausprobieren
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 08 Oktober 2016, 23:04:03
Zitat von: AlphaKingOne am 08 Oktober 2016, 00:56:20
Ich hab das Modul aus beitrag 24

Wenn ich zuhause bin werde ich das mal ausprobieren
Das Modul wird mit FHEM ausgeliefert. Du solltest dieses verwenden.
Beitrag 24 beinhaltet eine veraltete Version.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 09 Oktober 2016, 19:53:28
hmm blöd gelaufen. Mal schauen ob ich das original im netz finde

bei mir kommt
ls -l /dev/i*
crw-rw---T 1 pi   pi   89, 1 Oct  7 17:17 /dev/i2c-1

/dev/input:
total 0
crw-rw---T 1 root input 13, 63 Jan  1  1970 mice
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 09 Oktober 2016, 20:57:53
Dann isses I2C 1
mit "update force" erhältst du alle aktuellen Modulversionen
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 25 Oktober 2016, 17:02:44
ok danke solangsam wird es :)

nur kommt jetzt wenn ich was schalten will also Output "icMCP23017 error: PortA0 is defined as input"
ich hab mir noch mal die config angeschaut kann aber leider kein fehler finden

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

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

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

###Sensoren (Input)####
#--Bank-B--#

define prxPortB0 readingsProxy icMCP23017:PortB0
attr prxPortB0 group InputPorts
attr prxPortB0 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB1 readingsProxy icMCP23017:PortB1
attr prxPortB1 group InputPorts
attr prxPortB1 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB2 readingsProxy icMCP23017:PortB2
attr prxPortB2 group InputPorts
attr prxPortB2 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB3 readingsProxy icMCP23017:PortB3
attr prxPortB3 group InputPorts
attr prxPortB3 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB4 readingsProxy icMCP23017:PortB4
attr prxPortB4 group InputPorts
attr prxPortB4 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB5 readingsProxy icMCP23017:PortB5
attr prxPortB5 group InputPorts
attr prxPortB5 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB6 readingsProxy icMCP23017:PortB6
attr prxPortB6 group InputPorts
attr prxPortB6 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB7 readingsProxy icMCP23017:PortB7
attr prxPortB7 group InputPorts
attr prxPortB7 valueFn {($VALUE eq "on")?"off":"on"}

####Aktoren (Output)####
#---A-Kanal-----

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

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

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

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

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

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

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

define prxPortA7 readingsProxy icMCP23017:PortA7
attr prxPortA7 group OutputPorts
attr prxPortA7 setFn {($CMD eq "on")?"PortA5 off":"PortA7 on"}
attr prxPortA7 setList on off
attr prxPortA57 valueFn {($VALUE eq "on")?"off":"on"}
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 26 Oktober 2016, 17:30:09
lässt sich der Port direkt auf der Detailseite von icMCP23017 schalten?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 27 Oktober 2016, 02:23:53
Wenn du mir sagst wo die ist probiere ich es.
Ansteuern kann ich es über fhem mit dem Shell Befehl aber nicht mit dem Modul
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 27 Oktober 2016, 16:26:23
Auf der Detailseite von icMCP23017 sollten die Ausgangsports wählbar sein.

Was bringt denn ein
list icMCP23017
?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 29 Oktober 2016, 07:12:23
da kommt bei mir nur
Internals:
   DEF        0x20
   NAME       icMCP23017
   NR         175
   STATE      defined
   TYPE       I2C_MCP23017
Attributes:
   OnStartup  A5=on,B1=off
   group      MCP23017
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 29 Oktober 2016, 21:29:09
bisschen wenig

was bringt

version I2C_MCP23017
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 06 November 2016, 22:39:53
File               Rev   Last Change

52_I2C_MCP23017.pm 12059 2016-08-22 21:14:59Z klauswitt
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 07 November 2016, 16:33:03
Langsam weiß ich nicht weiter.

Deine Attribute (die meiner Meinung nach alle korrekt gesetzt sind) passen überhaupt nicht zu dem, was beim List kommt.
Beim genaueren hinsehen:
define i2cBus RPII2C 1..
was machen die Punkte hinter der 1?

Hattest du mal ein "update force" gemacht? Evtl. ein noch irgend ein alte Modul in deinem FHEM vorhanden.

Du könntest auch nochmal einen FHEM restart mit Verbose 5 machen. Irgendwelche Fehler müssen doch im Log auftauchen

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 09 November 2016, 01:43:51
 punkte hab ich weggemacht keine ahnung wie die da rein gekommen sind. Update hatte ich auch schon gemacht und der restart brachte nur

016.11.09 01:33:22 0: Server shutdown
2016.11.09 01:33:27 1: reload: Error:Modul 99_myUtils deactivated:
Unrecognized character \xC2; marked by <-- HERE after <-- HERE near column 1 at ./FHEM/99_myUtils.pm line 8.

2016.11.09 01:33:27 1: Including fhem.cfg
2016.11.09 01:33:27 1: reload: Error:Modul 99_myUtils deactivated:
Unrecognized character \xC2; marked by <-- HERE after <-- HERE near column 1 at ./FHEM/99_myUtils.pm line 8, <$fh> line 4.

2016.11.09 01:33:28 3: WEB: port 8083 opened
2016.11.09 01:33:28 3: WEBphone: port 8084 opened
2016.11.09 01:33:28 3: WEBtablet: port 8085 opened
2016.11.09 01:33:29 3: Opening CUL_USB device /dev/ttyACM0
2016.11.09 01:33:29 3: CUL_USB device opened
2016.11.09 01:33:29 2: Switched CUL_USB rfmode to MAX
2016.11.09 01:33:29 3: CUL_MAX_Check: Detected firmware version 155 of the CUL-compatible IODev
2016.11.09 01:33:33 2: eventTypes: loaded 440 events from ./log/eventTypes.txt
2016.11.09 01:33:44 1: PERL WARNING: readline() on closed filehandle DATA at ./FHEM/58_GPIO4.pm line 132.
2016.11.09 01:33:44 1: Including ./log/fhem.save
2016.11.09 01:33:45 1: usb create starting
2016.11.09 01:33:46 3: Probing CUL device /dev/ttyAMA0
2016.11.09 01:33:47 3: Probing TCM_ESP3 device /dev/ttyAMA0
2016.11.09 01:33:47 3: Probing FRM device /dev/ttyAMA0
2016.11.09 01:33:52 1: usb create end
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 376) line 1.
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 377) line 1.
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 378) line 1.
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 379) line 1.
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 380) line 1.
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 381) line 1.
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 382) line 1.
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 383) line 1.
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 384) line 1.
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 385) line 1.
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 386) line 1.
2016.11.09 01:33:53 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 387) line 1.
2016.11.09 01:33:53 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 388) line 1.
2016.11.09 01:33:53 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 389) line 1.
2016.11.09 01:33:53 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 390) line 1.
2016.11.09 01:33:53 0: Featurelevel: 5.7
2016.11.09 01:33:53 0: Server started with 73 defined entities (fhem.pl:12519/2016-11-07 perl:5.014002 os:linux user:fhem pid:15942)


also wenn du es auch nicht weißt dann weiß ich auch nicht. Vllt nehme ich mir ein pi mach fhem neu drauf und versuche es noch einmal wenn ich mal zeit habe.
Wäre aber auch mal schön wenn mal eine Anleitung ins wiki kommen könnte. Ist dann doch übersichtlicher :)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 09 November 2016, 11:21:44
Zitat von: AlphaKingOne am 09 November 2016, 01:43:51
punkte hab ich weggemacht keine ahnung wie die da rein gekommen sind. Update hatte ich auch schon gemacht und der restart brachte nur

016.11.09 01:33:22 0: Server shutdown
2016.11.09 01:33:27 1: reload: Error:Modul 99_myUtils deactivated:
Unrecognized character \xC2; marked by <-- HERE after <-- HERE near column 1 at ./FHEM/99_myUtils.pm line 8.

2016.11.09 01:33:27 1: Including fhem.cfg
2016.11.09 01:33:27 1: reload: Error:Modul 99_myUtils deactivated:
Unrecognized character \xC2; marked by <-- HERE after <-- HERE near column 1 at ./FHEM/99_myUtils.pm line 8, <$fh> line 4.
...
2016.11.09 01:33:44 1: PERL WARNING: readline() on closed filehandle DATA at ./FHEM/58_GPIO4.pm line 132.
...
2016.11.09 01:33:52 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 376) line 1.



Jede menge Fehler.
1wire scheint z.B. nicht zu laufen. Hast du 1wire auch in der /boot/config.txt aktiviert?
Ich würde mal die 99_myUtils.pm aufräumen.
Die fhem.cfg auch.
Am besten alles rausschmeissen und Modul für Modul neu definieren.
Dabei immer gleich testen, ob es fehlerfrei funktioniert... Log checken etc.

FHEM musst du an sich nicht neu installieren. ein "update force" macht alles neu (soltest du natürlich auch übers logfile überprüfen, ob keine Dateizugriffsfehler aufgetreten sind)

Zitat von: AlphaKingOne am 09 November 2016, 01:43:51
Wäre aber auch mal schön wenn mal eine Anleitung ins wiki kommen könnte.
Wiki zu welchem Thema?
Geht aber auch recht einfach:
- Zugang holen
- Wiki Eintrag verfassen
Das kannst du ja übernehmen, nachdem du die Stolpersteine gefunden hast.  8)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 16 November 2016, 15:49:31
Also mal ein kleine Update

hab jetzt testweise neues Raspbian auf eine andere SD gemacht und Fhem installiert.
Hatte dann doch noch einige fehler in der config. Was noch ist bei PortA4 sagt er noch als input definiert und PortA7 lässt sich gar nicht schalten.
Gelegentlich bricht auch alles zusammen dann werden noch nicht mal behfele über Shell angenommen oder nur teilweise, könnte aber auch an dem wackeligen Aufbau liegen.
Ich denke am Wochenende tu ich noch mal alles neu Verkabeln.
Aber hat jemand von euch eine idee wieso das mit dem PortA4 immer noch so ist? In der Config konnte ich jetzt kein fheler entdecken.

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

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

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

###Sensoren (Input)####
#--Bank-B--#

define prxPortB0 readingsProxy icMCP23017:PortB0
attr prxPortB0 group InputPorts
attr prxPortB0 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB1 readingsProxy icMCP23017:PortB1
attr prxPortB1 group InputPorts
attr prxPortB1 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB2 readingsProxy icMCP23017:PortB2
attr prxPortB2 group InputPorts
attr prxPortB2 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB3 readingsProxy icMCP23017:PortB3
attr prxPortB3 group InputPorts
attr prxPortB3 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB4 readingsProxy icMCP23017:PortB4
attr prxPortB4 group InputPorts
attr prxPortB4 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB5 readingsProxy icMCP23017:PortB5
attr prxPortB5 group InputPorts
attr prxPortB5 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB6 readingsProxy icMCP23017:PortB6
attr prxPortB6 group InputPorts
attr prxPortB6 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB7 readingsProxy icMCP23017:PortB7
attr prxPortB7 group InputPorts
attr prxPortB7 valueFn {($VALUE eq "on")?"off":"on"}

####Aktoren (Output)####
#---A-Kanal-----

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

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

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

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

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

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

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

define prxPortA7 readingsProxy icMCP23017:PortA7
attr prxPortA7 group OutputPorts
attr prxPortA7 setFn {($CMD eq "on")?"PortA7 off":"PortA7 on"}
attr prxPortA7 setList on off
attr prxPortA57 valueFn {($VALUE eq "on")?"off":"on"}
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 16 November 2016, 16:07:13
attr icMCP23017 OutputPorts A0,A1,A2,A3,A3,A5,A6,A7

hab ich was gewonnen?` 8)

edit:

hast du das händisch eingetragen?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 16 November 2016, 16:19:37
ach das passiert mir doch immer wieder  >:(
ja ich wusste nicht wie ich das direkt in fhem eintippen soll ehrlich gesagt
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 16 November 2016, 16:31:31
Zitat von: AlphaKingOne am 16 November 2016, 16:19:37
ach das passiert mir doch immer wieder  >:(
ja ich wusste nicht wie ich das direkt in fhem eintippen soll ehrlich gesagt
Ich frage nur um einen Fehler im Modul auszuschließen.
Du kannst es direkt im Modul eingeben, ich glaube da hatte ich eine Eingabemaske vorgesehen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 16 November 2016, 17:17:52
ja da hatte ich glaub was gesehen. Aber ich wusste nicht wie ich das Modul aktivieren soll und dann hab ich gleich alles über die config gemacht. Jedenfalls hab ich glaub Probleme mit der Stromversorgung oder ein Kabel ist etwas locker deswegen ändert sich wieder die Adressierung von 0x20 auf 0x27. Werde mal versuchen ein Kondensator zwischen zu schalten oder Netzteil direkt aufs Board muss ich mal schauen. Wie hast du das bei dir angeschlossen?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 16 November 2016, 18:06:03
Zitat von: AlphaKingOne am 16 November 2016, 17:17:52
ja da hatte ich glaub was gesehen. Aber ich wusste nicht wie ich das Modul aktivieren soll und dann hab ich gleich alles über die config gemacht.
Einfach oben in der Eingabezeile bei FHEM eingeben:
define icMCP23017 I2C_MCP23017 0x20
die Attribute entweder auf die gleiche Weise, oder unten auf der Detailseite des definierten icMCP23017

Zitat von: AlphaKingOne am 16 November 2016, 17:17:52
Wie hast du das bei dir angeschlossen?
Gar nicht, den MCP23017 habe ich nie verwendet.
Ich hatte das Modul mit Ferndiagnose erstellt.
Meine I2C Module laufen über die 5V des Pi (ist nicht sauber, aber die 3,3V Pegel des I2C reichen gerade so)
Die Ausgänge der Portextender schalten Low-Side-FETs von 12V.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 11 Dezember 2016, 21:07:36
So kleines update von mir. Mittlerweile läuft alles mehr oder weniger gut. Ich bastel mir jetzt ne Platine damit die Wackler weg sind. Wo es bei mir aber noch hängt ist der Interrupt. Bei dem Status stehen da 3 Fragezeichen und die abfrage ist hmmm ja also nachmal kommt sie nach 3 oder 5 Minuten manchmal garnicht. Fhem neu starten bringt nichts also Status ändert sich nicht. Starte ich den ganzen Pi neu ändert sich der zustand der Ports. Also passt irgendwas mit der Interrupt abfrage nicht. Jemand ne idee. Ich hoffe das es nicht schon wieder in tipp Fehler von mir war  ::)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 12 Dezember 2016, 13:06:04
Interruptkonfiguration ist auf den ersten Blick in Ordnung.
Allerdings ist in deinem Verdrahtungsplan der Interruptausgang auf GPIO3 gelegt.
In der Config ist es GPIO4, der bei dir für 1wire genutzt wird.

Allerdings wundert es mich, das du keine Fehlermeldungen bekommst (du schaust doch sicher ins Log, wenn etwas nicht läuft?)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 12 Dezember 2016, 22:37:28
Hallo
So wie ich den Plan lese ist da weder intA noch B angeschlossen.

Lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 12 Dezember 2016, 22:58:33
Zitat von: wthiess am 12 Dezember 2016, 22:37:28
Hallo
So wie ich den Plan lese ist da weder intA noch B angeschlossen.

Lg
Wolfgang
Stimmt, so genau habe ich nicht geschaut.
Also: erstmal richtig verdrahten  8)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 13 Dezember 2016, 01:34:22
ok jetzt habe ich ein kleines Verständnis Problem ich hab mich sowieso schon als gefragt was es mit GPIO4 aufsich hat. IntA muss also an GPIO4. Ich hab das jetzt so angeschlossen aber es geht immer noch nicht oder liegt das da dran das ich an GPIO4 noch den DS18B20 dran hab der jetzt auch nicht mehr geht. IntB ist angeschlossen und nutze ich als Reset. Komisch ist ja auch das nach einem Neustart des PI der zustand angezeigt wird (siehe Bild)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 13 Dezember 2016, 08:06:42
Pin19 und 20 sind IntA-B
Pin 18 = Reset
Häng den IntA an Gpio 25 und ändere
"define Interrupt RPI_GPIO 4" auf "define Interrupt RPI_GPIO 25"
"25" = freier GPIO Port
Den IntB lass leer
Den Reset auf Plus. So läufts bei mir.

Lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 13 Dezember 2016, 23:29:28
Vielen dank Läuft  :-* ja I2C ist für mich noch Neuland finde ich aber voll interessant mit nem Bus zuarbeiten :)
wie ist das wenn ich ein zweiten MCP23017 hab muss ich dann wieder nen extra GPIO nehmen? Hatte nämlich noch ein paar plätze auf dem Patchpanel frei wo ich mir dachte das ich das Bus da drüber laufen lassen kann.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 14 Dezember 2016, 10:59:54
Wenn du den Int Ausgang auf open drain stellst, kannst du mehrere dieser Ausgänge zusammen auf einen GPIO legen. Dazu müsste noch ein Pullup an den GPIO angeschlossen werden.
Open drain Ausgänge sind im inaktiven Zustand hochohmig (GPIO über Pullup dann high). Im aktiven Zustand (bei Interrupt) wird der open drain Ausgang auf Masse geschaltet  (GPIO dann low).
Vorteil: nur ein GPIO für mehrere MCP23017
Nachteil: bei jedem Interrupt müssen alle MCP23017 ausgelesen werden.

Es macht durchaus Sinn, alle Eingänge auf einen IC zu legen (wenn das reicht) und die Ausgänge auf den zweiten.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 14 Dezember 2016, 17:12:27
Also ich wollte es als kleines Haus bus nehmen wobei ich noch nicht weiß ob es von der reichweite hin haut. Also es wären dann 15m - 20m. Soll dann über ein Cat.6 Kabel laufen zusammen mit dem DS18b20. Erstmal soll es in die garage für die steuerung der Tore und ein weiter in die Waschüche (ist neben der Garage) um von dort per Taster das Tor zu öffnen. Deswegen ist es Blöd wenn nur einer Interupt kann. Desweitern hab ich ja noch auf meiner Platine als Test ein paar Taster angebracht. Aber wenn ich von Portexpander zu Portexpander eine Leiung für den Interupt legen kann ist ja schön :) Muss ich nur noch schauen wie. Bin ja noch einsteiger ;)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 14 Dezember 2016, 17:32:59
I2C ist eher für Kommunikation auf Platinenebene gedacht.
Für längere Strecken ist es sinnvoller die Signale differentiell (CAN-Bus etc.) zu übertragen.
Kannst du nur testen.
Hier (http://www.nxp.com/documents/application_note/AN10658.pdf) gibt es ein paar Infos.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 14 Dezember 2016, 19:57:54
Gehört nicht hier her deshalb bitte nicht hier weiterschreiben. Für Externe Räume habe ich folgenden Vorschlag: Modbus bis 1200Meter
https://forum.fhem.de/index.php/topic,25315.0.html
(https://forum.fhem.de/index.php/topic,25315.0.html)Im hinteren Teil einiges geschreiben.
Diese Ding hat 4 Relais und 4 Eingänge on Board. Ich hab 2 im Test. Werde meine Gartenhütte damit bestücken.
http://www.ebay.at/itm/Modbus-RTU-4-Way-Relaismodul-DIY-STM8S103-System-4-Road-Input-485-Communication-/131672597921?hash=item1ea84c65a1:g:VuYAAOSw4UtWRvlM
(http://www.ebay.at/itm/Modbus-RTU-4-Way-Relaismodul-DIY-STM8S103-System-4-Road-Input-485-Communication-/131672597921?hash=item1ea84c65a1:g:VuYAAOSw4UtWRvlM)

lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 14 Dezember 2016, 23:22:39
ja ich hab auch schon über Can nachgedacht. Aber da der Pi I2C kann wollte ich erst mal das lernen und Can wollte ich danach machen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 21 Januar 2017, 21:16:01
Hallo Leute!
Erfahrung mit längerer Leitung!
Ich habe den MCP23017 nun mit einem 5m Kabel test halber mit dem Raspberry verbunden. Leider muss ich alle paar Stunden den Raspberry neu starten. Ich wollte mir ein Cat5 Kabel 5m sparen. Kontaktfehler ausgeschlossen, alles sauber gelötet.
Werde es wieder umbauen.

lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 06 März 2017, 18:49:11
Anbei eine neue Version des MCP23017 Moduls.
zum einen habe ich eine Bug gefixed durch den die Reading nicht aktualisiert werden, wenn alle Ports 0 sind und noch
Smartmatch ersetzt
Workaround für FRM (Das FRM Modul liefert bei erfolgreichen Schreibbefehlen die Werte nicht zurück und daher wurden die Readings bei set nicht aktualisiert)
Bitte testen
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: wthiess am 09 März 2017, 08:21:41
Derzeit nicht.  Ich hab das Projekt beiseite gelegt. Ich mach im Moment alles mit Modbus.

lg
Wolfgang
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 09 März 2017, 08:49:54
Ok, dann warte ich noch 2 Wochen und checke es ein wenn bis dahin keine Beschwerden kommen. Es sollte funktionieren, die Änderungen sind identisch zum MCP23008, den ich selbst testen konnte.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Bastian0302 am 20 Mai 2017, 16:50:29
Mein MCP23017 läuft nun schon eine ganze Weile sehr gut. Aber bei jedem Interrupt schreibt er ein Perlwarning ins Log und auf Dauer ist das echt nervig.
Eine Zeit lang war es weg aber nach einem Update kam es dann wieder. Weis leider nicht mehr wann dieses war.

BG_1 heißt der MPC23017.

2017.05.20 16:19:28 1: PERL WARNING: Interrupt userReadings test evaluated to undef at fhem.pl line 4246, <GEN9> line 219.
2017.05.20 16:19:28 3: eval: {fhem ("get BG_1")}


Im wiki steht unter "get" auch die Möglichkeit  "get <device> ?" dies hat aber nichts gebracht.

Habt ihr auch Probleme mit dieser Meldung?

PS:Mit Verbose 0 in den Devices hat leider auch nichts gebracht.
Updates wurden heute durchgeführt auch ohne Erfolg.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: LuckyDay am 20 Mai 2017, 18:15:22
du musst dein userReadings ändern nach diesem Schema
interrupt:Pinlevel:.low* none {fhem ("get i2c21"); "egal"}
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Bastian0302 am 21 Mai 2017, 00:44:44
Vielen Dank :)
Hat geholfen.

Kann man das irgendwie noch in dem Wiki aktualisieren??
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Frank_Huber am 29 Mai 2017, 14:40:50
Wenn ich einen Verbesserungsvorschlag machen dürfte:
"on-for-timer" wäre toll. :-)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Burny4600 am 29 Mai 2017, 18:05:53
Eines was ich mir für diesess Modul noch wünschen würde ist wenn etwas faul ist an der IODev RpiI2C dann werden definierte Einstellung für Ausgänge gelöscht.
Passiert wie ich am I2C irrtümlich den Namen RpiI2C geändert hatte.
Das zog sich bei allen MCP23017 durch wie ein Ratenschanz und ist erst aufgefallen wie keine Ausgänge mehr funktionierten.
Vielleicht gibt es hierfür einmal eine Änderung.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: f.f am 14 September 2017, 17:23:43
Hi,

meine Erweiterungskarte laeuft endlich und hängt seit heute an 4 * 16 Kanal China Relaisplatinen. Die haben Optokoppler und siese liegen an den Eingängen auf high, schalten also gegen ground. Jetzt hab ich meine ganze FHEM dummys aber schon so gestrickt, dass on(dummy) auch ON am relais heissen sollte. Wenn ich aber jetzt im fhem modul ON schalte ists genau umgekehrt, das Relais schaltet also ein wenn ich sage AUS. Kann ich die Ausgänge am 23017 irgendwie invertieren?

Gruss
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 15 September 2017, 23:30:56
Zitat von: f.f am 14 September 2017, 17:23:43
....Wenn ich aber jetzt im fhem modul ON schalte ists genau umgekehrt, das Relais schaltet also ein wenn ich sage AUS. Kann ich die Ausgänge am 23017 irgendwie invertieren?

im Modul ist das nur für Eingänge vorgesehen
Aber du könntest das in den dummys realisieren. Oder du verwendest alternativ readingsProxy
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: jorge am 29 September 2017, 18:13:48
Hallo,
ich habe statt des MCP23017 den MCP 23018 (wegen open drain, Relay-Karte ist aktive-low) verwendet, um die 16 Kanäle einer Relaisplatine zu steuern.

define I2C.MCP23018.A I2C_MCP23017 0x27
attr I2C.MCP23018.A IODev i2c
attr I2C.MCP23018.A OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr I2C.MCP23018.A eventMap on:off off:on
attr I2C.MCP23018.A room RelayCard 

Ich benötige nun alle GP für output. Mit den A0-A7 klaptt das einwandfrei, die Relais werden geschaltet. Aber B0-B7 schalten nicht.
Wenn ich nun 'manuell' über SSH
i2cset -y 1 0x27 0x01 0x00
eingebe, werden die Regsiter B0-B7 auf output gestellt, und- jetzt kann man auch über fhem B0-B7 schalten. Aber das Glück währt nicht lang, nach ca 1 Min können die Ausgänge nicht mehr geschaltet werden. Erst wenn ich über i2cset erneut die Kanäle auf Output stelle, geht es wieder eine Minute...

Das ist natürlich für ein Produktivsystem nicht tragbar. Aber vielleicht weiß jemad eine Lösung?

LG

Jorge
 
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 30 September 2017, 17:41:19


Hallo Jorge

Zitat von: jorge am 29 September 2017, 18:13:48
Hallo,
ich habe statt des MCP23017 den MCP 23018 (wegen open drain, Relay-Karte ist aktive-low) verwendet, um die 16 Kanäle einer Relaisplatine zu steuern.
...
Ich benötige nun alle GP für output. Mit den A0-A7 klaptt das einwandfrei, die Relais werden geschaltet. Aber B0-B7 schalten nicht.
...

Das ist natürlich für ein Produktivsystem nicht tragbar. Aber vielleicht weiß jemad eine Lösung?

Ist der MCP23018 denn vollständig kompatibel zum MCP23017?
Eventuell sind einige Adressen anders.
Ich bin gerade im Urlaub.
Du kannst aber inzwischen gern die Unterschiede zwischen beiden ICs raussuchen und ich pflege das ins Modul ein.

Grüße
Klaus

PS: der 17 hat meines Wissens auch Open drain

Gesendet von meinem HTC U11 mit Tapatalk

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: jorge am 30 September 2017, 18:38:59
Haloo Klaus,
danke ersmal für Deine schnelle Anwort aus dem Urlaub.

Zitat von: klausw am 30 September 2017, 17:41:19

Ist der MCP23018 denn vollständig kompatibel zum MCP23017?
Eventuell sind einige Adressen anders.

Du kannst aber inzwischen gern die Unterschiede zwischen beiden ICs raussuchen und ich pflege das ins Modul ein.

Habe die Tabelle aus dem Datenplatt "SUMMARY OF REGISTERS ASSOCIATED WITH THE GPIO PORTS" von Bank 0 und 1 des MCP23017 und MCP23018 mit einer transparenten Folie übereinandergelegt und keine Unterschiede feststellen können.

Es funktioniert ja auch das Schalten von B0-B7, wenn ich vorher mit i2cget die B0-B7 auf Output gesetzt habe. Aber eben nur eine Zeit lang...

Zitat von: klausw am 30 September 2017, 17:41:19
PS: der 17 hat meines Wissens auch Open drain

Lt. Datenblatt hat der MCP23017 kein open Drain, sondern Ausgänge High/low. Wegen der notwendigen 3.3 V am GPIO des Rpi betreibe ich den i2c Bus auch mit 3.3V. Das verträgt sich aber nicht mit den 5V, die am Eingang der Relaisplatine über Pullup anliegen...
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 30 September 2017, 20:11:55
Zitat von: jorge am 30 September 2017, 18:38:59
Habe die Tabelle aus dem Datenplatt "SUMMARY OF REGISTERS ASSOCIATED WITH THE GPIO PORTS" von Bank 0 und 1 des MCP23017 und MCP23018 mit einer transparenten Folie übereinandergelegt und keine Unterschiede feststellen können.

Es funktioniert ja auch das Schalten von B0-B7, wenn ich vorher mit i2cget die B0-B7 auf Output gesetzt habe. Aber eben nur eine Zeit lang...

Hmm... irgendwas muss anders sein, sonst würde es beim MCP23017 auch nicht funktionieren. Diesbezüglich ist mir jedoch nix bekannt. Gibt es beim 18er auch 2 Adressmodis?
Kannst du bitte mal MCP und I2C Modul auf Verbose 5 setzen und schauen,  was an den Chip geschickt wird?

Zitat von: jorge am 30 September 2017, 18:38:59

Lt. Datenblatt hat der MCP23017 kein open Drain, sondern Ausgänge High/low...

Mein Fehler,  das waren die Interrupt Ausgänge.


Gesendet von meinem HTC U11 mit Tapatalk

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: jorge am 02 Oktober 2017, 11:19:26
Hallo Klaus,
danke nochmals, dass Du Dich dieser Sache annimmst. Ich glaube auch, dass es sich nicht um ein Spezifikum des MCP23018 handelt, da alle Register offensichtlich gleich sind. Ich hab auch mal den MCP23018 Chip getauscht, um einen Defekt auszuschliessen: Unverändert. 
Zitat von: klausw am 30 September 2017, 20:11:55
Hmm... irgendwas muss anders sein, sonst würde es beim MCP23017 auch nicht funktionieren. Diesbezüglich ist mir jedoch nix bekannt. Gibt es beim 18er auch 2 Adressmodis?
Kannst du bitte mal MCP und I2C Modul auf Verbose 5 setzen und schauen,  was an den Chip geschickt wird?

Kann es vielleicht sein, dass bislang niemand (beim MCP23017) die B0-B7 Ausgänge im Dauerbetrieb genutzt hat? Wie gesagt, nach dem Hochfahren von fhem funktioniert ja die Ansteuerung von B0-B7, dann 'vergisst' der Chip aber wohl die Einstellungen des Output-Registers, offensichtlich schalten B0-B7 von Output auf Input. Nach einem rereadcfg werden die alten Output-Zustände wiederhergestellt, auch ein Schalten ist wieder möglich. Bis (nach ca. einer gefühlten Minute... ) die Relais der Bank B wieder abschalten.

Das Logfile (nach verbose 5) zeigt m.E. nichts Auffälliges:

2017.10.02 10:55:09 5: I2C.MCP23018.A UpdReadings Register: 18, Inhalt: 255
2017.10.02 10:55:09 5: I2C.MCP23018.A UpdReadings Register: 19, Inhalt: 252
2017.10.02 10:55:01 5: I2C.MCP23018.A UpdReadings Register: 19, Inhalt: 254
2017.10.02 10:55:01 5: I2C.MCP23018.A UpdReadings Register: 18, Inhalt: 255

Beim Abbruch des Output wird nichts ins Logfile geschrieben.

LG
Jorge
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 02 Oktober 2017, 15:05:37
Hi Jorge,

kein Problem ist schließlich auch mein Modul. Allerdings habe ich es per Ferndiagnose entwickelt da ich selbst keine Baugruppen mit MCP23017 besitze.
Daher kann ich Fehler in der Art wie du sie beschreibst nicht ausschließen. Bisher hat sich halt noch keiner beschwert obwohl es genutzt wird. Seltsam ist auch, Das sich A und B unterschiedlich verhalten obwohl sie im gleichen Vorgang geschrieben werden.

Ich habe jetzt folgendes verstanden:
- nach dem booten funktioniert alles?
- eine Minute später ist Bank B nicht mehr nutzbar
- nach rereadcfg läuft es wieder
- reicht es auch einfach das Output Attribut neu zu setzen ?
- Verbose vom MCP zeig nix seltsames

Das klingt als funkt was anderes dazwischen.
Zeigt verbose 5 vom rpii2c Modul was?
Kann es sein, Das auf deinem Pi nochwas anderes läuft das auf den MCP zugreift?


Zitat von: jorge am 02 Oktober 2017, 11:19:26
Kann es vielleicht sein, dass bislang niemand (beim MCP23017) die B0-B7 Ausgänge im Dauerbetrieb genutzt hat? Wie gesagt, nach dem Hochfahren von fhem funktioniert ja die Ansteuerung von B0-B7, dann 'vergisst' der Chip aber wohl die Einstellungen des Output-Registers, offensichtlich schalten B0-B7 von Output auf Input. Nach einem rereadcfg werden die alten Output-Zustände wiederhergestellt, auch ein Schalten ist wieder möglich. Bis (nach ca. einer gefühlten Minute... ) die Relais der Bank B wieder abschalten.

Das Logfile (nach verbose 5) zeigt m.E. nichts Auffälliges:

2017.10.02 10:55:09 5: I2C.MCP23018.A UpdReadings Register: 18, Inhalt: 255
2017.10.02 10:55:09 5: I2C.MCP23018.A UpdReadings Register: 19, Inhalt: 252
2017.10.02 10:55:01 5: I2C.MCP23018.A UpdReadings Register: 19, Inhalt: 254
2017.10.02 10:55:01 5: I2C.MCP23018.A UpdReadings Register: 18, Inhalt: 255

Beim Abbruch des Output wird nichts ins Logfile geschrieben.

LG
Jorge



Gesendet von meinem HTC U11 mit Tapatalk

Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: jorge am 03 Oktober 2017, 15:21:16
Hallo Klaus,

Zitat von: klausw am 02 Oktober 2017, 15:05:37
Ich habe jetzt folgendes verstanden:
- nach dem booten funktioniert alles?

ja, Bank A und B lassen sich als Outpu ansprechen

Zitat von: klausw am 02 Oktober 2017, 15:05:37
- eine Minute später ist Bank B nicht mehr nutzbar

richtig

Zitat von: klausw am 02 Oktober 2017, 15:05:37
- nach rereadcfg läuft es wieder
js
Zitat von: klausw am 02 Oktober 2017, 15:05:37
- reicht es auch einfach das Output Attribut neu zu setzen ?
ja, habe das sogar zum workaround genutzt:

define I2C.MCP23018.A.OutputUpdate DOIF ([+30])\
({fhem("attr I2C.MCP23018.A OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7")})
attr I2C.MCP23018.A.OutputUpdate do always
Zitat von: klausw am 02 Oktober 2017, 15:05:37
- Verbose vom MCP zeig nix seltsames
richtig
Zitat von: klausw am 02 Oktober 2017, 15:05:37
Das klingt als funkt was anderes dazwischen.
Kann es sein, Das auf deinem Pi nochwas anderes läuft das auf den MCP zugreift?
Werde das prüfen. Ich betreibe am I2C Bus unter anderer Adresse auch einen MCP23017, beim dem auf Bank A Ausgänge und B Eingänge liegen. Vielleicht liegt hier der Hase im Pffeffer...   Bin jetzt erstmal ein paar Tage offline. Melde mich danach.
Zitat von: klausw am 02 Oktober 2017, 15:05:37
Zeigt verbose 5 vom rpii2c Modul was?
Auch den Test  muss ich ein paar Tage verschieben...

LG
Jorge




[/quote]
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: jorge am 23 Oktober 2017, 19:27:34
Zitat von: klausw am 02 Oktober 2017, 15:05:37

Kann es sein, Das auf deinem Pi nochwas anderes läuft das auf den MCP zugreift?

Zur Erinnerung: Ich betreibe am I2C Bus einen MCP23017 auf 0x20 und einen MCP23018 auf 0x27

Habe erstmal Folgendes gemacht:

fhem gestopt: Geschaltete Out-Pins behalten ihren Status, schließe daraus, dass die Register auf Output bleiben, wenn fhem nicht läuft, also liegt das Problem bei fhem, Hardware o.k.

Habe dann nacheinander alle mit dem MCP23017 gleichzeitig angelegte Definition deaktiviert: Letztlich war ein kleines Programm zur Bedienung des SPI-Bus die Ursache (/opt/fhem/./GetAnalogInput) welches mit DOIF  im 300 sec Rhytmus analoge Daten vom MCP3208 abholt...
Hab das erstmal deaktiviert, und so läuft die Relaiskarte am MCP23018 nun seit einer Stunde problemlos.

Danke, Klaus, nochmal für Deine Unterstützung. Dein Modul war nicht die Ursache, und arbeitet offensichtlich auch problemlos mit dem MCP23018.

Jorge



Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 27 November 2017, 12:10:06
Kann mir jemand an dieser Stelle verraten, was die Aussage im datenblatt des MCP23018 unter 2.2 Figure 2-1 zu sagen hat ?

SDA und SCL mit einem PullUp zu versehen ok und mit einem KERKO gegen Masse zu legen verstehe ich ja, aber was bedeutet

PIN mit 50pf gegen Massen?
Welcher PIN ist gemeint ?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: LuckyDay am 27 November 2017, 19:43:54
du schaust aber auch in das Datenblatt, z.B. vom RPI da sind die Pull Up schon drauf
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 27 November 2017, 19:55:52
Ich habe den nicht an nem Pi sondern an einem ESP8266
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 27 November 2017, 23:34:02
Zitat von: R1F800 am 27 November 2017, 12:10:06
Kann mir jemand an dieser Stelle verraten, was die Aussage im datenblatt des MCP23018 unter 2.2 Figure 2-1 zu sagen hat ?

SDA und SCL mit einem PullUp zu versehen ok und mit einem KERKO gegen Masse zu legen verstehe ich ja, aber was bedeutet

PIN mit 50pf gegen Massen?
Welcher PIN ist gemeint ?
Für einen Bastler liest du ziemlich weit  8)
Figure 2-1 ist nur die Beschaltung, welche für die Messung des Timings verwendet wurde.
Die 50p sind vermutlich für alle Pins mit Ausnahme der 2 I2C Pins.
Die Kondensatoren in der Abbildung sollen nur die typische/maximale (so genau habe ich es jetzt nicht gelesen) kapazitive Last der Pins simulieren.
Mit anderen Worten, die sind mehr oder weniger über den kapazitiven Belag der Leiterbahnen und Bauteile die an die Pins angeschlossen werden in deiner Schaltung bereits vorhanden.
Wichtig sind die Pullups am I2C und ein Stützkondensator zwischen + und Masse des MCP kann auch nicht schaden.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 02 April 2018, 23:50:14
Kleines Update meinerseits. Bei mir Läuft es soweit ganz gut bist auf den Interrupt da ich den dann aber doch nicht brauchte hab ich das erst einmal beiseite gelegt. Ich hatte ja von Störungen geschrieben und das ich den Pi dann jedes mal neu starten musste die immer Abends auftauchten. Seit dem ich umgezogen bin hab ich das Problem nicht mehr (War ein altes Haus ohne FI). Seit einiger zeit hab ich eine USV. Beim rum spielen mit dem Teil (USV AN AUS USV gab aber immer Strom raus, also Pi ging nicht aus) hatte ich das Problem wieder. Also hatte es was mit dem Stromnetz zu tun. Hatte aber immer noch keine Lust das Ozi mal dran zu hängen um der Sache auf den Grund zu gehen. Werde aber noch einen Kondensator etwas näher dransetzen und mal testen ob das was bringt. Als Netzteil nutze ich https://www.reichelt.de/Schaltnetzteile-fuer-Hut-Schiene/SNT-MW-DR30-05/3/index.html?ACTION=3&GROUPID=4993&ARTICLE=85222 (https://www.reichelt.de/Schaltnetzteile-fuer-Hut-Schiene/SNT-MW-DR30-05/3/index.html?ACTION=3&GROUPID=4993&ARTICLE=85222) das hier falls es jemand interessiert.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: jorge am 09 April 2018, 21:35:18
Ich hatte auch immer wieder Probleme durch 220 V Schaltleitungen, die vom einem 16 X Relaisboard  via MCP23018 angesteuert wurden. Insbesondere eine über Relais angeschlossende WW-Pumpe  brachte gelegentlich alle Ausgänge in den Status 'Input', und es half nur ein Reset des ganzen Systems.

Das Verhalten zeigte sich auch, als ich die Pumpe !von Hand! geschaltetet habe. Ich habe dann die Pumpe über einen externen HM-Steckdosenschalter geschaltet: Keine Abstürze mehr.

Mein Fazit: Offensichtlich sind MCP23017 /18 extrem empfindlich gegen Induktionsströme...

LG Jorge
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Bastian0302 am 09 April 2018, 22:02:37
Also ich schalte mit den mcp's über ein ULN2803A 24 volt relais. Da ich von den Relaisboard nicht viel halte,da auch die Bewertungen dafür nicht so gut aussehen. Habe auch eine eigene Platine dafür entworfen und diese funktioniert seit einem guten viertel Jahr ohne probleme. Angeschlossen ist testweite auch ein Taster und ein Bewegunsmelder.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 10 April 2018, 17:48:47
Zitat von: jorge am 09 April 2018, 21:35:18
Ich hatte auch immer wieder Probleme durch 220 V Schaltleitungen, die vom einem 16 X Relaisboard  via MCP23018 angesteuert wurden. Insbesondere eine über Relais angeschlossende WW-Pumpe  brachte gelegentlich alle Ausgänge in den Status 'Input', und es half nur ein Reset des ganzen Systems.

wie hast du denn den Reset Pin abgeschlossen?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 10 September 2018, 12:13:20
Hallo ich hab das selbe Problem mit einem 230V Lüfter wenn ich ihn beim Anlauf ausschalte. Die Relais taugen bei Motoren einfach nicht. Leider hab ich es bist heute nicht geschafft das ozi mal dran zu hängen um zu schauen wie man das Problem beheben kann
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 10 September 2018, 12:25:35
Ich wollte mich mal wieder diesem Projekt hier widmen.  Also seid dem ich Fehm mal neu aufgesetzt hatte also neues Betriebssystem von Wheezy auf Jessy seid dem geht der Interrupt nicht mehr. Ich hatte schon mal das Internet durchsucht ob ich noch was im System einstellen muss konnte aber nichts finden. Hat jemand ein tipp für mich was ich noch kontrollieren könnte?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 10 September 2018, 13:05:06
Zitat von: AlphaKingOne am 10 September 2018, 12:25:35
Ich wollte mich mal wieder diesem Projekt hier widmen.  Also seid dem ich Fehm mal neu aufgesetzt hatte also neues Betriebssystem von Wheezy auf Jessy seid dem geht der Interrupt nicht mehr. Ich hatte schon mal das Internet durchsucht ob ich noch was im System einstellen muss konnte aber nichts finden. Hat jemand ein tipp für mich was ich noch kontrollieren könnte?

Aber die Schnittstellen hast Du schon wieder alle aktiviert?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 11 September 2018, 00:05:03
Ich frag einfach Mal ganz blöd was du damit meinst? Meinst du die Module aktivieren? i2c-dev
i2c-bcm2708
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: LuckyDay am 11 September 2018, 00:11:49
sudo adduser fhem i2c
sudo adduser fhem gpio
sudo apt-get install wiringPi
reboot tut not
gpio -v


für Interrupt braucht es ja ein paar Sachen mehr.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 11 September 2018, 06:28:10
Zitat von: AlphaKingOne am 11 September 2018, 00:05:03
Ich frag einfach Mal ganz blöd was du damit meinst? Meinst du die Module aktivieren? i2c-dev
i2c-bcm2708


in sudo raspi-config dann I2C aktivieren .. das geht bei neuem Betriebssystem verlohren
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: AlphaKingOne am 12 September 2018, 07:44:47
Zitat von: fhem-hm-knecht am 11 September 2018, 00:11:49
sudo adduser fhem i2c
sudo adduser fhem gpio
sudo apt-get install wiringPi
reboot tut not
gpio -v


für Interrupt braucht es ja ein paar Sachen mehr.


dank dir jetzt klappt es :)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Dersch am 11 Oktober 2018, 15:52:43
Hi,

ich habe grade meine erste Berührung mit dem MCP23017 und bin schon etwas begeistert allerdings habe ich noch 2 Verständnissfragen welche ich mir bisher nicht erlesen konnte:

1. Meine Relais welche ich angebunden habe sind im Off Status vom MCP23017 geschaltet. On schaltet diese aus. Warum ist das so? Wie kann ich das Verhalten im Modul invertieren?

2. Ich verstehe nicht wozu ich Interrupt A und B gebrauchen könnte. Wann macht der Einsatz davon wirklich Sinn?

Grüße
Dirk
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Frank_Huber am 11 Oktober 2018, 15:57:48
1.
deine Relais schalten mit MINUS Potential, Der MCP gibt PLUS Potential raus.
Eine Invertierung ist mir so jetzt für Ausgänge nicht bekannt. für Eingänge am MCP gibt es ein Attribut

2.
IntA und IntB brauchst nur beim Einsatz als Eingang.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 11 Oktober 2018, 16:09:19
Zu 1:
Ausgänge lassen sich nicht invertieren.
Das macht der MCP nur für die Inputs intern.
Das könnte man über das Modul readingsproxy machen.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Dersch am 11 Oktober 2018, 16:14:49
Ok schon mal vielen Dank für die Info.

Ich habe bereits mit readingsproxy einen Ausgang separiert.

Internals:
   DEF        MCP23017:PortA0
   DEVICE     MCP23017
   NAME       TeBachWasserzufuhr
   NOTIFYDEV  global,MCP23017
   NR         25
   NTFY_ORDER 50-TeBachWasserzufuhr
   READING    PortA0
   STATE      off
   TYPE       readingsProxy
   CONTENT:
     MCP23017   1
   READINGS:
     2018-10-11 16:12:22   lastCmd         off
     2018-10-11 16:12:22   state           off
Attributes:
   devStateIcon on:sani_water_tap@blue off:sani_water_tap@grey
   group      MCP23017 Outputs,
   room       GPIO-Devices
   setFn      {($CMD eq "on")?"PortA0 on":"PortA0 off"}
   setList    on off
   valueFn    {($VALUE eq "on")?"on":"off"}


Bisher habe ich dort nicht die Möglichkeit gefunden eindeutig das Schaltverhalten zu invertieren. Könnt ihr mir da kurz auf die Sprünge helfen?
Zur Not versuche ich das ganze hardwareseitig zu lösen.

Grüße
Dirk

EDIT: Kurz nach dem Posten wurde es dann hell bei mir oben :D

   setFn      {($CMD eq "on")?"PortA0 off":"PortA0 on"}
   setList    on off
   valueFn    {($VALUE eq "on")?"off":"on"}


Damit ist es ja invertiert :D
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: tfriedrich85 am 04 Juni 2019, 23:05:07
Zitat von: AlphaKingOne am 16 November 2016, 15:49:31
Also mal ein kleine Update

###I2C-Device###

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



Hallo,

die Inputs funktionieren prima, aber nun möchte ich bei mehreren Input Modulen das Input Signal abgreifen und das will mir nicht gelingen.

attr Interrupt userReadings test {fhem ("get icMCP23017"), ("get icMCP23017a"), ("get icMCP23017b")}

Wie genau muss hier die Syntax aussehen?

Danke
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Elektrofreak am 29 Mai 2020, 07:33:14
Hallo zusammen,

ich hätte noch ein feature request  ::)

Könnte anstatt on und off vielleicht noch ein on-for-timer und off-for-timer (wie beim GPIO) implementiert werden? Ich brauche die Ausgänge nur für je eine Sekunde aktiv und dann eine Abschaltung via at-Modul für jeden Ausgang zu konfigurieren braucht dann doch sehr viele Resourcen, besonders auf dem Raspberry Pi Zero ...

Ich hoffe klausw ist noch aktiv und hat Lust, dieses Feature einzubauen  8) ;)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 03 Juni 2020, 13:39:04
Zitat von: Elektrofreak am 29 Mai 2020, 07:33:14
Könnte anstatt on und off vielleicht noch ein on-for-timer und off-for-timer (wie beim GPIO) implementiert werden? Ich brauche die Ausgänge nur für je eine Sekunde aktiv und dann eine Abschaltung via at-Modul für jeden Ausgang zu konfigurieren braucht dann doch sehr viele Resourcen, besonders auf dem Raspberry Pi Zero ...

Ich hoffe klausw ist noch aktiv und hat Lust, dieses Feature einzubauen  8) ;)

Auch hier würde ich das readingsproxy Modul empfehlen  ;)
Dieses beherrscht on-for-timer und off-for-timer.
Und du hast auch gleich je Port ein separates Device.

Beide (on-for-timer und off-for-timer) gehören zu den set extensions.
Das sind quasi Funktionen von FHEM. Das jeweilige Modul leitet die Anfrage nur weiter und FHEM erstellt den timer.
Dies funktioniert aber nur mit Modulen die sich direkt mit "set <name> on|off" bedienen lassen.
Das ganze müsste ich separat MCP23017 Modul implementieren, was sehr aufwendig ist.

Grüße
Klaus
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Elektrofreak am 10 Juni 2020, 21:38:13
Danke für den Tipp!  ;)

Das ist für mich auch ausreichend.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 23 November 2020, 13:41:25
Moinsen,
ich habe noch einmal eine Nachfrage bezüglich der Interruptauswertung / reset.

Ich habe Port A und Port B mit jeweils Eingängen versehen.
Jetzt ändert sich ein IO am MCP. Der Interrupt des Ports auch.
Dieses Signal nutze ich dann um das Auslesen aller an PORT A oder B  (INTA/INTB) zu initiieren. >> muss ich hierfür dann ein DOIF bauen oder kann ich das im INT Device dann ablegen?
wie resette ich den INTA bzw INTB nach dem Auslesen, oder passiert das dann durch den Auslesezyklus automatisch?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 08 Dezember 2020, 11:13:22
Zitat von: R1F800 am 23 November 2020, 13:41:25
Moinsen,
ich habe noch einmal eine Nachfrage bezüglich der Interruptauswertung / reset.

Ich habe Port A und Port B mit jeweils Eingängen versehen.
Jetzt ändert sich ein IO am MCP. Der Interrupt des Ports auch.
Dieses Signal nutze ich dann um das Auslesen aller an PORT A oder B  (INTA/INTB) zu initiieren. >> muss ich hierfür dann ein DOIF bauen oder kann ich das im INT Device dann ablegen?
wie resette ich den INTA bzw INTB nach dem Auslesen, oder passiert das dann durch den Auslesezyklus automatisch?


Wenn du für die jeweiligen Eingänge Interrupt Erkennung aktiviert hast wird der entsprechende INTx Pin aktiv gesetzt.
Dieser aktiv, bis die Ports ausgelesen werden.
Direkt beim Auslesen der Ports werden die INTx zurück gesetzt.

Mit INT Device meinst du ein GPIO Device an welches der INTx angeschlossen wird?
Wenn ja:
Du hast 3 Möglichkeiten
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 08 Dezember 2020, 13:05:55
Zitat von: klausw am 08 Dezember 2020, 11:13:22
...
Direkt beim Auslesen der Ports werden die INTx zurück gesetzt.
OK, aber was genau setzt die Interrupts zurück ... das Auslesen triggert im MCP den Reset? oder schickt Firmata beim Auslesen aktiv ein RESET ?


Zitat von: klausw am 08 Dezember 2020, 11:13:22
....
Mit INT Device meinst du ein GPIO Device an welches der INTx angeschlossen wird?
...

Ja ganz genau.

DOIF und notify habe ich jeweils hinbekommen.

Das userReading was Du beschreibst  ist dann kein eigenes Device sondern wird dann nur als Attribut bei dem INT GPIO Device gesetzt?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 10 Dezember 2020, 14:54:19
Zitat von: R1F800 am 08 Dezember 2020, 13:05:55
OK, aber was genau setzt die Interrupts zurück ... das Auslesen triggert im MCP den Reset? oder schickt Firmata beim Auslesen aktiv ein RESET ?

Firmata? Ich muss überlesen haben, das der MCP über einen Firmata angebunden ist.
Das ist aber sowieso egal. Firmata ist transparent für I2C.

Der MCP selbst setzt die INTx Ausgänge zurück wenn der jeweilige Port ausgelesen wird.


Zitat von: R1F800 am 08 Dezember 2020, 13:05:55
Das userReading was Du beschreibst  ist dann kein eigenes Device sondern wird dann nur als Attribut bei dem INT GPIO Device gesetzt?

Genau
Das Attibut wird hier für diesen Zweck missbraucht.
Es hat den Vorteil, das kein weiteres Device angelegt wird
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 10 Dezember 2020, 15:23:30
Zitat von: klausw am 10 Dezember 2020, 14:54:19...
Genau
Das Attibut wird hier für diesen Zweck missbraucht.
Es hat den Vorteil, das kein weiteres Device angelegt wird

Ist denn die Anzahll der Devices so performancebeeinflussend ?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 10 Dezember 2020, 19:55:23
Zitat von: R1F800 am 10 Dezember 2020, 15:23:30
Ist denn die Anzahll der Devices so performancebeeinflussend ?

mit Sicherheit, aber das gilt auch für userreadings.
Aber die Beeinflussung ist verschwindend gering.

Ich mache das eher wegen Übersichtlichkeit. Ist einfach Geschmackssache.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 14 Dezember 2020, 08:16:07
Zitat von: klausw am 10 Dezember 2020, 19:55:23
mit Sicherheit, aber das gilt auch für userreadings.
Aber die Beeinflussung ist verschwindend gering.

Ich mache das eher wegen Übersichtlichkeit. Ist einfach Geschmackssache.

Hallo, vielen Dank für die Erklärungen.

Nun noch eine weitere Frage... bei der Komplettierung meiner Schaltung (2x Portexpander mit einer einzelnen Bank zur Ansteuerunge eines 8fach Relaisboards, habe ich das Problem, dass ich die Ausgänge invertiert sind.
Das wäre als solches nicht so schlimm in FHEM, aber das Problem ist, dass wenn ich sagen wir PORTA7 auf ON setze (Relais fällt ab) Port A0-A6 bleiben auf OFF.  Schalte ich jetzt aber PORTA6 o.ä. ebenfalls auf ON fällt geht A7 wiedfer aif OFF.

Habe ich heir einen Denkfehler oder habe ich ein ATTR vergessen oder sowas ?

Gleiches gilt für die anderen Ausgänge   ... manchmal schaltet der Expander die anderen um, manchmal behält er den STATE des zuvor übermittelten bei ... ggf. ist das Problem woanders zu suchen?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 17 Dezember 2020, 16:01:39
Internals:
   DEF        0x22
   FIRMATA_SENDSTAT Ok
   FUUID      5fc508ca-f33f-31ee-942a-199b8afc46333796
   I2C_Address 34
   IODev      FIRMATA
   NAME       NanoPortexpander2
   NR         22
   STATE      Ok
   TYPE       I2C_MCP23017
   READINGS:
     2020-12-17 15:58:06   PortA0          on
     2020-12-17 12:15:46   PortA1          on
     2020-12-17 15:56:13   PortA2          off
     2020-12-17 12:15:46   PortA3          on
     2020-12-17 12:15:46   PortA4          on
     2020-12-17 12:15:46   PortA5          on
     2020-12-17 15:57:12   PortA6          on
     2020-12-17 12:15:46   PortA7          on
     2020-12-17 15:30:18   PortB0          off
     2020-11-30 16:24:24   PortB1          on
     2020-11-30 16:24:24   PortB2          on
     2020-11-30 16:24:24   PortB3          on
     2020-11-30 16:24:24   PortB4          on
     2020-11-30 16:24:24   PortB5          on
     2020-11-30 16:24:24   PortB6          on
     2020-11-30 16:24:24   PortB7          on
     2020-12-17 15:58:08   state           Ok
Attributes:
   IODev      FIRMATA
   Interrupt  B0,B1,B2,B3,B4,B5,B6,B7
   InterruptOut separate_active-low
   OnStartup  A0=on,A1=on,A2=on,A3=on,A4=on,A5=on,A6=on,A7=on
   OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
   Pullup     B0,B1,B2,B3,B4,B5,B6,B7
   room       FIRMATA
   verbose    5
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 23 Dezember 2020, 12:11:35
So, ich habe was rausgefunden... vielleicht hatte ich einen Denkfehler, aber sie Sachlage zeigt sich wie folgt.

Ich schalte einen PORT Ausgang A0 auf 1
A2 und A6 als Beispiel ebenfalls

>>> es folgt ein unkontrolliertes verhalten; die Readings in fhem zu den OUTPUTS haben sich noch nciht aktualisiert. Diese bekommen scheinbar mein Command nicht mit

Ich schalte einen PORT Ausgang
A0 auf 1 >>> READINGS aktualisieren
A2 auf 1 >>> READINGS aktualisieren
A6 auf 1 >>> READINGS aktualisieren
A2 auf 0 >>> READINGS aktualisieren 
Und et voila .. keine willkürlichen Schaltvorgänge mehr.

Jetzt die spannende Frage ist wenn ich ein OUTPUT setze implizit eine manuell getriggerte Auslesung des MCP erforderlich (jedenfalls scheinen die SET commands ja auf die Readings keinen Einfluss zu haben)
Also, ist das ein BUG oder ist ein ein gewolltes Verhalten, dass ich zwingen auch bei OUTPUTS wie bei den INPUTS mit Interrupt den MCP neu auslesen muss....
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 26 Dezember 2020, 23:20:03
Oje, das ist alles ne Weile her.
Ich glaube das liegt daran, dass Firmata als IODev die Befehle nicht quittiert. Das Thema gab es hier schonmal.
Meiner Meinung nach funktioniert es direkt am I2C des Raspberry.
Es ist kein Bug, aber auch kein Feature ;)
Die Lösung wäre im Moment genau das, was du gemacht hast.
Ich könnte noch ein Attribut einführen, was dies automatisch macht.
Die bessere Lösung wäre meiner Ansicht nach die Quittierung seitens Firmata.


Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 27 Dezember 2020, 12:06:51
Zitat von: klausw am 26 Dezember 2020, 23:20:03
...
Ich könnte noch ein Attribut einführen, was dies automatisch macht.
Die bessere Lösung wäre meiner Ansicht nach die Quittierung seitens Firmata.

Dein Vorschlag wäre super!
Aber ich gebe Dir Recht, dass die beste Lösung die Übernahme des Refresh eine aktive Quittierung seitens Firmata selbst wäre. >> Vielleicht lönnen wir das mit dem FIRMATA Entwickler gerne mal zusammen diskutieren.

Ich bin aktuell nur ein wenig irritiert über eine Fehlermeldung, die ich erst nach dem Umzug meines nano Firmata Clients von einem FHEM Server auf einen anderen hatte ...
Dort bekomme ich nach einem Neustart den Hinweis eines errors:
" Unhandled sysex command"
Keine Ahnung woher das kommt. ich habe mal die verbose auf 5 gedreht .... und dann kam beim LOG vor diesem Fehler folgendes zu Tage (sagt mir leider nicht viel)
READINGS:

error  Unhandled sysex command 2020-12-27 12:02:56
state Initialized 2020-12-27 12:03:01


LOG:
2020.12.27 12:05:48 3: FIRMATA: Firmata Firmware Version ConfiguredFirmataGarage2.ino V_2_10 (using Protocol Version V_2_06)
2020.12.27 12:05:48 5: FIRMATA FRM:>f069f7
2020.12.27 12:05:48 5: FIRMATA FRM:>f06bf7
2020.12.27 12:05:48 5: FIRMATA FRM:<f07155006e00680061006e0064006c0065
2020.12.27 12:05:48 5: FIRMATA: setup stage 2
2020.12.27 12:05:48 5: FIRMATA FRM:<006400200073007900730065007800200063
2020.12.27 12:05:48 5: FIRMATA: setup stage 2
2020.12.27 12:05:48 5: FIRMATA FRM:<006f006d006d0061006e006400f7
2020.12.27 12:05:48 3: FIRMATA: received message 'Unhandled sysex command'
2020.12.27 12:05:48 5: FIRMATA: setup stage 2


es scheint, als wäre bei der Initialisierung etwas krumm ...
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: klausw am 01 Januar 2021, 22:42:15
Das ist sicher eine Frage für den Firmata Thread.
Ich habe keine Ahnung was da steht ;)
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Byllyy am 05 Januar 2021, 10:23:15
Hallo zusammen,
ich versuche das Modul zur Ansteuerung von drei MCP23017 zu verwenden. Die MCP23017 sind über I2C verkabelt, die Adressen eindeutig vergeben und nach dem Beispiel von Antwort#40 konfiguriert.
Bei mir sind auf allen drei Modulen die Eingänge auf INTB.
Jetzt habe ich eine Frage zur Verwendung des Interrupt bei drei Modulen. Hier habe ich leider im Netz unterschiedliche Angaben gefunden, mal mit Pullup auf der INT Leitung, mal mit verschiedenen Attributen beim Interrupt.

Wie verkabel und konfiguriere ich den INT bei mehreren Modulen richtig?

Danke für eure Hilfe,
Byllyy
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 05 Januar 2021, 10:33:59
Zitat von: Byllyy am 05 Januar 2021, 10:23:15
Hallo zusammen,
ich versuche das Modul zur Ansteuerung von drei MCP23017 zu verwenden. Die MCP23017 sind über I2C verkabelt, die Adressen eindeutig vergeben und nach dem Beispiel von Antwort#40 konfiguriert.
Bei mir sind auf allen drei Modulen die Eingänge auf INTB.
Jetzt habe ich eine Frage zur Verwendung des Interrupt bei drei Modulen. Hier habe ich leider im Netz unterschiedliche Angaben gefunden, mal mit Pullup auf der INT Leitung, mal mit verschiedenen Attributen beim Interrupt.

Wie verkabel und konfiguriere ich den INT bei mehreren Modulen richtig?

Danke für eure Hilfe,
Byllyy
Zitat von: Byllyy am 05 Januar 2021, 10:23:15
Hallo zusammen,
ich versuche das Modul zur Ansteuerung von drei MCP23017 zu verwenden. Die MCP23017 sind über I2C verkabelt, die Adressen eindeutig vergeben und nach dem Beispiel von Antwort#40 konfiguriert.
Bei mir sind auf allen drei Modulen die Eingänge auf INTB.
Jetzt habe ich eine Frage zur Verwendung des Interrupt bei drei Modulen. Hier habe ich leider im Netz unterschiedliche Angaben gefunden, mal mit Pullup auf der INT Leitung, mal mit verschiedenen Attributen beim Interrupt.

Wie verkabel und konfiguriere ich den INT bei mehreren Modulen richtig?

Danke für eure Hilfe,
Byllyy

Jeder MCP hat einen INT für Bank A und Bank B ... diese müssen entsprechend ausgelesen und verarbeitet werden. OHNE einen genaueren Hinweis was genau an den PORTS hängen solle kann ich nciht sagen, ob die alle 6 INT benötigst oder nicht.

ich gehe mal davon aus, nachdem ich nach Antowrt #40 gesucht habe (ein kurzer Hinweis hätte ja auch ausgrereicht)  hängen die MCPs an einem I2C des PI.

Im Einfachsten Fall benötigst Du drei IOs am PI .. im komplexesten 6 IOs
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Byllyy am 05 Januar 2021, 10:44:38
Hallo und Dank für die schnelle Antwort

Ja die MCPs hängen an einem I2C des PI und ich nutze jeweils nur den INTB da nur dort die Eingänge sind. Wenn ich dich richtige verstehe braucht jeder MCP eine
eigene Interrupt Leitung zum PI und dort auch einen eigenen GPIO.

Ich meine gelesen zu haben das man die drei INT auch auf einen GPIO zusammenlegen kann und dann nur anders in FHEM konfigurieren kann.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 05 Januar 2021, 11:44:31
Zitat von: Byllyy am 05 Januar 2021, 10:44:38
Ich meine gelesen zu haben das man die drei INT auch auf einen GPIO zusammenlegen kann und dann nur anders in FHEM konfigurieren kann.

das gilt nur für jeweils einen Baustein, wenn man INTA und INTB zusammenfügt. Dann kann man in der Definition des MCP in FHEM beide Interrupts (BANK A und BANK B) kombinieren.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Byllyy am 05 Januar 2021, 14:57:35
Vielen Dank "R1F800", ich habe meine Hardware nach deinem Ratschlag angepasst und alles läuft.
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Byllyy am 28 Januar 2021, 15:58:58
Ich brauche noch einmal eure Hilfe für ein aufgetretenes Problem. Bei meiner bisher fehlerfrei laufenden MCP23017 Erweiterung werden plötzlich die Eingänge
nicht mehr aktualisiert. Nur durch ein Reload der Oberfäche wird der Zustand aktualisiert.
Der Interrupt ist wie folgt definiert:
Internals:
   DEF        22
   EXCEPT_FD  69
   FUUID      5ff5d217-f33f-bc18-fc85-a2ed3e2ea5bc0d65
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    22
   NAME       Interrupt
   NR         151
   STATE      off
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/bin/gpio
   lasttrg    1611845294.02294
   READINGS:
     2021-01-28 15:41:07   Counter         709
     2021-01-28 15:48:14   Dblclick        off
     2021-01-28 15:48:14   Longpress       off
     2021-01-28 15:48:14   Pinlevel        low
     2021-01-28 15:48:14   state           off
     2021-01-28 15:48:14   test            egal
   fhem:
     interfaces switch
Attributes:
   active_low yes
   direction  input
   group      Hubo
   interrupt  both
   room       I2c,Unsorted
   userReadings test {fhem ("get icMCP23017");; "egal" }
   verbose    5


Den Anhang "egal" habe ich testweise eingefügt da ich im Log folgenden Fehler fand "Error evaluating Interrupt userReading test: hash- or arrayref expected".
Nach Verbose 5 habe ich auch noch "Datei: /sys/class/gpio/gpio22/value, FH: IO::File=GLOB(0x44657d0), EXCEPT_FD: 69, akt. Wert: 0" einmal gelesen.

Habt ihr einen Tipp ?
Vielen Dank,
Byllyy
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 28 Januar 2021, 16:35:19
und das Listing des MCP ?
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Byllyy am 28 Januar 2021, 16:47:33
Gerne doch :
Internals:
   DEF        0x22
   FUUID      5ff5d196-f33f-bc18-0431-19c1436c004a19ba
   I2C_Address 34
   INTRIGGER  1
   IODev      i2cBus
   NAME       icMCP23017
   NR         150
   NTFY_TRIGGERTIME 2021-01-28 15:36:54
   STATE      Ok
   TYPE       I2C_MCP23017
   i2cBus_SENDSTAT Ok
   CHANGED:
     PortB4: off
     PortB4: on
     Ok
     Ok
     Ok
     Ok
     OkPortA5: off
     Ok
     Ok
     Ok
     Ok
     Ok
     Ok
     Ok
     Ok
     Ok
     Ok
     Ok
     Ok
     Ok
     Ok
   CHANGEDWITHSTATE:
   READINGS:
     2021-01-25 16:32:51   PortA0          off
     2021-01-25 20:02:45   PortA1          off
     2021-01-25 22:26:06   PortA2          off
     2021-01-19 19:34:47   PortA3          off
     2021-01-20 15:24:31   PortA4          off
     2021-01-28 16:45:11   PortA5          off
     2021-01-25 15:38:19   PortA6          off
     2021-01-11 12:10:30   PortA7          off
     2021-01-19 15:43:48   PortB0          on
     2021-01-28 16:45:02   PortB1          on
     2021-01-06 16:49:28   PortB2          on
     2021-01-28 16:34:13   PortB3          on
     2021-01-28 15:36:55   PortB4          on
     2021-01-26 06:52:30   PortB5          on
     2021-01-26 06:50:46   PortB6          on
     2021-01-26 06:52:44   PortB7          off
     2021-01-28 16:45:21   state           Ok
Attributes:
   IODev      i2cBus
   Interrupt  B0,B1,B2,B3,B4,B5,B6,B7
   InterruptOut connected_active-low
   OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
   Pullup     B0,B1,B2,B3,B4,B5,B6,B7
   group      Hubo
   room       I2c,Unsorted
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 28 Januar 2021, 17:36:27
sieht alles OK aus ... ggf ein Browserfehler ? SCRIPT Blocker AKTIV?
>>  NTFY_TRIGGERTIME 2021-01-28 15:36:54
scheint ja zu funktionieren.


Ach ja .. für den INT IN (GPIO) hast Du das einen PullUp eingebaut?
ggf ist aktuell das Netz nicht ok
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: Byllyy am 28 Januar 2021, 18:10:35
Hallo R1F800,
mir scheint es auch ein Problem in der Verbindung Pi zum MCU zu sein, da ja softwaremäßig Nichts verändert wurde.
Meinst du einen PullUp den ich Hardwaremäßig in die INT Leitung einbauen soll?

Liebe Grüße und Danke,
Byllyy
Titel: Antw:Modul für die Ansteuerung des MCP23017 I2C Portextender
Beitrag von: R1F800 am 28 Januar 2021, 19:04:26
Ja genau 4k7 sollte passen