FHEM – Analoge Ausgänge ausgeben

Das Anlegen eines analogen I2C-Ausgangsmodules wurde in diesem Beitrag beschrieben
FHEM – I2C-Module anlegen und adressieren.
Hier zeigen wir, wie die einzelnen analogwerte definiert und angesprochen werden können.

Um einen Analogwert auszugeben, müssen drei Bytes zum Modul gesendet werden.

Byte 1    Zeiger
Byte 2    Analogwert Low Byte
Byte 3    Analogwert High Byte

Die genaue Beschreibung der 4-Kanal Analog-Output Karte I2HAA ist hier beschrieben.
I2C-Analog Output 4 Kanäle 0-10V 10 Bit

1. Eigene Funktionen in FHEM anlegen

über den Menüpunkt “Edit Files” kommt man in das FHEM-Filesystem. Hier das Template “myUtilsTemplate.pm” anklicken und als neue Datei “99_myUtils.pm” speichern.  In diese Datei unter der Zeile “# Enter you functions below _this_ line.” können nun eigene Funktionen abgelegt werden.

So sieht’s dann aus wenn unsere neue SUB write_AA in die Datei eingetragen ist.

# Enter you functions below _this_ line.
sub write_AA($$$) { 
my ($addr, $ch, $value) = @_;;
my $HBy = int($value / 256);;
my $LBy = int($value - ($HB * 256));;
{system("i2cset -y 1 $addr $ch $LBy $HBy i");"ok"};;
}

2. Funktion über den Slider aufrufen

Damit unsere neue Funktion ausgeführt wird, legen wir einen notify an, der die Parameter an unsere Funktion übergibt.

define n_AA58_0 notify AA58_CH0 { write_AA(0x58, 0x00, $EVENT) }

und noch drei weitere notify’s für die Kanäle CH1-CH3

define n_AA58_1 notify AA58_CH1 { write_AA(0x58, 0x01, $EVENT) }
define n_AA58_2 notify AA58_CH2 { write_AA(0x58, 0x02, $EVENT) }
define n_AA58_3 notify AA58_CH3 { write_AA(0x58, 0x03, $EVENT) }

Wenn jetzt die Slider bewegt werden, ändern sich die Spannungen an den vier Kanälen der Analog-Ausgangskarte.

Schreibe einen Kommentar

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