[GELÖST] I2C_MCP23017 Eingänge schalten nicht

Begonnen von Burny4600, 31 Dezember 2017, 15:30:11

Vorheriges Thema - Nächstes Thema

Burny4600

Verwendetes Modul MCP23017 32x DigitalIO. Entspricht dem Modul im Anhang.

I2C_MCP23017 Eingänge schalten trotz Interrupt Definition nicht.
Erst wenn ich die Bank des I2C_MCP23017 mit den Eingängen am Browser aufrufe, zb. mcp23017_B1_EDV, werden die Eingänge verarbeitet.
Die Eingänge sind mit Masse am Eingang aktiv.
LIST RPI_GIPO
Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp01.cfg
   DEF        21
   EXCEPT_FD  49
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    21
   NAME       INT
   NR         1656
   STATE      AUS
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   READINGS:
     2017-12-31 14:33:52   Dblclick        off
     2017-12-31 14:33:52   Longpress       off
     2017-12-31 14:45:58   Pinlevel        low
     2017-12-31 14:33:52   interrupt       egal
     2017-12-31 14:33:52   state           off
   fhem:
     interfaces switch
Attributes:
   active_low yes
   alias      RPI_GIPO 21 Interupt für MCP23017 Modul
   devStateIcon EIN:control_on_off@0CFB0C AUS:control_home@E50005
   direction  input
   eventMap   on:EIN off:AUS
   icon       control_on_off
   interrupt  both
   poll_interval 60
   pud_resistor up
   restoreOnStartup last
   room       _GPIO,_IO
   userReadings interrupt:Pinlevel:.low* none {fhem ("get mcp23017_B1_EDV,mcp23017_B2_EDV"); "egal"}


LIST mcp23017_B1
Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp01.cfg
   DEF        0x20
   I2C_Address 32
   IODev      RpiI2C_1
   NAME       mcp23017_B1_EDV
   NR         1629
   RpiI2C_1_SENDSTAT Ok
   STATE      Ok
   TYPE       I2C_MCP23017
   READINGS:
     2017-12-31 14:49:20   PortA0          on
     2017-12-31 11:18:08   PortA1          off
     2017-12-31 11:18:08   PortA2          off
     2017-12-31 14:31:14   PortA3          on
     2017-12-31 11:18:08   PortA4          off
     2017-12-31 11:18:08   PortA5          off
     2017-12-31 11:18:08   PortA6          off
     2017-12-31 11:18:08   PortA7          off
     2017-12-31 11:18:07   PortB0          off
     2017-12-31 11:18:07   PortB1          off
     2017-12-31 11:18:07   PortB2          off
     2017-12-31 11:18:07   PortB3          off
     2017-12-31 11:18:07   PortB4          off
     2017-12-31 11:18:07   PortB5          off
     2017-12-31 11:18:07   PortB6          off
     2017-12-31 11:18:07   PortB7          off
     2017-12-31 14:53:52   state           Ok
Attributes:
   IODev      RpiI2C_1
   Interrupt  A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
   OnStartup  A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off,B0=off,B1=off,B2=off,B3=off,B4=off,B5=off,B6=off,B7=off
   Pullup     A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
   alias      Digital I/O Bank 1 | Port A0-A7,B0-B7
   devStateIcon Ok:it_net@0CFB0C Initialized:it_net@yellow defined:it_net@yellow disconnected:it_net@E50005 error:it_net@E50005
   group      Schnittstellen I2C
   icon       it_net
   invert_input A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
   room       _IO,_RxTx


LIST mcp23017_B2
Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp01.cfg
   DEF        0x21
   I2C_Address 33
   IODev      RpiI2C_1
   NAME       mcp23017_B2_EDV
   NR         1634
   RpiI2C_1_SENDSTAT Ok
   STATE      Ok
   TYPE       I2C_MCP23017
   READINGS:
     2017-12-31 14:31:43   PortA0          on
     2017-12-31 14:49:21   PortA1          off
     2017-12-31 14:31:47   PortA2          on
     2017-12-31 14:31:46   PortA3          on
     2017-12-31 14:31:44   PortA4          on
     2017-12-31 14:26:53   PortA5          on
     2017-12-31 14:26:52   PortA6          on
     2017-12-31 14:31:58   PortA7          on
     2017-08-23 12:50:39   PortB0          on
     2017-06-15 12:24:53   PortB1          off
     2017-06-15 12:24:53   PortB2          off
     2017-06-15 12:24:53   PortB3          off
     2017-06-15 12:24:53   PortB4          off
     2017-06-15 12:24:53   PortB5          off
     2017-06-15 12:24:53   PortB6          off
     2017-06-15 12:24:53   PortB7          off
     2017-12-31 14:55:25   state           Ok
Attributes:
   IODev      RpiI2C_1
   Interrupt  B0
   InterruptOut connected_active-low
   OnStartup  A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off,B0=off
   OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
   Pullup     B0
   alias      Digital I/O Bank 2 | Port A0-A7,B0
   devStateIcon Ok:it_net@0CFB0C Initialized:it_net@yellow defined:it_net@yellow disconnected:it_net@E50005 error:it_net@E50005
   group      Schnittstellen I2C
   icon       it_net
   invert_input B0
   room       _IO,_RxTx


Der GPIO 21 ist hardwaremässig auf die INT A und INT B der beiden 16 Port B1 und B2 gebrückt um den Interrupt auszuführen.


Irgendwie dürfte ich hier einen Denkfehler haben, zumindest weiß ich das die INTA und INTB der Port B1 und B2 Hardwaremäßig nicht zusammen gelegt werden dürfen.
Wie mache ich eine vollständige Verknüpfung der 4 INTx über das Attribut?
Ist die Definition des Attributs aussreichend? userReadings interrupt:Pinlevel:.low* none {fhem ("get mcp23017_B1_EDV,mcp23017_B2_EDV"); "egal"}
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

klausw

der GPIO ist korrekt eingestellt

beim MCP fehlt InterruptOut mit dem INTA/B konfiguriert werden
OnStartup ist für Ausgänge und in Deinem Fall überflüssig
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Burny4600

Danke für die Info Klaus.
An beiden Banken ist das attr InterruptOut mit connected_active-low eingetragen. Notwendig wegen den Eingängen.
OnStartup ist nur mehr auf der Bank 2 für die Ausgänge definiert.
Die Änderungen habe ich soweit durchgeführt, aber dennoch funktionieren die Eingänge nicht wie sie sollten.
Lege ich Masse an einem Eingang an erkennt zwar der RPI_GIPO 21 die Änderung, aber der MCP Eingang ändert den Zustand nicht.
Eigenartig ist an der Angelegenheit das sich auf der geöffnete Bank 1, welche nur Eingänge hat, sich nichts ändert wenn ich das Signal an einem Eingang anlege. Mache ich auf der geöffneten Browser Eingangsseite der Bank 1 ein F5 schalten die Eingange.
Bei den Ausgängen gibt es dieses Problem nicht. Die schalten sofort.
Nur was hat der Browser Refresch (F5) damit zu tun das erst dann eine Signaländerung am MCP erkannt wird.
Irgendwie komme ich hier noch nicht weiter.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

klausw

Ein Refresh oder (F5) führt auch ein "get mcpdevice" aus.
Wenn der GPIO auf Leveländerung reagiert und F5 beim MCP den korrekten Wert bringt dann stimmt evtl. mit dem userReadings was nicht.
connected_active-low sollte passen
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Burny4600

Wie und wo kann ich userReadings überprüfen bzw. korrigieren?
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

klausw

Das userreadings ist das Attibut vom GPIO. Dort kannst du es auch korrigieren.
Hast du keine Fehlermeldungen im Log?

Ich würde minimal Beginnen:
userReadings test {fhem "get mcp23017_B1_EDV"; return "egal"}
eventuell brauchst du ein doppeltes ; ich weiß nicht mehr genau wie das was. Aber wenn es nicht passt sollten Fehler im Log auftauchen.
Wenn es funktioniert kannst du noch zweiten MCP und den Trigger hinzufügen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Burny4600

