Automatisierte Steuerung von Velux-Storen bei Dachfenstern

Im Rahmen des Projektes Smarthome haben wir unsere über 30 Jahre alten Dachfenster auf der Südseite ersetzt durch solche mit Sonnenschutzstoren auf der Aussenseite. Gerade im Sommer wurde das Obergeschoss im Sommer wegen Sonneneinstrahlung recht warm. Im Winter erhoffen wir uns durch diese Rollos, dass die Wärme besser im Haus gehalten werden kann.
Ausgeführt wurden die Arbeiten von der Firma Fleischmann Holzbau.

In diversen Foren ist nachzulesen, dass etliche Leute Probleme hatten, Velux-Rollläden in ein SmartHome einzubinden. Nach der Lektüre der Seite Velux Dachfenster in Loxone mit KLF200 und Shelly (DIY) beschloss ich, die Steuerung ebenfalls mittels Shellys zu bewerkstelligen.

Gleichzeitig mit den Fenstern und den Storen wurde das Gateway "Velux KLF 200" mitbestellt. Mittels den mitglieferten Hand-Funksendern kann das KLF-200 dank guter Dokumentation rasch angelernt werden. Dazu wurde der im Set enthaltene Kabelstrang mit den acht Kabeln benutzt. Das Bild unten zeigt, wie die Rollläden angesteuert werden können.

Für jedes der beiden Fenster wird nun für beide Richtungen der Storenbewegung ein eigener Shelly 1 Mini Gen3 wie folgt angeschlossen:
- Jeder Shelly wird mit 230V versorgt (L und N-Eingänge)
- Der Eingang "I" wird mit dem roten Kabel des KLF-200 verbunden
- Der Eingang "0" wird mit dem schwarzen Kabel des KLF-200 verbunden
Um die Übersicht nicht zu verlieren, werden die Shellys beschriftet (z.B. "WU" für "West Up" etc.). Es empfiehlt sich auch, die Shellys jeweils einzeln und nacheinander mit Strom zu versorgen, um sie einzeln zu aktiveren und ihnen entsprechende Namen (z.B. veluxwestup) zuzuweisen. Gleich anschliessend sollte die Firmware aktualisiert und auf dem Rechner im File /etc/hosts ein entsprechender Eintrag (z.B. 192.168.0.65 veluxwestup) gemacht werden. Diese fixe IP-Nummer muss natürlich auch auf dem Shelly selbst aktiviert werden.
Das Foto unten zeigt links die Installation in einer Verteilbox:

Sowohl das Stromversorgungskabel wie auch die roten und schwarzen Kabel, die zum KLF-200 führen, wurden jeweils innerhalb und ausserhalb der Verteilbox mittels Kabelbindern fixiert.
Die Steuerung der Fenster wird nun unter Linux durch folgendes Shell-Script namens veluxstoren.sh vollzogen:

#!/bin/bash
# veluxstoren.sh  05Sep2024/uk
#
# Steuert die beiden VELUX-Storen, welche mittels insgesamt vier
# 'Shelly 1 Mini Gen3' gesteuert werden (via KLF-200 von Velux)
#
cd $HOME/smarthome/veluxstoren
#
source $HOME/smarthome/HA/MASTER.file
if test "$MASTER" = "no" ; then
#      echo "Nicht Master. storen.sh - exit! `date +%d.%m.%Y_%H:%M`"
   exit
fi
#
n=$#
if test $n -ne 2 ; then
   cat veluxstoren.help
fi
seite=`echo $1 | tr '[:upper:]' '[:lower:]'`
cmd=`echo $2 | tr '[:upper:]' '[:lower:]'`
#
OUTFILE="/mnt/ramdisk/${0##*/}.velux_result"
#
N=0
S=0
#
case "$seite" in
   "o")
      ipIN="veluxost"
      ;;
   "w")
      ipIN="veluxwest"
      ;;
   *)
      echo ""
      echo "Unbekannte Seite!"
      echo "veluxstoren.sh - exit! `date +%d.%m.%Y_%H:%M`"
      exit
      ;;
esac
#
case "$cmd" in
   "o")
      ip=${ipIN}up
      task="http://$ip/relay/0?turn=on"
      curl --no-sessionid "$task" --output $OUTFILE 2>/dev/null
      sleep 1
      task="http://$ip/relay/0?turn=off"
      curl --no-sessionid "$task" --output $OUTFILE 2>/dev/null
      ;;
   "c")
      ip=${ipIN}down
      task="http://$ip/relay/0?turn=on"
      curl --no-sessionid "$task" --output $OUTFILE 2>/dev/null
      sleep 1
      task="http://$ip/relay/0?turn=off"
      curl --no-sessionid "$task" --output $OUTFILE 2>/dev/null
      ;;
   "c80")
      ip=${ipIN}up
      task="http://$ip/relay/0?turn=on"
      curl --no-sessionid "$task" --output $OUTFILE 2>/dev/null
      sleep 42
      task="http://$ip/relay/0?turn=off"
      curl --no-sessionid "$task" --output $OUTFILE 2>/dev/null
      ip=${ipIN}down
      task="http://$ip/relay/0?turn=on"
      curl --no-sessionid "$task" --output $OUTFILE 2>/dev/null
      sleep 27
      task="http://$ip/relay/0?turn=off"
      curl --no-sessionid "$task" --output $OUTFILE 2>/dev/null
      ;;
   "s")
      ip=${ipIN}up
      task="http://$ip/rpc/Shelly.GetStatus"
      curl --no-sessionid "$task" --output $OUTFILE 2>/dev/null
      echo "STATUS $ip :"
      cat $OUTFILE
      ip=${ipIN}down
      task="http://$ip/rpc/Shelly.GetStatus"
      curl --no-sessionid "$task" --output $OUTFILE 2>/dev/null
      echo " "
      echo " "
      echo "STATUS $ip :"
      cat $OUTFILE
      ;;
   *)
      echo ""
      echo "Unbekannter Storenbefehl!"
      echo "veluxstoren.sh - exit! `date +%d.%m.%Y_%H:%M`"
      exit
      ;;
esac
#
Das File veluxstoren.help sieht übrigens wie folgt aus:
 Aufruf des Scripts veluxstoren.sh

 ./veluxstoren.sh SEITE BEFEHL

 SEITE:  

 O    für OG Ost
 W    für OG West

 STORENBEFEHL:

 o   --> open
 c   --> close
 c   --> close 80%
 s   --> Status für die beiden Shellys der Store

Nun können die Rollläden mittels crontab im Sommer automatisch tagsüber geschlossen und nach Sonnenuntergang hochgefahren werden:

52 06 * * * $HOME/smarthome/veluxstoren/veluxstoren.sh O c >> $HOME/smarthome/veluxstoren/VeluxStorenMorgen.log 2>>$HOME/smarthome/veluxstoren/VeluxStorenMorgen.errlog
52 06 * * * $HOME/smarthome/veluxstoren/veluxstoren.sh W c >> $HOME/smarthome/veluxstoren/VeluxStorenMorgen.log 2>>$HOME/smarthome/veluxstoren/VeluxStorenMorgen.errlog
59 19 * * * $HOME/smarthome/veluxstoren/veluxstoren.sh O o >> $HOME/smarthome/veluxstoren/VeluxStorenAbend.log 2>>$HOME/smarthome/veluxstoren/VeluxStorenAbend.errlog
59 19 * * * $HOME/smarthome/veluxstoren/veluxstoren.sh W o >> $HOME/smarthome/veluxstoren/VeluxStorenAbend.log 2>>$HOME/smarthome/veluxstoren/VeluxStorenAbend.errlog
Die Zeiten (hier 06:52 und 19:59 Uhr) des Sonnenauf- bzw. -untergangs werden jeweils in der Nacht für den folgenden Tag automatisch bestimmt und das crontab-File entsprechend angepasst.
Im Winter (Monate November bis März) wird das Programm geändert: Bei Sonnenuntergang werden die Storen heruntergefahren und bei Sonnenaufgang hochgefahren. Noch überlegen muss ich mir eine Methode, um bei Schnee die Storenbewegungen zu unterbinden!
Die Abfrage nach dem "MASTER.file" im Script geschieht aus dem Grund, damit der redundante Rechner, der nicht Master ist, das Script nicht ausführt (siehe High-Availability (Hochverfügbarkeit) der Home-Automation).
Das OUTFILE bei den curl-Befehlen wird deshalb in die Ram-Disk geschrieben, damit die SD-Card des Raspis geschont wird; das Verfahren ist hier unter "RAM-Disk auf Raspi einrichten zur Schonung der SD-Karte" beschrieben.
Die Option "c80" für das Script veluxstoren.sh habe ich deshalb eingefügt, damit die Möglichkeit besteht, das Fenster nicht vollständig abzudunkeln.
Die Option "s" wurde eingefügt, um z.B. die Temperatur der verbauten Shellys zu kontrollieren. Wenn die Verteilbox geschlossen ist, weisen die Shellys Temperaturen von gut 60°C auf, wenn die Box geöffnet ist, betragen die Temperaturen noch gut 50°C; mittlerweile (nach drei Wochen in Betrieb) habe ich auf zwei Seiten der Verteilbox Lüftungslöcher geöffnet und den Deckel abgenommen, denn die Box ist ja im Innern des Hauses installiert.
Ausserdem wurden die Verteilbox und das KLF-200 vom Obergeschoss in das kühlere Untergeschoss verlegt. Die Distanz zu den Empfängern im Obergeschoss beträgt Luftlinie zwischen 10 und 15 Metern. Dazwischen sind Betondecken und Holzwände und zudem sind Verteilbox und KLF-200 im Untergeschoss auf einem -funktechnisch nicht optimalen - Metallbestell positioniert. Trotzdem ist die Funkverbindung gut und die Storen werden zuverlässig gesteuert.


Last Update: 21Apr2025 - Created: 05Sep2024 / uk