[GELÖST] I2C_MCP23017 Eingänge schalten nicht

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

Vorheriges Thema - Nächstes Thema

Burny4600

#15
Hallo Klaus.
Ich komme leider an diesem Punkt nicht mehr weiter.
Wie hast du das mit dem Userreading gemeint?

Ich habe bei einem Testsystem alles auf verbose 5 gestellt um eventuell mehr über das Fehlverhalten zu erfahren.
Zusätzlich habe ich einmal den Eingang Bank1-B0 auf Masse geschaltet und wieder geöffnet Signal High (5V) am Eingang des MCP23017.
Siehe Anhang.
Nur der INT zu RPI_GPIO21 bleibt auf 0V und wird erst wieder mit F5 wieder High (5V).
Mittlerweile habe ich alle Variationen durch nur hat es keinen Einfluß auf den INT zu RPI_GPIO21. 
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

Mist, mein letzter Post ist wohl nicht angekommen  :o

zu der Datei... ist viel überflüssiges drin dafür fehlen andere wichtigere Dinge 8):
global verbose würde ich auf 1 setzen und den verbose vom GPIO, MCP und I2C auf 5

Ab Zeile 1013 wird ein Interruptereignis abgearbeitet.
Der Interrupt ist auf falling eingestellt, daher wird nur Toggle und Zähler gesetzt
state und pinlevel sind immer low/off da der Interrupt nur bei fallender Flanke ausgelöst wird und in diesem Moment der Pin immer low ist, allerdings werden sie aktualisiert (beim setzten von event on change reading wird auch kein Event das z.B. für notify benötigt wird ausgelöst)
In der Detailansicht des INT GPIO wirst du also immer low beim Pinlevel sehen (nur bei both wird es toggeln)
Trotz allem funktioniert der Interrupt (müsste am counter oder toggle gut zu sehen sein)
In Zeile 1017 wird "get mcp23017_B1_OG1,mcp23017_B2_OG1" abgesetzt, was bedeutet, das dein userreadings ausgeführt wird
In Zeile 1018, 1019, 1023, 1024 werden die Ports auch aktualisiert allerdings mit 0 (viel mehr ist nicht zu erkennen, da das I2C Modul auf verbose 1 gestellt ist)

-> Interrupt über GPIO funktioniert
-> Auslesen der Ports wird ausgeführt
Aber die Ports sind in diesem Moment immer 0

Wie lange legst du 5V an?

Kann es sein, das du an A0 die 5V anlegst?
Register 18 ist Bank A und der Wert 1 deutet auf Port 0 hin


Zitat von: Burny4600 am 14 Januar 2018, 12:25:29
Ich komme leider an diesem Punkt nicht mehr weiter.
Wie hast du das mit dem Userreading gemeint?

hat sich erledigt ...scheint ja zu funktionieren

Zitat von: Burny4600 am 11 Januar 2018, 19:04:13
Nur der INT zu RPI_GPIO21 bleibt auf 0V und wird erst wieder mit F5 wieder High (5V).

Du meinst auf der Detailseite in FHEM?
...siehe Erklärung oben

Zitat von: Burny4600 am 11 Januar 2018, 19:04:13
Soweit ich weis vertragen die RPI_GPIOs nur 3,3V, auf Dauer oder täusche ich mich.

Stimmt, aber open collector Ausgänge sind low dominant. Bedeutet sie ziehen den Pin hart auf Masse oder sind hochohmig.
Hochohmig würde im Falle eines angeschlossenen Pullups gegen 3,3V einen Pegel von 3,3V bedeuten.
So kannst du auch problemlos meherere open collector Ausgänge verbinden.

Zitat von: Burny4600 am 11 Januar 2018, 19:04:13
Darum dachte ich eine Trennung zwischen INT und GPIO zu schaffen weil der INT Ausgang 5V bzw. Masse ausgibt.

Bei active-low mach das auch Sinn, da dieser aktiv gegen Masse und Versorgung (in diesem Fall 5V) treibt.
Ein pullup ist daher in diesem Fall auch sinnlos.

Zitat von: Burny4600 am 11 Januar 2018, 19:04:13
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.

Das ist dann auch Ok

Zitat von: Burny4600 am 11 Januar 2018, 19:04:13
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?

Wenn du beide Bänke getrennt auswertest aber die Pins fälschlicherweise als connected eingestellt hast funktioniert es trotzdem.
Manche IC Hersteller denken halt mit  8)
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

ZitatWie lange legst du 5V an?

Kann es sein, das du an A0 die 5V anlegst?
Register 18 ist Bank A und der Wert 1 deutet auf Port 0 hin
An den Ein- und Ausgängen wird aktiv mit Masse geschaltet.
5V kann nur über den Pullup an den Eingängen der Bank1 anliegen und werden aktiv gegen Masse geschaltet.

ZitatStimmt, aber open collector Ausgänge sind low dominant.
Bedeutet sie ziehen den Pin hart auf Masse oder sind hochohmig.
Hochohmig würde im Falle eines angeschlossenen Pullups gegen 3,3V einen Pegel von 3,3V bedeuten.
So kannst du auch problemlos meherere open collector Ausgänge verbinden.
Nur im Ruhezustand liegen an den INT Ausgängen der Banken immer 5V an, was auch logisch ist anhand des Schaltplans.
Gegen Masse wird der INT geschaltet wenn ein Ereignis auf einem Eingang erfolgte (aktiv Masse) und an den RPI_GPIO21 weitergegeben werden sollte bis das Einlesen angeschlossen ist.
Nur warum der INT nicht wieder auf High sich geändert verstehe ich nicht, denn die INTs gehen erst bei einem F5 der betreffenden Bank wieder auf 5V und nicht auf 3,3V als High Signal belegt.

ZitatWenn du beide Bänke getrennt auswertest aber die Pins fälschlicherweise als connected eingestellt hast funktioniert es trotzdem.
Manche IC Hersteller denken halt mit  8)
InterruptOut  connected_active-low wird für die Eingänge benötigt.
Werden auf einer Bank Ein- und Ausgänge verwendet ist das Attribut InterruptOut bei dem connected_active-low eingetragen welches nur für Eingänge notwendig sind. So habe ich es zumindest verstanden.

Ich habe nochmals einen Durchlauf mit der Aktivierung der Eingänge gemacht.
B4 und B6 sind aktiv wegen der Spannungsüberwachung.
A0 bis B3 haben im Ruhezustand ein High (5V wegen den Pullups) anliegen.
Mit dem Schalten gegen Masse ist der Eingang aktiv.
Ich habe beim ersten Durchlauf die Eingängen A0 bis B3 nur kurz gegen Masse geschaltet und beim zweiten Durchlauf länger gegen Masse geschaltet.
Anbei das Log für den Test.
Ich hoffe mit der verbose Änderung laut deienr Angabe jetzt mehr heruslesen zu können.
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 16 Januar 2018, 10:46:18
An den Ein- und Ausgängen wird aktiv mit Masse geschaltet.
5V kann nur über den Pullup an den Eingängen der Bank1 anliegen und werden aktiv gegen Masse geschaltet.
Das invert_input Attribut hatte ich in deiner config übersehen.
Ist aber auch völlig egal in welche Richtung geschaltet wird...
Was ich wissen wollte ist, wie lange der Taster oder was auch immer angeschlossen ist betätigt wird.
Bei sehr kurzem Tastendruck ist es möglich, das dieser bereits vorbei ist, wenn der MCP23017 ausgelesen wird.
Ich möchte ausschließen, das das ganze System zu träge reagiert.

