Lamellenstoren (Rafflamellenstoren), Venetian Blinds
Zusammenfassung
Die Lamellen des Storens drehen sich beim herunterfahren normalerweise in die geschlossene Position und kippen beim hochfahren auf die andere Seite (ebenfalls in eine geschlossene Position) oder stellen sich horizontal.
In allen folgenden Beispiel wird von einem Lamellenstoren ausgegangen, der beim Hochfahren offen steht (die Lamellen also horizontal stehen bzw. 0°) und beim Herunterfahren geschlossen ist (Lamellen senkrecht bzw. 90°). Das FHEM-Template und auch die Tasmota Beispiele gehen allerdings von einem Lamellenstoren aus, welcher auf die Gegenseite kippt (Lamellenbewegung von -90° bis 90°).
Ist der Lamellenstoren offen und soll 3/4 geschlossen werden und die Lamellen halb offen stehen, wird wie folgt vorgegangen.
- Der Motor wird in Richtung herunterfahren eingeschalten
- Nach 3/4 der Zeit die benötigt würde um den Lamellenstoren ganz herunter zu fahren wird der Motor abgeschalten
- Der Motor wird in Richtung öffnen/hochfahren angesteuert
- Nach 50 % der Zeit die benötigt würde, um die Lamellen ganz zu kippen (bis Horizontal bzw. 0°, also der Moment ab dem der Lamellenstoren wieder hochfahren würde) wird der Motor abgeschalten.
Im Beispiel wird für die Ansteuerung des Lamellenstoren ein ESP8266 (Shelly 2.5) verwendet und als Firmware Tasmota.
Lamellenstoren werden ab der Version 10.0.0.1 der Tasmota Firmware unterstützt, zeitlich somit ab Ende 2021.
Diverse weitere Details gibt es in den FFEM-Forum-Beiträge unter: https://forum.fhem.de/index.php/topic,123842.0.html
ESP, Shelly 2.5 konfigurieren
Siehe Forum https://forum.fhem.de/index.php/topic,123842.0.html URL zur aktuellsten Firmware (nicht die Releases): http://ota.tasmota.com/tasmota/tasmota.bin
Firmware flashen
Shelly 2.5 OTA auf Tasmota flashen (https://github.com/yaourdt/mgos-to-tasmota):
http://[IP des Shelly 2.5]/ota?url=http://dl.dasker.eu/firmware/mg2tasmota-Shelly25.zip
Shelly 2.5 installiert Tasmota und startet neu als AP. Mit dem Shelly verbinden und SSID und Wifi Passwort auf der Webseite des Shelly (http://192.168.4.1) erneut setzen. Die Webseite des Shellys gab mir dann noch die IP aus die der Shelly nachher im Heimnetz hat (wie ging das?). Wieder mit dem Heimnetz verbinden und die Webseite des Shellys aufrufen. Unter "Configure Other" das Template setzen:
{"NAME":"Shelly 2.5","GPIO":[56,0,17,0,21,83,0,0,6,82,5,22,156],"FLAG":2,"BASE":18}
Unter "Configure Module" Shelly 2.5 wählen.
Konfiguration für einen Lamellenstoren
Die Kommandos sind auf folgender Webseite beschrieben: https://tasmota.github.io/docs/Commands/#shutters
Unter "Console" folgende Befehle eingeben:
Interlock 1,2
Interlock ON
SetOption80 1
PowerOnState 0
Shelly neustarten
Mal ganz grob den Lamellenstoren kalibriert (56 Sekunden für das schliessen und öffnen):
ShutterOpenDuration1 56
ShutterCloseDuration1 56
Nun noch das Kippen konfigurieren. Die Beschreibung des Kommandos ist wie folgt: The configuration need following parameters: angle of blinds during OPEN, angle of blinds during CLOSE. This are the max and the min values of the venetian blinds (e.g. -90° to 90°). Additionally the runtime is required from min to max and reverse. This is typically 1-2sec. The resolution of the time is 0.05sec. Duration in [sec] must be multiplied by 20. e.g. 1.2sec => 1.2 x 20 = 24. Two open and close the tilt you can define the angle for OPEN and the angle for CLOSE of the tilt.
Ausprobieren ergab, dass da etwas nicht stimmen kann. Mit den Parameter wie folgt klappt es:
- Winkel der Lamellen beim öffnen: 0°
- Winkel der Lamellen beim schliessen: 90°
- benötigte Zeit zum kippen in 1/20 Sekunden (1 Sekunde = 20): 20
- gewünschter Winkel der Lamellen im geschlossenen Zustand: 90°
- gewünschter Winkel der Lamellen im offnen Zustand: 0°
ShutterTiltConfig1 0 90 20 90 0
MQTT konfigurieren
MQTT parameters
FHEM-Template
Falls das Template nicht aktuell ist dieses via FHEM-Update aktualisieren (Neustart von FHEM notwendig) oder nur das Template aktualisieren wie folgt:
{ Svn_GetFile("FHEM/lib/AttrTemplate/mqtt2.template", "FHEM/lib/AttrTemplate/mqtt2.template", sub(){ AttrTemplate_Initialize() }) }
Code Beispiele
Falls der ESP in FHEM schon einmal konfiguriert wurde, das Device löschen, den ESP neu starten und autocreate legt wiederum ein MQTT-Device an. FHEM Webfrontend aufrufen und das attrTemplate setzen:
set MQTT-TASMOTA-DEVICE attrTemplate tasmota_4ch_two_shutters_invert_0
Dann umkonfigurieren auf 0° bis 90° (tiltSlat:slider,0,1,90):
attr MQTT-TASMOTA-DEVICE setList close:noArg cmnd/Shelly25_2OG_SUED_D315B0/ShutterClose1\
open:noArg cmnd/MQTT-TASMOTA-DEVICE/ShutterOpen1\
half:noArg cmnd/MQTT-TASMOTA-DEVICE/ShutterPosition1 50\
pct:slider,0,1,100 cmnd/MQTT-TASMOTA-DEVICE/ShutterPosition1 $EVTPART1\
stop:noArg cmnd/MQTT-TASMOTA-DEVICE/ShutterStop1\
closeSlat:noArg cmnd/MQTT-TASMOTA-DEVICE/ShutterTilt1 CLOSE\
openSlat:noArg cmnd/MQTT-TASMOTA-DEVICE/ShutterTilt1 OPEN\
halfSlat:noArg cmnd/MQTT-TASMOTA-DEVICE/ShutterTilt1 45\
tiltSlat:slider,0,1,90 cmnd/MQTT-TASMOTA-DEVICE/ShutterTilt1 $EVTPART1\
resetClose:noArg cmnd/MQTT-TASMOTA-DEVICE/ShutterSetClose1\
x_configuration cmnd/MQTT-TASMOTA-DEVICE/$EVTPART1 $EVTPART2
Zwei Slider anstelle einem Knob und Slider:
attr MQTT-TASMOTA-DEVICE widgetOverride tiltSlat:colorpicker,BRI,0,1,90 pct:colorpicker,BRI,0,1,100
Reihenfolge der Slider ändern:
attr MQTT-TASMOTA-DEVICE webCmd tiltSlat:pct
Die Darstellung der Position noch anpassen:
attr MQTT-TASMOTA-DEVICE devStateIcon {my $onl = ReadingsVal($name,'LWT','Offline') eq 'Offline' ? 'rot' : 'gruen';; $onl = FW_makeImage("10px-kreis-$onl");; my $ip = ReadingsVal($name,'IPAddress','none');; my $pct = int((109 - ReadingsNum($name,'pct',0))/10)*10;; my $open = ReadingsVal($name,'state','');; my $lvicon = $open eq 'opening' ? 'fts_shutter_up@red' : $open eq 'closing' ? 'fts_shutter_down@red' : "fts_shutter_$pct";; $lvicon = FW_makeImage($lvicon);; my $lvcmd = ($open eq 'opening' || $open eq 'closing') ? 'stop' : $pct > 50 ? 'open' : 'close';; my $slt = ReadingsNum($name,'tiltSlat',90);; my $slticon = 'fts_blade_arc_close_';; $slticon .= $slt == 0 ? '100' : $slt < 90 ? '50' : '00';; $slticon = FW_makeImage($slticon);; my $sltcmd = $slt == 90 ? 'closeSlat' : $slt > 40 ? 'openSlat' : 'halfSlat';; qq(<a href="http://$ip" target="_blank">$onl</a> <a href="/fhem?cmd.dummy=set $name $lvcmd&XHR=1">$lvicon</a> <a href="/fhem?cmd.dummy=set $name $sltcmd&XHR=1">$slticon $slt</a>)}
weitere Befehle
Die Funktion ShutterStopClose1 kann genutzt werden, um den Storen runter zu fahren oder zu stoppen (falls der Storen hoch- oder runterfährt). Das Kommando kann via x_configuration erreicht werden. Ein Beispiel um den Befehl bei einem langen Tastendruck anzuwenden (via notify):
notify MQTT2_DVES_24EFCA:SWITCH2:.3 set MQTT2_Shelly25_1OG_Zimmer_OST_D30D75 x_configuration ShutterStopClose1
Jeweils um 18° kippen bei einem kurzen Tastendruck (via notify):
defmod n_Shellyi3_B_Down notify MQTT2_DVES_24EFCA:SWITCH2:.2 set MQTT2_Shelly25_1OG_Zimmer_OST_D30D75 x_configuration ShutterTiltChange1 -18
0 ist zu und 90 ist offen (was nicht dem gesagten entspricht). Konfiguriert wurde ShutterTiltConfig1 0 90 20 90 0 und nicht ShutterTiltConfig1 0 90 20 0 90. Letztere Variante funktionierte nicht (zumindest bei den ersten Firmware-Versionen welche Lamellenstoren unterstützen).
Die Taster in diesem Beispiel sind ebenfalls an einem ESP (Shelly i3) angehängt. Wesentlich eleganter wäre es daher, die beiden Kommandos direkt via MQTT an den ESP, welcher die Storen steuert, zu senden.
Hinweise, Fehler, Bugs, ToDo,...
Position des Lamellenstoren (beim hoch- und runterfahren), wird aktuell nicht laufend zurück gemeldet, sondern erst beim erreichen der Position gesetzt. Der Slider wird daher erst beim erreichen der Endposition nachgeführt.
Die devStateIcon (Storen hoch/runter und kippen) funktionieren nicht wie gewünscht. Die Definition ist wohl falsch.
Es gibt kein Kommando, um den Lamellenstoren zu stoppen falls er hoch- oder runterfährt und ansonsten um einen bestimmten Winkel zu kippen. Dies könnte genutzt werden, um mit einem Taster welcher für das Kippen gedacht ist, auch den Storen bei der gewünschten Position zu stoppen.
Ein Icon für die Position offen (100 % intern jedoch 0) fehlt. Als Lösung kann dafür ein Symlink auf das entsprechende Fenstericon erstellen:
/opt/fhem/www/images/openautomation# ln -s fts_window_2w.svg fts_shutter_0.svg
Alternativ $pct so berechnen, dass nie der Wert 0 ausgegeben wird, dann wird allerdings auch nie ein Fenster mit einem ganz offenen Storen dargestellt.