Irgendwie komme ich hier nicht weiter.
Ich habe zudem beim RPI_GPIO21 und dem MCP23017 auf verbose 5 das Attribut geändert.
Habe den Eingang mcp23017_B1_EDV.A0 auf masse gelegt und keine Änderung im Frontend dieses Einganges gesehen.
Dies ist das Log dazu, nur das was ich im Log sehe hilft mir auch nicht weiter.
2018.01.05 11:13:13.611 5: INT, in fileaccess: value
2018.01.05 11:13:14.466 5: INT, in fileaccess: value
2018.01.05 11:17:18.821 5: INT, in fileaccess: value
2018.01.05 11:17:19.530 5: INT, in fileaccess: value
2018.01.05 11:18:04.896 5: INT, in fileaccess: value
2018.01.05 11:18:05.652 5: INT, in fileaccess: value
2018.01.05 11:19:32.682 5: mcp23017_B1_EDV UpdReadings Register: 19, Inhalt: 0
2018.01.05 11:19:32.684 5: mcp23017_B1_EDV UpdReadings Register: 18, Inhalt: 8
2018.01.05 11:19:33.423 5: mcp23017_B1_EDV UpdReadings Register: 19, Inhalt: 0
2018.01.05 11:19:33.424 5: mcp23017_B1_EDV UpdReadings Register: 18, Inhalt: 8
2018.01.05 11:21:29.651 5: INT, in fileaccess: value
2018.01.05 11:21:29.665 5: mcp23017_B1_EDV UpdReadings Register: 19, Inhalt: 0
2018.01.05 11:21:29.666 5: mcp23017_B1_EDV UpdReadings Register: 18, Inhalt: 8
2018.01.05 11:22:18.459 5: INT, in fileaccess: edge
2018.01.05 11:22:21.324 5: INT, in fileaccess: value

Ich verstehe nur nicht warum diese Konfiguration nicht mehr funktioniert wo vor einiger Zeit beim Test alles funktioniert hatte.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Burny4600

#7
Mittlerweilen musste ich auf mehreren Systemen feststellen das die Eingänge nicht richtig funktionieren, was ich nicht verstehe.
Entweder haben die FHEM Installationen durch die Updates einen Fehler was die MCP23017 oder alle MCP23017 Eingänge sind gestorben was ich mir nicht vorstellen kann da sie bis vor kurzem noch funktioniert haben und alle gleichzeitig gestorben sind kann ich mir nicht vorstellen.

LIST INT GPIO 21
Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp01.cfg
   CHANGED   
   DEF        21
   EXCEPT_FD  163
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    21
   NAME       INT
   NR         1706
   STATE      AUS
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   READINGS:
     2018-01-02 14:00:34   Counter         1
     2018-01-05 17:32:28   Dblclick        off
     2018-01-06 11:06:16   Pinlevel        high
     2018-01-05 19:30:16   interrupt       egal
     2018-01-05 19:30:16   state           off
   fhem:
     interfaces switch
Attributes:
   active_low yes
   alias      RPI_GIPO 21 Interupt für MCP23017 Modul
   devStateIcon EIN:control_on_off@0CFB0C AUS:control_home@red
   direction  input
   eventMap   on:EIN off:AUS
   icon       control_on_off
   interrupt  both
   pud_resistor up
   room       _GPIO,_IO
   userReadings interrupt:Pinlevel:.low* none {fhem ("get mcp23017_B1_EDV,mcp23017_B2_EDV"); "egal"}
   verbose    5


LIST EINGÄNGE
Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp01.cfg
   DEF        0x20
   I2C_Address 32
   IODev      RpiI2C_1
   NAME       mcp23017_B1_EDV
   NR         1679
   RpiI2C_1_SENDSTAT Ok
   STATE      Ok
   TYPE       I2C_MCP23017
   READINGS:
     2018-01-02 17:56:40   PortA0          off
     2017-12-31 11:18:08   PortA1          off
     2017-12-31 11:18:08   PortA2          off
     2017-12-31 12:31:18   PortA3          on
     2017-12-31 11:18:08   PortA4          off
     2017-12-31 11:18:08   PortA5          off
     2017-12-31 11:18:08   PortA6          off
     2017-12-31 11:18:08   PortA7          off
     2017-12-31 11:18:07   PortB0          off
     2017-12-31 11:18:07   PortB1          off
     2017-12-31 11:18:07   PortB2          off
     2017-12-31 11:18:07   PortB3          off
     2017-12-31 11:18:07   PortB4          off
     2017-12-31 11:18:07   PortB5          off
     2017-12-31 11:18:07   PortB6          off
     2017-12-31 11:18:07   PortB7          off
     2018-01-06 11:09:05   state           Ok
Attributes:
   IODev      RpiI2C_1
   Interrupt  A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
   InterruptOut connected_active-low
   Pullup     A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
   alias      Digital I/O Bank 1 | Port A0-A7,B0-B7
   devStateIcon Ok:it_net@0CFB0C Initialized:it_net@yellow defined:it_net@yellow disconnected:it_net@red error:it_net@red
   group      Schnittstellen I2C
   icon       it_net
   invert_input A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
   room       _IO,_RxTx
   verbose    5


