Kalender auslesen und input_datetime setzen

Moin,

ich möchte einen input_datetime-Helfer anhand eines Kalendereintrags stellen.
Kann mir wer erklären, wie ich ich den Kalender entsprechend auslese?

Ziel ist:
Schaue um 18 Uhr, ob Kalender X morgen einen Eintrag um 8 Uhr hat. Wenn ja, stelle input_datetime auf Uhrzeit Y, sonst stelle auf Uhrzeit Z.

input_datetime auf einen bestimmten Wert setzen ist kein Problem, aber das Kalender auslesen ist mir zu hoch.

Ich könnte nur einen Weg anbieten, wenn zwischen Abends 18 Uhr und morgens 8 Uhr kein weiterer Termin liegt. Aber erstmal abwarten ob einer eine Lösung hat, mit der man explizit einen Termin/Zeitraum abfragen kann.
Wenn nicht, könnte man einen Kalender einrichten, der explizit nur diese Art Morgentermine enthält und nichts anderes. Dann wäre meine Bedingung auch erfüllt.

Magst du mir deine Idee trotzdem zeigen? Klingt interessant!

alias: 1_test_forum_kalender
description: ""
triggers:
  - trigger: time
    at: "18:00:00"
conditions:
  - condition: template
    value_template: >-
      {# True wenn es am Folgetag einen Termin um 8 Uhr gibt #}

      {% set event = state_attr('calendar.google_abfall_kuno', 'start_time') |
      as_datetime | as_local %}

      {% set target_datetime = (now() + timedelta(days=1)).replace(hour=8,
      minute=0, second=0, microsecond=0) %}

      {{ event == target_datetime }}
actions:
  - action: input_datetime.set_datetime
    metadata: {}
    data:
      datetime: >-
        {{ state_attr('calendar.google_abfall_kuno', 'start_time') | as_datetime
        | as_local }}
    target:
      entity_id: input_datetime.tage_fur_ueberraschungen
mode: single

EDIT:
Beim Beantworten fiel mir ein, man könnte auch die Description mit abfragen ala

{% set suchwort = 'gelb' | lower %}
{% set event = state_attr('calendar.google_abfall_kuno', 'description') | lower %}
{{ true if suchwort in event else false}}

Wie bereits gesagt, es wird immer der nächste Termin abgefragt und ob dieser am Folgetag 8 Uhr ist. Kommt ein anderer Termineintrag dazwischen, wird der um 18 Uhr abgefragt.

Bei mir kommt eigentlich kein anderer Termin dazwischen, denn es handelt sich um einen reinen Dienstplankalender. Ich teste es später mal aus. Danke dir.

Deine Idee hat wohl zum Erfolg geführt. Ich habs noch etwas erweitert und warte nun auf das nächste Wochenende, ob es auch so funktioniert:

alias: Wecken mit Licht Kalenderabgleich
description: ""
triggers:
  - trigger: time
    at: "22:00:00"
conditions: []
actions:
  - if:
      - alias: Wenn am Wochenende 8 Uhr Theater ist
        condition: and
        conditions:
          - condition: template
            value_template: >-
              {# True wenn es am Folgetag einen Termin um 8 Uhr gibt #}


              {% set event = state_attr('calendar.arbeit', 'start_time') |

              as_datetime | as_local %}


              {% set target_datetime = (now() +
              timedelta(days=1)).replace(hour=8,

              minute=0, second=0, microsecond=0) %}


              {{ event == target_datetime }}
            alias: Wenn ein Kalendereintrag 8 Theater heißt
          - condition: time
            weekday:
              - fri
              - sat
    then:
      - action: input_datetime.set_datetime
        metadata: {}
        data:
          time: "06:45:00"
        target:
          entity_id: input_datetime.wecken_mit_licht_zeitpunkt
      - action: input_boolean.turn_on
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.wecken_mit_licht
    else:
      - if:
          - condition: time
            weekday:
              - fri
              - sat
        then:
          - action: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.wecken_mit_licht
  - if:
      - condition: time
        weekday:
          - sun
          - mon
          - tue
          - wed
          - thu
    then:
      - action: input_datetime.set_datetime
        metadata: {}
        data:
          time: "06:00:00"
        target:
          entity_id: input_datetime.wecken_mit_licht_zeitpunkt
      - action: input_boolean.turn_on
        metadata: {}
        data: {}
        target:
          entity_id: input_boolean.wecken_mit_licht
mode: single

Hehe, ich dachte mir das schon mit dem Aufwecken. Da ich per Homeassi keinen Zugriff auf Firmenkalender habe, stelle ich bei wichtigen Frühterminen einen “HA-Sonos-Termin” ein, sodaß ich notfalls rechtzeitig über die Ansage wach werde. Eine Automatisierung in diese Richtung finde ich besser.

1 „Gefällt mir“