smarthome-tricks.de

Home Assistant Kalender-Automation: Termine als Auslöser verwenden

Viele Automationen in Home Assistant starten durch einen Sensor, eine Uhrzeit oder einen Tastendruck. Es geht aber auch deutlich flexibler: Ein Termin im Kalender kann direkt zum Auslöser einer Automation werden.

Damit lassen sich beispielsweise morgens Mülltonnen-Erinnerungen verschicken, am Beginn eines Homeoffice-Termins bestimmte Geräte einschalten oder vor einem Urlaub automatisch Anwesenheitssimulation und Heizung anpassen.

Besonders praktisch finde ich dabei, dass die Termine weiterhin ganz normal im Kalender gepflegt werden. Ändert sich die Uhrzeit, verschiebt sich automatisch auch die Automation.

In diesem Artikel zeige ich, wie Kalender in Home Assistant funktionieren, wie du Termine als Trigger verwendest und welche Automationen sich damit im Alltag sinnvoll umsetzen lassen.

Was kann Home Assistant mit einem Kalender machen?

Home Assistant behandelt eingebundene Kalender als eigene Entitäten. Dabei ist der Kalender weniger als Ersatz für eine klassische Kalender-App gedacht. Interessant wird er vor allem als Datenquelle für Automationen.

Eine Automation kann beispielsweise reagieren:

Der Kalendertermin selbst bringt außerdem weitere Informationen mit. Dazu gehören je nach Kalender unter anderem Titel, Beschreibung, Startzeit, Ende und Ort.

Diese Daten können wir später sogar direkt in einer Push-Nachricht verwenden.

Welche Kalender lassen sich verwenden?

Home Assistant unterstützt verschiedene Kalender-Integrationen. Welcher Weg für dich sinnvoll ist, hängt davon ab, wo deine Termine bereits liegen.

Typische Möglichkeiten sind beispielsweise:

Für reine Smart-Home-Termine finde ich einen separaten Kalender sinnvoll. Dort könnten dann beispielsweise Müllabfuhr, Urlaub, Homeoffice oder andere Termine liegen, die Home Assistant automatisieren soll.

So muss nicht jeder private Termin automatisch Teil der Smart-Home-Logik werden.

Kalender in Home Assistant finden

Ist ein Kalender erfolgreich eingebunden, erscheint er als eigene Entität.

Eine typische Entity-ID könnte beispielsweise so aussehen:

calendar.familie

oder:

calendar.smarthome

Für eine neue Automation öffnen wir anschließend:

Einstellungen → Automationen & Szenen

Falls du mit Automationen gerade erst anfängst, findest du den grundlegenden Aufbau ausführlich in meinem Artikel Home Assistant Automationen erstellen: Anleitung für Anfänger.

Kalendertermin als Trigger verwenden

Für Kalender gibt es in Home Assistant einen eigenen Trigger. Damit muss man nicht selbst überwachen, ob sich der Zustand einer Kalender-Entität verändert.

Ein einfacher Trigger für den Beginn eines Termins sieht in YAML beispielsweise so aus:

triggers:
  - trigger: calendar
    event: start
    entity_id: calendar.smarthome

Sobald ein Termin aus diesem Kalender beginnt, startet die Automation.

Automation beim Ende eines Termins starten

Genauso können wir auf das Ende reagieren.

triggers:
  - trigger: calendar
    event: end
    entity_id: calendar.smarthome

Das könnte beispielsweise bei einem Homeoffice-Termin praktisch sein. Beginnt der Termin, wird das Arbeitszimmer vorbereitet. Endet er, werden Licht und bestimmte Steckdosen wieder ausgeschaltet.

Automation schon vor dem Termin starten

Eine besonders praktische Funktion ist der Offset.

Damit startet die Automation bereits vor dem eigentlichen Termin.

Dieses Beispiel löst 30 Minuten vor Terminbeginn aus:

triggers:
  - trigger: calendar
    event: start
    entity_id: calendar.smarthome
    offset: "-00:30:00"

Das Minus bedeutet, dass die Automation vor dem eigentlichen Start ausgeführt wird.

Mit einem positiven Wert kann sie entsprechend nach dem Terminstart ausgelöst werden.

Beispiel 1: Erinnerung für die Müllabfuhr

Ein einfacher, aber wirklich praktischer Anwendungsfall ist die Müllabfuhr.

Im Kalender könnten Termine stehen wie:

Home Assistant kann am Abend vorher automatisch eine Nachricht aufs Smartphone schicken.

alias: Mülltonne Erinnerung

triggers:
  - trigger: calendar
    event: start
    entity_id: calendar.muellabfuhr
    offset: "-12:00:00"

actions:
  - action: notify.mobile_app_mein_handy
    data:
      title: "Müllabfuhr"
      message: >-
        Morgen steht an:
        {{ trigger.calendar_event.summary }}

mode: queued

Damit wird der Titel des Kalendereintrags direkt in der Nachricht verwendet.

Steht im Kalender also „Biomüll“, erscheint genau dieser Begriff in der Push-Nachricht.

Wie du Home-Assistant-Nachrichten grundsätzlich aufs Smartphone schickst, zeige ich ausführlich in Home Assistant Benachrichtigung aufs Handy: Push-Nachrichten richtig einrichten.

Kalenderdaten in der Automation verwenden

Bei einem Kalender-Trigger stellt Home Assistant verschiedene Informationen über den auslösenden Termin bereit.

Besonders interessant sind:

Dadurch wird eine einzige Automation deutlich flexibler.

Statt für Biomüll, Papier und Restmüll drei verschiedene Automationen anzulegen, kann eine Automation einfach den jeweiligen Termintext übernehmen.

Beispiel 2: Homeoffice automatisch vorbereiten

Ein weiteres Beispiel wäre ein eigener Kalender für Homeoffice-Tage.

Angenommen, im Kalender steht:

Homeoffice von 08:00 bis 17:00 Uhr.

Home Assistant könnte 15 Minuten vorher automatisch:

alias: Homeoffice vorbereiten

triggers:
  - trigger: calendar
    event: start
    entity_id: calendar.arbeit
    offset: "-00:15:00"

conditions:
  - condition: template
    value_template: >-
      {{ 'homeoffice' in
      trigger.calendar_event.summary | lower }}

actions:
  - action: switch.turn_on
    target:
      entity_id: switch.schreibtisch

mode: queued

Die Bedingung sorgt dafür, dass nicht jeder Termin im Arbeitskalender die Schreibtisch-Steckdose einschaltet.

Nur Termine, deren Titel „Homeoffice“ enthält, führen die Aktion aus.

Warum ein eigener Smart-Home-Kalender oft einfacher ist

Man kann natürlich einen kompletten Familien- oder Arbeitskalender verwenden und anschließend anhand der Titel filtern.

Ich finde für viele Anwendungen aber einen eigenen Kalender übersichtlicher.

Ein Kalender mit dem Namen „Smart Home“ könnte beispielsweise nur folgende Termine enthalten:

Damit bleibt die Automation einfacher und private Termine müssen überhaupt nicht ausgewertet werden.

Beispiel 3: Urlaub automatisch erkennen

Ein Kalendereintrag eignet sich auch gut, um längere Abwesenheiten vorzubereiten.

Ein Termin namens „Urlaub“ könnte beispielsweise am Beginn verschiedene Automationen anstoßen.

Am Ende des Termins werden die Einstellungen wieder zurückgesetzt.

Ich würde sicherheitsrelevante Aktionen allerdings nicht ausschließlich von einem Kalender abhängig machen. Ob wirklich niemand zu Hause ist, lässt sich zusätzlich über die Anwesenheitserkennung prüfen.

Kalender und Bedingungen kombinieren

Der Kalender muss nicht alleine entscheiden.

Genau wie bei anderen Automationen können anschließend Bedingungen geprüft werden.

Zum Beispiel:

Dadurch wird aus einer einfachen Kalendererinnerung schnell eine echte Smart-Home-Automation.

Beispiel 4: Videokonferenz im Kalender

Auch für Videokonferenzen kann ein Kalendertrigger interessant sein.

Ein Termin mit „Teams“, „Meeting“ oder „Videokonferenz“ im Titel könnte beispielsweise fünf Minuten vorher:

Am Ende des Termins wird alles wieder zurückgesetzt.

Gerade für eine Statusleuchte wäre ein kleiner ESP32 interessant. Die grundlegende Einrichtung solcher Geräte beschreibe ich unter ESPHome mit Home Assistant verbinden.

Beispiel 5: Erinnerung mit Ort und Uhrzeit

Da der Kalendertrigger weitere Informationen mitliefert, können Push-Nachrichten deutlich informativer werden.

actions:
  - action: notify.mobile_app_mein_handy
    data:
      title: "{{ trigger.calendar_event.summary }}"
      message: >-
        Termin beginnt bald.
        Ort: {{ trigger.calendar_event.location }}

Damit lassen sich Home-Assistant-Benachrichtigungen sehr einfach mit den Informationen aus dem Kalender anreichern.

Ganztägige Termine funktionieren ebenfalls

Kalender können neben Terminen mit konkreter Uhrzeit auch ganztägige Ereignisse enthalten.

Das ist beispielsweise für Müllabfuhr, Urlaub, Feiertage oder Homeoffice-Tage praktisch.

Home Assistant stellt dafür unter anderem die Information bereit, ob ein Termin ganztägig ist.

{{ trigger.calendar_event.all_day }}

Damit können Automationen bei Bedarf zwischen normalen und ganztägigen Terminen unterscheiden.

Kalender nicht über den normalen Zustand auswerten

Eine Kalender-Entität besitzt zwar ebenfalls einen Zustand und verschiedene Attribute. Für Automationen würde ich trotzdem den speziellen Kalendertrigger verwenden.

Der Grund ist wichtig: Die Attribute einer Kalender-Entität beziehen sich im Wesentlichen auf den nächsten beziehungsweise aktuell relevanten Termin.

Bei mehreren Terminen oder komplexeren Abläufen ist das schnell unübersichtlich.

Der Kalendertrigger reagiert dagegen direkt auf den jeweiligen Termin und stellt dessen Daten in der Variable trigger.calendar_event bereit.

Achtung beim Testen neuer Termine

Hier gibt es einen Punkt, der bei der Einrichtung leicht für Verwirrung sorgt.

Home Assistant liest Kalender nicht permanent jede Sekunde neu ein. Die offiziellen Kalenderfunktionen arbeiten mit einem Abfrageintervall von bis zu etwa 15 Minuten.

Wenn du um 10:00 Uhr schnell einen Testtermin für 10:05 Uhr erstellst, kann es deshalb passieren, dass Home Assistant diesen Termin noch gar nicht kennt.

Für einen Test würde ich einen neuen Termin deshalb mindestens 20 bis 30 Minuten in die Zukunft legen.

Mehrere Termine können gleichzeitig starten

Bei Kalender-Automationen sollte auch der Modus der Automation berücksichtigt werden.

Wenn zwei Termine gleichzeitig beginnen, kann die Automation theoretisch zweimal nahezu gleichzeitig ausgelöst werden.

Deshalb würde ich bei Kalender-Automationen häufig queued oder parallel verwenden und nicht automatisch bei single bleiben.

mode: queued

Bei queued werden weitere Durchläufe nacheinander abgearbeitet.

Automation funktioniert nicht? Trace ansehen

Wenn ein Kalendertermin keine Aktion auslöst, würde ich wie bei jeder anderen Automation zuerst die Ablaufverfolgung prüfen.

Home Assistant zeigt dort unter anderem:

