FHEM – GPIO Pins abfragen und reaglieren

Unser INT vom I2C-Bus liegt auf dem GPIO17 vom Raspberry PI.

Mit diesen Zeilen definieren wir in FHEM den GPIO als Interrupt-Eingang. In der letzten Zeile wird festgelegt, was passieren soll, wenn der GPIO17 “LOW” wird.

In unserem Beispiel wird die angelegte Eingangskarte auf Adresse 0x38 eingelesen.

define GPIO17 RPI_GPIO 17
attr GPIO17 active_low yes
attr GPIO17 direction input
attr GPIO17 interrupt both
attr GPIO17 room i2c
attr GPIO17 userReadings lese_DI {fhem ("get modulE38 read")}

Hat man mehrere Eingangskarten, die gelesen werden sollen, muss die unterste Zeile entsprechend erweitert werden.

lese_DI {
fhem ("get modulE38 read")
fhem ("get modulE39 read")
fhem ("get modulE40 read")
}

Man kann einen GPIO auch über ein Pollintervall abfragen. Am GPIO4 hängt der Taster vom I2C-Repeater.

define GPIO04 RPI_GPIO 4
attr GPIO17 room i2c
attr GPIO04 poll_intervall 0.002

Und am GPIO27 ist die grüne LED des Repeaters angeschlossen. Um die LED als Ausgang zu definieren trägt man folgende Zeilen ein.

define GPIO27 RPI_GPIO 27
attr GPIO27 room i2c
attr GPIO27 direction output

Auf der Oberfläche sollte es dann in etwa so aussehen. Wird der Taster auf dem Repeater gedrückt toggelt der GPIO4.

Ändert sich ein Bitmuster an der angeschlossenen Eingangskarte toggelt der GPIO17

Der GPIO27 schaltet die grüne LED auf dem Repeater ein und aus.

 

 

Im Modul E38 kann dann das Attribut “poll_interval” gelöscht werden. Die Eingänge werden trotzdem gelesen. 🙂

 

 

 

 

 

 

 

 

 

 

 

2 Kommentare

  1. Hallo, ich habe 8x I2HA, 8 I2HE und den I2RPI+T. Ich habe meine raspi 3b soweit vorbereitet und auch über i2cdetect -y 1 alle digital IOś erreicht. Nach ein paar Versuchen in FHEM ein Test Programm zu schreiben merkte ich das die LED´ś sich nicht mehr veränderten(hatte beim einpflegen der einzelnen I2c Module jeweils die Portś testweise angesteuert wo auch die LED´s der einzelnen Module an und aus gingen). Nach einem Reboot merkte ich das die RPII2C – myI2C in error stand im FHEM. Nach einem reboot konnte ich den Fehler nicht beheben. Bei der Überprüfung des i2cdetect -y 1 konnten keine i2c Module gefunden werden. Raspberry und I2C Module laufen mit 2 separaten Netzteilen. Der Repeater bekommt die 5V von der I2c Spannungsversorgung.

    Könnte es sein das die Repeater Platine oder die I2C Module einen Fehler haben?
    Oder muss ich die raspberry neu aufsetzen?

    • Hallo,
      ich würde mal nur den Repeater und eine Karte an den Bus hängen und testen ob die sich mit i2cdetect -y 1 ansprechen lässt.
      Das beschriebene Verhalten zeigt sich wenn ein Slave den Bus stört oder ganz auf GND zieht.
      Sie können auch mal zwischen SDA und GND sowie zwischen SCL und GND die Spannung messen.
      Im Ruhezustand, also wenn keine Kommunikation zu den Slaves läuft, müssen hier ca. 5V anliegen.
      Viel Erfolg

Schreibe einen Kommentar zu JH Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.