I2C Portextender mit dem I2C_PCF8574

Begonnen von tfriedrich85, 30 Juli 2019, 22:53:01

Vorheriges Thema - Nächstes Thema

tfriedrich85

Hallo zusammen,

ich habe viele I2C Komponenten in Betrieb darunter ca 10 PCF8574 Portextender mit denen ich Ein- und Ausgänge schalte.
Im Grunde läuft das auch ganz gut, aber neuerdings sehe ich Log immer wieder die gleichen Warnings und kann die Relevanz nicht einschätzen:

Hier der Log


2019.07.30 22:39:40 3: myI2C: HWaccess blockweise von 0x3f lesen, -> sysread failure: Remote I/O error
2019.07.30 22:39:39 3: myI2C: HWaccess blockweise von 0x3f lesen, -> sysread failure: Remote I/O error
2019.07.30 22:39:39 3: eval: {fhem ("get InputE38")}
2019.07.30 22:39:39 1: PERL WARNING: INTA userReadings test evaluated to undef at fhem.pl line 4651, <GEN9> line 23180.
2019.07.30 22:39:39 3: myI2C: HWaccess blockweise von 0x3f lesen, -> sysread failure: Remote I/O error
2019.07.30 22:39:39 3: myI2C: HWaccess blockweise von 0x3f lesen, -> sysread failure: Remote I/O error
2019.07.30 22:39:39 3: eval: {fhem ("get InputE38")}
2019.07.30 22:39:39 1: PERL WARNING: INTA userReadings test evaluated to undef at fhem.pl line 4651, <GEN9> line 23179.




Hier die I2C übersicht:

pi@raspberrypi:~ $ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- 22 23 24 -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 39 3a 3b 3c 3d 3e --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- 5a 5b -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --



Kann ich das irgendwie abstellen? Spielt das eine Rolle?

Vielen Dank für eure Hilfe.
Grüße
Tobias

klausw

Der I2C Bus scheint ab und zu blockiert zu sein. Nutzt du den I2C Bus auch anderweitig? Also außerhalb von FHEM?
RTC etc?
Oder auch Module die nicht über RPII2C funktionieren.
Alle I2C ICs die über RPII2C angesprochen werden blockieren sich nicht gegenseitig.
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

tfriedrich85

Danke für den Hinweis ich habe 10  PCF8574 als I/Os im Einsatz und sonst läuft nichts auf dem Bus.
Ich könnte mir vorstellen, dass es am Zahlensystem / Adressierung liegt. Wie im folgenden Post beschrieben:

https://forum.fhem.de/index.php?topic=20452.60

Aber wie bekomme ich die gefixte Version in mein Fhem?

klausw

Wenn du alle ICs ansteuern kannst dann stimmt auch die Adressierung.
In FHEM wird das neueste Modul ausgeliefert.
Das dezimale Zahlensystem wird genutzt, wenn nur eine Zahl angegeben wird. Ein 0x vor der Zahl interpretiert sie als Hexadezimalzahl.
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

tfriedrich85

Kann es sein, dass es an der Abfrage der Interrupts für die Eingänge liegt?
Denn bei einem Interrupt auf dem Bus werden alle Karten abgefragt und das sieht so aus;

define INTA RPI_GPIO 17
setuuid INTA 5cd6af37-f33f-aed9-d858-4d2bfb4256a84f0f
attr INTA active_low yes
attr INTA direction input
attr INTA interrupt both
attr INTA pud_resistor off
attr INTA room Port Extender,i2c
attr INTA userReadings test {fhem ("get InputE38")} , test {fhem ("get InputE39")} , test {fhem ("get InputE3a")} , test {fhem ("get InputE3b")} , test {fhem ("get InputE3c")} , test {fhem ("get InputE3f")}


LuckyDay

2019.07.30 22:39:39 1: PERL WARNING: INTA userReadings test evaluated to undef at fhem.pl line 4651, <GEN9> line 23180.

da die get Anweisung nichts zurück liefert ! deswegen die PERL WARNING: INTA....

...{fhem ("get InputE38");"egal"}...
damit kein undef -->wird "egal" als Wert genommen

tfriedrich85

Hallo,

danke für die Antwort! Kann man das irgendwie umgehen oder das Warning abschalten?

Beste Grüße
Tobias

LuckyDay

 :o
mein Beispiel für dich so unverständlich,
ich kann doch auch nichts dafür wenn deine get Abfrage unvollständig/fehlerhaft  ist

PeMue

Zitat von: tfriedrich85 am 04 August 2019, 17:50:45
Kann man das irgendwie umgehen oder das Warning abschalten?
Ja, pack einen Default-Wert in den Aufruf (siehe den blauen Text von Hary weiter oben).

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

tfriedrich85


cs-online

Hallo,

ich kram den Threat mal wieder hoch, ich habe das Problem, dass der Portextender anscheinend irgendwann einschläft und somit nicht darauf reagiert, wenn man die Ports schalten will. Erst nach mehreren Schaltversuchen reagiert der dann zuverlässig. Kennt jemand das Problem bzw. eine mögliche Abhilfe ? Angeschlossen ist der an einem Raspi 4 mit Buster OS

Grüße Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr