Skip to content

Dachfenstersteuerung für VELUX INTEGRA®

In einem Mehrfamilienhaus befindet sich im Treppenhaus ein unzugängliches Dachfenster, welches einen Motor mit Fernbedienung zum Öffnen und Schließen besitzt. Zwar schließt sich das Fenster automatisch bei Regen, jedoch wollte ich eine automatische Steuerung realisieren, die das Fenster zeitgesteuert Öffnet und schließt. Außerdem war die Idee, den bereits vorhandenen Windsensor meiner Wetterstation zu nutzen um auch bei Wind das Fenster zu schließen bzw. es erst gar nicht zu Öffnen.

Zwar bietet Velux selbst ein sog. VELUX INTEGRA Control Pad an (bei neueren Modellen werden wohl auch schon intelligentere Fernbedienungen mitgeliefert), allerdings schlägt sowas gleich mit knapp 200 Euro zu Buche, was mir doch etwas teuer erschien.

Leider gibt es im Internet kaum Informationen zum verwendeten Funkprotokoll bzw. Bauteile, mit denen man eigene Steuerungen integrieren kann. Zwar schreibt man groß, dass man einen Standard namens IO Homecontrol verwenden würde, tatsächlich handelt es sich aber um einen Zusammenschluss von mehr oder weniger unbekannten Herstellern (außer eben Velux), welche IO Homecontrol verwenden. Also letztlich ein proprietäres Protokoll. Auf Mikrocontroller.net hat jemand vergeblich versucht, das Ganze zu "knacken".

Somit war dann schließlich die Lösung, eine zweite Fernbedienung auf einer bekannten Auktionsplattform zu erstehen, diese zu zerlegen und dann damit das Fenster zu steuern. Eine solche Fernbedienung bekommt man für um die 15 €.

Systemdesign

Die Steuerung besteht aus folgenden Komponenten:

  • der eben beschriebenen Fernbedienung;
  • einer Schaltung, welche die Fernbedienung über digitale Signale ("GPIOs") steuert;
  • einem Mikrocontroller (in diesem Fall ein MSP430, es kam das TI Launchpad zum Einsatz);
  • der Linux-Computer, der den Mikrocontroller über USB steuert.

Pairing

Bevor die Fernbedienung verwendet werden kann, muss sie allerdings mit dem Fenster gepaart werden (sonst könnte ja jeder Nachbar das eigene Fenster steuern). Wenn die bereits vorhandene Fernbedienung umgebaut werden soll, entfällt dieser Schritt.

Für das Pairing gibt es zwei Möglichkeiten:

  1. man hat Zugang zum Motor am Fenster oder
  2. man hat Zugang keinen zum Motor am Fenster, aber eine bereits gepaarte Fernbedienung.

In diesem Fall musste die zweite Möglichkeit herhalten. Leider schweigt sich Velux insgesamt etwas aus, man muss viel im Internet recherchieren um überhaupt herauszufinden, wie das geht. Anscheinend soll für alles ein Handwerker/Techniker kommen. Es geht aber trotzdem: Man muss für mehr als zehn Sekunden den RESET-Knopf der Fernbedienungsrückseite mit einer Büroklammer drücken. Nicht erschrecken: Der Motor des Fensters fährt nun auf und ab solange sich das Fenster im Paarungsmodus befindet -- die alte Fernbedienung hat damit ja nichts zu tun, sie lässt den Vorgang nur aus. Nun kann die neue Fernbedienung durch einen kurzen Druck auf die RESET-Taste (wieder mit der Büroklammer) registriert werden. Anschließend sollte sich das Fenster sowohl mit der alten als auch mit der neuen Fernbedienung steuern lassen. Mit den neuen KLR-100-Fernbedienungen (mit Display) geht das Ganze etwas einfacher.

Steuerung der Fernbedienung

Auf der Fernbedienung gibt es drei Tasten: "Auf", "Ab" und "Stopp". Letztere wird für die Steuerung nicht benötigt, da da der Motor ohnehin am Ende stoppt. Nach dem Zerlegen entfernt man die Platine zieht die Folie über den Kontakten ab, so dass man an die blanken Schaltkontakte Drähte anlöten kann. Das Bild zeigt meinen Aufbau:

