Wir steuern Rollläden.
Neben der Beleuchtung ist wohl der Sonnenschutz der klassische Einsatzbereich eines KNX Systems. Wir betrachten zuerst den einfacheren Fall, den Rollladen. (Um Unklarheiten zu vermeiden: Das ist das Ding, das man auf und zu machen kann, jedoch keine Lamellenverstellung etc. möglich ist.) Auch hier besteht wieder das Problem, dass jeder Hersteller seine Aktoren ein wenig anders konfiguriert. So bietet jeder Aktor andere Statusmeldungen, andere Möglichkeiten Szenen zu verwirklichen etc. Die normale Ansteuerung läuft aber glücklicherweise bei allen Aktoren gleich ab. Bei KNiXuino sind daher diese Basisfunktionen implementiert, weil das 1. völlig ausreichend ist und man 2. somit alle Aktoren am Markt ansprechen kann.
Ein Rolladenaktor besitzt mindestens 4 Objekte. Erstens ein auf/ab Objekt, das DPT1 (Bit) Werte empfängt. Dann ein Stop Objekt. Dieses empfängt ebenfalls einen DPT1 Wert, wobei es beim Rollladen egal ist ob man 0 oder 1 sendet, in beiden Fällen stoppt der Rolladen an der momentanen Position. Wir verwenden hier noch das "Position anfahren" Objekt. Bei diesem wird über einen 1 Byte Wert (0-255) eine bestimmte Position angefahren. 255 steht für völlig geschlossen, 0 für offen. Als mögliche Statusmeldung gibt es bei praktisch jedem Aktor eine Positionsmeldung ebenfalls als 1 Byte Wert.
Es sei angemerkt, dass Sonnenschutz und KNX immer etwas problematisch ist. Grund dafür ist, dass Rollladenmotoren nicht sonderlich intelligent sind und ihre Position nicht melden. Der Rollladenaktor kann also die Position immer nur schätzen. Dies macht er an Hand der vergangenen Zeit, nach einem Schliessen oder Öffnen Befehl. Will man also vernünftige Statusmeldungen oder auch Positionen möglichst exakt anfahren, dann ist es notwendig die gesamte Fahrzeit zum Öffnen/Schliessen in der ETS beim Rolladenaktor genau einzustellen. Die Fahrzeit kann immer bei den Aktoreingenschaften eingestellt werden. Manchmal auch eine eigene Zeit für Auf- und Abfahrt, weil die Zeiten meist leicht unterschiedlich sind.
Mein Beispielrolladen hat folgende KNX Objekte.
GA | DPT | send/receive |
---|---|---|
2/2/25 | 1 Bit | Rollladen auf/ab (0=auf, 1=ab) |
2/2/26 | 1 Bit | Rollladen stop |
2/2/28 | 1 Byte | Position anfahren |
2/2/27 | 1 Byte | Status Position |
Dementsprechend sieht die Definition im zentralen Definitionfile so aus: (Ich verwende einen doppelten Unterstrich für Beschattung, ob das Sinn macht sei jedem selber überlassen)
KNXBit* eg__sz_aa = new KNXBit(gaToInt(2,2,25)); KNXBit* eg__sz_stop = new KNXBit(gaToInt(2,2,26)); KNXByte* eg__sz_position = new KNXByte(gaToInt(2,2,28)); KNXByte* eg__sz_pos_status = new KNXByte(gaToInt(2,2,27));
#include "elapsedMillis.h" #include "KNXConnection_SIMKNX_raw.h" #include "KNXBasicObjectTypes.h" #include "KNXObjectDefinitions.h" void setup() { Serial.begin(9600); Serial.println("Ready ! "); objectSettings(); } void loop() { knx->doIt(); } void serialEvent() { char ch = Serial.read(); if (ch == 's') eg__sz_pos_status->print(); if (ch == '0') eg__sz_aa->set(0); if (ch == '1') eg__sz_aa->set(1); if (ch == '2') eg__sz_stop->set(0); if (ch == '3') eg__sz_stop->set(1); if (ch == '4') eg__sz_position->set(0); if (ch == '5') eg__sz_position->set(128); if (ch == '6') eg__sz_position->set(255); } // end keyboardInput
Die Funktionsweise ist eigentlich wie beim Dimmen. Über die Eingaben kann man auf- und abfahren, stoppen oder auch bestimmte Positionen anfahren.