Hallo,
ich habe eine Frage zu meiner Rollladen-Automation.
Die Automation soll die Rollläden zum Sonnenaufgang öffnen und zum Sonnenuntergang schließen. Wenn der Sonnenaufgang vor 06:00 Uhr ist, sollen die Rollläden erst um 06:30 Uhr öffnen. Wenn der Sonnenaufgang nach 06:00 Uhr ist, sollen die Rollläden genau zum Sonnenaufgang öffnen.
Das Problem ist, dass die Rollläden immer genau zum Sonnenaufgang öffnen, auch wenn dieser vor 06:00 Uhr ist. Außerdem versucht die Automation um 06:30 Uhr nochmal, die Rollläden zu öffnen, auch wenn sie schon offen sind.
Wie kann ich die Automation so ändern, dass die Rollläden um 06:30 Uhr öffnen, wenn der Sonnenaufgang vor 06:00 Uhr ist, und sonst genau zum Sonnenaufgang?
Vielen Dank für eure Hilfe!
Hier ist mein aktueller Code:
alias: Rollläden Steuerung Sonnenaufgang und -untergang
description: Fährt die Rollläden zum Sonnenaufgang hoch und zum Sonnenuntergang herunter
trigger:
- platform: time
at: "06:00:00"
id: morning_check
- platform: time
at: "06:30:00"
id: morning_adjust
- platform: sun
event: sunrise
id: sunrise
- platform: sun
event: sunset
id: sunset
condition: []
action:
- choose:
- conditions:
- condition: template
value_template: "{{ trigger.id == 'sunrise' }}"
- condition: template
value_template: >-
{{ as_timestamp(states('sensor.sun_next_rising')) >=
as_timestamp(now().replace(hour=6, minute=0, second=0,
microsecond=0)) }}
sequence:
- service: cover.open_cover
target:
entity_id: cover.rollladen_ug
data: {}
- conditions:
- condition: template
value_template: "{{ trigger.id == 'morning_check' }}"
- condition: template
value_template: >-
{{ as_timestamp(states('sensor.sun_next_rising')) <
as_timestamp(now().replace(hour=6, minute=0, second=0,
microsecond=0)) }}
sequence:
- delay: "00:30:00"
- service: cover.open_cover
target:
entity_id: cover.rollladen_ug
data: {}
- conditions:
- condition: template
value_template: "{{ trigger.id == 'morning_adjust' }}"
sequence:
- service: cover.open_cover
target:
entity_id: cover.rollladen_ug
data: {}
- conditions:
- condition: template
value_template: "{{ trigger.id == 'sunset' }}"
sequence:
- service: cover.close_cover
target:
entity_id: cover.rollladen_ug
data: {}
mode: single
Das könntest Du über einen Template Trigger ausschließen
- platform: template
value_template: >
{{ state_attr('sun.sun', 'next_rising') | as_timestamp > as_timestamp(now().replace(hour=6, minute=00, second=0, microsecond=0)) }}
id: sonnenaufgang_nur_nach_6_oder_sunrise
Das könntest Du über eine Bedingung verhindern. Hier als Template
- condition: template
value_template: "{{false if states('cover.xxx') | lower != 'closed' else true }}"
1 „Gefällt mir“
Hi, ich hatte gestern zu kompliziert mit Templatecode gedacht, heute fiel mir ein, daß es viel simpler geht. Schau Dir das mal an ob es hilft.
alias: 111forumtest
description: ''
trigger:
- platform: sun
event: sunrise
id: sonnenaufgang
- platform: sun
event: sunset
id: sonnenuntergang
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: sonnenaufgang
- condition: time
before: "06:00:00"
sequence:
- wait_for_trigger:
- platform: time
at: "06:30:00"
- service: cover.open_cover
target:
entity_id: cover.rollladen_ug
data: {}
- conditions:
- condition: trigger
id: sonnenaufgang
- condition: time
after: "06:00:00"
sequence:
- service: cover.open_cover
target:
entity_id: cover.rollladen_ug
data: {}
- conditions:
- condition: trigger
id: sonnenuntergang
sequence:
- service: cover.close_cover
target:
entity_id: cover.rollladen_ug
data: {}
mode: single
Was mir nicht gefällt bei eine DELAY oder WAIT FOR TRIGGER ist, daß es einen Absturz/Neustart des HA nach Sonnenaufgang und vor 6:30 Uhr nicht abfängt (= Jalousien gehen nicht hoch). Wenn Du diese eher seltenen Fälle abfangen willst, würde ich einen Timer bis 6:30 setzen und in der Automatisation einen neuen Trigger (wenn Timer Zustand von active auf idle).
Hier wäre der Code welche Zeit Du dem Timer mitgeben müßtest
{% set target_time = strptime(state_attr('sun.sun', 'next_rising')[:10] + ' 06:30:00', '%Y-%m-%d %H:%M:%S') %}
{% set target_time_timestamp = as_timestamp(target_time) %}
{% set current_time = as_timestamp(now()) %}
{% set time_delta = target_time_timestamp - current_time | abs %}
{{ time_delta }} # Result is in seconds
Viele Wege führen nach Rom, wobei dieser ziemlich lang ist mit vielen schlenkern. 
Was relativ simples:
Rollladen bei Sonnenaufgang öffnend, jedoch nicht vor 06:30 Uhr.
alias: Rollläden morgens hoch fahren
description: ''
mode: single
trigger:
- platform: state
entity_id:
- sun.sun
to: above_horizon
- platform: time
at: '06:30:00'
condition:
- condition: time
after: '06:30:00'
- condition: state
entity_id: sun.sun
state: above_horizon
action:
- service: cover.open_cover
data: {}
target:
entity_id: cover.rollladen_ug
Gruß
Osorkon
Hallo @Bacardi und @Osorkon 
vielen Dank für eure großartigen Tipps! Sie haben mir sehr geholfen. Ich habe den ersten Tipp von @Bacardi direkt umgesetzt und die Automation wie folgt angepasst, um zu sehen, ob sich die Rollläden wie gewünscht öffnen und schließen. Das hat perfekt funktioniert! Jetzt überlege ich, ob ich die Automation nach euren weiteren Tipps nochmal ändern sollte. 
alias: Rollläden Steuerung Sonnenaufgang und -untergang
description: Fährt die Rollläden zum Sonnenaufgang hoch und zum Sonnenuntergang herunter
trigger:
- platform: template
value_template: >
{{ state_attr('sun.sun', 'next_rising') | as_timestamp >
as_timestamp(now().replace(hour=6, minute=0, second=0, microsecond=0)) }}
id: sonnenaufgang_nur_nach_6_oder_sunrise
- platform: time
at: "06:00:00"
id: morning_check
- platform: time
at: "06:30:00"
id: morning_adjust
- platform: sun
event: sunset
id: sunset
condition: []
action:
- choose:
- conditions:
- condition: template
value_template: "{{ trigger.id == 'sonnenaufgang_nur_nach_6_oder_sunrise' }}"
- condition: template
value_template: >
{{ as_timestamp(states('sensor.sun_next_rising')) >=
as_timestamp(now().replace(hour=6, minute=0, second=0,
microsecond=0)) }}
- condition: template
value_template: "{{ states('cover.rollladen_ug') != 'open' }}"
sequence:
- service: cover.open_cover
target:
entity_id: cover.rollladen_ug
data: {}
- conditions:
- condition: template
value_template: "{{ trigger.id == 'morning_check' }}"
- condition: template
value_template: >
{{ as_timestamp(states('sensor.sun_next_rising')) <
as_timestamp(now().replace(hour=6, minute=0, second=0,
microsecond=0)) }}
- condition: template
value_template: "{{ states('cover.rollladen_ug') != 'open' }}"
sequence:
- delay: "00:30:00"
- service: cover.open_cover
target:
entity_id: cover.rollladen_ug
data: {}
- conditions:
- condition: template
value_template: "{{ trigger.id == 'morning_adjust' }}"
- condition: template
value_template: "{{ states('cover.rollladen_ug') != 'open' }}"
sequence:
- service: cover.open_cover
target:
entity_id: cover.rollladen_ug
data: {}
- conditions:
- condition: template
value_template: "{{ trigger.id == 'sunset' }}"
- condition: template
value_template: "{{ states('cover.rollladen_ug') != 'closed' }}"
sequence:
- service: cover.close_cover
target:
entity_id: cover.rollladen_ug
data: {}
mode: single