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

Aus FHEMWiki
KKeine Bearbeitungszusammenfassung
 
(8 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= Rolladensteuerung mit KNX ABB Aktor JRA S 4.230.5.1 =
{{Randnotiz|RNTyp=y|RNText=Laut {{Link2Forum|Topic=79658|LinkText=diesem Forenbeitrag}} funktioniert das vorgeschlagene Beispiel auch mit anderen Aktoren, die Einschränkung auf ABB gilt offensichtlich nicht (mehr).}}
Hallo, ich 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.
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.
Dieser Aktor hat eine Fahrzeitermittlung und eine prozentuale Positionierung sowie 4 Preset Speicherplätze.
Zeile 12: Zeile 9:


  <nowiki>0/0/10 = Auf/Ab
  <nowiki>0/0/10 = Auf/Ab
0/0/11 = Stop
  0/0/11 = Stop
0/0/12 = Preset 1 und 2 (Low und High Bit)
  0/0/12 = Preset 1 und 2 (Low und High Bit)
0/0/13 = Preset 3 und 4
  0/0/13 = Preset 3 und 4
0/0/17 = Status Höhe 0...255</nowiki>
  0/0/17 = Status Höhe 0...255</nowiki>
=== fhem ===
=== FHEM ===
  <nowiki>define Rollo1 EIB 0/0/17 0/0/10 0/0/11 0/0/12 0/0/13
  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 alias Rollo 1 Arbeitszimmer
  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 model percent
  attr Rollo1 webCmd Ab:Stop:Auf:::Pos1:Pos2:Pos3:Pos4
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</nowiki>
[[File:Rollo1.png]]
[[File:Rollo1.png]]


== Funktionsweise ==
== Funktionsweise ==
Ich habe lange gebraucht bis ich die eventMap kapiert habe.
* gX (g1 ... g4) beziehen sich auf die EIB Adresse in der define Zeile (sollte mit anderen Systemen genauso funktionieren). Auf g1 kann verzichtet werden.
* 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 "/"
* Jeder Eintrag beginnt mit einem "/"
Zeile 33: Zeile 25:
/on g3:Stop ==&gt; An die EIB Adresse 3 (0.0.11) ein High Bit senden und das ganze als Stop bezeichnen (Ansicht)
/on g3:Stop ==&gt; 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.
Die webCmd sorgt für die Web-Darstellung in FHEM.
Wie man gut sehen kann, beziehen sich die Schlüsselworte auf die eventMap.
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 anstatt der Lampe ein Prozentwert ausgegeben.
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 geben die Position von 0 bis 255 zurück. Damit das im fhem richtig angezeigt wird, muss das Modul 10_EIB.pm erweitert werden.
== Anpassen des Moduls 10_EIB.pm um das Model percent255 ==
Es wird das Model percent255 hinzugefügt.
{{Randnotiz|RNText=Das 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.
Das Model percent muss durch percent255 ersetzt werden.


<nowiki>attr Rollo1 model percent255</nowiki>
:<code>attr Rollo1 model percent255</code>
Anbei ein Diff-File:
Anbei ein Diff-File, das mit dem Tool Patch eingespielt wird.
:<code>cat 10_EIB_Percent255.diff |patch</code>


 
<syntaxhighlight lang="diff">
das diff wird mit dem Tool Patch eingespielt.
--- /usr/src/fhem/FHEM/10_EIB.pm    2012-05-10 11:22:45.932001898 +0200
 
cat 10_EIB_Percent255.diff |patch
 
<nowiki>--- /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
+++ /usr/share/fhem/FHEM/10_EIB.pm  2012-06-06 09:59:55.796006787 +0200
@@ -31,7 +31,8 @@
@@ -31,7 +31,8 @@
Zeile 84: Zeile 71:
         Log(5,"EIB $code parse $value = $fullval translated: $transval");
         Log(5,"EIB $code parse $value = $fullval translated: $transval");
          
          
     } elsif($code eq "dpt9")</nowiki>
     } elsif($code eq "dpt9")
</syntaxhighlight>
 
[[Kategorie:EIB/KNX]]
[[Kategorie:Code Snippets]]
[[Kategorie:Rollladensteuerung]]

Aktuelle Version vom 9. Oktober 2021, 22:57 Uhr

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"        =&gt; {"CODE"=&gt;"dpt7", "UNIT"=&gt;""},
- "percent"  =&gt; {"CODE"=&gt;"dpt7", "UNIT"=&gt;"%"},    
+ "percent"  =&gt; {"CODE"=&gt;"dpt7", "UNIT"=&gt;"%"},
+ "percent255" =&gt; {"ADJUSTMENT"=&gt;"255", "CODE"=&gt;"dpt7", "UNIT"=&gt;"%"},     
 
  # 2-Octet unsigned Value (current, length, brightness)
  "dpt7"        =&gt; {"CODE"=&gt;"dpt7", "UNIT"=&gt;""},
@@ -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")