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

Aus FHEMWiki
(FHEM(R))
K (Forenkommentar eingearbeitet)
Zeile 1: Zeile 1:
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.
{{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).}}


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.
Zeile 16: Zeile 16:
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
  <nowiki>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 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 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 webCmd Ab:Stop:Auf:::Pos1:Pos2:Pos3:Pos4</nowiki>
attr Rollo1 room Rollos</nowiki>
[[File:Rollo1.png]]
[[File:Rollo1.png]]


== Funktionsweise ==
== 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.
* 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 31: Zeile 27:
/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.


Zeile 37: Zeile 33:


== Anpassen des Moduls 10_EIB.pm um das Model percent255 ==
== 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 in FHEM richtig angezeigt wird, muss das Modul 10_EIB.pm erweitert werden. Es wird das Model percent255 hinzugefügt.
 
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.
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>
das diff wird mit dem Tool Patch eingespielt.
 
cat 10_EIB_Percent255.diff |patch


<nowiki>--- /usr/src/fhem/FHEM/10_EIB.pm    2012-05-10 11:22:45.932001898 +0200
<source>--- /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 81: 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")</source>





Version vom 21. Dezember 2017, 21:00 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 /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

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

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