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.
FHEM – GPIO Pins abfragen und reaglieren
I2C-Analog-Eingangsmodul in FHEM einbinden
Für die Horter & Kalb I2C-Eingangsmodule z.B. I2HAE (oder I2AE8) gibt es kein fertiges Modul in FHEM.
Als erstes legen wir einen Dummy für den Analogwert CH0 an und legen ihn in die Gruppe „Modul E08“
define AE08_CH0 dummy attr AE08_CH0 group ModulE08 attr AE08_CH0 room i2c
Anschließend noch vier weitere Dummies AE08_CH1 … AE08_CH4 anlegen und dem Raum und der Gruppe zuweisen.
So sollte das dann ungefähr aussehen. Werte werden aber noch nicht angezeigt.
Im nächsten Beitrag zeigen wir, wie die Werte gelesen und in den Feldern eingetragen werden.
FHEM – Analoge Eingänge einlesen
I2C-Analog-Ausgangsmodul in FHEM einbinden
Als nächstes wollen wir eine Analoge Ausgangskarte über FHEM ansprechen. Dazu verwenden wir einen Slider, der wie folgt angelegt wird.
define AA58_CH0 dummy attr AA58_CH0 group ModulA58 attr AA58_CH0 room i2c attr AA58_CH0 setList state:slider,0,1,1023 attr AA58_CH0 webCmd state
das gleiche machen wir noch drei mal für die Analog-Kanäle CH1 -CH3
Das sollte dann in FHEM so angezeigt werden.
Die Slider können jetzt schon bewegt werden. Damit die Werte zur analogen Ausgangs-Karte übertragen werden muss aber noch einiges gemacht werden.
FHEM – Analoge Ausgänge ausgeben
Weitere Beiträge zum Thema
[maxmegamenu location=max_mega_menu_1]