Rolladensteuerung KNX ABB Aktor JRA S 4.230.5.1: Unterschied zwischen den Versionen
(→fhem) |
K (Kategorisiert) |
||
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. | Die Steuerung funktioniert, die Position des Rollos wird in Prozent zurückgegeben. | ||
Zeile 26: | Zeile 25: | ||
== 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. | ||
Zeile 36: | Zeile 34: | ||
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 | 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 = | == Anpassen des Moduls 10_EIB.pm um das Model percent255 == | ||
(Danke an Ines) | (Danke an Ines) | ||
Es gibt Aktoren die | 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. | Es wird das Model percent255 hinzugefügt. | ||
Zeile 48: | Zeile 46: | ||
<nowiki>attr Rollo1 model percent255</nowiki> | <nowiki>attr Rollo1 model percent255</nowiki> | ||
Anbei ein Diff-File: | Anbei ein Diff-File: | ||
das diff wird mit dem Tool Patch eingespielt. | das diff wird mit dem Tool Patch eingespielt. | ||
Zeile 85: | Zeile 82: | ||
} elsif($code eq "dpt9")</nowiki> | } elsif($code eq "dpt9")</nowiki> | ||
[[Kategorie:EIB/KNX]] | |||
[[Kategorie:Code Snippets]] |
Version vom 29. Juli 2013, 11:49 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
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")