Probleme mit Rollladen-Automation: Doppelte Öffnung bei Sonnenaufgang

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. :wink:

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 :grinning:
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. :smiling_face:

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