Zitat von: Burny4600 am 16 Januar 2018, 10:46:18
Nur im Ruhezustand liegen an den INT Ausgängen der Banken immer 5V an, was auch logisch ist anhand des Schaltplans.
Gegen Masse wird der INT geschaltet wenn ein Ereignis auf einem Eingang erfolgte (aktiv Masse) und an den RPI_GPIO21 weitergegeben werden sollte bis das Einlesen angeschlossen ist.
Die Lösung die du verwendest schein aber zu funktionieren, also alles gut.
Deinen Schaltplan kenne ich nicht.
Bei OpenCollector bestimmt der Pullup die obere Spannung und dieser kann auch an 3,3V angeschlossen werden. Aber wie gesagt, ist für dein Problem nicht wichtig.

Zitat von: Burny4600 am 16 Januar 2018, 10:46:18
Nur warum der INT nicht wieder auf High sich geändert verstehe ich nicht, denn die INTs gehen erst bei einem F5 der betreffenden Bank wieder auf 5V und nicht auf 3,3V als High Signal belegt.
InterruptOut  connected_active-low wird für die Eingänge benötigt.
Werden auf einer Bank Ein- und Ausgänge verwendet ist das Attribut InterruptOut bei dem connected_active-low eingetragen welches nur für Eingänge notwendig sind. So habe ich es zumindest verstanden.
InterruptOut ist nur für Inputs relevant
Wenn in der selben Bank auch Ausgänge existieren hat das keinen Einfluss (auch nicht auf die Interrupt Konfiguration)
connected -> bei Interrupt auf einer der beiden Bänke (A und B) werden beide INTx geschaltet
separate -> bei Interrupt auf Bank A wird INTA und bei Interrupt auf Bank B wird INTB geschaltet

Zitat von: Burny4600 am 16 Januar 2018, 10:46:18
Anbei das Log für den Test.
Ich hoffe mit der verbose Änderung laut deienr Angabe jetzt mehr heruslesen zu können.

jetzt musst du nur noch die Datei anhängen  8)
Es wäre hilfreich, wenn du in das Log passend Zeilen einfügst wann und wie sich welcher Eingang geändert hat.
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!

Den Schaltplan der MCP23017 Print habe ich unter diesem Link schon angehängt gehabt.
https://forum.fhem.de/index.php/topic,81920.msg746832.html#msg746832

Nochmals die Filelogs.
Ich habe nach dem FHEM Start nur mit der 3 Seckunden Regel die Masse an jeden Eingang von Ao bis B3 der Bank 1 anliegen lassen.
Grundsätzlich muss der MCP23017 bei Interrupt über RPI_GPIO sofort schalten.
Bei der ersten Inbetriebnahme im Heizhaus haben die Eingänge sofort den Status mit anlegen der Masse geändert. Ich dachte Anfangs das im Haushaus die Eingänge noch funktionieren, nur dem ist auch nicht mehr so obwohl bis auf die FHEM Updates im Heizhaus sich nichts geändert hat.
Irgendetwas muss sich unter FHEM geändert haben warum die Interrupts nicht mehr richtig verarbeitet werden.
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 16 Januar 2018, 15:19:23
Den Schaltplan der MCP23017 Print habe ich unter diesem Link schon angehängt gehabt.
https://forum.fhem.de/index.php/topic,81920.msg746832.html#msg746832
da sind die INTx Ausgänge offen. Wenn sie dann noch auf *_open-drain gestellt sind kann ich mir nicht erklären wieso da 5V anliegen.


Zitat von: Burny4600 am 16 Januar 2018, 15:19:23
Ich habe nach dem FHEM Start nur mit der 3 Seckunden Regel die Masse an jeden Eingang von Ao bis B3 der Bank 1 anliegen lassen.
Grundsätzlich muss der MCP23017 bei Interrupt über RPI_GPIO sofort schalten.
Das Ergebnis ist in "EingängeA0-B3_21.22.23.txt" ?
Dort kann ich kein Interrupt Ereignis am GPIO und auch keinen Zugriff auf den MCP sehen.
Was läuft denn mit I2C Adresse 0xF?
Dieses Device macht gut Traffic auf dem I2C.

So richtig kann ich aus dem Log leider nix lesen. Mit globalem verbose war das doch nicht so verkehrt.

Zitat von: Burny4600 am 16 Januar 2018, 15:19:23
Bei der ersten Inbetriebnahme im Heizhaus haben die Eingänge sofort den Status mit anlegen der Masse geändert. Ich dachte Anfangs das im Haushaus die Eingänge noch funktionieren, nur dem ist auch nicht mehr so obwohl bis auf die FHEM Updates im Heizhaus sich nichts geändert hat.
Irgendetwas muss sich unter FHEM geändert haben warum die Interrupts nicht mehr richtig verarbeitet werden.

Seit wann funktioniert es nicht mehr?
Was hast du verändert? Neue Komponenten in FHEM? Nur ein update?
Funktionierte es vorher zuverlässig?
Hast du ein Backup von vorher?

Das Modul MCP23017 ist 2016 das letzte mal geändert worden.
Das GPIO Modul erst vor einer Woche. Aber am Interrupt hat sich nichts geändert. Diese funktionieren, jedenfalls bei mir, noch.
Bisher gibt es auch keine weiteren Meldungen das die Interrupts defekt sind.


Ich weiß ehrlich gesagt immer noch nicht an welcher Stelle es hängt.
Wir sollten GPIO und MCP besser getrennt betrachten.

Was passiert mit dem GPIO wenn du direkt am Pin (ohne deine Schaltung) Pulse draufgibst?
Zählt der counter hoch?

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

#21
Hallo Klaus!
ZitatWas läuft denn mit I2C Adresse 0xF?
Auf 0xF befindet sich die S-USV.

ZitatSeit wann funktioniert es nicht mehr?
Was hast du verändert? Neue Komponenten in FHEM? Nur ein update?
Funktionierte es vorher zuverlässig?
Hast du ein Backup von vorher?
Das kann ich leider nicht beantworten, denn das Heizungssystem lief gut ein Halbes Jahr ohne Probleme. Ich bin erst jetzt darauf gekommen, wo ich einen weiteren MCP-23017 bei einem anderen System in Betrieb nehmen wollte, das die MCP-23017 nicht mehr richtig funktionieren.
Bei der Heizung hatte ich anfangs die Eingänge mit plus 5V am MCP23017 gesteuert was ich nach ca. 3 Monaten auf Masse Steuerung geändert habe. Ca. 2 Monate stäter habe ich beim Heizungssystem sowie auch bei allen anderen 8 Systemen S-USVs (0xF) nachgerüstet. Auch da hat das System bei der Heizung noch ordnungsgemäß funktioniert. Ansonsten wurden nur FHEM Updates gemacht.
Zwei System sollen mit MCP-23017 ausgestattet sein. Bei den anderen reichten die RPI_GPIOs.
Backup habe ich von den ganzen System der Heizung so lang rückwirkend leider nicht.

Ich habe heute des System welches ich in Betrieb nehmen wollte für Test reduziert.
Die S-USV und 1-Wire wurden entfernt. Ich habe einen nagelneuen MCP-23017 (0x20, 0x21) für den Test verwendt und entsprechend alles protokolliert.
1. Bestückung des MCP_23017 Boards.
   Für den Test sind nur die USB nanoCUL Schnittstellen noch aktiv und nur das i2c Device MCP23017.
   Der RPIO_GPIO 21 ist mit INT-A der Bank 1 verbunden.
   Zusätzlich ist ein 10k Widerstand von 3.3V an Bank 1 INT-A verbunden.

2. FHEM Start.txt ( Kein Input ist aktiv, ebenso auch kein Output ). Die gemessenen Spannungen nach dem FHEM Start sind an den Messpunkten wie folgt.
   Bank 1 INT-A: 3,29V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 4,97V
   Bank 2 INT-B: 4,97V

