Automation Jalousien mit Sonnenaufgang hochfahren, aber nicht vor X Uhr

Guten Abend,

ich hab ein kleines Problem mit einer Automation zum Hochfahren der Jalousien zum Sonnenaufgang.

Ziel: Jalousien sollen zum Sonnenaufgang hochfahren, aber frühstens um 7 Uhr (Mo-Fr) bzw. um 7:45 Uhr (Sa-So), aber spätestens um 8 Uhr.

Ich habe schon in einigen Forenbeiträgen, aber auch mit ChatGPT verschiedene Sachen ausgetestet, aber das Problem ist immer, dass der Trigger für das Hochfahren nicht sauber funktioniert. Aktuell wird das Skript um 7 Uhr&7:45 Uhr ausgeführt. Ich glaube, dass das schon falsch ist und der Trigger der Sonnenaufgang sein muss, aber damit hatte ich auch getestet und es hat nicht funktioniert.
Problem: Montag, Sonnenaufgang 6:57 Uhr → Automation wird um 7 Uhr ausgeführt und Jalousien fahren hoch
Dienstag, Sonnenaufgang 7:07 Uhr → Automation wird um 7 Uhr ausgeführt und Jalousien fahren nicht hoch, sondern erst beim Ausführen des zweiten Triggers um 7:45 Uhr

Aktuell habe ich 3 Automationen: Hochfahren bei Sonnenaufgang vor 8 Uhr, Hochfahren bei Sonnengang nach 8 Uhr (Fallback) und noch ein Status-Reset, da ich in den Automationen mit einem Boolean arbeite, damit nicht immer beide Automationen ausgeführt werden.

Nun stellt sich die Frage: wie muss die Automation Hochfahren bei Sonnenaufgang vor 8 Uhr richtig aussehen? Nach meiner Idee müsste man als Trigger den Sonnenaufgang nehmen und dann abfragen, ob der schon um 7 Uhr erfolgt ist und falls nicht, dann müsste er warten bis er erfolgt und falls er nach 8 Uhr erfolgt, muss die Automation beendet werden, da dann die Fallback greifen soll.

Hier ist der Code der Hochfahr-Automationen:

alias: Jalousien_Automatisch morgens hochfahren (Sonnenaufgang vor 8 Uhr)
description: >-
  Fährt Jalousien nach Sonnenaufgang hoch, wenn dieser zwischen 7:00/7:45 und
  8:00 liegt
triggers:
  - at: "07:00:00"
    trigger: time
  - at: "07:45:00"
    trigger: time
conditions:
  - condition: or
    conditions:
      - condition: and
        conditions:
          - condition: time
            weekday:
              - mon
              - tue
              - wed
              - thu
              - fri
          - condition: template
            value_template: "{{ now() > state_attr('sun.sun', 'next_rising') | as_datetime }}"
      - condition: and
        conditions:
          - condition: time
            weekday:
              - sat
              - sun
          - condition: template
            value_template: "{{ now() > state_attr('sun.sun', 'next_rising') | as_datetime }}"
actions:
  - device_id: 58XXX
    domain: cover
    entity_id: 17XXX
    type: open
  - ****weitere device_ids***
  - target:
      entity_id: input_boolean.jalousien_morgens_hochgefahren
    action: input_boolean.turn_on
mode: parallel
max: 15

Vielleicht hat ja jemand eine gute Idee für eine Lösung :slight_smile:

Hab da mal schnell was zusammen gebastelt

Eigentlich hast du es in der Überschrift schon selbst geschrieben …

Als Trigger den Sonnenaufgang und die Uhrzeiten als Bedingung

description: ""
mode: single
triggers:
  - trigger: sun
    event: sunrise
    offset: 0
conditions:
  - condition: time
    after: "07:00:00"
    before: "08:00:00"
actions: []

Die Wochentage kannst du ja als Bedingung auch noch hinzufügen. Für’s Wochenende entweder eine zweite Automation oder alles in eine Automation und mit ID’ ls arbeiten

Alle Auslöser aufführen, also

  • Sonnenaufgang
  • 07:00 Uhr
  • 07:45 Uhr
  • 08:00 Uhr

Dann jeweils die Bedingungen für Werktag und Wachende als Optionen abfragen.
Die letzte Option wäre dann. Nach 8 Uhr und Jalousie ist geschloßen.

description: ""
mode: single
triggers:
  - trigger: sun
    event: sunrise
    offset: 0
  - trigger: time
    at: "07:00:00"
  - trigger: time
    at: "07:45:00"
  - trigger: time
    at: "08:00:00"
conditions: []
actions:
  - choose:
      - conditions:
          - condition: time
            after: "07:00:00"
            weekday:
              - mon
              - tue
              - wed
              - thu
              - fri
          - condition: sun
            after: sunrise
        sequence:
          - action: cover.open_cover
            metadata: {}
            data: {}
            target:
              entity_id: cover.jalousie
      - conditions:
          - condition: time
            after: "07:45:00"
            weekday:
              - sat
              - sun
          - condition: sun
            after: sunrise
        sequence:
          - action: cover.open_cover
            metadata: {}
            data: {}
            target:
              entity_id: cover.jalousie
      - conditions:
          - condition: time
            after: "08:00:00"
          - condition: state
            entity_id: cover.jalousie
            state: closed
        sequence:
          - action: cover.open_cover
            metadata: {}
            data: {}
            target:
              entity_id: cover.jalousie

Gruß Osorkon

1 „Gefällt mir“

Danke für die Rückmeldungen und sorry für die sehr späte Antwort.

Das Problem bei euren Wegen ist immer, dass die Automation nicht startet, wenn der Sonnenaufgang später ist. Zum Beispiel ist der Sonnenaufgang am Montag um 06:57 Uhr und die Automation wird nicht ausgeführt, da es noch keine 7 Uhr ist. Dann greift immer erst meine zweite Fallbackautomation um 8 Uhr.

Ich habe mir aber vorgestern mit ChatGPT die Lösung gebaut. Bei der Automation wird jetzt immer der Status abgefragt und dadurch fährt die Automation trotzdem hoch und schaut nicht nur auf Zeit ODER Sonnenaufgang, sondern auch auf die Kombination. Lief Samstag und heute fehlerfrei und die Jalousien wurden um 7:56 bzw. heute 7:57 Uhr hochgefahren.

Hier der Code, falls jemand etwas ähnliches bauen möchte:

alias: Jalousien_Automatisch morgens hochfahren (Sonnenaufgang vor 8 Uhr)
description: >-
  Fährt Jalousien nach Sonnenaufgang hoch, wenn dieser zwischen 7:00/7:45 und
  8:00 liegt
triggers:
  - at: "07:00:00"
    trigger: time
  - at: "07:45:00"
    trigger: time
  - event: sunrise
    trigger: sun
conditions:
  - condition: template
    value_template: >
      {% set weekday = now().weekday() %} {% set min_hour = 7 %} {% set
      min_minute = 0 %} {% if weekday >= 5 %}
        {% set min_minute = 45 %}
      {% endif %} {% set now_time = now() %} {% set min_time =
      now_time.replace(hour=min_hour, minute=min_minute, second=0,
      microsecond=0) %} {% set sunrise = state_attr('sun.sun', 'next_rising') |
      as_datetime %} {{ now_time >= min_time and now_time >= sunrise }}
actions:
  - device_id: XXX
    domain: cover
    entity_id: XXX
    type: open

Tut sie doch. Zumindest die Automation, die ich oben vorgestellt habe.
Auslöser 7:00 Uhr.
Die Bedingung Wochentag zwischen Montag und Freitag ist wahr
Die Bedingung, es ist nach Sonnenaufgang ist wahr (Sonnenaufgang war ja bereits um 06:57)
Also wird am Montag um 7 Uhr die Jalousie hochgefahren.

Gruß Osorkon

2 „Gefällt mir“

Da hat die ChatGPT aber ein bisschen was komplexes gebaut :smiley:

die Logik ist doch einfach: starte um 7Uhr. Falls es Samstag oder Sontag ist, warte 45 Minuten. Falls die Sonne unter dem Horizont ist, warte bis sich die Entität Sonne auf über dem Horizont ändert, aber höchstens eine Stunde. Default: fahr die Jalousie hoch.

1 „Gefällt mir“

Könnte man auch so machen: Automation mit Zeitrigger erstellen, die jede Minute auslöst.

Bei “Dann” abfragen, ob die entsprechenden Bedingungen erfüllt sind und reagieren.

So weiß man, dass jede Minute der entsprechende Zustand gecheckt wird und die gewüschte Aktion ausgeführt wird.Auch dann, wenn sich der Sonnenuntergang-aufgang verschiebt oder irgendwelche Sensoren ihren Wert bereits über -oder unterschritten haben.

1 „Gefällt mir“

Also die einfachste Lösung ist die von Osorkon.

Die funktioniert auf jeden Fall so wie gewünscht.

Ich steuere mit dieser Methode momentan 11 Rolläden - inkl. Türsensor, Lüftungsstellung und Beschattung im Sommer.