Arduino-Projekt vlx2mqtt

 

Velux bietet mit dem KLF200 ein eigentlich netzwerkfähiges Gerät zum Ansteuern seiner Rollläden und Dachflächenverdunklungen an. Leider gibt es beim Design einige Probleme mit der verfügbaren Firmwareversion 2.0.0.71: bricht mal die Netzwerkverbindung ab (z.B. wegen eines Reboots des Netzwerk-Switch), so bleibt die TCP-Verbindung intern offen. Da das Gerät maximal zwei TCP-Verbindungen unterstützt, verbleibt nur noch eine Möglichkeit mit dem Gerät zu kommunizieren. Bricht auch diese ab, ist das Gerät auf dem Netzwerkanschluss bis zum nächsten Reboot taub und stumm.

HomeAssistant und FHEM haben das so gelöst, das beim Herstellen einer Verbindung das KLF200 sofort rebootet wird, damit sichergestellt ist, dass der erste Link etabliert wird. Wird die Verbindung einmal getrennt, wird die zweite Verbindung etabliert, das Gerät rebootet und wieder die erste Verbindung hergestellt - ist doch bescheuert...

Die Lösung: ESP8266 mit MQTT

Also habe ich einen kleinen ESP8266 genommen, 6 Eingangskanäle des KLF200 intern mit dem ESP8266 verbunden und dem ESP über die PubSubClient-Bibliothek MQTT beigebracht. Nun kann ich zuverlässig meine Rollläden steuern und bleibe nicht mehr entweder im Dunkeln oder in einer heißen Wohnung stehen.

Versorgt wird das Ganze direkt intern über die Eingangsspannung des KLF200. Hier habe ich Vcc und Gnd direkt vom LDO abgegriffen und eine Leitung angelötet, die zum Vin des ESP8266 führt. Im nachfolgenden Bild sieht man auf der linken Seite den ESP8266 in der NodeMCU-Ausführung. Die sechs orangenen Leitungen laufen von D0 bis D5 direkt an die Eingangsklemmen In1 bis In6 des KLF200. Man kann auch weiterhin parallel einen Taster von außen anschließen:

 

Weitere Funktionen: PC_DIMMER Lichtsteuerung

Ich nutze in unserem Haus lediglich drei Verdunklungen für Dachflächenfenster, sodass ich nur die KLF200-Eingänge 1 bis 6 beschalten musste. Somit hatte ich noch einen Rx/Tx-Anschluss am ESP8266 frei. Hier habe ich die im Bild sichtbare rechte Platine angebracht und einen Pegelwandler mit zwei BC337-Transistoren aufgebaut, um RS232-Signale (mit TTL-Pegeln) ausgeben zu können. Darüber steuere ich ein klassisches PC_DIMMER RS232-Dimmerpack, mit dem ich unser Wohnzimmer beleuchte. Jetzt kann ich also via NodeRED über MQTT auch die Wohnzimmerbeleuchtung anpassen, ohne dass ich einen weiteren ESP verwenden muss. Im Gehäuse des KLF200 ist ausreichend Platz, sodass man bei Bedarf noch weitere Technik hinzufügen kann.

An D6 habe ich als Gimmick noch einen DHT11-Sensor angeschlossen und kann die Wohnzimmertemperatur und die Luftfeuchtigkeit in NodeRED mitplotten. War zwar nicht notwendig, aber es waren noch Pins frei.

 

Achtung bei der Pin-Wahl beim ESP8266

Da das KLF200 an seinen Eingängen Pull-ups verwendet, darf beim ESP8266 nicht der Pin D8 verwendet werden. D8 ist intern am GPIO15 angeschlossen und muss beim Booten zwingend auf GND liegen, sonst startet das System nicht aus dem internen Flash. Man kann also D6 und D7 noch verwenden, wenn man den DHT11 (oder DS18B20) nicht verwendet. RxD und TxD stehen aber auch noch zur Verfügung, wenn man kein PC_DIMMER-System anschließen möchte. Wenn man die Gruppenfunktion des KLF200 nutzt, kann man also doch alle Geräte verwenden. Notfalls bietet sich aber auch noch die Option an, einen MCP23017 als Port-Extender einzusetzen.

 

Arduino-Projekt

Das Arduino-Projekt kann hier heruntergeladen werden: vlx2mqtt

In der Datei "vlx2mqtt.h" könnt ihr die Firmware dann konfigurieren:

  • Zeilen 1 bis 5: Grundkonfiguration des Systems
  • Zeile 9: Hostname des Geräts im Netzwerk
  • Zeile 31 bis 38: Konfiguration des WLANs und der IP-Adresse
  • Zeilen 43 bis 56: Konfiguration des MQTT-Brokers und der einzelnen Topics
  • Zeilen 90 bis 95: Konfiguration der einzelnen Lichtszenen für das PC_DIMMER-Dimmerpack 

Viel Spaß beim Basteln!