Lamellenstoren (Rafflamellenstoren), Venetian Blinds: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 11: Zeile 11:
# 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.
# 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 [[https://de.wikipedia.org/wiki/ESP8266]] (Shelly 2.5) verwendet und als Firmware Tasmota.
Im Beispiel wird für die Ansteuerung des Lamellenstoren ein [https://de.wikipedia.org/wiki/ESP8266 <nowiki>ESP8266</nowiki>] ([https://shelly.cloud/products/shelly-25-smart-home-automation-relay/ <nowiki>Shelly 2.5</nowiki>]) verwendet und als Firmware [https://tasmota.github.io/docs/ <nowiki>Tasmota</nowiki>].
 
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):
<syntaxhighlight lang="perl">
http://[IP des Shelly 2.5]/ota?url=http://dl.dasker.eu/firmware/mg2tasmota-Shelly25.zip
</syntaxhighlight>
 
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:
<syntaxhighlight lang="perl">
{"NAME":"Shelly 2.5","GPIO":[56,0,17,0,21,83,0,0,6,82,5,22,156],"FLAG":2,"BASE":18}
</syntaxhighlight>
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:
<syntaxhighlight lang="perl">
Interlock 1,2
Interlock ON
SetOption80 1
PowerOnState 0
</syntaxhighlight>
Shelly neustarten
 
Mal ganz grob den Lamellenstoren kalibriert (56 Sekunden für das schliessen und öffnen):
<syntaxhighlight lang="perl">
ShutterOpenDuration1 56
ShutterCloseDuration1 56
</syntaxhighlight>
 
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°
<syntaxhighlight lang="perl">
ShutterTiltConfig1 0 90 20 90 0
</syntaxhighlight>
 
=== 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:
<syntaxhighlight lang="perl">
{ Svn_GetFile("FHEM/lib/AttrTemplate/mqtt2.template", "FHEM/lib/AttrTemplate/mqtt2.template", sub(){ AttrTemplate_Initialize() }) }
</syntaxhighlight>
 
== 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:
<syntaxhighlight lang="perl">
set MQTT-TASMOTA-DEVICE attrTemplate tasmota_2ch_shutter_venetian_invert_0
</syntaxhighlight>
 
Falls mehrere Lamellenstoren an einen ESP:
<syntaxhighlight lang="perl">
set DEVICE attrTemplate set_associatedWith \CHANNELS=2 \MAKECOPIES=1
</syntaxhighlight>
 
Dann umkonfigurieren auf 0° bis 90° (tiltSlat:slider,'''0''',1,90):
<syntaxhighlight lang="perl">
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
</syntaxhighlight>
 
Zwei Slider anstelle einem Knob und Slider:
<syntaxhighlight lang="perl">
attr MQTT-TASMOTA-DEVICE widgetOverride tiltSlat:colorpicker,BRI,0,1,90 pct:colorpicker,BRI,0,1,100
</syntaxhighlight>
 
Reihenfolge der Slider ändern:
<syntaxhighlight lang="perl">
attr MQTT-TASMOTA-DEVICE webCmd tiltSlat:pct
</syntaxhighlight>
 
Die Darstellung der Position noch anpassen:
<syntaxhighlight lang="perl">
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>)}
</syntaxhighlight>
 
=== 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):
<syntaxhighlight lang="perl">
notify MQTT2_DVES_24EFCA:SWITCH2:.3 set MQTT2_Shelly25_1OG_Zimmer_OST_D30D75 x_configuration ShutterStopClose1
</syntaxhighlight>
 
Jeweils um 18° kippen bei einem kurzen Tastendruck (via notify):
<syntaxhighlight lang="perl">
defmod n_Shellyi3_B_Down notify MQTT2_DVES_24EFCA:SWITCH2:.2 set MQTT2_Shelly25_1OG_Zimmer_OST_D30D75 x_configuration ShutterTiltChange1 -18
</syntaxhighlight>
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:
<syntaxhighlight lang="BASH">
/opt/fhem/www/images/openautomation# ln -s fts_window_2w.svg fts_shutter_0.svg
</syntaxhighlight>
Alternativ $pct so berechnen, dass nie der Wert 0 ausgegeben wird, dann wird allerdings auch nie ein Fenster mit einem ganz offenen Storen dargestellt.
[[Kategorie:Code Snippets]]

Aktuelle Version vom 8. Mai 2022, 01:10 Uhr

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. ) 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.

  1. Der Motor wird in Richtung herunterfahren eingeschalten
  2. Nach 3/4 der Zeit die benötigt würde um den Lamellenstoren ganz herunter zu fahren wird der Motor abgeschalten
  3. Der Motor wird in Richtung öffnen/hochfahren angesteuert
  4. 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:

  1. Winkel der Lamellen beim öffnen: 0°
  2. Winkel der Lamellen beim schliessen: 90°
  3. benötigte Zeit zum kippen in 1/20 Sekunden (1 Sekunde = 20): 20
  4. gewünschter Winkel der Lamellen im geschlossenen Zustand: 90°
  5. 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_2ch_shutter_venetian_invert_0

Falls mehrere Lamellenstoren an einen ESP:

set DEVICE attrTemplate set_associatedWith \CHANNELS=2 \MAKECOPIES=1

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.