Rolladensteuerung KNX ABB Aktor JRA S 4.230.5.1: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Kategorisiert)
Keine Bearbeitungszusammenfassung
Zeile 86: Zeile 86:
[[Kategorie:EIB/KNX]]
[[Kategorie:EIB/KNX]]
[[Kategorie:Code Snippets]]
[[Kategorie:Code Snippets]]
[[Kategorie:Rolladensteuerung]]

Version vom 31. März 2014, 08:16 Uhr

Ich (? Autor unbekannt) versuch mal meine Erfahrung mit KNX (EIB) und der Rollosteuerung niederzuschreiben. Die Steuerung funktioniert, die Position des Rollos wird in Prozent zurückgegeben.

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 EIB 0/0/17 0/0/10 0/0/11 0/0/12 0/0/13
attr Rollo1 alias Rollo 1 Arbeitszimmer
attr Rollo1 model percent
attr Rollo1 eventMap /on g3:Stop/off g2:Auf/on g2:Ab/off g4:Pos1/on g4:Pos2/off g5:Pos3/on g5:Pos4
attr Rollo1 webCmd Ab:Stop:Auf:::Pos1:Pos2:Pos3:Pos4
attr Rollo1 room Rollos

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 im 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

(Danke an Ines)

Es gibt Aktoren, die die Position von 0 bis 255 zurückgeben. Damit das im 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 diff wird mit dem Tool Patch eingespielt.

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