Rolladensteuerung KNX ABB Aktor JRA S 4.230.5.1

Aus FHEMWiki
Version vom 9. Oktober 2021, 21:57 Uhr von Erwin111 (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Emblem-question-yellow.svgLaut diesem Forenbeitrag funktioniert das vorgeschlagene Beispiel auch mit anderen Aktoren, die Einschränkung auf ABB gilt offensichtlich nicht (mehr).

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

Rollo1.png

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

Info green.pngDas Modul EIB ist seit 2018 deprecated und wird nicht mehr gewartet. Dieses Beispiel / Anpassung nicht mehr verwenden!

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")