Die komplette Fehlersuche zeige ich in Home Assistant Automationen funktionieren nicht: Trigger, Bedingungen und Traces prüfen.

Warum der manuelle Test nur begrenzt hilft

Wenn du eine Automation über den Editor manuell ausführst, wird der eigentliche Kalendertrigger nicht getestet.

Damit kannst du zwar herausfinden, ob beispielsweise Licht oder Push-Nachricht grundsätzlich funktionieren. Ob Home Assistant den Termin korrekt als Trigger erkennt, zeigt dieser Test aber nicht.

Für einen echten Test würde ich deshalb einen eigenen Kalendereintrag mit ausreichend Vorlauf anlegen.

Termine nach Titel filtern

Wenn ein Kalender verschiedene Termine enthält, können wir nach dem Titel filtern.

conditions:
  - condition: template
    value_template: >-
      {{ 'urlaub' in
      trigger.calendar_event.summary | lower }}

Durch | lower wird der Titel zunächst in Kleinbuchstaben umgewandelt. Damit spielt es keine Rolle, ob im Kalender „Urlaub“, „urlaub“ oder „URLAUB“ steht.

Diese Methode eignet sich auch für andere Stichwörter wie:

Eine Automation für mehrere Terminarten

Man muss nicht für jeden Begriff eine eigene Automation bauen.

Mit Choose kann Home Assistant abhängig vom Termin unterschiedliche Aktionen ausführen.

Das Prinzip wäre beispielsweise:

Für umfangreiche Kalender würde ich trotzdem mehrere kleinere Automationen bevorzugen. Sie lassen sich später leichter verstehen und bei Problemen einfacher über die Traces untersuchen.

Kalendereinträge aus Home Assistant erstellen

Je nach verwendeter Kalenderintegration kann Home Assistant Termine nicht nur lesen, sondern auch selbst erstellen.

Dafür gibt es die Aktion:

calendar.create_event

Damit lässt sich beispielsweise ein Wartungstermin automatisch in einen Kalender schreiben.

Ein Beispiel wäre ein Filterwechsel. Wird ein Filter gewechselt, könnte Home Assistant direkt einen neuen Termin in drei oder sechs Monaten anlegen.

Damit wird der Kalender selbst Teil der Smart-Home-Logik.

Kalendertermine auslesen und zusammenfassen

Home Assistant kann außerdem Termine für einen bestimmten Zeitraum aus einem Kalender abrufen.

Das ist beispielsweise interessant für eine morgendliche Zusammenfassung:

Die Ergebnisse könnten anschließend auf einem Dashboard erscheinen oder als Push-Nachricht aufs Smartphone geschickt werden.

Kalender und Home-Assistant-Dashboard kombinieren

Kalender müssen nicht nur im Hintergrund für Automationen arbeiten.

Eine Kalenderkarte auf dem Dashboard kann Termine und Smart-Home-Steuerung zusammenbringen. Gerade auf einem Wandtablet finde ich das praktisch.

Morgens sieht man beispielsweise auf einen Blick:

Damit wird das Home-Assistant-Dashboard zunehmend zur zentralen Informationsanzeige für den Alltag.

Was passiert bei einem Neustart?

Kalendertrigger reagieren auf einen bestimmten Zeitpunkt. Das sollte man bei Neustarts im Hinterkopf behalten.

Ist Home Assistant genau zum Zeitpunkt des Triggers nicht aktiv, sollte man bei wirklich wichtigen Abläufen nicht ausschließlich auf diesen einen Termintrigger vertrauen.

Für Komfortfunktionen wie eine Homeoffice-Steckdose ist das meist kein großes Problem. Sicherheitskritische Aufgaben würde ich immer zusätzlich über Zustände oder andere Sensoren absichern.

Kalender-Automation oder feste Uhrzeit?

Eine feste Uhrzeit ist sinnvoll, wenn etwas wirklich jeden Tag gleich ablaufen soll.

Der Kalender ist besser, wenn sich der Zeitpunkt regelmäßig ändert.

Feste UhrzeitKalender
jeden Tag 7 Uhrwechselnde Termine
einfach einzurichtenflexibler
Änderung direkt in AutomationÄnderung im Kalender reicht
ideal für tägliche Routinenideal für Termine, Urlaub und Erinnerungen

Für Müllabfuhr, Urlaub oder Homeoffice würde ich deshalb fast immer den Kalender bevorzugen.

Meine Empfehlung für den Einstieg

Für die erste Kalender-Automation würde ich etwas Einfaches wählen.

Lege einen eigenen Smart-Home-Kalender an und erstelle dort einen Testtermin. Die Automation schickt zehn oder zwanzig Minuten vorher lediglich eine Push-Nachricht.

Wenn das zuverlässig funktioniert, kannst du anschließend weitere Aktionen ergänzen.

Ein guter nächster Schritt wäre beispielsweise:

Damit bleibt die erste Automation übersichtlich und du lernst gleichzeitig, wie Kalendertrigger und die Daten des Termins funktionieren.

Häufige Fragen zu Kalender-Automationen

Kann ein Kalendertermin eine Home-Assistant-Automation starten?

Ja. Home Assistant besitzt einen eigenen Kalendertrigger. Eine Automation kann auf den Beginn oder das Ende eines Termins reagieren.

Kann die Automation schon vor dem Termin starten?

Ja. Mit einem negativen Offset kann der Trigger beispielsweise 15 Minuten, eine Stunde oder auch mehrere Stunden vor dem eigentlichen Termin ausgelöst werden.

Kann ich den Titel des Termins in einer Push-Nachricht verwenden?

Ja. Der Titel steht bei einem Kalendertrigger über trigger.calendar_event.summary zur Verfügung. Auch Beschreibung, Ort, Start und Ende können je nach Kalender verwendet werden.

Warum löst mein neuer Testtermin nicht aus?

Kalender werden nicht sekündlich neu eingelesen. Lege einen Testtermin deshalb mit ausreichend Vorlauf an. Ein Termin nur wenige Minuten in der Zukunft kann beim nächsten Kalenderabruf bereits zu spät sein.

Kann ich nur auf Termine mit einem bestimmten Namen reagieren?

Ja. Über eine Template-Bedingung kannst du den Titel des auslösenden Termins prüfen und beispielsweise nur auf „Homeoffice“, „Urlaub“ oder „Müllabfuhr“ reagieren.

Kann Home Assistant selbst Termine anlegen?

Bei unterstützten Kalenderintegrationen können Termine mit calendar.create_event erstellt werden. Dadurch lassen sich beispielsweise Wartungserinnerungen automatisch in einen Kalender schreiben.

Fazit

Kalendertrigger sind eine der Home-Assistant-Funktionen, die man leicht übersieht. Dabei lassen sich damit sehr praktische Automationen bauen.

Der große Vorteil ist die Flexibilität. Verschiebt sich ein Termin im Kalender, muss keine Automation geändert werden. Home Assistant orientiert sich automatisch am neuen Zeitpunkt.

Für den Einstieg würde ich einen eigenen Smart-Home-Kalender verwenden und zunächst eine einfache Erinnerung bauen. Danach lassen sich Termine problemlos mit Geräten, Anwesenheit, Heizung und weiteren Bedingungen kombinieren.

Besonders interessant finde ich Kalender-Automationen für Müllabfuhr, Homeoffice und Urlaub. Hier ändern sich Termine regelmäßig und genau dort spielt die kalenderbasierte Steuerung ihre Stärke aus.

Mit den zusätzlichen Termindaten kann Home Assistant außerdem deutlich mehr als nur „Termin gestartet“. Titel, Beschreibung und Ort können direkt in Automationen und Benachrichtigungen verwendet werden.

Passende Home-Assistant-Anleitungen

Die mobile Version verlassen