Rolladensteuerung KNX ABB Aktor JRA S 4.230.5.1
Verwendet wird ein Aktor für KNX von ABB JRA S 4.230.5.1. Dieser Aktor hat eine Fahrzeitermittlung und eine prozentuale Positionierung sowie 4 Preset Speicherplätze. Der Aktor kann auch Jalousien ansteuern.
Vorgehen
KNX Konfig
Ich habe fünf Gruppenadressen je Rollo angelegt.
0/0/10 = Auf/Ab 0/0/11 = Stop 0/0/12 = Preset 1 und 2 (Low und High Bit) 0/0/13 = Preset 3 und 4 0/0/17 = Status Höhe 0...255
FHEM
define Rollo1 KNX 0/0/17:dpt5.004 0/0/10:dpt1 0/0/11:dpt1 0/0/12:dpt1 0/0/13:dpt1 attr Rollo1 eventMap /g3 on:Stop/g2 off:Auf/g2 on:Ab/g4 off:Pos1/g4 on:Pos2/g5 off:Pos3/g5 on:Pos4 attr Rollo1 webCmd Ab:Stop:Auf:::Pos1:Pos2:Pos3:Pos4
Funktionsweise
- gX (g1 ... g4) beziehen sich auf die EIB Adresse in der define Zeile (sollte mit anderen Systemen genauso funktionieren). Auf g1 kann verzichtet werden.
- Jeder Eintrag beginnt mit einem "/"
/on g3:Stop ==> An die EIB Adresse 3 (0.0.11) ein High Bit senden und das ganze als Stop bezeichnen (Ansicht)
Die webCmd sorgt für die Web-Darstellung in FHEM. Wie man gut sehen kann, beziehen sich die Schlüsselworte auf die eventMap.
Dadurch, dass die Rückgabeadresse (0/0/17) an erster Stelle steht, wird statt der Lampe ein Prozentwert ausgegeben.
Anpassen des Moduls 10_EIB.pm um das Model percent255
Es gibt Aktoren, die die Position von 0 bis 255 zurückgeben. Damit das in FHEM richtig angezeigt wird, muss das Modul 10_EIB.pm erweitert werden. Es wird das Model percent255 hinzugefügt.
Das Model percent muss durch percent255 ersetzt werden.
attr Rollo1 model percent255
Anbei ein Diff-File, das mit dem Tool Patch eingespielt wird.
cat 10_EIB_Percent255.diff |patch
--- /usr/src/fhem/FHEM/10_EIB.pm 2012-05-10 11:22:45.932001898 +0200
+++ /usr/share/fhem/FHEM/10_EIB.pm 2012-06-06 09:59:55.796006787 +0200
@@ -31,7 +31,8 @@
# 1-Octet unsigned value (handled as dpt7)
"dpt5" => {"CODE"=>"dpt7", "UNIT"=>""},
- "percent" => {"CODE"=>"dpt7", "UNIT"=>"%"},
+ "percent" => {"CODE"=>"dpt7", "UNIT"=>"%"},
+ "percent255" => {"ADJUSTMENT"=>"255", "CODE"=>"dpt7", "UNIT"=>"%"},
# 2-Octet unsigned Value (current, length, brightness)
"dpt7" => {"CODE"=>"dpt7", "UNIT"=>""},
@@ -346,14 +347,16 @@
my $code = $eib_dpttypes{"$model"}{"CODE"};
my $unit = $eib_dpttypes{"$model"}{"UNIT"};
my $transval = undef;
+ my $adjustment = $eib_dpttypes{"$model"}{"ADJUSTMENT"};
Log(4,"EIB parse $value for $name model: $model dpt: $code unit: $unit");
if ($code eq "dpt7")
{
my $fullval = hex($value);
- $transval = $fullval;
-
+ $transval = $fullval;
+ $transval = ($fullval / 2.55) if($adjustment eq "255");
+ $transval = sprintf("%.0f",$transval);
+
Log(5,"EIB $code parse $value = $fullval translated: $transval");
} elsif($code eq "dpt9")