FHEM – I2C-Module anlegen und adressieren

I2C-Bus in FHEM definieren

mit folgenden drei befehlen kann in FHEM der I2C-Bus angelegt bzw. definiert werden

define myI2C RPII2C 1
attr myI2C room i2c
attr myI2C verbose 5

So ähnlich sollte das dann aussehen

I2C-Eingangsmodul in FHEM anlegen

Als nächstes müssen wir eine I2C-Eingangskarte mit dem PCF8574A anlegen.

define modulE38 I2C_PCF8574 0x38
attr modulE38 room i2c
attr modulE38 IODev myI2C
attr modulE38 InputPorts 0,1,2,3,4,5,6,7
attr modulE38 OnStartup 0=on,1=on,2=on,3=on,4=on,5=on,6=on,7=on
attr modulE38 event-on-change-reading state,Port0,Port1,Port2,Port3,Port4,Port5,Port6,Port7
attr modulE38 poll_interval 0.2

In der ersten Zeile wird der PCF8574A mit der Adresse 38hex definiert
und anschließend einem neuen Raum “i2c” zugeordnet.
Die dritte Zeile wird das Modul dem I2C-Bus zugeordnet
In der vierten Zeile definieren wir alle Pins als Eingänge (Input-Ports)
Die fünfte Zeile sorgt dafür, dass alle Ausgänge vom PCF8574A beim Einschalten auf HIGH gesetzt werden.
Zeile sechs sagt FHEM, dass egal welcher Pin kippt ein event ausgelöst werden soll
In Zeile 7 wird festgelegt, dass die Eingänge alle 0.2 Sekunden abgeholt werden sollen

Unsere Eingangs-Module arbeiten genau wie die Ausgangsmodule in der invertierten Logik.
Nach dem Lesen muss der Eingang invertiert werden.
Wie das mit FHEM geht zeigen wir später.

 

I2C-Ausgangsmodul in FHEM anlegen

Jetzt legen wir eine I2C-Eingangskarte mit dem PCF8574 an.

define modulA20 I2C_PCF8574 0x20
attr modulA20 room i2c
attr modulA20 IODev myI2C
attr modulA20 OnStartup 0=on,1=on,2=on,3=on,4=on,5=on,6=on,7=on

In der ersten Zeile wird der PCF8574 mit der Adresse 20hex definiert
und anschließend einem neuen Raum “i2c” zugeordnet.
Die dritte Zeile wird das Modul dem I2C-Bus zugeordnet
Die vierte Zeile sorgt dafür, dass alle Ausgänge vom PCF8574 beim Einschalten auf HIGH gesetzt werden.

Unsere Module arbeiten in der invertierten Logik.
Damit ist sichergestellt dass alle Ausgänge bei Spannungs-Wiederkehr AUS-geschaltet bleiben.
Bei der Ansteuerung unserer Module muss das Bitmuster invertiert werden.
Wie das mit FHEM geht zeigen wir später.

 

So ähnlich sollte das aussehen nachdem die Modue angelegt sind

Die Eingänge werden zyklisch eingelesen. Schaltet ein Eingang auf HIGH geht kurz die rote LED am Eingang-Modul ein. Sobald der Raspberry die DI-Karte eingelesen hat, wird die LED wieder dunkel.

Später zeigen wir noch wie man das INT-Signal (GPIO 17) benutzen kann um Eingänge nur dann zu lesen wenn sich etwas verändert hat.
Bei Endschaltern (Türkontakten / Fensterkontakten) kann auch ein zyklisches Einlesen alle 5 Sekunden ausreichend sein ohne das INT-Signal auszuwerten.
In dem Fall einfach diese Eingangs-Module nicht mit dem INT verbinden.

 

 


Weitere Beiträge zum Thema

[maxmegamenu location=max_mega_menu_1]


 

 

 

Schreibe einen Kommentar

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