Mit mcp 23017 Eingang einen mcp 23017 Ausgang schalten

Begonnen von Matze8911, 24 Januar 2019, 15:56:05

Vorheriges Thema - Nächstes Thema

Matze8911

Hallo ich bin ganz neu auf diesem Gebiet hier und schon ein paar Tage auf der Suche nach einer Antwort!

Ich habe zwei mcp 23017 den einen als Eingang den anderen als Ausgang deviiert! Mit dummy kann ich dir einzelnen Ausgänge schalten! Den anderen mcp der als Eingang dient habe ich auch so hinbekommen das er automatisch erkennt ob Spannung an den einzelnen Ports anliegt oder nicht!

Nun meine Frage wie kann ich wenn der Eingang Port a1 von off auf on geht einen Ausgang vom anderen mcp steuern? Ich habe schon sämtliche notify ausprobiert hat haber nicht funktioniert!

Wäre über eure rätschläge sehr dankbar!

klausw

Zitat von: Matze8911 am 24 Januar 2019, 15:56:05
Ich habe zwei mcp 23017 den einen als Eingang den anderen als Ausgang deviiert! Mit dummy kann ich dir einzelnen Ausgänge schalten! Den anderen mcp der als Eingang dient habe ich auch so hinbekommen das er automatisch erkennt ob Spannung an den einzelnen Ports anliegt oder nicht!
bedeutet, das du den Interruptausgang des Eingangs MCP auf einen GPIO vom Raspberry? gelegt hast und den GPIO auch auswertest?
Das wäre die Grundvoraussetzung.
Sonst wird ein Notify nicht funktionieren.
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

Matze8911

Hey ne des habe ich nicht gemacht! Gibt es den eine andere Möglichkeit als mit notify ohne das ich an die GPIO Pins gehe?

Frank_Huber

ohne den Interrupt PIN des MCP23017 wird FHEM nichts davon mitbekommen.
Wo sind denn die MCPs angeschlossen?

Ich habe z.B. auch mehrere 23017er im System.
Ich nutze aber als Eingang die GPIO vom Raspberry selbst und dem 23017 "nur" als Ausgang.
Und das genau aus dem Grund um das Interrupt Thema zu umgehen.

Matze8911

Ja genau des Thema wollte ich auch umgehen! Mein Problem ist nur das ich viele eingänge brauch! Der Mcp ist auf 0x20 bzw 0x21 angeschlossen und die i2c Leitungen sind angeschlossen mehr nicht! Wenn ich den interrupt auf die gpio Pins lege weiß ich dann welcher der acht Eingänge geschalten hat oder sagt es mir nur das einer der acht Eingänge geschalten hat?

Gibt es sonst noch eine Möglichkeit den Interrupt zu umgehen?

klausw

Der Interrupt sagt dir nur das sich ein Eingang geändert hat. Über ein notify kannst du dann die Eingänge auslesen.
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

Matze8911

Ok Sau cool da wäre ich nie im Leben drauf gekommen bin schon ewig am tüfteln und mich belesen! Könntest du mir eine Beispiel dev davon machen des wäre echt klasse das ich es auch verstehe 😊

klausw

Suche oben rechts hast du schon probiert?  8)

https://forum.fhem.de/index.php/topic,28890.msg219933.html#msg219933

Dieses Beispiel sollte für Deine Zwecke passen.
Es kommt ohne notify aus.
Das Attribut userReadings (bzw. der beinhaltete Code) wird bei jeder Änderung eines Readings aufgerufen. Das ersetzt quasi ein notify.

interrupt rising ist wichtig.
Die INT Ausgänge vom MCP werden aktiv gesetzt, sobald sich ein Input ändert und inaktiv gesetzt nachdem die Input Register ausgelesen wurden.
Wenn das Attribut interrupt auf both steht, würde das Input Register direkt nochmal ausgelesen werden (da ja das lesen des Input Registers den INT Ausgang zurücksetzt)
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