Für die Spannungsversorgung verwende ich die normalen Batterien weiter, eine Anbindung direkt über die USB-Spannung wäre aber über einen Spannungswandler ebenfalls denkbar.

Ein Betätigen des Schaltkontaktes führt intern zu einem "Kurzschluss" der beiden Drähte. Dies wird in der Steuerung über einen HTC 4066 Analogschalter erreicht. Hier der entsprechende Schaltplan.

Hard- und Software des Mikrocontrollers

Um nun den Analogschalter zu steuern werden entsprechende digitale Signale (pro Taste eine) benötigt. In meinem Fall habe ich dafür einen Mikrocontroller verwendet, um dann die Signale über USB zu steuern. Es wäre aber auch denkbar gewesen, direkt GPIOs eines ARM-Controllers mit Linux zu verwenden (etwa am Raspberry Pi). Es muss allerdings darauf geachtet werden, dass der Spannungspegel (1,8/3,3/5,0 V) des verwendeten HCT 4066 zum Pegel der GPIOs passt.

Es kam ein ohnehin schon vorhandenes TI LaunchPad (MSP-EXP430G2) zum Einsatz, welches 10 Dollar kostet und teilweise auch kostenlos angeboten wird. Eine Alternative wäre der relativ teure Arduino oder jede andere Mikrocontroller-Schaltung. Im LaunchPad ist zusätzlich ein USB-nach-UART-Wandler integriert, so dass die resultierende Schaltung über USB angeschlossen werden kann. Das hat zudem noch den Vorteil, dass USB auch zur Spannungsversorgung verwendet wird und so kein zusätzliches Netzteil benötigt wird.

Die verwendete Firmware kann unter Bitbucket heruntergeladen werden. Mit Hilfe des OpenSource-Programmes MSPDebug kann die Firmware auf das LaunchPad programmiert werden. Soll der Quellcode kompiliert werden, so wird eine Installation des mspgcc benötigt. Natürlich können auch die proprietären Werkzeuge des Herstellers unter Windows verwendet werden. Eine Einführung zur Programmierung des MSP findet man unter Mikrocontroller.net.

Über die Stiftleisten wird das LaunchPad mit der Adapterplatine verbunden. Wie das bei mir aussieht zeigt dieses Foto:

Einem PC gegenüber tritt die Platine als USB-UART-Wandler auf, kann also über die serielle Schnittstelle angesprochen werden, normalerweise /dev/ttyACM0. Zum Testen empfiehlt sich ein Terminalprogramm wie picocom (Einführung) oder gtkterm.

Es gibt drei Kommandos:

  • u → up
  • d → down
  • s → stop

Eigentliche Steuerung

Um die eigentliche Steuersoftware soll es in diesem Artikel weniger gehen. Sie ist sehr speziell auf das Projekt, die Wetterstation als Umgebung und den Webserver zugeschnitten. Bei mir läuft sie auf einem Seagate Dockstar, welchen man gar nicht mehr kaufen kann. Heute würde man dafür einen Raspberry Pi oder ein Beaglebone Black verwenden. Bei solchen Boards würde man sich den Zwischenschritt über das LaunchPad ganz sparen und die GPIOs des Boards direkt verwenden.

Trotzdem ein paar Eckpunkte der Steuerung: Die Aufgabe übernimmt ein Python-Skript, welches periodisch über den Wetter-Daemon veterod aufgerufen wird, welcher dann als Umgebungsvariablen aktuelle Wetterdaten bekommt. Zusätzlich kann das Skript über den Webserver als CGI-Skript aufgerufen werden. Dann kann das Fenster über eine einfache Webseite manuell gesteuert werden. Da die Webseite sehr einfach ist, kann sie auch unterwegs über ein Mobiltelefon aufgerufen werden. Und zuguter Letzt kann das Skript auch über die Kommandozeile gestartet werden. Die Kommunikation mit dem LaunchPad wird über das Modul pyserial realisiert.

Der Quellcode ist natürlich OpenSource und über BitBucket verfügbar. Hier auch nochmal der Link auf das komplette Repository.

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Um einen Kommentar hinterlassen zu können, erhalten Sie nach dem Kommentieren eine E-Mail mit Aktivierungslink an ihre angegebene Adresse.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Formular-Optionen