Eine Jalousie in Home Assistant nur hoch- und herunterzufahren ist einfach. Interessanter wird es, wenn zusätzlich der Lamellenwinkel gesteuert werden soll. Genau diese Kombination tauchte in mehreren meiner bisherigen Problemlösungen immer wieder auf: Shelly-Relais im Cover-Modus, Jalousieposition, Tilt, Endlagen und die Frage, wie ein Skript erst dann weitermacht, wenn die vorherige Bewegung wirklich abgeschlossen ist.
Die gute Nachricht: Home Assistant kann das sauber abbilden. Entscheidend sind eine korrekt konfigurierte Shelly-Jalousie und die richtigen Cover-Aktionen.
Voraussetzung: Shelly muss als Jalousie eingerichtet sein
Bevor Home Assistant einen Lamellenwinkel steuern kann, muss das Shelly-Gerät selbst die Funktion bereitstellen. Bei passenden Shelly-Modellen bedeutet das in der Praxis:
- Geräteprofil auf Cover stellen, nicht auf Switch.
- Die Jalousie vollständig kalibrieren.
- Die Lamellensteuerung beziehungsweise Blinds tilt control / Slat control aktivieren.
- Falls das Modell es verlangt, die Bewegungszeit der Lamellen korrekt hinterlegen.
Ohne diese Vorbereitung kann Home Assistant zwar die Jalousie als Cover erkennen, aber unter Umständen keinen Lamellenwinkel anbieten. Shelly weist außerdem darauf hin, dass Positionsbefehle eine abgeschlossene Kalibrierung voraussetzen.
Höhe und Lamellenwinkel sind zwei unterschiedliche Werte
In Home Assistant werden die beiden Funktionen getrennt behandelt:
cover.set_cover_positionsteuert die Öffnungshöhe.cover.set_cover_tilt_positionsteuert den Lamellenwinkel.
Bei der Tilt-Position bedeutet 0 Prozent geschlossen und 100 Prozent geöffnet. Das ist die aktuelle Definition der Home-Assistant-Cover-Aktion.
Einfaches Beispiel: Lamellen auf 50 Prozent stellen
action: cover.set_cover_tilt_position
target:
entity_id: cover.wohnzimmer_jalousie
data:
tilt_position: 50
Damit wird nur der Lamellenwinkel verändert. Die Höhe der Jalousie bleibt davon grundsätzlich getrennt.
Warum ein fester Delay oft nicht die beste Lösung ist
Ein häufiger erster Ansatz lautet: Jalousie fahren, 20 Sekunden warten, anschließend den Tilt setzen. Das kann funktionieren, ist aber unnötig starr. Je nach Position braucht die Jalousie mal zwei Sekunden und mal zwanzig Sekunden.
Robuster ist es, auf den tatsächlichen Zustand zu warten. Home Assistant stellt dafür wait_for_trigger zur Verfügung.
Beispiel: Ganz schließen und danach Lamellen schließen
sequence:
- action: cover.set_cover_position
target:
entity_id: cover.wohnzimmer_jalousie
data:
position: 0
- wait_for_trigger:
- trigger: state
entity_id: cover.wohnzimmer_jalousie
to: "closed"
timeout: "00:01:00"
continue_on_timeout: false
- action: cover.set_cover_tilt_position
target:
entity_id: cover.wohnzimmer_jalousie
data:
tilt_position: 0
mode: single
Der Vorteil: Der zweite Befehl wird erst ausgeführt, wenn die Jalousie den Zustand closed meldet. Ein Timeout verhindert, dass das Skript bei einem Geräteproblem unbegrenzt hängen bleibt.
Auf einen bestimmten Tilt-Wert warten
Auch der Lamellenwinkel kann als Zwischenbedingung verwendet werden. Wenn die verwendete Integration das Attribut current_tilt_position liefert, kann ein numerischer Trigger beispielsweise auf den Bereich um 100 Prozent warten.
- action: cover.set_cover_tilt_position
target:
entity_id: cover.wohnzimmer_jalousie
data:
tilt_position: 100
- wait_for_trigger:
- trigger: numeric_state
entity_id: cover.wohnzimmer_jalousie
attribute: current_tilt_position
above: 99
timeout: "00:00:20"
continue_on_timeout: false
- action: cover.set_cover_tilt_position
target:
entity_id: cover.wohnzimmer_jalousie
data:
tilt_position: 0
Damit lassen sich Bewegungsfolgen bauen, bei denen die Lamellen zunächst vollständig geöffnet und anschließend wieder geschlossen werden.
Wenn Home Assistant gar keine Tilt-Steuerung zeigt
Dann sollte nicht zuerst das YAML verdächtigt werden. Meist liegt das Problem eine Ebene tiefer. Prüfe nacheinander:
- Ist das Shelly-Profil wirklich auf Cover gestellt?
- Ist die Jalousie kalibriert?
- Ist die Lamellensteuerung im Shelly aktiviert?
- Zeigt Home Assistant bei der Cover-Entität überhaupt eine Tilt-Funktion?
- Wurde die Shelly-Integration nach der Änderung neu geladen beziehungsweise die Entität aktualisiert?
Home Assistant unterstützt Tilt nur, wenn die Integration die entsprechende Fähigkeit für die Cover-Entität bereitstellt.
Eine wichtige Falle: alte und neue YAML-Syntax nicht vermischen
In älteren Beispielen findet man innerhalb von Triggern häufig platform: state. Die aktuelle Home-Assistant-Dokumentation zeigt in der modernen YAML-Syntax innerhalb von wait_for_trigger dagegen trigger: state beziehungsweise trigger: numeric_state. Wer Beispiele aus verschiedenen Jahren kopiert, sollte deshalb die Syntax des eigenen Home-Assistant-Stands prüfen.
Mein sinnvoller Aufbau für Jalousie-Skripte
Für zuverlässige Automationen hat sich diese Reihenfolge bewährt:
- Zielposition der Jalousie setzen.
- Auf Endzustand oder Positionswert warten.
- Erst danach den Lamellenwinkel setzen.
- Bei kritischen Abläufen immer ein Timeout verwenden.
- Bei mehreren Jalousien zunächst mit einer einzigen Entität testen.
So lässt sich ein Fehler deutlich leichter eingrenzen, als wenn gleichzeitig fünf Jalousien mit mehreren Delays und Tilt-Befehlen angesteuert werden.
Fazit
Für die Kombination aus Shelly, Home Assistant und Jalousien ist die Trennung zwischen Position und Tilt der entscheidende Punkt. Sobald das Shelly-Gerät im Cover-Modus kalibriert und die Lamellensteuerung aktiviert ist, kann Home Assistant beide Werte getrennt ansteuern. Mit wait_for_trigger werden daraus zuverlässige Abläufe, die nicht nur aufgrund geschätzter Wartezeiten funktionieren.