Steuerung von Rollläden mit Velux KIG 300 Gateway ohne Velux Cloud

Begonnen von phys1, 20 April 2026, 19:49:23

Vorheriges Thema - Nächstes Thema

phys1

Die Steuerung über einen Cloud Dienst ist immer mit Risiken verbunden, z.B. Internet fällt aus oder die Cloud wird abgeschaltet oder gehackt. Es gibt zwar eine Lösung mit fhem, aber die nutzt ebenfalls die Velux Cloud: https://forum.fhem.de/index.php?topic=134795.15 Daher möchte ich hier eine Lösung vorstellen, wie das mit fhem nur im lokalen Netzwerk möglich ist.

Voraussetzungen:
a. Velux KIG 300 Gateway
b. Zum Gateway kompatible Rollläden und/oder el. Fenster (io-homecontrol)
c. fhem läuft auf einem Debian basierten System, z.B. Raspberry Pi

Folgende Schritte sind erforderlich:
1.a KIG 300 ins WLAN einbinden
1.b KIG 300 mit den zu steuernden Produkten koppeln
2. homekit_python auf dem Debian System installieren
3. homekit_python mit dem KIG 300 paaren
4. fhem einrichten, um die Velux Produkte zu steuern

Für 1.a ist einmalig die Velux Active App und ein Velux Konto erforderlich. Danach kann man beides löschen oder auch parallel weiterbetreiben. Die Steuerung über fhem erfolgt später nur über das lokale Netzwerk. Wenn KIG 300 bereits eingerichtet und mit den Produkten gekoppelt ist, kann man entweder mit Schritt 2 weitermachen oder alternativ KIG 300 aus der App entfernen (das entfernt auch die Kopplung zu den Produkten) und mit Schritt 1.a neu beginnen.

1.a Velux Active App auf Smartphone installieren. KIG 300 mit Steckdose verbinden: LED blinkt beim Booten grün und danach weiß, um Konfigurationsbereitschaft anzuzeigen. App starten und mit Velux Konto anmelden. Alle Schritte zum Einbinden des Gateways ins WLAN befolgen, bis die Meldung "Gut gemacht" erscheint. Die LED am Gateway muss erlöschen. Danach die App schließen.
1.b. Gateway mit Produkten koppeln. Dazu benötigt man eine mit dem Produkt zuvor gekoppelte Fernbedienung. Die Prozedur ist hier ab Punkt 2 beschrieben: https://info.velux.de/velux-active-support/homekit

Die anderen Schritte erkläre ich später. Wer Interesse hat und das ganze auch testen möchte, kann sich gerne hier melden.

JoWiemann

Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

phys1

Schritt 2. homekit_python (jlusiardi) auf Raspberry Pi OS (oder anderen Debian basierten Systemen) installieren:

Auf aktuellen Systemen (Trixie/Bookworm) sollte man das relativ alte Paket in einer virtuellen Umgebung installieren, um nicht mit anderen Python Bibliotheken oder Programmen in Konflikt zu kommen.
Ich verwende hier pyenv. Benötigte Bibliotheken systemweit installieren:
sudo apt update
sudo apt install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl git libncursesw5-dev \
xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Damit der user fhem mit einer Shell arbeiten kann, muss in der Datei /etc/passwd mit einem (mit sudo aufgerufenem) Editor der Eintrag für fhem von /bin/false in /bin/bash geändert werden.
Dann als user fhem weiterarbeiten:
sudo su - fhemDer Prompt ändert sich z.B. in fhem@raspberrypi.
Nun pyenv für user fhem installieren:
curl -fsSL https://pyenv.run | bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init - bash)"' >> ~/.profile
Shell verlassen und wieder aufrufen, damit die Änderungen wirksam werden
exit
sudo su - fhem
Ein mit homekit_python kompatibles Python installieren, d.h. eine Version zwischen 3.7.0 und 3.11.99.
Die verfügbaren Versionen auflisten:
pyenv install --list | grep -E ' 3\.+'Ich verwende 3.11.15:
pyenv install 3.11.15Das Installieren dauert etwas, da es aus dem Quellcode erfolgt.
Virtuelle Umgebung mit der installierten Python Version erstellen. Der Name (hier homekit) kann frei gewählt werden:
pyenv virtualenv 3.11.15 homekit
pyenv activate homekit
Der Prompt ändert sich erneut. Nun das Paket homekit installieren, z.B. meine gepatchte Version.
/Pfad/zu/ an den aktuellen Ort des Pakets anpassen, user fhem muss mindestens Lesezugriff haben. [IP] ohne Leerzeichen anfügen:
pip3 install /Pfad/zu/homekit-0.19.2.tar.gz[IP]Alternativ kann man die letzte vom Autor freigegebene Version installieren und danach mit meinem get_events.diff selber patchen:
pip3 install homekit[IP]Nun wird's spannend. Prüfen, ob das Velux KIG 300 gefunden wird:
python3 -m homekit.discoverNach einigen Sekunden beendet sich das Programm und zeigt die gefundenen homekit devices an.
Sollte Python meckern, dass homekit nicht gefunden wird, stimmt etwas mit der Installation nicht. Sollte das KIG 300 nicht gefunden werden, prüft man zunächst, ob es mit ping auf seine IP von der Shell aus erreichbar ist (die IP muss im Router sichtbar sein).

Demnächst gehts weiter...

JoWiemann

Zitat von: phys1 am 21 April 2026, 11:51:24Nach einigen Sekunden beendet sich das Programm und zeigt die gefundenen homekit devices an.
Sollte Python meckern, dass homekit nicht gefunden wird, stimmt etwas mit der Installation nicht. Sollte das KIG 300 nicht gefunden werden, prüft man zunächst, ob es mit ping auf seine IP von der Shell aus erreichbar ist (die IP muss im Router sichtbar sein).

Demnächst gehts weiter...


Ok, bis hierhin hat es schon mal funktioniert. Vielen Dank für die Beschreibung. Allerdings habe ich den Parameter [IP] zunächst missverstanden und dort die IP des Gateways eingesetzt. Erst im README des .tar Files habe ich gesehen, dass es sich um die Angabe IP und nicht BLE basiert handelt.

Grüße Jörg
Jörg Wiemann

RPi 4 B mit 4 GByte bookworm, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM; zigbee2mqtt

ioBroker als Datenlieferant für z.B. Anker, Samsung

phys1

Jörg, danke für den Test. Bist du auf Bookworm oder Trixie unterwegs?

Schritt 3. homekit_python mit dem KIG 300 paaren

Zunächst die virtuelle Umgebung aktivieren (sofern man sie verlassen hat) und discover aufrufen:
sudo su - fhem
pyenv activate homekit
python3 -m homekit.discover
Die Antwort sollte so aussehen:
Name: VELUX Gateway._hap._tcp.local.
Url: http_impl://192.168.xxx.xx:5001
Configuration number (c#): 6
Feature Flags (ff): Supports HAP Pairing (Flag: 1)
Device ID (id): XX:XX:XX:XX:XX:XX
Model Name (md): VELUX Gateway
Protocol Version (pv): 1.1
State Number (s#): 1
Status Flags (sf): Accessory has not been paired with any controllers. (Flag: 1)


Die Device ID (hier mit XX... überschrieben) kopiert man sich raus.
Der (Software-)Controller benötigt eine (zunächst leere) Konfigurationsdatei:
python3 -m homekit.init_controller_storage -f Pfad/zu/fhem/Velux300Der Pfad/zu/fhem/ muss zum Home-Verzeichnis von fhem zeigen, bei mir /opt/fhem/. Der Dateiname muss Velux300 sein, da ich das fest "verdrahtet" habe.
Jetzt erfolgt das Paaren. Am Gateway selbst muss nichts gedrückt werden, aber der 8-stellige Homekit Code (befindet sich im Homekit Logo auf der Rückseite) muss notiert werden, etwa 12345678.
python3 -m homekit.pair -d XX:XX:XX:XX:XX:XX -p 123-45-678 -f /Pfad/zu/fhem/Velux300 -a veluxBeim -d Parameter natürlich die eigene Device Id eintragen. Beim -p Parameter sind die beiden Bindestriche wie oben einzufügen (und natürlich der eigene Code), auch wenn das im Homekit Code anders ist. Die Antwort sollte lauten:
Pairing for "velux" was established

Dann folgt die Integration in fhem...