ZitatWas passiert mit dem GPIO wenn du direkt am Pin (ohne deine Schaltung) Pulse draufgibst?
Zählt der counter hoch?
3. RPIO_GPIO_01.txt
   RPIO_GPIO21 wird Masse angelegt
   Bank 1 INT-A: 3,29V
   Bank 1 INT-B: 0,43V
   Bank 2 INT-A: 4,97V
   Bank 2 INT-B: 4,97V

4. INPUT_Test_01.txt
   Input A0 wird Masse angelegt
   Bank 1 INT-A: 0,01V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 4,97V
   Bank 2 INT-B: 4,97V

5. INPUT_Test_02.txt
   FHEM Web Seite INPUT Bank 1 mcp23017_B1_OG1 wird aufgerufen (F5)
   Bank 1 INT-A: 3,29V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 4,97V
   Bank 2 INT-B: 4,97V

6. INPUT_Test_03.txt
   Input A1 wird Masse angelegt
   Bank 1 INT-A: 0,01V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 4,97V
   Bank 2 INT-B: 4,97V

7. INPUT_Test_04.txt
   FHEM Web Seite INPUT Bank 1 mcp23017_B1_OG1 wird aufgerufen (F5)
   Bank 1 INT-A: 3,29V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 4,97V
   Bank 2 INT-B: 4,97V

Zu den einzelnen Punkten habe ich einzelne Logs ausgegeben mit einer zeitlichen Überschneidung. Siehe Anhang.
Ich hoffe das es so einwenig transparenter ist.

2018.01.18
I2C auf verbose 5 zu setzten wurde beim ersten nicht berücksichtigt.
Die S-USV und 1-Wire wurden entfernt. Ich habe das Systembezogene MCP-23017 Board (0x20, 0x21) für den Test verwendt und entsprechend alles protokolliert.
System bezogenes MCP:23017 Board
1. Bestückung des MCP_23017 Boards.
   Für den Test sind alle Komponenten wieder aktiv.
   Der RPIO_GPIO 21 ist mit INT-A der Bank 1 verbunden.
   Kein 10k Widerstand von 3.3V an Bank 1 INT-A verbunden.
   INT verbose 5
   RpiI2C_1 verbose 5
   mcp23017_B1_OG1 verbose 5
   mcp23017_B2_OG1 verbose 5

2. FHEM Start.txt ( Kein Input und kein Output ist aktiv)
   Bank 1 INT-A: 3,28V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 5.10V
   Bank 2 INT-B: 5.10V

3. RPIO_GPIO_01.txt
   RPIO_GPIO21 wird Masse angelegt
   Bank 1 INT-A: 3,28V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 5,10V
   Bank 2 INT-B: 5,10V

4. INPUT_Test_01.txt
   Input A0 wird Masse angelegt
   Bank 1 INT-A: 0,00V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 5,10V
   Bank 2 INT-B: 5,10V

5. INPUT_Test_02.txt
   FHEM Web Seite INPUT Bank 1 mcp23017_B1_OG1 wird aufgerufen
   Bank 1 INT-A: 3,28V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 5,10V
   Bank 2 INT-B: 5,10V

6. INPUT_Test_03.txt
   Input A1 wird Masse angelegt
   Bank 1 INT-A: 0,00V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 5,10V
   Bank 2 INT-B: 5,10V

7. INPUT_Test_04.txt
   FHEM Web Seite INPUT Bank 1 mcp23017_B1_OG1 wird mit F5 aktualisiert
   Bank 1 INT-A: 3,28V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 5,10V
   Bank 2 INT-B: 5,10V

8. INPUT_Test_05.txt
   Messen der INT Spannungen
   Bank 1 INT-A: 3,28V
   Bank 1 INT-B: 0,00V
   Bank 2 INT-A: 5,10V
   Bank 2 INT-B: 5,10V

