Zum Inhalt springen
Alles Automatisch

Home AssistantAutomatisierungenSnippets

Live Activities in Home Assistant: iPhone-Sperrbildschirm

Eine Live Activity ist die Karte, die auf deinem Sperrbildschirm steht und sich live aktualisiert. Auf iPhones mit Dynamic Island sitzt sie zusätzlich oben in der schwarzen Pille. Home Assistant kann solche Karten selbst starten: der Geschirrspüler zeigt seinen Fortschritt, das E-Auto seinen Ladestand, der Backofen die Restzeit.

Du brauchst dafür nichts aus HACS. Die Companion-App kann das ab Werk. Du schickst eine ganz normale Benachrichtigung, nur mit zwei zusätzlichen Feldern.

In der deutschen App heißt die Funktion „Live-Aktivitäten". Im YAML und in der Doku steht überall „Live Activity", deshalb bleibe ich beim englischen Begriff. Alles hier habe ich auf meinem eigenen iPhone getestet: Home Assistant 2026.9.2, Companion-App 2026.9.1, iOS 27.0, iPhone 16 Pro Max.

Was du brauchst

WasMindestensBei mir getestet
Home Assistant2026.7.02026.9.2
Companion-App für iOS2026.8.02026.9.1
iOS17.227.0
GerätiPhoneiPhone 16 Pro Max

Warum die App mindestens 2026.8.0 sein muss: Der Code steckte schon in 2026.7, dort ließen sich Live Activities aber nur in TestFlight-Builds starten. Die erste öffentliche Version im App Store war 2026.8.0.

So prüfst du deine Versionen:

  • Home Assistant: Companion-App, Einstellungen → Companion-App, im Bereich Server auf deinen Server tippen. Unter Status steht die Zeile Version.
  • Companion-App: Einstellungen → Companion-App, ganz unten auf Über tippen.
  • iOS: iPhone-Einstellungen, Allgemein → Info.

Dynamic Island haben laut Apple: iPhone 14 Pro und 14 Pro Max, alle iPhone 15 und 16, iPhone 17, 17 Pro und 17 Pro Max, das iPhone Air sowie iPhone 18 Pro und 18 Pro Max. Nicht dabei sind iPhone 16e und iPhone 17e. Auf allen anderen iPhones siehst du die Karte nur auf dem Sperrbildschirm.

Android: Ab Android 16 zeigt die App das Ganze als Live Update, dort ist title Pflicht. Kartenfarben, Balkenfarbe, Balkenrichtung und silent wertet Android nicht aus. Auf älteren Android-Versionen kommt eine ganz normale Benachrichtigung an, den kurzen Status siehst du dort gar nicht. Ich habe das auf einem Pixel 2 XL mit Android 11 getestet.

iPad: Die App zeigt in Version 2026.9.x auf jedem iPad „Auf iPad nicht verfügbar". Verlass dich dort nicht darauf.

Schritt 1: Den Namen deines iPhones finden

Home Assistant spricht dein iPhone über einen eigenen Dienst an: notify.mobile_app_ plus Gerätename.

Den Gerätenamen findest du in der Companion-App unter Einstellungen → Companion-App. Tippe im Bereich Server auf deinen Server. Unter Details steht die Zeile Gerätename. Aus dem Namen wird der Dienst: klein geschrieben, Leerzeichen und Sonderzeichen werden zu Unterstrichen. Bei mir heißt der Dienst notify.mobile_app_jakku.

Du kannst auch in Home Assistant nachsehen, unter Einstellungen → Geräte & Dienste bei der Integration Mobile App.

Wichtig: Die neuere Aktion notify.send_message funktioniert hier nicht. Sie verwirft das innere data: komplett, damit fehlt alles, was eine Live Activity ausmacht.

Schritt 2: Die erste Karte schicken

  1. Öffne Einstellungen → Werkzeuge → Aktionen.
  2. Wechsle in den YAML-Modus.
  3. Füge das YAML unten ein und ersetze DEIN_GERAET durch deinen Gerätenamen.
  4. Tippe auf Aktion ausführen und schau auf dein iPhone.
yaml
1action: notify.mobile_app_DEIN_GERAET
2data:
3  message: "Spülgang läuft"
4  title: "Geschirrspüler"
5  data:
6    tag: geschirrspueler_test
7    live_update: true
8    critical_text: "Reinigen"
9    progress: 30
10    progress_max: 100
11    notification_icon: "mdi:dishwasher"
12    notification_icon_color: "#2196F3"

Was die Zeilen bedeuten:

  • message ist der Text unter dem Titel. Pflichtfeld, ohne message lehnt Home Assistant die Aktion ab.
  • title ist die fette Überschrift.
  • tag ist der Name dieser einen Live Activity. Erlaubt sind Buchstaben, Ziffern, Bindestrich und Unterstrich, höchstens 64 Zeichen. Alles mit demselben tag landet auf derselben Karte.
  • live_update: true macht aus der Benachrichtigung erst eine Live Activity. Ohne Anführungszeichen, es muss ein echtes true sein.
  • critical_text ist der kurze Status rechts oben.
  • progress und progress_max zeichnen den Balken.
  • notification_icon und notification_icon_color setzen Icon und Farbe.

Bitte nicht zwanzigmal hintereinander starten und beenden. iOS hat ein Budget dafür, wie oft eine neue Live Activity per Push starten darf. Ist es aufgebraucht, starten neue Activities einfach nicht mehr, ohne Fehlermeldung.

Schritt 3: Verstehen, was wo angezeigt wird

Dieselbe Live Activity sieht an vier Stellen unterschiedlich aus.

Sperrbildschirm: Icon-Kachel links, aber nur wenn du notification_icon setzt. Titel eine Zeile. Zweite Zeile ist die message mit bis zu zwei Zeilen, läuft ein Timer, steht dort stattdessen der Timer. Rechts oben der critical_text, fehlt der, steht dort der Prozentwert. Unten der Balken.

Ohne eigene Farben hat die Karte einen durchscheinenden Glas-Hintergrund, durch den dein Hintergrundbild schimmert. Die offizielle Doku spricht von einem schwarzen Standard, das ist veraltet.

Dynamic Island kompakt: links das Icon in deiner Iconfarbe, rechts hat ein laufender Timer Vorrang, danach critical_text, danach Prozent. Einen Balken gibt es hier nicht.

Dynamic Island minimal: Läuft gleichzeitig eine zweite Live Activity, zeigt Home Assistant nur noch das Icon.

Dynamic Island erweitert: Links die Icon-Kachel, daneben Titel und message in einer Zeile, rechts Timer, sonst critical_text, sonst Prozent, darunter der Balken. Anders als auf dem Sperrbildschirm bleibt die message hier neben dem Timer stehen. Die Island ist immer dunkel mit weißer Schrift, eigene Kartenfarben gelten nur für den Sperrbildschirm.

FeldSperrbildschirmIsland kompaktIsland erweitert
titleja, 1 Zeileneinja, 1 Zeile
messageja, 2 Zeilen, außer ein Timer läuftneinja, 1 Zeile
critical_textrechts obenrechts, wenn kein Timer läuftrechts, wenn kein Timer läuft
Prozentrechts oben, wenn kein critical_textrechts, als letzte Wahlrechts, als letzte Wahl
Timerstatt messagerechts, Vorrangrechts, Vorrang
Balkenjaneinja
IconKachel linkslinksKachel links

Schritt 4: Aktualisieren und beenden

Ein Update ist derselbe Aufruf mit demselben tag. Zwei Regeln habe ich auf dem Gerät nachgemessen und beide kosten sonst Nerven:

Schick den Titel bei jedem Update mit. Der Titel darf sich ändern, das funktioniert. Lässt du ihn beim Update weg, springt die Karte aber nicht auf den zuletzt gesetzten Titel, sondern auf den Titel vom Start zurück.

Updates vibrieren. Die offizielle Doku sagt, Updates würden still zugestellt. Auf dem Gerät vibriert jedes Update, außer du setzt silent: true. Der Start vibriert immer, dort hat silent keine Wirkung.

yaml
1# Zwischenschritt, leise
2action: notify.mobile_app_DEIN_GERAET
3data:
4  message: "Klarspülen"
5  title: "Geschirrspüler"
6  data:
7    tag: geschirrspueler_test
8    live_update: true
9    silent: true
10    critical_text: "Klarspülen"
11    progress: 85
12    progress_max: 100
13    notification_icon: "mdi:dishwasher"
14    notification_icon_color: "#2196F3"

Beenden geht über clear_notification mit demselben Tag:

yaml
action: notify.mobile_app_DEIN_GERAET
data:
  message: clear_notification
  data:
    tag: geschirrspueler_test

Zweimal beenden ist harmlos, da passiert nichts. Was nicht harmlos ist: denselben tag direkt nach dem Beenden wieder starten. In meinem Test war die neue Karte nach etwa 20 Sekunden kommentarlos weg. Mit einem neuen Tag blieb sie stehen. Wie lange man warten muss, weiß ich nicht, deshalb nenne ich auch keine Zahl.

Schritt 5: Timer richtig einsetzen

Es gibt drei Varianten und sie sehen auf der Karte völlig unterschiedlich aus.

Countdown: chronometer: true, when_relative: true und ein positiver Wert in Sekunden. Die Karte zählt rückwärts, der Balken läuft leer. Die drei Zeilen gehören in den inneren data:-Block, auf dieselbe Ebene wie tag und live_update:

yaml
1action: notify.mobile_app_DEIN_GERAET
2data:
3  message: "Backofen läuft"
4  title: "Backofen"
5  data:
6    tag: backofen
7    live_update: true
8    chronometer: true
9    when: 2700
10    when_relative: true
11    notification_icon: "mdi:stove"
12    notification_icon_color: "#F44336"

Stoppuhr ab Start: derselbe Aufbau mit when: 0. Die Karte zählt hoch, ohne Balken und ohne Ziel.

Läuft schon seit: ein negativer Wert. Die Karte zählt ab diesem Wert weiter hoch, ohne Ziel und ohne Balken. when: -300 startet also bei 5:00 und läuft weiter. Das ist selten das, was man haben will.

Und eine Falle, die man nur im Betrieb merkt: Relative Zeiten starten bei jedem Update neu. Schickst du bei jedem Zwischenschritt wieder when: 2700, steht der Countdown ewig bei 45 Minuten. Wer einen echten Countdown will, nimmt entweder die absolute Endzeit mit when_relative: false oder rechnet die Restzeit bei jedem Update neu aus.

Die absolute Endzeit hat ihre eigene Falle. Mit when_relative: false ist when ein Unix-Zeitstempel, und eine 0 bedeutet den 1. Januar 1970. Genau die entsteht, wenn der Endzeit-Sensor noch keinen Wert hat und das Template auf as_timestamp(..., 0) | int(0) zurückfällt. Das iPhone zählt dann ab 1970 hoch und zeigt fast 500.000 Stunden. Bei meinem Geschirrspüler passiert das beim Start, denn er meldet run und setzt die Endzeit erst gut eine Minute später. Schick den Timer deshalb nur, wenn der Sensor einen Wert hat, der in der Zukunft liegt:

jinja
{{ has_value('sensor.DEINE_ENDZEIT') and as_timestamp(states('sensor.DEINE_ENDZEIT'), 0) > as_timestamp(now()) }}

Das ist eine Template-Bedingung, die vor den Push mit dem Timer gehört. Die komplette Automation mit Start, nachgezogener Endzeit, Fertig und Aufräumen steht in der Anleitung zu Live Activities.

Schritt 6: Fortschritt, Icons und Farben

progress und progress_max zeichnen den Balken. Mit progress_bar_direction: decreasing zeichnet iOS den verbleibenden Anteil von links, also einen Balken, der leerläuft. Der Prozentwert rechts oben bleibt dabei unverändert. Für einen Akku ist genau das richtig.

Die Balkenfarbe kommt aus progress_bar_color, sonst aus der Iconfarbe, sonst ist sie hellblau. Icons nachschlagen kannst du auf Pictogrammers, dort findest du alle verfügbaren MDI-Icons.

Beim Icon nimmst du einen gültigen MDI-Namen wie mdi:dishwasher. Farben sind Hex-Werte wie #2196F3. Und jetzt der Teil, der still scheitert: Ein unbekanntes Icon zusammen mit einer ungültigen Farbe lässt Icon und Balken komplett verschwinden. Keine Fehlermeldung, die Karte kommt an und sieht nur halb aus. Ein Tippfehler in der Farbe reicht.

Tipps und Troubleshooting

Die fieseste Falle: Templates liefern Zahlen. Home Assistant wandelt das Ergebnis eines Templates in den passenden Typ um. Liefert "{{ states('sensor.x') }}" den Wert 42, kommt beim iPhone eine Zahl an, kein Text. Beim critical_text verschluckt iOS dann das komplette Update. Die Karte bleibt auf dem alten Stand, das iPhone vibriert aber trotzdem. Genau das habe ich getestet.

Die Lösung: Häng ein festes Wort oder eine Einheit an. "{{ states('sensor.x') }} %" funktioniert. "{{ states('sensor.x') | string }}" reicht nicht, weil Home Assistant das Ergebnis danach wieder in eine Zahl verwandelt.

Die Grenzen, damit du nicht dagegen läufst:

  • Nach acht Stunden beendet iOS jede Live Activity. Auf dem Sperrbildschirm kann sie danach noch bis zu vier Stunden stehen bleiben.
  • Das Start-Budget von iOS ist begrenzt und Apple nennt keine Zahl. Ist es leer, startet gar nichts mehr, ohne Fehlermeldung.
  • Über den Push-Dienst von Home Assistant gehen 500 Benachrichtigungen pro Gerät und Tag, zurückgesetzt um Mitternacht UTC. Laut Quellcode zählt bei Live Activities jeder Push mit, das Beenden eingeschlossen.
  • Updates mit silent: true gehen mit niedriger Priorität raus und zählen laut Apple nicht gegen dessen Stundenbudget. Aktualisiere trotzdem in sinnvollen Schritten, etwa alle 5 Prozent.

Wenn nichts ankommt, geh diese Liste von oben nach unten durch:

  1. Versionen prüfen: Core ab 2026.7.0, App ab 2026.8.0, iOS ab 17.2.
  2. In der Companion-App unter Einstellungen → Companion-App → Live-Aktivitäten muss der Status auf Aktiviert stehen.
  3. Richtiger Dienst? Es muss notify.mobile_app_... sein, nicht notify.send_message.
  4. message gesetzt, tag gesetzt, live_update: true ohne Anführungszeichen.
  5. In der App unter Live-Aktivitäten auf Mit Home Assistant synchronisieren tippen.
  6. Update kommt nicht an, aber das iPhone vibriert? Dann liefert fast immer ein Template im critical_text eine reine Zahl. Ein fest eingetippter Wert wie 42 bleibt dagegen Text und kommt an.
  7. Icon und Balken fehlen? Prüfe notification_icon_color und progress_bar_color auf Tippfehler.
  8. Karte verschwindet nach etwa 20 Sekunden? Du hast den tag direkt nach dem Beenden wiederverwendet.
  9. Nach vielen Tests startet gar nichts mehr? Das Start-Budget ist aufgebraucht. Warte eine Weile.

Den Live Activity Generator nutzen

Das komplette YAML aus diesem Guide baust du im Live Activity Generator per Klick zusammen. Das Tool fragt dich drei Dinge:

Auslöser: Startest du die Karte selbst per Knopfdruck, oder soll eine Automation sie starten, sobald ein Sensor anspringt? Für die Automation beantwortest du Fragen wie „Woran merkt Home Assistant, dass es läuft?" und bekommst darunter in einem Satz zu lesen, was passieren wird.

Inhalt: Titel, Nachricht, kurzer Status, Icon, Farbe und der Ablauf mit allen Schritten. Daneben siehst du die Karte in Nahaufnahme, so wie sie auf dem Sperrbildschirm und in der Dynamic Island aussieht. Du kannst alle Zustände der Live Activity durchspielen, also Start, Zwischenstände und Fertig, bevor du auch nur einen Push ans iPhone schickst. Wahnsinnig praktisch, gerade wenn das tägliche Budget von 500 Pushes nicht durch Testläufe draufgehen soll.

Einrichten: Entweder in zwei Minuten ausprobieren, also Aufruf kopieren und in Werkzeuge → Aktionen ausführen, oder dauerhaft einrichten über den Ein-Klick-Import als Blueprint. Dort wählst du dein iPhone in Home Assistant nur noch aus einer Liste aus.

Es gibt 13 Vorlagen von der Waschmaschine über das E-Auto bis zum Backofen-Timer. Die Automationen, die dabei herauskommen, kennen die Fallen aus diesem Guide schon: Sie schicken den Timer nur mit gültiger Endzeit, halten den kurzen Status als Text, aktualisieren in sinnvollen Schritten und räumen die Karte auf, wenn Home Assistant zwischendurch neu startet.

Wenn dir etwas fehlt oder etwas nicht richtig funktioniert, lass es mich gerne in den Kommentaren wissen. Ich erweitere das Tool laufend weiter und freue mich über Feedback. Die lange Fassung mit allen Regeln, den fertigen Automationen für Waschmaschine, E-Auto und Backofen und der kompletten Fehlersuche steht in der Anleitung zu Live Activities.

Nutzt du Live Activities schon bei dir? Was zeigst du dir damit an?

Weiterführende Inhalte

Diskussion im Forum

Hast du Fragen oder Ideen zu diesem Thema?

Diskutiere im Forum

Video teilen

Community

Unterstütze den Kanal

Hat dir der Beitrag geholfen? Es gibt zwei Wege, etwas zurückzugeben.