LIST AUSGÄNGE & 1 Eingang

Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp01.cfg
   DEF        0x21
   I2C_Address 33
   IODev      RpiI2C_1
   NAME       mcp23017_B2_EDV
   NR         1684
   RpiI2C_1_SENDSTAT Ok
   STATE      Ok
   TYPE       I2C_MCP23017
   READINGS:
     2018-01-05 19:22:56   PortA0          on
     2018-01-05 19:22:56   PortA1          on
     2018-01-05 19:22:56   PortA2          on
     2018-01-05 19:22:56   PortA3          on
     2018-01-05 19:22:56   PortA4          on
     2018-01-05 19:22:56   PortA5          on
     2018-01-05 19:22:56   PortA6          on
     2018-01-05 19:22:56   PortA7          on
     2017-08-23 12:50:39   PortB0          on
     2017-06-15 12:24:53   PortB1          off
     2017-06-15 12:24:53   PortB2          off
     2017-06-15 12:24:53   PortB3          off
     2017-06-15 12:24:53   PortB4          off
     2017-06-15 12:24:53   PortB5          off
     2017-06-15 12:24:53   PortB6          off
     2017-06-15 12:24:53   PortB7          off
     2018-01-06 11:10:28   state           Ok
Attributes:
   IODev      RpiI2C_1
   Interrupt  B0
   InterruptOut connected_open-drain
   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
   alias      Digital I/O Bank 2 | Port A0-A7,B0
   devStateIcon Ok:it_net@0CFB0C Initialized:it_net@yellow defined:it_net@yellow disconnected:it_net@E50005 error:it_net@E50005
   group      Schnittstellen I2C
   icon       it_net
   invert_input B0
   room       _IO,_RxTx


pi@ccs-ht-rasp01:~ $ ls -la /sys/class/gpio/
insgesamt 0
drwxrwx---  2 root gpio    0 Jan  5 19:22 .
drwxr-xr-x 48 root root    0 Jan  6 11:16 ..
-rwxrwx---  1 root gpio 4096 Jan  5 19:22 export
lrwxrwxrwx  1 root gpio    0 Jan  5 19:22 gpio21 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio21
lrwxrwxrwx  1 root gpio    0 Jan  5 17:31 gpio27 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio27
lrwxrwxrwx  1 root gpio    0 Jan  5 17:30 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
lrwxrwxrwx  1 root gpio    0 Jan  5 17:30 gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100
lrwxrwxrwx  1 root gpio    0 Jan  5 17:30 gpiochip128 -> ../../devices/gpiochip1/gpio/gpiochip128
-rwxrwx---  1 root gpio 4096 Jan  5 19:17 unexport
pi@ccs-ht-rasp01:~ $


pi@ccs-ht-rasp01:~ $ ls -l /sys/class/gpio/gpio21/
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Jan  5 19:22 active_low
lrwxrwxrwx 1 root gpio    0 Jan  5 19:22 device -> ../../../gpiochip0
-rwxrwx--- 1 root gpio 4096 Jan  5 19:22 direction
-rwxrwx--- 1 root gpio 4096 Jan  6 11:06 edge
drwxrwx--- 2 root gpio    0 Jan  5 19:22 power
lrwxrwxrwx 1 root gpio    0 Jan  5 19:22 subsystem -> ../../../../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Jan  5 19:22 uevent
-rwxrwx--- 1 root gpio 4096 Jan  5 19:22 value
pi@ccs-ht-rasp01:~ $
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

klausw

Den MCP23017 kannst du mit {fhem ("get mcp23017_B1_EDV,mcp23017_B2_EDV")} aktualisieren?
Wenn ja dann ist der Teil doch schon ok


INT, in fileaccess: value
-> bei einem Input GPIO wird der Pinstatus gelesen

INT, in fileaccess: edge
-> bei einem Input GPIO wird die Interrupt Einstellung gelesen. Dies geschieht wenn ein Interrupt ausgelöst wurde.
wenn das kommt das klappt das mit dem Interrupt.

Mir fällt gerade auf das state und pinlevel bei interrupt "both" nicht aktualisiert werden (bug oder feature ist hier die Frage).
Versuche bitte mal rising oder falling.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Burny4600

