Modul für die Ansteuerung des MCP23017 I2C Portextender

Begonnen von klausw, 03 Mai 2014, 01:02:40

Vorheriges Thema - Nächstes Thema

klausw

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?
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

AlphaKingOne

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
Raspberry B, B+, B v2 u. v3; DS18B20; MCP23017; CUL; ESP8266

AlphaKingOne

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?
Raspberry B, B+, B v2 u. v3; DS18B20; MCP23017; CUL; ESP8266

R1F800

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?

AlphaKingOne

Ich frag einfach Mal ganz blöd was du damit meinst? Meinst du die Module aktivieren? i2c-dev
i2c-bcm2708
Raspberry B, B+, B v2 u. v3; DS18B20; MCP23017; CUL; ESP8266

LuckyDay

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.

R1F800

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

AlphaKingOne

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 :)
Raspberry B, B+, B v2 u. v3; DS18B20; MCP23017; CUL; ESP8266

Dersch

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

Frank_Huber

#219
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.

klausw

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.
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

Dersch

#221
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

tfriedrich85

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

Elektrofreak

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) ;)

klausw

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
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