Wiederholter Systemstart mit aktiven Inputs mcp23017_B1_OG1:PortB4, mcp23017_B1_OG1:PortB6
2018.01.18 09:09:56.846 5: INT, in fileaccess: value
2018.01.18 09:19:17.633 0: Server shutdown
2018.01.18 09:19:17.634 5: INT: interrupt detached
2018.01.18 09:19:17.639 5: INT: gpio21 removed
2018.01.18 09:28:10.739 1: Including fhem.cfg
2018.01.18 09:28:11.476 1: Including /media/hdd/fhem/zeitplaene/zeitplaene_rasp07.cfg
2018.01.18 09:28:11.727 1: Including /media/hdd/fhem/mycfg/schnittstellen_rasp07.cfg
2018.01.18 09:28:12.295 1: Including /media/hdd/fhem/mycfg/GPIO/GPIO_rasp07.cfg
2018.01.18 09:28:13.331 1: Including /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp07.cfg
2018.01.18 09:28:13.525 1: Including /media/hdd/fhem/myprogram/allgemein_rasp07.pm
2018.01.18 09:28:13.530 1: Including /media/hdd/fhem/myprogram/markise_rasp07.pm
2018.01.18 09:28:13.580 1: Including /media/hdd/fhem/myprogram/rolllaeden_rasp07_ROLLO.pm
2018.01.18 09:28:13.584 1: Including /media/hdd/fhem/myprogram/reset_rasp07.pm
2018.01.18 09:28:13.593 1: Including /media/hdd/fhem/mycfg/USV/usv_rasp07.cfg
2018.01.18 09:28:13.627 5: RpiI2C_1: vom client empfangen|nbyte: 4|reg: 34|usleep: 50000|direction: i2cread|i2caddress: 15
2018.01.18 09:28:13.628 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:28:13.628 5: RpiI2C_1: vom client empfangen|nbyte: 4|reg: 34|usleep: 50000|direction: i2cread|i2caddress: 15
2018.01.18 09:28:13.629 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 34
2018.01.18 09:28:13.681 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 34 2 40 0
2018.01.18 09:28:13.693 1: Including /media/hdd/fhem/log07/fhem.save
2018.01.18 09:28:13.696 4: INT: STATE kann auf on wiederhergestellt werden 2018-01-18 09:28:13
2018.01.18 09:28:13.697 4: INT: Counter kann auf 55 wiederhergestellt werden 2018-01-17 11:22:43
2018.01.18 09:28:13.698 4: INPUT INT: Counter wiederhergestellt auf 55
2018.01.18 09:28:13.699 4: INT: Dblclick kann auf off wiederhergestellt werden 2018-01-18 09:05:39
2018.01.18 09:28:13.700 4: INT: Longpress kann auf on wiederhergestellt werden 2018-01-18 09:09:56
2018.01.18 09:28:13.701 4: INT: Pinlevel kann auf high wiederhergestellt werden 2018-01-18 09:09:55
2018.01.18 09:28:13.702 4: INT: interrupt kann auf egal wiederhergestellt werden 2018-01-14 13:23:50
2018.01.18 09:28:13.703 4: INT: state kann auf on wiederhergestellt werden 2018-01-18 09:09:55
2018.01.18 09:28:13.704 4: INPUT INT: alter Pinwert war: on
2018.01.18 09:28:13.704 5: INT, in fileaccess: value
2018.01.18 09:28:13.705 4: INPUT INT: aktueller Pinwert ist: on
2018.01.18 09:28:13.718 4: mcp23017_B1_OG1: STATE kann auf Ok wiederhergestellt werden 2018-01-18 09:28:13
2018.01.18 09:28:13.720 4: mcp23017_B1_OG1: PortA0 kann auf off wiederhergestellt werden 2018-01-14 13:36:55
2018.01.18 09:28:13.721 5: mcp23017_B1_OG1: Port = A0
2018.01.18 09:28:13.722 5: mcp23017_B1_OG1: PortA0 ist Eingang
2018.01.18 09:28:13.723 4: mcp23017_B1_OG1: PortA1 kann auf off wiederhergestellt werden 2018-01-06 15:51:54
2018.01.18 09:28:13.724 5: mcp23017_B1_OG1: Port = A1
2018.01.18 09:28:13.724 5: mcp23017_B1_OG1: PortA1 ist Eingang
2018.01.18 09:28:13.725 4: mcp23017_B1_OG1: PortA2 kann auf off wiederhergestellt werden 2018-01-06 15:51:56
2018.01.18 09:28:13.726 5: mcp23017_B1_OG1: Port = A2
2018.01.18 09:28:13.727 5: mcp23017_B1_OG1: PortA2 ist Eingang
2018.01.18 09:28:13.728 4: mcp23017_B1_OG1: PortA3 kann auf off wiederhergestellt werden 2018-01-06 15:52:01
2018.01.18 09:28:13.729 5: mcp23017_B1_OG1: Port = A3
2018.01.18 09:28:13.729 5: mcp23017_B1_OG1: PortA3 ist Eingang
2018.01.18 09:28:13.730 4: mcp23017_B1_OG1: PortA4 kann auf off wiederhergestellt werden 2018-01-06 15:52:04
2018.01.18 09:28:13.731 5: mcp23017_B1_OG1: Port = A4
2018.01.18 09:28:13.732 5: mcp23017_B1_OG1: PortA4 ist Eingang
2018.01.18 09:28:13.733 4: mcp23017_B1_OG1: PortA5 kann auf off wiederhergestellt werden 2018-01-06 15:52:06
2018.01.18 09:28:13.734 5: mcp23017_B1_OG1: Port = A5
2018.01.18 09:28:13.734 5: mcp23017_B1_OG1: PortA5 ist Eingang
2018.01.18 09:28:13.735 4: mcp23017_B1_OG1: PortA6 kann auf off wiederhergestellt werden 2018-01-06 15:52:07
2018.01.18 09:28:13.736 5: mcp23017_B1_OG1: Port = A6
2018.01.18 09:28:13.736 5: mcp23017_B1_OG1: PortA6 ist Eingang
2018.01.18 09:28:13.737 4: mcp23017_B1_OG1: PortA7 kann auf off wiederhergestellt werden 2018-01-06 15:52:09
2018.01.18 09:28:13.738 5: mcp23017_B1_OG1: Port = A7
2018.01.18 09:28:13.739 5: mcp23017_B1_OG1: PortA7 ist Eingang
2018.01.18 09:28:13.740 4: mcp23017_B1_OG1: PortB0 kann auf off wiederhergestellt werden 2017-06-15 17:40:11
2018.01.18 09:28:13.740 5: mcp23017_B1_OG1: Port = B0
2018.01.18 09:28:13.741 5: mcp23017_B1_OG1: PortB0 ist Eingang
2018.01.18 09:28:13.742 4: mcp23017_B1_OG1: PortB1 kann auf off wiederhergestellt werden 2017-06-15 17:40:11
2018.01.18 09:28:13.742 5: mcp23017_B1_OG1: Port = B1
2018.01.18 09:28:13.743 5: mcp23017_B1_OG1: PortB1 ist Eingang
2018.01.18 09:28:13.744 4: mcp23017_B1_OG1: PortB2 kann auf off wiederhergestellt werden 2017-06-15 17:40:11
2018.01.18 09:28:13.745 5: mcp23017_B1_OG1: Port = B2
2018.01.18 09:28:13.745 5: mcp23017_B1_OG1: PortB2 ist Eingang
2018.01.18 09:28:13.746 4: mcp23017_B1_OG1: PortB3 kann auf off wiederhergestellt werden 2017-06-15 17:40:11
2018.01.18 09:28:13.748 5: mcp23017_B1_OG1: Port = B3
2018.01.18 09:28:13.749 5: mcp23017_B1_OG1: PortB3 ist Eingang
2018.01.18 09:28:13.750 4: mcp23017_B1_OG1: PortB4 kann auf off wiederhergestellt werden 2018-01-18 08:45:38
2018.01.18 09:28:13.751 5: mcp23017_B1_OG1: Port = B4
2018.01.18 09:28:13.751 5: mcp23017_B1_OG1: PortB4 ist Eingang
2018.01.18 09:28:13.752 4: mcp23017_B1_OG1: PortB5 kann auf off wiederhergestellt werden 2017-06-15 17:40:11
2018.01.18 09:28:13.753 5: mcp23017_B1_OG1: Port = B5
2018.01.18 09:28:13.753 5: mcp23017_B1_OG1: PortB5 ist Eingang
2018.01.18 09:28:13.754 4: mcp23017_B1_OG1: PortB6 kann auf off wiederhergestellt werden 2018-01-18 08:45:38
2018.01.18 09:28:13.755 5: mcp23017_B1_OG1: Port = B6
2018.01.18 09:28:13.756 5: mcp23017_B1_OG1: PortB6 ist Eingang
2018.01.18 09:28:13.757 4: mcp23017_B1_OG1: PortB7 kann auf off wiederhergestellt werden 2017-06-15 17:40:11
2018.01.18 09:28:13.757 5: mcp23017_B1_OG1: Port = B7
2018.01.18 09:28:13.758 5: mcp23017_B1_OG1: PortB7 ist Eingang
2018.01.18 09:28:13.759 4: mcp23017_B1_OG1: state kann auf Ok wiederhergestellt werden 2018-01-18 09:01:51
2018.01.18 09:28:13.762 4: mcp23017_B2_OG1: PortA0 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.763 5: mcp23017_B2_OG1: Port = A0
2018.01.18 09:28:13.764 5: mcp23017_B2_OG1: PortA0 soll auf off gesetzt werden
2018.01.18 09:28:13.766 4: mcp23017_B2_OG1: PortA1 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.766 5: mcp23017_B2_OG1: Port = A1
2018.01.18 09:28:13.767 5: mcp23017_B2_OG1: PortA1 soll auf off gesetzt werden
2018.01.18 09:28:13.769 4: mcp23017_B2_OG1: PortA2 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.769 5: mcp23017_B2_OG1: Port = A2
2018.01.18 09:28:13.770 5: mcp23017_B2_OG1: PortA2 soll auf off gesetzt werden
2018.01.18 09:28:13.771 4: mcp23017_B2_OG1: PortA3 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.772 5: mcp23017_B2_OG1: Port = A3
2018.01.18 09:28:13.773 5: mcp23017_B2_OG1: PortA3 soll auf off gesetzt werden
2018.01.18 09:28:13.774 4: mcp23017_B2_OG1: PortA4 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.775 5: mcp23017_B2_OG1: Port = A4
2018.01.18 09:28:13.776 5: mcp23017_B2_OG1: PortA4 soll auf off gesetzt werden
2018.01.18 09:28:13.777 4: mcp23017_B2_OG1: PortA5 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.778 5: mcp23017_B2_OG1: Port = A5
2018.01.18 09:28:13.779 5: mcp23017_B2_OG1: PortA5 soll auf off gesetzt werden
2018.01.18 09:28:13.780 4: mcp23017_B2_OG1: PortA6 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.781 5: mcp23017_B2_OG1: Port = A6
2018.01.18 09:28:13.782 5: mcp23017_B2_OG1: PortA6 soll auf off gesetzt werden
2018.01.18 09:28:13.783 4: mcp23017_B2_OG1: PortA7 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.784 5: mcp23017_B2_OG1: Port = A7
2018.01.18 09:28:13.784 5: mcp23017_B2_OG1: PortA7 soll auf off gesetzt werden
2018.01.18 09:28:13.786 4: mcp23017_B2_OG1: PortB0 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.786 5: mcp23017_B2_OG1: Port = B0
2018.01.18 09:28:13.787 5: mcp23017_B2_OG1: PortB0 soll auf off gesetzt werden
2018.01.18 09:28:13.788 4: mcp23017_B2_OG1: PortB1 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.789 5: mcp23017_B2_OG1: Port = B1
2018.01.18 09:28:13.790 5: mcp23017_B2_OG1: PortB1 soll auf off gesetzt werden
2018.01.18 09:28:13.791 4: mcp23017_B2_OG1: PortB2 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.791 5: mcp23017_B2_OG1: Port = B2
2018.01.18 09:28:13.792 5: mcp23017_B2_OG1: PortB2 soll auf off gesetzt werden
2018.01.18 09:28:13.793 4: mcp23017_B2_OG1: PortB3 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.794 5: mcp23017_B2_OG1: Port = B3
2018.01.18 09:28:13.795 5: mcp23017_B2_OG1: PortB3 soll auf off gesetzt werden
2018.01.18 09:28:13.796 4: mcp23017_B2_OG1: PortB4 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.797 5: mcp23017_B2_OG1: Port = B4
2018.01.18 09:28:13.797 5: mcp23017_B2_OG1: PortB4 soll auf off gesetzt werden
2018.01.18 09:28:13.799 4: mcp23017_B2_OG1: PortB5 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.799 5: mcp23017_B2_OG1: Port = B5
2018.01.18 09:28:13.800 5: mcp23017_B2_OG1: PortB5 soll auf off gesetzt werden
2018.01.18 09:28:13.801 4: mcp23017_B2_OG1: PortB6 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.802 5: mcp23017_B2_OG1: Port = B6
2018.01.18 09:28:13.803 5: mcp23017_B2_OG1: PortB6 soll auf off gesetzt werden
2018.01.18 09:28:13.804 4: mcp23017_B2_OG1: PortB7 kann auf off wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.805 5: mcp23017_B2_OG1: Port = B7
2018.01.18 09:28:13.806 5: mcp23017_B2_OG1: PortB7 soll auf off gesetzt werden
2018.01.18 09:28:13.807 4: mcp23017_B2_OG1: state kann auf Ok wiederhergestellt werden 2018-01-18 08:49:37
2018.01.18 09:28:13.894 5: im init client fuer mcp23017_B1_OG1
2018.01.18 09:28:13.895 5: RpiI2C_1: vom client empfangen|i2caddress: 32|data: 127|reg: 3|direction: i2cwrite
2018.01.18 09:28:13.896 5: RpiI2C_1: HWaccess I2CAddr: 0x20
2018.01.18 09:28:13.897 5: RpiI2C_1: vom client empfangen|i2caddress: 32|data: 127|reg: 3|direction: i2cwrite
2018.01.18 09:28:13.898 5: RpiI2C_1: HWaccess block schreiben, Reg: 0x03 Inh(dec):|127|, laenge: |2|
2018.01.18 09:28:13.899 5: RpiI2C_1 ->Client gefunden: mcp23017_B1_OG1, I2Caddress: 32 Data: 127
2018.01.18 09:28:13.900 5: RpiI2C_1: vom client empfangen|data: 255|reg: 2|direction: i2cwrite|i2caddress: 32
2018.01.18 09:28:13.901 5: RpiI2C_1: HWaccess I2CAddr: 0x20
2018.01.18 09:28:13.902 5: RpiI2C_1: vom client empfangen|data: 255|reg: 2|direction: i2cwrite|i2caddress: 32
2018.01.18 09:28:13.903 5: RpiI2C_1: HWaccess block schreiben, Reg: 0x02 Inh(dec):|255|, laenge: |2|
2018.01.18 09:28:13.907 5: RpiI2C_1 ->Client gefunden: mcp23017_B1_OG1, I2Caddress: 32 Data: 255
2018.01.18 09:28:13.911 5: RpiI2C_1: vom client empfangen|i2caddress: 32|data: 127|reg: 13|direction: i2cwrite
2018.01.18 09:28:13.912 5: RpiI2C_1: HWaccess I2CAddr: 0x20
2018.01.18 09:28:13.913 5: RpiI2C_1: vom client empfangen|i2caddress: 32|data: 127|reg: 13|direction: i2cwrite
2018.01.18 09:28:13.914 5: RpiI2C_1: HWaccess block schreiben, Reg: 0x0d Inh(dec):|127|, laenge: |2|
2018.01.18 09:28:13.915 5: RpiI2C_1 ->Client gefunden: mcp23017_B1_OG1, I2Caddress: 32 Data: 127
2018.01.18 09:28:13.916 5: RpiI2C_1: vom client empfangen|direction: i2cwrite|reg: 12|data: 255|i2caddress: 32
2018.01.18 09:28:13.917 5: RpiI2C_1: HWaccess I2CAddr: 0x20
2018.01.18 09:28:13.918 5: RpiI2C_1: vom client empfangen|direction: i2cwrite|reg: 12|data: 255|i2caddress: 32
2018.01.18 09:28:13.919 5: RpiI2C_1: HWaccess block schreiben, Reg: 0x0c Inh(dec):|255|, laenge: |2|
2018.01.18 09:28:13.920 5: RpiI2C_1 ->Client gefunden: mcp23017_B1_OG1, I2Caddress: 32 Data: 255
2018.01.18 09:28:13.921 5: RpiI2C_1: vom client empfangen|i2caddress: 32|data: 255|reg: 4|direction: i2cwrite
2018.01.18 09:28:13.922 5: RpiI2C_1: HWaccess I2CAddr: 0x20
2018.01.18 09:28:13.923 5: RpiI2C_1: vom client empfangen|i2caddress: 32|data: 255|reg: 4|direction: i2cwrite
2018.01.18 09:28:13.924 5: RpiI2C_1: HWaccess block schreiben, Reg: 0x04 Inh(dec):|255|, laenge: |2|
2018.01.18 09:28:13.925 5: RpiI2C_1 ->Client gefunden: mcp23017_B1_OG1, I2Caddress: 32 Data: 255
2018.01.18 09:28:13.927 5: RpiI2C_1: vom client empfangen|i2caddress: 32|direction: i2cwrite|reg: 5|data: 127
2018.01.18 09:28:13.928 5: RpiI2C_1: HWaccess I2CAddr: 0x20
2018.01.18 09:28:13.928 5: RpiI2C_1: vom client empfangen|i2caddress: 32|direction: i2cwrite|reg: 5|data: 127
2018.01.18 09:28:13.930 5: RpiI2C_1: HWaccess block schreiben, Reg: 0x05 Inh(dec):|127|, laenge: |2|
2018.01.18 09:28:13.931 5: RpiI2C_1 ->Client gefunden: mcp23017_B1_OG1, I2Caddress: 32 Data: 127
2018.01.18 09:28:13.932 5: RpiI2C_1: vom client empfangen|direction: i2cwrite|reg: 10|data: 68|i2caddress: 32
2018.01.18 09:28:13.933 5: RpiI2C_1: HWaccess I2CAddr: 0x20
2018.01.18 09:28:13.934 5: RpiI2C_1: vom client empfangen|direction: i2cwrite|reg: 10|data: 68|i2caddress: 32
2018.01.18 09:28:13.935 5: RpiI2C_1: HWaccess block schreiben, Reg: 0x0a Inh(dec):|68|, laenge: |2|
2018.01.18 09:28:13.936 5: RpiI2C_1 ->Client gefunden: mcp23017_B1_OG1, I2Caddress: 32 Data: 68
2018.01.18 09:28:13.937 5: RpiI2C_1: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2018.01.18 09:28:13.940 5: RpiI2C_1: HWaccess I2CAddr: 0x20
2018.01.18 09:28:13.940 5: RpiI2C_1: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2018.01.18 09:28:13.941 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 18
2018.01.18 09:28:13.942 5: RpiI2C_1 ->Client gefunden: mcp23017_B1_OG1, I2Caddress: 32 Gelesen: 0 80
2018.01.18 09:28:13.943 5: mcp23017_B1_OG1 UpdReadings Register: 19, Inhalt: 80
2018.01.18 09:28:13.956 5: mcp23017_B1_OG1 UpdReadings Register: 18, Inhalt: 0
2018.01.18 09:28:13.958 5: im init client fuer mcp23017_B2_OG1
2018.01.18 09:28:13.960 5: RpiI2C_1: vom client empfangen|i2caddress: 33|data: 0|reg: 1|direction: i2cwrite
2018.01.18 09:28:13.960 5: RpiI2C_1: HWaccess I2CAddr: 0x21
2018.01.18 09:28:13.961 5: RpiI2C_1: vom client empfangen|i2caddress: 33|data: 0|reg: 1|direction: i2cwrite
2018.01.18 09:28:13.962 5: RpiI2C_1: HWaccess block schreiben, Reg: 0x01 Inh(dec):|0|, laenge: |2|
2018.01.18 09:28:13.963 5: RpiI2C_1 ->Client gefunden: mcp23017_B2_OG1, I2Caddress: 33
2018.01.18 09:28:13.964 5: RpiI2C_1: vom client empfangen|direction: i2cwrite|reg: 0|data: 0|i2caddress: 33
2018.01.18 09:28:13.965 5: RpiI2C_1: HWaccess I2CAddr: 0x21
2018.01.18 09:28:13.968 5: RpiI2C_1: vom client empfangen|direction: i2cwrite|reg: 0|data: 0|i2caddress: 33
2018.01.18 09:28:13.969 5: RpiI2C_1: HWaccess block schreiben, Reg: 0x00 Inh(dec):|0|, laenge: |2|
2018.01.18 09:28:13.970 5: RpiI2C_1 ->Client gefunden: mcp23017_B2_OG1, I2Caddress: 33
2018.01.18 09:28:13.971 5: RpiI2C_1: vom client empfangen|i2caddress: 33|nbyte: 2|reg: 18|direction: i2cread
2018.01.18 09:28:13.972 5: RpiI2C_1: HWaccess I2CAddr: 0x21
2018.01.18 09:28:13.973 5: RpiI2C_1: vom client empfangen|i2caddress: 33|nbyte: 2|reg: 18|direction: i2cread
2018.01.18 09:28:13.973 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 18
2018.01.18 09:28:13.975 5: RpiI2C_1 ->Client gefunden: mcp23017_B2_OG1, I2Caddress: 33 Gelesen: 0 0
2018.01.18 09:28:13.976 5: mcp23017_B2_OG1 UpdReadings Register: 19, Inhalt: 0
2018.01.18 09:28:13.977 5: mcp23017_B2_OG1 UpdReadings Register: 18, Inhalt: 0
2018.01.18 09:28:14.069 0: Featurelevel: 5.8
2018.01.18 09:28:14.070 0: Server started with 75 defined entities (fhem.pl:15881/2018-01-14 perl:5.020002 os:linux user:fhem pid:28566)
2018.01.18 09:28:14.073 5: RpiI2C_1: vom client empfangen|nbyte: 2|reg: 69|direction: i2cread|usleep: 50000|i2caddress: 15
2018.01.18 09:28:14.074 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:28:14.075 5: RpiI2C_1: vom client empfangen|nbyte: 2|reg: 69|direction: i2cread|usleep: 50000|i2caddress: 15
2018.01.18 09:28:14.079 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 69
2018.01.18 09:28:14.131 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 69 1
2018.01.18 09:28:14.132 5: RpiI2C_1: vom client empfangen|i2caddress: 15|nbyte: 3|reg: 209|usleep: 200000|direction: i2cread
2018.01.18 09:28:14.133 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:28:14.134 5: RpiI2C_1: vom client empfangen|i2caddress: 15|nbyte: 3|reg: 209|usleep: 200000|direction: i2cread
2018.01.18 09:28:14.134 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 209
2018.01.18 09:28:14.336 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 209 63 2
2018.01.18 09:28:14.357 5: RpiI2C_1: vom client empfangen|i2caddress: 15|usleep: 50000|direction: i2cread|nbyte: 3|reg: 53
2018.01.18 09:28:14.358 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:28:14.359 5: RpiI2C_1: vom client empfangen|i2caddress: 15|usleep: 50000|direction: i2cread|nbyte: 3|reg: 53
2018.01.18 09:28:14.360 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 53
2018.01.18 09:28:14.412 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 53 1 2
2018.01.18 09:28:14.422 5: RpiI2C_1: vom client empfangen|i2caddress: 15|nbyte: 3|reg: 208|usleep: 50000|direction: i2cread
2018.01.18 09:28:14.423 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:28:14.424 5: RpiI2C_1: vom client empfangen|i2caddress: 15|nbyte: 3|reg: 208|usleep: 50000|direction: i2cread
2018.01.18 09:28:14.427 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 208
2018.01.18 09:28:14.478 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 208 29 20
2018.01.18 09:28:14.487 5: RpiI2C_1: vom client empfangen|i2caddress: 15|usleep: 50000|direction: i2cread|reg: 212|nbyte: 2
2018.01.18 09:28:14.488 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:28:14.489 5: RpiI2C_1: vom client empfangen|i2caddress: 15|usleep: 50000|direction: i2cread|reg: 212|nbyte: 2
2018.01.18 09:28:14.490 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 212
2018.01.18 09:28:14.541 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 212 1
2018.01.18 09:28:14.561 5: INT, in fileaccess: edge
2018.01.18 09:29:14.555 5: RpiI2C_1: vom client empfangen|i2caddress: 15|direction: i2cread|usleep: 50000|nbyte: 2|reg: 69
2018.01.18 09:29:14.556 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:29:14.557 5: RpiI2C_1: vom client empfangen|i2caddress: 15|direction: i2cread|usleep: 50000|nbyte: 2|reg: 69
2018.01.18 09:29:14.559 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 69
2018.01.18 09:29:14.611 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 69 1
2018.01.18 09:29:14.613 5: RpiI2C_1: vom client empfangen|i2caddress: 15|usleep: 200000|direction: i2cread|reg: 209|nbyte: 3
2018.01.18 09:29:14.614 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:29:14.615 5: RpiI2C_1: vom client empfangen|i2caddress: 15|usleep: 200000|direction: i2cread|reg: 209|nbyte: 3
2018.01.18 09:29:14.616 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 209
2018.01.18 09:29:14.818 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 209 1 2
2018.01.18 09:29:14.832 5: RpiI2C_1: vom client empfangen|reg: 53|nbyte: 3|direction: i2cread|usleep: 50000|i2caddress: 15
2018.01.18 09:29:14.834 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:29:14.834 5: RpiI2C_1: vom client empfangen|reg: 53|nbyte: 3|direction: i2cread|usleep: 50000|i2caddress: 15
2018.01.18 09:29:14.835 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 53
2018.01.18 09:29:14.888 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 53 1 2
2018.01.18 09:29:14.892 5: RpiI2C_1: vom client empfangen|usleep: 50000|direction: i2cread|reg: 208|nbyte: 3|i2caddress: 15
2018.01.18 09:29:14.894 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:29:14.895 5: RpiI2C_1: vom client empfangen|usleep: 50000|direction: i2cread|reg: 208|nbyte: 3|i2caddress: 15
2018.01.18 09:29:14.896 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 208
2018.01.18 09:29:14.948 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 208 29 20
2018.01.18 09:29:14.954 5: RpiI2C_1: vom client empfangen|i2caddress: 15|direction: i2cread|usleep: 50000|nbyte: 2|reg: 212
2018.01.18 09:29:14.955 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:29:14.956 5: RpiI2C_1: vom client empfangen|i2caddress: 15|direction: i2cread|usleep: 50000|nbyte: 2|reg: 212
2018.01.18 09:29:14.957 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 212
2018.01.18 09:29:15.010 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 212 1
2018.01.18 09:30:15.076 5: RpiI2C_1: vom client empfangen|usleep: 50000|direction: i2cread|nbyte: 2|reg: 69|i2caddress: 15
2018.01.18 09:30:15.077 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:30:15.078 5: RpiI2C_1: vom client empfangen|usleep: 50000|direction: i2cread|nbyte: 2|reg: 69|i2caddress: 15
2018.01.18 09:30:15.079 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 69
2018.01.18 09:30:15.131 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 69 1
2018.01.18 09:30:15.133 5: RpiI2C_1: vom client empfangen|usleep: 200000|direction: i2cread|reg: 209|nbyte: 3|i2caddress: 15
2018.01.18 09:30:15.134 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:30:15.135 5: RpiI2C_1: vom client empfangen|usleep: 200000|direction: i2cread|reg: 209|nbyte: 3|i2caddress: 15
2018.01.18 09:30:15.136 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 209
2018.01.18 09:30:15.339 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 209 31 2
2018.01.18 09:30:15.350 5: RpiI2C_1: vom client empfangen|i2caddress: 15|usleep: 50000|direction: i2cread|nbyte: 3|reg: 53
2018.01.18 09:30:15.351 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:30:15.352 5: RpiI2C_1: vom client empfangen|i2caddress: 15|usleep: 50000|direction: i2cread|nbyte: 3|reg: 53
2018.01.18 09:30:15.353 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 53
2018.01.18 09:30:15.405 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 53 1 2
2018.01.18 09:30:15.410 5: RpiI2C_1: vom client empfangen|i2caddress: 15|reg: 208|nbyte: 3|direction: i2cread|usleep: 50000
2018.01.18 09:30:15.417 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:30:15.418 5: RpiI2C_1: vom client empfangen|i2caddress: 15|reg: 208|nbyte: 3|direction: i2cread|usleep: 50000
2018.01.18 09:30:15.419 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 208
2018.01.18 09:30:15.471 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 208 24 20
2018.01.18 09:30:15.478 5: RpiI2C_1: vom client empfangen|reg: 212|nbyte: 2|direction: i2cread|usleep: 50000|i2caddress: 15
2018.01.18 09:30:15.479 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:30:15.480 5: RpiI2C_1: vom client empfangen|reg: 212|nbyte: 2|direction: i2cread|usleep: 50000|i2caddress: 15
2018.01.18 09:30:15.481 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 212
2018.01.18 09:30:15.533 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 212 1
2018.01.18 09:31:15.964 5: RpiI2C_1: vom client empfangen|reg: 69|nbyte: 2|direction: i2cread|usleep: 50000|i2caddress: 15
2018.01.18 09:31:15.965 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:31:15.966 5: RpiI2C_1: vom client empfangen|reg: 69|nbyte: 2|direction: i2cread|usleep: 50000|i2caddress: 15
2018.01.18 09:31:15.967 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 69
2018.01.18 09:31:16.020 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 69 1
2018.01.18 09:31:16.022 5: RpiI2C_1: vom client empfangen|i2caddress: 15|direction: i2cread|usleep: 200000|nbyte: 3|reg: 209
2018.01.18 09:31:16.023 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:31:16.025 5: RpiI2C_1: vom client empfangen|i2caddress: 15|direction: i2cread|usleep: 200000|nbyte: 3|reg: 209
2018.01.18 09:31:16.026 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 209
2018.01.18 09:31:16.228 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 209 1 2
2018.01.18 09:31:16.239 5: RpiI2C_1: vom client empfangen|direction: i2cread|usleep: 50000|nbyte: 3|reg: 53|i2caddress: 15
2018.01.18 09:31:16.241 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:31:16.241 5: RpiI2C_1: vom client empfangen|direction: i2cread|usleep: 50000|nbyte: 3|reg: 53|i2caddress: 15
2018.01.18 09:31:16.242 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 53
2018.01.18 09:31:16.295 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 53 1 2
2018.01.18 09:31:16.300 5: RpiI2C_1: vom client empfangen|i2caddress: 15|nbyte: 3|reg: 208|direction: i2cread|usleep: 50000
2018.01.18 09:31:16.301 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:31:16.302 5: RpiI2C_1: vom client empfangen|i2caddress: 15|nbyte: 3|reg: 208|direction: i2cread|usleep: 50000
2018.01.18 09:31:16.303 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 208
2018.01.18 09:31:16.355 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 208 35 20
2018.01.18 09:31:16.363 5: RpiI2C_1: vom client empfangen|i2caddress: 15|direction: i2cread|usleep: 50000|nbyte: 2|reg: 212
2018.01.18 09:31:16.364 5: RpiI2C_1: HWaccess I2CAddr: 0x0F
2018.01.18 09:31:16.365 5: RpiI2C_1: vom client empfangen|i2caddress: 15|direction: i2cread|usleep: 50000|nbyte: 2|reg: 212
2018.01.18 09:31:16.366 4: RpiI2C_1: HWaccess blockweise lesen setze Registerpointer auf 212
2018.01.18 09:31:16.419 5: RpiI2C_1 ->Client gefunden: SUSV, I2Caddress: 15 Gelesen: 212 1
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