Hallo Klaus.

Mit der Fehlersuche habe ich so einiges umgestellt.
Was jedenfalls ich korrigiert habe ist das InterruptOut mit connected_active-low zu definieren ist und active_low auf no sein muss damit der Interrupt funktioniert.
Was jedenfalls keine Rolle gespielt hat ob der interrupt auf both, falling oder rising steht.
Irgendwie habe ich mit der Fehlersuche entweder bei allen etwas verstellt oder es hat sich etwas geändert warum der Interrupt nicht mehr funktionierte. Vermutlich etwas verstellt.
Bei dem System wo es mir bei der Inbetriebnahme aufgefallen ist dürfte aber noch etwas anderes fehlerhaft sein. Hier wird der Interrupt einfach nicht ausgeführt. Ich werde einen anderen INT Ausgang testweise verwenden um festzustellen ob der INTA der Bank1 defekt ist.
Jedenfalls der GPIO Eingang funktioniert bei manueller Auslösung was ich testweise überprüft habe.
Morgen werde ich weiter machen.
   
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Burny4600

Hallo Klaus.
ZitatDen MCP23017 kannst du mit {fhem ("get mcp23017_B1_EDV,mcp23017_B2_EDV")} aktualisieren?
Der GPIO wird aktualisisert.
Ich habe alle 4 INT Ausgänge getestet, aber kein einziger gibt etwas auf den GPIO. Zumindest was die Aktuallisierung des GPIOS betrifft.
Ich muß mir anscheinend doch ein kleines OSZI besorgen um Impulse messen zu können.
Alle 32 I/Os der zwei Banken funktionieren als Ausgänge, nur das hilft mir mit dem Interrupt den ich für die Eingänge benötige nicht weiter.
Ich vermute das beide mcp23017 Banken mit den INT Ausgängen einen Defekt haben und das Problem nicht an der Software liegt.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

klausw

Zitat von: Burny4600 am 10 Januar 2018, 13:11:05
Ich vermute das beide mcp23017 Banken mit den INT Ausgängen einen Defekt haben und das Problem nicht an der Software liegt.

Hmm, das scheint der Fall zu sein.
Den GPIO hast du als Fehlerquelle schon ausgeschlossen.
connected_active-low bedeutet, das die INT Ausgänge normalerweise 3,3V haben und im Interruptfall aktiv auf Masse gezogen werden.
Vorrausgesetzt natürlich, es gibt einen Pullup Widerstand an diesem Knoten.
Wenn du 0V misst würde ich einfach mal 10k von der INT Leitung auf die 3,3V legen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Burny4600

#12
Hallo Klaus.
Neue Erkenntnisse die mich ein wenig verwundern lässt.
Eine Beschaltung eines Widerstandes von 3,3V auf Bank1 INTA würde nichts bringen da im nicht geschalteten Zustand 5V ausgegeben werden.
Siehe Schaltplan.
Ich habe INTA und RPI_GPIO21 durch einen Optokoppler getrennt, damit am Ausgang des Optokopplers 3,3V mit einem Pullup Widerstand am RPI_GPIO21 anstehen oder Masse bei ausgelösten Interrupt. Der RPI_GPIO21 funktionierte aber auch schon vorher, werde aber allen INTERRUPTS einen Optokoppler dazwischen hängen.
Aber jetzt kommt das Rätsel wo ich nicht weiter komme, denn mittlerweile funktionieren auch bei den schon in Betrieb genommen Eingängen diese auch wieder nicht obwohl ich nichts verändert habe.
Ein weiteres Phänomen ist das, das der INT Ausgang für einmal einen Interrupt eines Eingangs funktioniert und beim zweiten dann nicht mehr. Und wenn er nicht mehr funktioniert stehen hier nicht mehr die 5V an sondern 0V, was aber nicht sein dürfte oder sollte. Ich habe auf dem INTA auch schon einen Pullup Widerstand gegen 5V am Optokopler Eingang beschaltet bzw. der auch der INT Ausgang ist. Aber es stehen 0,5V am INT an. Erst bei einem F5 Refresh auf dem WEB Frontend ist am INT wieder 5V und wieder bereit für den nächsten Interrupt.
Somit weiß ich zwar das keines der IOPiPlus Boards defekt ist, aber das hilft mir im Moment auch nicht weiter.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

klausw

