Kalender als Trigger für ganztägige Ereignisse im Smart Home

Home Assistant 2. Sep. 2025

Kalender als Trigger für ganztägige Ereignisse im Smart Home

Einleitung
Die Integration von Kalenderereignissen in Smart-Home-Systeme ermöglicht eine automatisierte Steuerung basierend auf persönlichen Terminen. Insbesondere die Erkennung von ganztägigen Ereignissen, wie Urlaubszeiten, kann für die Automatisierung von Abläufen im Haushalt entscheidend sein. In diesem Artikel wird erläutert, wie man Kalenderereignisse als Trigger für Automatisierungen in einem Smart-Home-System nutzen kann.

Problem
Ein Benutzer hat Schwierigkeiten, ganztägige Ereignisse aus seinem Kalender auszulesen, um diese als Trigger für Automatisierungen zu verwenden. Insbesondere wird vermutet, dass die Art des Ereignisses (ganztägig) die Ursache für die Probleme sein könnte.

Lösung
Um ganztägige Ereignisse erfolgreich als Trigger zu verwenden, ist es wichtig, die richtigen Abfragen und Bedingungen in der Automatisierung zu implementieren. Der ursprüngliche Code des Benutzers zeigt, dass die Trigger für den Kalender korrekt eingerichtet sind, jedoch die Überprüfung des Ereignisses möglicherweise nicht wie gewünscht funktioniert.

Hier ist eine verbesserte Version der Automatisierung, die sicherstellt, dass ganztägige Ereignisse korrekt erkannt werden:

alias: Kalender UrlaubHELFER - Test
description: Schaltet den Urlaubshelfer ein/aus nach Kalender Urlaub
triggers:
  - trigger: time
    at: "06:00:00"
conditions: []
actions:
  - sequence:
      - action: calendar.get_events
        metadata: {}
        data:
          duration:
            hours: 23
            minutes: 59
            seconds: 59
          start_date_time: >-
            {{ now().replace(hour=0, minute=0, second=0) | as_timestamp |
            timestamp_custom('%Y-%m-%d %H:%M:%S') }}
        target:
          entity_id: calendar.urlaub
        response_variable: vacation_today
      - if:
          - condition: template
            value_template: |
              {% set events = vacation_today['calendar.urlaub']['events'] %}
              {% set today = now().date().isoformat() %}
              {{ events
                 | selectattr('summary', 'equalto', 'Urlaub')
                 | selectattr('start', 'equalto', today)
                 | list
                 | count > 0 }}
        then:
          - action: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.urlaubshelfer
          - action: notify.mobile_app_dane_s_iphone_13
            metadata: {}
            data:
              message: Urlaub erkannt – HELFER eingeschaltet
        else:
          - action: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.urlaubshelfer
          - action: notify.mobile_app_dane_s_iphone_13
            metadata: {}
            data:
              message: Kein Urlaub – HELFER ausgeschaltet
mode: single

Schritte zur Umsetzung
1. Erstelle eine neue Automatisierung in deinem Smart-Home-System.
2. Kopiere den oben angegebenen YAML-Code in die Automatisierung.
3. Stelle sicher, dass der Kalender mit der ID calendar.urlaub korrekt konfiguriert ist.
4. Teste die Automatisierung, indem du ein ganztägiges Ereignis mit dem Titel "Urlaub" in deinem Kalender hinzufügst.
5. Überprüfe die Benachrichtigungen auf deinem Mobilgerät, um sicherzustellen, dass die Automatisierung wie gewünscht funktioniert.

Hintergrundwissen
Ganztägige Ereignisse im Kalender werden oft als spezielle Datentypen behandelt. Sie haben keinen spezifischen Start- oder Endzeitpunkt, sondern gelten für den gesamten Tag. Daher ist es wichtig, die Abfragen so zu gestalten, dass sie diese Besonderheit berücksichtigen. Der Einsatz von calendar.get_events ermöglicht es, Ereignisse über einen definierten Zeitraum abzurufen, was für die Erkennung ganztägiger Ereignisse entscheidend ist.

Zusätzliche Infos

FunktionErklärung
`calendar.get_events`Ruft Ereignisse aus dem Kalender ab, basierend auf einem definierten Zeitraum.
`selectattr`Filtert eine Liste von Objekten basierend auf einem bestimmten Attribut.
`equalto`Vergleicht Werte und gibt true zurück, wenn sie gleich sind.
`count`Zählt die Anzahl der Elemente in einer Liste.

Hinweise & Best Practices
- Stelle sicher, dass die Zeitzonen in deinem Kalender und Smart-Home-System übereinstimmen, um Zeitabweichungen zu vermeiden.
- Teste die Automatisierung regelmäßig, insbesondere nach Änderungen im Kalender oder in der Automatisierung selbst.
- Nutze spezifische Titel für Kalenderereignisse, um Verwechslungen zu vermeiden und die Erkennung zu erleichtern.