#22
Folgende Änderung habe ich durchgeführt.
Das userReadings des RPI_GIPO 21 Interupt für MCP23017 Modul habe ich abgeändert auf interrupt {fhem ("get mcp23017_B1_OG1,mcp23017_B2_OG1");;"egal"}
Somit werden die Eingänge ohne Fehlermeldung erfasst und der INTA der zum RPI_GPIO 21 führt gibt nach einem Steuervorgang an einem Eingang am INTA wieder 5V aus und bleibt nicht auf 0V.
Hinderlich waren die Attributteinträge :Pinlevel:.low* none

Nochmals zum Abgleich die LISTS

LIST RPI_GPIO 21
Internals:
   CFGFN      /media/hdd/fhem/mycfg/GPIO/GPIO_rasp07.cfg
   DEF        21
   EXCEPT_FD  13
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    21
   NAME       INT
   NR         530
   STATE      off
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   lasttrg    1516549406.44215
   READINGS:
     2018-01-17 11:22:43   Counter         55
     2018-01-21 16:43:26   Dblclick        off
     2018-01-21 16:43:26   Longpress       off
     2018-01-21 16:43:26   Pinlevel        low
     2018-01-21 16:43:26   interrupt       egal
     2018-01-21 16:43:26   state           off
   fhem:
     interfaces switch
Attributes:
   active_low yes
   alias      RPI_GIPO 21 Interupt für MCP23017 Modul
   devStateIcon on:control_on_off@0CFB0C off:control_home@red
   direction  input
   event-on-change-reading .*
   icon       control_on_off
   interrupt  both
   room       _GPIO,_IO
   userReadings interrupt {fhem ("get mcp23017_B1_OG1,mcp23017_B2_OG1");;"egal"}


LIST MCP_23017 0x20


Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp07.cfg
   CHANGED   
   DEF        0x20
   I2C_Address 32
   IODev      RpiI2C_1
   NAME       mcp23017_B1_OG1
   NR         598
   RpiI2C_1_SENDSTAT Ok
   STATE      Ok
   TYPE       I2C_MCP23017
   READINGS:
     2018-01-21 16:43:24   PortA0          off
     2018-01-21 16:43:25   PortA1          off
     2018-01-21 16:43:26   PortA2          off
     2018-01-21 15:59:54   PortA3          off
     2018-01-21 15:59:54   PortA4          off
     2018-01-21 15:59:54   PortA5          off
     2018-01-06 15:52:07   PortA6          off
     2018-01-21 15:07:46   PortA7          off
     2018-01-21 15:07:47   PortB0          off
     2018-01-21 15:07:47   PortB1          off
     2018-01-21 15:07:48   PortB2          off
     2018-01-21 15:07:48   PortB3          off
     2018-01-18 09:28:13   PortB4          on
     2017-06-15 17:40:11   PortB5          off
     2018-01-18 09:28:13   PortB6          on
     2017-06-15 17:40:11   PortB7          off
     2018-01-21 16:53:36   state           Ok
Attributes:
   IODev      RpiI2C_1
   Interrupt  A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6
   InterruptOut connected_active-low
   Pullup     A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6
   alias      Digital I/O Bank 1 | Port A0-A7,B0-B7 (Input)
   devStateIcon Ok:it_net@0CFB0C Initialized:it_net@yellow defined:it_net@yellow disconnected:it_net@red error:it_net@red
   event-on-change-reading .*
   group      Schnittstellen I2C
   icon       it_net
   invert_input A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6
   room       _IO,_RxTx


LIST MCP_23017 0x21
Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP23017_rasp07.cfg
   CHANGED   
   DEF        0x21
   I2C_Address 33
   IODev      RpiI2C_1
   NAME       mcp23017_B2_OG1
   NR         603
   RpiI2C_1_SENDSTAT Ok
   STATE      Ok
   TYPE       I2C_MCP23017
   READINGS:
     2018-01-21 16:43:24   PortA0          off
     2018-01-21 16:43:25   PortA1          off
     2018-01-21 16:42:44   PortA2          off
     2018-01-21 16:42:44   PortA3          off
     2018-01-21 16:42:44   PortA4          off
     2018-01-21 16:42:44   PortA5          off
     2018-01-21 16:42:44   PortA6          off
     2018-01-21 16:42:44   PortA7          off
     2018-01-21 16:42:44   PortB0          off
     2018-01-21 16:42:44   PortB1          off
     2018-01-21 16:42:44   PortB2          off
     2018-01-21 16:42:44   PortB3          off
     2018-01-21 16:42:44   PortB4          off
     2018-01-21 16:42:44   PortB5          off
     2018-01-21 16:42:44   PortB6          off
     2018-01-21 16:42:44   PortB7          off
     2018-01-21 16:54:37   state           Ok
Attributes:
   IODev      RpiI2C_1
   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
   OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
   alias      Digital I/O Bank 2 | Port A0-A7,B0-B7 (Output)
   devStateIcon Ok:it_net@0CFB0C Initialized:it_net@yellow defined:it_net@yellow disconnected:it_net@red error:it_net@red
   event-on-change-reading .*
   group      Schnittstellen I2C
   icon       it_net
   room       _IO,_RxTx
   


Eines was mich noch stört ist das dieses fertige MCP23017 Board auf den INTs 5V ausgibt. Es dürfte wahrscheinlich nicht für Interrupt Funktionen ausgelegt worden sein.
Zur Sicherheit trenne ich diesen Bereich mit einem Optokopler der von 3,3V auf den RPI_GPIO21 schaltet um eine saubere längerfristige Steuerung zu gewährleisten.
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

Hallo Chris,

heißt das, es läuft jetzt wieder?
Ich bin noch nicht zum analysieren der Daten gekommen.
Wenn ich mir das schenken kann habe ich nix dagegen.  8)

Den Hinweis auf userReadings hatte ich aber schonmal hier gegeben

Zur INTx Konfiguration hatte ich dummerwiese was falsches geschieben. Korrektur:
Bei connected_active-low wird INTx im normalen Betrieb aktiv auf die Versorgungsspannung (in deinem Fall 5V) getrieben. Im Interruptfall auf 0V. Hier macht ein Optokoppler oder Spannungsteiler Sinn.

Bei connected_open-drain ist INTx im normalen Betrieb hochohmig (mit pullup gegen 3,3V hast du dann halt 3,3V am Pin). In Interruptfall wird aktiv auf 0V getrieben. Hier wird nur ein Pullup (47k oder so) benötigt.
Bei der Schaltung die du angehängt hattest waren keine Bauelemente an den INTx Pins eingezeichnet. Also müsste es genauso funktionieren.

Grüße
Klaus
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

#24
Hallo Klaus,

mit der Änderung des userReadings auf
interrupt {fhem ("get mcp23017_B1_OG1,mcp23017_B2_OG1");;"egal"}
funktionieren die Interrupts für die Eingänge wieder.
Soweit ich mich erinnern kann, hatte ich damals bei der Inbetriebnahme des ersten MCP23017 Expansionsboards eine funktionsfähige Interrupt Funktion aber nach einer gewissen Zeit Einträge im filelog gefunden.
Es gab irgend eine Änderung was diese Logeinträge verursachte. Entweder hatte es etwas mit dem Expansionsboard zu tun oder mit der Interruptfunktionalität oder RPI_GPIOs. Jedenfalls wurde ich wegen diesem Eintrag im Log fündig um das userReadings abzuändern was dann auch funktionierte ohne das Einträge im Log zu finden waren.
Ich bin erst jetzt darauf aufmerksam geworden, weil ich ein weiteres MCP23017 Expansionboard einrichten wollte, dass die sicher Interruptfunktion plötzlich nicht mehr gegeben war. Aber ist ja jetzt egal denn es funktioniert wieder.

ZitatBei connected_open-drain ist INTx im normalen Betrieb hochohmig (mit pullup gegen 3,3V hast du dann halt 3,3V am Pin). In Interruptfall wird aktiv auf 0V getrieben. Hier wird nur ein Pullup (47k oder so) benötigt.
Bei der Schaltung die du angehängt hattest waren keine Bauelemente an den INTx Pins eingezeichnet. Also müsste es genauso funktionieren.
Dies hatte ich jetzt bei den Tests nicht mehr getestet, aber heute nachgeholt.
Es funktioniert auch mit connected_open-drain was bei der 5V Ausführung des Expansionboard eigentlich die besser Lösung ist. Es sind zwar mit 47k keine 3.3V am INTx sondern nur 1,74V und funktioniert ebenso einwandfrei.

Das an den INTx des Boards keine weiteren Bauteile bestückt sind stimmt. Ich habe den E-PLan auch mit dem Board verglichen und es stimmt alles überein.
Bei der MCP23017 3,3V Ausführung kann man beim InterruptOut bei den Eingängen jedenfalls mit connected_active-low arbeiten sofern die INTx hardwaremässig nicht verbunden sind.
Grundsätzlich finde ich jetzt die connected_open-drain Lösung besser. Ich werde um dem Widerstandswert noch anzupassen ein paar Test machen und den Widerstandswert in diesem Thread noch nachtragen.
Die connected_open-drain Lösung ist wie ich beim Test feststellen musste doch noch keine einwandfrei Lösung.
Wenn das System neu gestartet wird, also ein Reboot erfolgte, so werden auch bei der connected_open-drain Lösung Anfangs 5V ausgegeben.
Erst nach dem ersten Interrupt Ereignis liegen nur mehr mit einem 39k Widerstand gegen 3,3V am INTx 1,95V an. In diesem Fall ist trotzdem die Optokoppler Lösung die bessere Lösung wenn der MCP23017 mit 5V ausgeführt wird wie es hier bei dem fertigen Expansionsboard der Fall ist.
Unabhängig davon ist die Interruptsteuerung mit connected_open-drain Lösung in dieser Ausführung Fehlerhaft, da nach einem Reboot der erste Impuls eines Eingangs nicht verarbeitet wird sondern erst ab dem zweiten Impuls eine Ereigniskennung für FHEM funktioniert.

Wäre vielleicht auch nicht schlecht in das FHEM WIKI vollständig überzuleiten.

Danke für deine Unterstützung.


2018-01-22 16.05: Ergänzung Schaltplan galvanisch getrennte Interrupt Steuerung.
Mit InterruptOut => connected_active-low wird mit dieser Anpassung der erste Impuls an einem Eingang berücksichtigt.
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