Zitat von: Burny4600 am 11 Januar 2018, 17:01:27
Eine Beschaltung eines Widerstandes von 3,3V auf Bank1 INTA würde nichts bringen da im nicht geschalteten Zustand 5V ausgegeben werden.
Stimmt mein Fehler.
connected_active-low schaltet zwischen Vdd und Vss (das bedeutet auch, das du die INTs von den beiden MCP23017 nicht verbunden hast?)
Ohne Optokoppler würdest du mit connected_open-drain und Pullup gegen 3,3V auskommen.
Beim open drain ist der INT normalerweise hochohmig (dadurch 3,3V wegen Pullup) und wird erst im Interruptfall gegen Masse gezogen. Dadurch könntest du auch die INTs der beiden MCP23017 verbinden, was sonst nicht funktioniert oder sogar die ICs zerstört.
Der Optokoppler bringt meiner Meinung nach keinen Vorteil.

Zitat von: Burny4600 am 11 Januar 2018, 17:01:27
Ich habe INTA und RPI_GPIO21 durch einen Optokoppler getrennt damit am Ausgang des Optokopplers 3,3V mit einem Pullup Widerstand am RPI_GPIO21 anstehen oder Masse bei ausgelösten Interrupt. Der RPI_GPIO21 funktionierte aber auch schon vorher, werde aber allen INTERUPTS einen Optokoppler dazwischen hängen.
Aber jetzt kommt das Rätsel wo ich nicht weiter komme, denn mittlerweile funktionieren auch bei den schon in Betrieb genommen Eingängen diese auch wieder nicht obwohl ich nichts verändert habe.
An den MCP23017 Modul hat sich in den letzten Monaten aber auch nichts verändert  :o
Zitat von: Burny4600 am 11 Januar 2018, 17:01:27
Ein weiteres Phänomen ist das, das der INT Ausgang für einmal einen Interrupt eines Eingangs funktioniert und beim zweiten dann nicht mehr. Und wenn er nicht mehr funktioniert stehen hier nicht mehr die 5V an sondern 0V, was aber nicht sein dürfte. Ich habe auf dem INTA auch schon einen Pollup Widerstand gegen 5V am Optokopler Eingang beschaltet bzw. der auch der INT Ausgang ist. Aber es stehen 0,5V am INT an. Erst bei einem F5 Refresh auf dem WEB Frontend ist am INT wieder 5V und wieder Bereit für den nächsten Interrupt.
Somitweiß ich zwar das keines der IOPiPlus Boards defekt ist, aber das hilft mir im Moment auch nicht weiter.
Das soll auch so sein. Wenn ein Interrupt ausgelöst wird, so steht dieser so lange an (also INT Ausgang aktiv...in deinem Fall 0V) bis die Zustandsregister des MCP23017 ausgelesen werden. Das würde erklären, wieso nach F5 der INT wieder auf 5V hoch geht.
Wenn allerdings das toggeln am GPIO21 einen Interrupt auslöst (also die Readings automatisch aktualisiert) und der INT vom MCP23017 bei Pegelwechsel eines Eingangs auf LOW geht und bei F5 auf der Detailseite des MCP23017 wieder auf HIGH geht dann kann es nur noch an deinem userreading liegen, welches den zu F5 adäquaten Befehl auslöst. Versuche doch anstelle von userreading mal ein notify.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Burny4600

#14
Soweit ich weis vertragen die RPI_GPIOs nur 3,3V, auf Dauer oder täusche ich mich.
Darum dachte ich eine Trennung zwischen INT und GPIO zu schaffen weil der INT Ausgang 5V bzw. Masse ausgibt.
Die vier INT Ausgänge der beiden Banken sind miteinander nicht verbunden. Es ist nur der INT A der ersten Bank mit dem RPI_GPIO21 verbunden und das müsste reichen.
Beim Messen der Spannungen ist mir aufgefallen das beide INT einer Bank gleichzeitig sowohl 5V ausgeben bzw. auf Masse gezogen sind.
Warum dann zwei INT Ausgänge mit dem gleichen Signalzustand?
ZitatVersuche doch anstelle von userreading mal ein notify.
Wie hast du das mit dem Notifying gemeint?
Dieses userreading interrupt:Pinlevel:.low* none {fhem ("get mcp23017_B1_EDV,mcp23017_B2_EDV");; "egal"} löschen und das notify mit was definieren?
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT