Raumbeleuchtung - abhänig von der Zeit zwischen Sonnenaufgang und Untergang

Guten Abend,

für die Beleuchtung eines Raumes, abhängig von der Zeit zwischen Sonnenaufgang und Untergang (bezeichne das als Tag), soll, wenn diese Zeit unter 14 Stunden ist, durch die Lampe ausgeglichen werden. Wenn also der Tag kürzer als 14 h ist, soll früh für 1,5 h das Licht eingeschaltet werden und abends für die erforderliche Zeit um die 14 h zu erreichen. Folgende Automation habe ich dazu erstellt, leider funktioniert das nicht so wie gewünscht.

Was muß ich ändern um das gewünschte Szenario zu erreichen?

alias: Raumlicht
description: ''
triggers:
  - trigger: sun.sunrise
    options:
      offset:
        hours: 1
        minutes: 0
        seconds: 0
        days: 0
      offset_type: before
    id: sonnenaufgang vor
    alias: Vor Sonnenaufgang
  - trigger: sun.sunrise
    options:
      offset:
        hours: 1
        minutes: 30
        seconds: 0
        days: 0
      offset_type: after
    alias: Nach Sonnenaufgang
    id: sonnenaufgang nach
  - trigger: sun.sunset
    options:
      offset:
        hours: 1
        minutes: 30
        seconds: 0
        days: 0
      offset_type: before
    alias: Vor Sonnenuntergang
    id: sonnenuntergang vor
  - trigger: sun.sunset
    options:
      offset:
        hours: 1
        minutes: 30
        seconds: 0
        days: 0
      offset_type: after
    alias: Nach Sonnenuntergang
    id: sonnenuntergang nach
  - trigger: time
    at: '23:00:00'
    id: aus
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - sonnenaufgang vor
          - condition: numeric_state
            entity_id: sensor.tageslange
            below: 14
        sequence:
          - action: light.turn_on
            metadata: {}
            target:
              entity_id: light.raumlicht
            data: {}
      - conditions:
          - condition: trigger
            id:
              - sonnenaufgang nach
        sequence:
          - action: light.turn_off
            metadata: {}
            target:
              entity_id: light.raumlicht
            data: {}
      - conditions:
          - condition: trigger
            id:
              - sonnenuntergang vor
          - condition: numeric_state
            entity_id: sensor.tageslange
            below: 14
        sequence:
          - action: light.turn_on
            metadata: {}
            target:
              entity_id: light.raumlicht
            data: {}
      - conditions:
          - condition: trigger
            id:
              - sonnenuntergang nach
          - condition: light.is_on
            target:
              entity_id: light.raumlicht
            options:
              behavior: any
              for: '00:00:00'
        sequence:
          - action: light.turn_off
            metadata: {}
            target:
              entity_id: light.raumlicht
            data: {}
      - conditions:
          - condition: trigger
            id:
              - aus
          - condition: light.is_on
            target:
              entity_id: light.raumlicht
            options:
              behavior: any
              for: '00:00:00'
        sequence:
          - action: light.turn_off
            metadata: {}
            target:
              entity_id: light.raumlicht
            data: {}
mode: single

Tolle Fehlerbeschreibung! Was funktioniert nicht? einschalten, ausschalten, Tag noch >14h ?

Öffne die Automatisierung, und dann öffne oben rechts die Traces. Da kannst Du sehen was deine Automatisierung macht, oder warum sie etwas nicht macht.

Wie berechnest du

Und dann die Traces anschauen

condition: light.is_on ist doch auch keine gültige Bedingung in HomeAssistant?

Müsste eigentlich condition: state und state: 'on' heißen?

Der Morgen läuft bei dir von −1 h vor bis +1,5 h nach Sonnenaufgang, also 2,5 h.

Gewollt war 1,5 h vor Sonnenaufgang, Aus bei Sonnenaufgang.

Das Einschalten 1,5 h vor Sonnenuntergang bringt nichts – da ist es noch hell, das verlängert den Tag nicht.

sensor.tageslange muss eine reine Zahl in Stunden sein, sonst schlägt numeric_state below: 14 fehl. Prüf das bitte

Dafür habe ich einen Sensor in der configuration.yaml erstellt.


- sensor:
      - name: "Tageslänge Sonne HH:MM"
        state: >
          {% set rise = state_attr('sun.sun', 'next_rising') | as_timestamp %}
          {% set set  = state_attr('sun.sun', 'next_setting') | as_timestamp %}
          {% if rise > set %}
            {% set rise = rise - 86400 %}
          {% endif %}
          {{ (set - rise) | timestamp_custom('%H:%M', false) }}

Installier dir einfach das hier aus dem Video und lass es die KI machen. :wink:

sensor.tageslange muss eine reine Zahl in Stunden sein,

Der Sensor ermittelt die Tageslänge auf 2 Kommastellen genau.

Bildschirmfoto vom 2026-08-19 21-03-40

Hier der Code, den Claude gebastelt hat:

alias: "Beleuchtung – Tageslichtausgleich Lampe"
description: >
  Gleicht einen Tag mit weniger als 14h natürlichem Tageslicht (Sonnenaufgang
  bis Sonnenuntergang) über die Lampe aus. Morgens fix 1,5h vor Sonnenaufgang,
  abends die verbleibende Zeit ab Sonnenuntergang bis 14h Gesamtdauer erreicht sind.
triggers:
  - trigger: sun
    event: sunrise
    offset: "-01:30:00"
    id: morgen_start
  - trigger: sun
    event: sunrise
    offset: "00:00:00"
    id: morgen_ende
  - trigger: sun
    event: sunset
    offset: "00:00:00"
    id: abend_start
conditions: []
actions:
  - choose:
      # Morgens: Lampe an, wenn der heutige Tag < 14h wird
      - conditions:
          - condition: trigger
            id: morgen_start
          - condition: template
            value_template: >
              {{ ((state_attr('sun.sun','next_setting') | as_datetime)
                  - (state_attr('sun.sun','next_rising') | as_datetime)).total_seconds() / 3600 < 14 }}
        sequence:
          - action: light.turn_on
            target:
              entity_id: light.lampe

      # Bei Sonnenaufgang: Zeitpunkt merken + Lampe aus
      - conditions:
          - condition: trigger
            id: morgen_ende
        sequence:
          - action: input_datetime.set_datetime
            target:
              entity_id: input_datetime.sonnenaufgang_heute
            data:
              time: "{{ now().strftime('%H:%M:%S') }}"
          - action: light.turn_off
            target:
              entity_id: light.lampe

      # Abends: verbleibende Zeit bis 14h ausgleichen
      - conditions:
          - condition: trigger
            id: abend_start
          - condition: template
            value_template: >
              {% set aufgang = today_at(states('input_datetime.sonnenaufgang_heute')) %}
              {{ ((now() - aufgang).total_seconds() / 3600) < 14 }}
        sequence:
          - variables:
              tageslaenge_std: >
                {% set aufgang = today_at(states('input_datetime.sonnenaufgang_heute')) %}
                {{ (now() - aufgang).total_seconds() / 3600 }}
              abend_dauer_std: "{{ [ (14 - tageslaenge_std - 1.5), 0 ] | max }}"
          - if:
              - condition: template
                value_template: "{{ abend_dauer_std > 0 }}"
            then:
              - action: light.turn_on
                target:
                  entity_id: light.lampe
              - delay:
                  seconds: "{{ (abend_dauer_std * 3600) | int }}"
              - action: light.turn_off
                target:
                  entity_id: light.lampe
mode: single

Danke für den Code. Ich werde das testen und mich melden sobald das erledigt wurde. :smiley:

Da sollte ich Kollege “Claude” wohl auch engagieren? :face_with_monocle:

light.lampe musst du natürlich noch für dich anpassen!

Klar, bin gerade am ändern. :wink:

Muß ich hier noch einen Helfer einrichten?

Sorry, hab was überlesen bei Claude. Es fehlt noch ein Helfer!

Weiß nur gerade nicht, wie ich dir den am besten bereitstelle…

Code wäre dieser:

input_datetime:
  sonnenaufgang_heute:
    name: Sonnenaufgang heute
    has_date: false
    has_time: true
    icon: mdi:weather-sunset-up

Und das der Tool Aufruf, den Claude gemacht hätte:

ha_config_set_helper(
    helper_type="input_datetime",
    name="Sonnenaufgang heute",
    has_date=False,
    has_time=True,
    icon="mdi:weather-sunset-up"
)

Wenn die KI Zugriff hat, legt die alles selber an :sweat_smile:

Das bedarf dann viel Vertrauen zur KI wenn sie vollen Zugriff aus das “Haus” hat.

Den Helfer habe ich erstellt. Sieht soweit gut aus.

Wollte mal nachfragen, ob’s klappt. :wink:

Prinzipell ja, zumindest wenn ich mir den Traces ansehe. Das Licht selbst wurde noch nicht eingeschaltet, da die Tageslänge aktuell 14,12 h beträgt. Es dauert also noch ein paar Tage bis auch das Licht aktiviert wird. Deshalb bitte ich noch um etwas Geduld, wenn es soweit ist, melde ich mich und berichte.

Test bestanden. :grinning_face:

Herzlichen Dank für deine Hilfe.

Derzeit wird die Beleuchtung früh wunschgemäß eingeschaltet. Am Abend passiert noch nichts, da die Tageslänge dies noch nicht erfordert.

Perfekt, das freut mich :+1:t2: