Stell dir vor, du schaust kurz aufs Handy – und siehst ohne Entsperren direkt auf dem Sperrbildschirm: „Waschmaschine – noch 23 Minuten“, inklusive Fortschrittsbalken. Oder beim E-Auto: „Laden · 62 %“. Genau das machen Live Activities (iPhone) und Live Updates (Android) mit der Home-Assistant-App. Kein Suchen im Dashboard, kein Benachrichtigungs-Spam – nur eine kleine Karte, die sich von selbst aktualisiert.
In diesem Guide richten wir das Ganze Schritt für Schritt ein: vom ersten Test in zwei Minuten bis zur fertigen Waschmaschinen-Automation mit smarter Steckdose. Du brauchst keine Programmierkenntnisse – nur ein bisschen Copy & Paste.
Was sind Live Activities überhaupt?
Du kennst das von Lieferdiensten oder der Sport-App: Oben im Sperrbildschirm (und in der Dynamic Island beim iPhone) klebt eine kleine Karte, die den aktuellen Stand anzeigt – ohne dass ständig neue Benachrichtigungen aufploppen. Home Assistant kann das mit der aktuellen Companion-App auch. Die Karte wird per Push-Nachricht aus deinen Automationen gefüttert und lebt maximal 8 Stunden (Apple-Limit).
- iPhone: Karte auf dem Sperrbildschirm + Dynamic Island (ab iPhone 14 Pro / alle iPhone 15 und neuer). Auf dem iPad gibt es keine Live Activities (Apple-Einschränkung).
- Android: Angepinnt in der Benachrichtigungsleiste, auf dem Sperrbildschirm, dem Always-On-Display und als kleiner Chip in der Statusleiste.
Typische Einsätze: Waschmaschine/Trockner/Spülmaschine, Saugroboter, E-Auto-Ladung, 3D-Drucker, Alarmanlagen-Status, Paketlieferung, Timer aller Art.
Voraussetzungen (bitte kurz abhaken)
- Home Assistant Core 2026.7 oder neuer (Einstellungen → Über prüfen).
- Companion-App auf dem aktuellen Stand (App Store / Play Store).
- iPhone: iOS 17.2 oder neuer. Unter iOS-Einstellungen → Home Assistant → Live-Aktivitäten muss der Schalter an sein.
- Android: Android 16 oder neuer. Bei Samsung ggf. in den Entwickleroptionen „Live-Benachrichtigungen für alle Apps“ aktivieren.
- Erreichbarkeit: Die App muss Home Assistant erreichen können, um Token auszutauschen – also entweder zuhause im WLAN oder unterwegs per Fernzugriff (Nabu Casa, VPN, eigene Domain). Ohne Verbindung startet keine Live Activity.
Schritt 1: Den Namen deines Handys herausfinden
Jede Nachricht geht an eine Aktion namens notify.mobile_app_<dein_gerät>. Den Namen hast du beim Verbinden der App vergeben – meist so etwas wie notify.mobile_app_iphone_von_torsten.
- Öffne in Home Assistant Entwicklerwerkzeuge → Aktionen.
- Tippe in das Suchfeld „mobile_app“ – die Liste zeigt dir alle deine Handys.
- Merk dir den Namen deines Geräts. Den setzen wir gleich überall dort ein, wo unten
notify.mobile_app_dein_handysteht.
Alternativ findest du ihn in der App unter Einstellungen → Companion App → Server & Geräte.
Schritt 2: Der 2-Minuten-Test
Bevor wir eine Automation bauen, testen wir die Live Activity direkt in den Entwicklerwerkzeugen. Wechsle bei Entwicklerwerkzeuge → Aktionen oben rechts in den YAML-Modus und füge das ein:
action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Programm gestartet"
data:
tag: waschmaschine
live_update: trueAuf „Aktion ausführen“ klicken – und auf dem Sperrbildschirm erscheint die Karte. Zwei Dinge sind hier entscheidend:
live_update: truesagt der App: „Zeig das als Live Activity, nicht als normale Benachrichtigung.“tagist der Name der Karte. Schickst du später eine Nachricht mit demselben Tag, wird die vorhandene Karte aktualisiert statt eine neue erstellt. Erlaubt sind Buchstaben, Zahlen, Bindestrich und Unterstrich (max. 64 Zeichen).
Android-Hinweis: Ohne title landet die Nachricht als normale Benachrichtigung. Also immer einen Titel setzen.
Schritt 3: Fortschrittsbalken und Timer dazu
Jetzt wird’s hübsch. Mit progress / progress_max bekommst du einen Balken, mit chronometer + when einen laufenden Countdown, der direkt auf dem Handy zählt – ganz ohne weitere Push-Nachrichten:
action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Spülen · 1 von 2"
data:
tag: waschmaschine
live_update: true
progress: 900 # aktueller Wert (z. B. 900 Sekunden vergangen)
progress_max: 3600 # Maximalwert (z. B. 3600 Sekunden = 1 Stunde)
chronometer: true # laufender Timer anzeigen
when: 2700 # Restzeit in Sekunden ...
when_relative: true # ... ab jetzt gerechnet
notification_icon: mdi:washing-machine
notification_icon_color: "#22d3ee" # iPhone: Icon- und Balkenfarbe
color: "#22d3ee" # Android: Icon-FarbeZeile für Zeile erklärt:
- progress / progress_max: Nur wenn beide gesetzt sind, erscheint der Balken. 900 von 3600 = 25 %.
- chronometer + when + when_relative: „Zähle ab jetzt 2700 Sekunden (45 Minuten) runter.“ Der Timer läuft lokal auf dem Handy – du musst nichts nachschicken.
- notification_icon: Jedes Material-Design-Icon funktioniert, z. B.
mdi:robot-vacuum,mdi:ev-station,mdi:dishwasher. - Farben: iPhone nutzt
notification_icon_color, Androidcolor. Einfach beides setzen.
Schritt 4: Karte aktualisieren
Zum Aktualisieren schickst du einfach nochmal eine Nachricht mit demselben tag. Die Karte ändert sich still – kein Banner, kein Ton:
action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Fertig – bitte ausräumen"
data:
tag: waschmaschine
live_update: true
progress: 3600
progress_max: 3600
notification_icon: mdi:washing-machine
notification_icon_color: "#a3e635"
color: "#a3e635"Achtung: Der title wird nur beim Start gesetzt – Updates können ihn nicht mehr ändern. Der message-Text dagegen schon.
Schritt 5: Karte beenden
Fertig ist fertig – irgendwann soll die Karte verschwinden. Dafür schickst du den Befehl clear_notification mit dem passenden Tag (funktioniert auf iPhone und Android):
action: notify.mobile_app_dein_handy
data:
message: "clear_notification"
data:
tag: waschmaschinePraxisbeispiel 1: Waschmaschine mit smarter Steckdose
Das Klassiker-Setup: Die Waschmaschine hängt an einer Steckdose mit Verbrauchsmessung. Läuft die Maschine, steigt die Leistung; ist sie fertig, fällt sie auf fast null. Genau das nutzen wir als Auslöser. Ich verwende dafür den Shelly Plug S – zuverlässig, WLAN, lokal in Home Assistant und misst sauber:
Der Shelly Plug S Gen3 misst den Verbrauch zuverlässig, läuft komplett lokal über WLAN in Home Assistant und schaltet bis 2500 W – mehr als genug für Waschmaschine oder Trockner. Der Leistungssensor daraus ist genau der Auslöser für die Automation unten.
Ersetze in der Automation sensor.waschmaschine_leistung durch den Leistungs-Sensor deiner Steckdose (in Watt) und notify.mobile_app_dein_handy durch dein Gerät. Die Schwellenwerte (5 W / 3 W) passen für die meisten Maschinen – schau dir im Verlauf deiner Steckdose an, was deine im Leerlauf zieht.
alias: Waschmaschine Live Activity
description: Zeigt den Waschmaschinen-Status auf dem Sperrbildschirm
mode: single
triggers:
- trigger: numeric_state
entity_id: sensor.waschmaschine_leistung
above: 5
id: gestartet
- trigger: numeric_state
entity_id: sensor.waschmaschine_leistung
below: 3
for:
minutes: 3
id: fertig
actions:
- choose:
- conditions:
- condition: trigger
id: gestartet
sequence:
- action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Läuft gerade"
data:
tag: waschmaschine
live_update: true
chronometer: true
when: 5400 # typische Laufzeit: 90 Minuten
when_relative: true
progress_bar_direction: increasing
notification_icon: mdi:washing-machine
notification_icon_color: "#22d3ee"
color: "#22d3ee"
url: /lovelace/haushalt # iPhone: öffnet diese Ansicht beim Tippen
- conditions:
- condition: trigger
id: fertig
sequence:
- action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Fertig – Wäsche ausräumen"
data:
tag: waschmaschine
live_update: true
progress: 100
progress_max: 100
notification_icon: mdi:washing-machine
notification_icon_color: "#a3e635"
color: "#a3e635"
- delay:
minutes: 15
- action: notify.mobile_app_dein_handy
data:
message: "clear_notification"
data:
tag: waschmaschineWas passiert hier? Steigt der Verbrauch über 5 W, startet die Karte mit einem 90-Minuten-Countdown, dessen Balken sich füllt (progress_bar_direction: increasing). Bleibt der Verbrauch 3 Minuten lang unter 3 W, wechselt die Karte auf „Fertig“ in Lime-Grün – und räumt sich nach 15 Minuten selbst weg. Das for: minutes: 3 ist wichtig, weil viele Maschinen zwischendurch kurz pausieren (z. B. beim Einweichen).
Praxisbeispiel 2: Saugroboter mit Akku-Fortschritt
Beim Saugroboter nehmen wir den Status der vacuum-Entität als Auslöser und zeigen den Akku als Balken. Damit iOS nicht überfordert wird, aktualisieren wir nicht bei jedem Akku-Prozent, sondern nur bei Statuswechseln:
alias: Saugroboter Live Activity
mode: queued
triggers:
- trigger: state
entity_id: vacuum.roborock
to:
- cleaning
- returning
- docked
- error
actions:
- choose:
- conditions: "{{ trigger.to_state.state == 'docked' }}"
sequence:
- action: notify.mobile_app_dein_handy
data:
message: "clear_notification"
data:
tag: saugroboter
default:
- action: notify.mobile_app_dein_handy
data:
title: "Saugroboter"
message: >-
{% set s = trigger.to_state.state %}
{{ {'cleaning': 'Saugt gerade', 'returning': 'Fährt zurück zur Station', 'error': 'Fehler – bitte nachsehen'}[s] }}
data:
tag: saugroboter
live_update: true
critical_text: "{{ state_attr('vacuum.roborock', 'battery_level') }} %"
progress: "{{ state_attr('vacuum.roborock', 'battery_level') | int(0) }}"
progress_max: 100
notification_icon: mdi:robot-vacuum
notification_icon_color: "{{ '#f87171' if trigger.to_state.state == 'error' else '#22d3ee' }}"
color: "{{ '#f87171' if trigger.to_state.state == 'error' else '#22d3ee' }}"Der critical_text ist der kleine Text oben rechts in der Karte bzw. im Android-Statusleisten-Chip – hier der Akkustand. Bei einem Fehler wird das Icon rot.
Praxisbeispiel 3: E-Auto laden (in 5-%-Schritten)
Der Ladestand ändert sich ständig – würden wir bei jeder Änderung pushen, würde iOS die Updates drosseln. Deshalb nur alle 5 %:
alias: E-Auto Ladung Live Activity
mode: queued
triggers:
- trigger: state
entity_id: sensor.eauto_ladestand
conditions:
- condition: template
value_template: "{{ trigger.to_state.state | int(0) % 5 == 0 }}"
- condition: state
entity_id: binary_sensor.eauto_laedt
state: "on"
actions:
- action: notify.mobile_app_dein_handy
data:
title: "E-Auto lädt"
message: "Laden · {{ states('sensor.eauto_ladestand') }} %"
data:
tag: eauto-laden
live_update: true
critical_text: "{{ states('sensor.eauto_ladestand') }} %"
progress: "{{ states('sensor.eauto_ladestand') | int(0) }}"
progress_max: 100
notification_icon: mdi:ev-station
notification_icon_color: "#a3e635"
color: "#a3e635"
silent: trueDazu eine zweite kleine Automation, die bei binary_sensor.eauto_laedt → off die Karte per clear_notification beendet. silent: true lässt iOS die Updates stromsparend bündeln – perfekt für alles, was nicht dringend ist.
Praxisbeispiel 4: Spülmaschine oder 3D-Drucker per Timer
Viele Geräte melden keinen Fortschritt, aber du kennst die Laufzeit. Dann reicht ein Countdown – eine einzige Nachricht, der Rest läuft auf dem Handy:
action: notify.mobile_app_dein_handy
data:
title: "Spülmaschine"
message: "Eco-Programm läuft"
data:
tag: spuelmaschine
live_update: true
chronometer: true
when: 10800 # 3 Stunden
when_relative: true
notification_icon: mdi:dishwasher
notification_icon_color: "#22d3ee"
color: "#22d3ee"Wenn deine Spülmaschine an einer Zigbee-Steckdose mit Verbrauchsmessung hängt, kannst du das Ganze natürlich wie bei der Waschmaschine automatisch starten und beenden. Ich nutze in der Küche gern die Aqara-Steckdose – klein, Zigbee (also kein zusätzliches WLAN-Gerät im Netz) und mit Leistungsmessung:
Die Aqara Smart Plug funkt über Zigbee (kein zusätzliches WLAN-Gerät), misst den Verbrauch und ist klein genug, um hinter der Spülmaschine nicht zu stören. Mit Zigbee2MQTT oder ZHA in wenigen Sekunden eingebunden.
Die wichtigste Regel: Nicht zu oft aktualisieren
Jedes Update ist eine Push-Nachricht. iOS hat dafür ein Budget: Wer zu oft schickt, wird gedrosselt – Updates kommen verspätet oder gar nicht mehr an. Darum:
- ✅ Auslösen bei echten Statuswechseln (läuft → fertig), nicht bei jedem Sensor-Tick.
- ✅ Für Zeiten den
chronometernutzen – der zählt auf dem Gerät. - ✅ Kontinuierliche Werte auf sinnvolle Schritte runden (alle 5 %, alle 10 Minuten).
- ❌ Kein
time_patternim Sekundentakt. - ❌ Nicht direkt auf Leistungs- oder Temperatursensoren triggern, die sich alle paar Sekunden ändern.
Profi-Trick „Entprellen“: Setze die Automation auf mode: restart und packe ein delay vor die Nachricht. Jeder neue Auslöser startet die Wartezeit neu – am Ende geht nur ein Update mit dem aktuellsten Wert raus:
mode: restart
triggers:
- trigger: state
entity_id: sensor.haeufig_wechselnder_wert
actions:
- delay: "00:00:30"
- action: notify.mobile_app_dein_handy
data:
title: "Mein Wert"
message: "{{ states('sensor.haeufig_wechselnder_wert') }}"
data:
tag: mein-wert
live_update: trueDesign: Farben, Antippen, Balkenrichtung (iPhone)
Standardmäßig ist die Karte schwarz mit hellem Text. Du kannst sie in deine Farben tauchen – hier passend zum mastershort-Dark-Look:
action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Fertig"
data:
tag: waschmaschine
live_update: true
background_color: "#0a0e14"
text_color: "#e6edf3"
progress_bar_color: "#22d3ee"
url: /lovelace/haushalt- background_color / text_color: Hintergrund und Textfarbe der Sperrbildschirm-Karte. Lässt du
text_colorweg, wählt die App automatisch eine kontrastreiche Farbe. - progress_bar_color: Balkenfarbe getrennt vom Icon.
- url: Was beim Antippen passiert – ein relativer Pfad wie
/lovelace/haushaltöffnet diese Dashboard-Ansicht in der App, einehttps://-Adresse den Browser. Der Wert gilt jeweils nur für das Update, mit dem er geschickt wird. - progress_bar_direction:
increasing(füllt sich) oderdecreasing(leert sich). Standard: Fortschritt füllt, Countdown leert.
Die Dynamic Island behält übrigens immer ihren dunklen System-Look – die Farben gelten für die Karte auf dem Sperrbildschirm.
Alle Felder auf einen Blick
title und message stehen direkt unter data:, alles andere im inneren data:-Block.
| Feld | Bedeutung | Plattform |
|---|---|---|
tag | Eindeutiger Name der Karte (Pflicht). Gleicher Tag = Update. | beide |
live_update | true = als Live Activity anzeigen | beide |
title | Überschrift, nur beim Start setzbar | beide (Android: Pflicht) |
message | Haupttext | beide |
critical_text | Kurzer Zusatztext (oben rechts / Statusleisten-Chip) | beide |
progress / progress_max | Fortschrittsbalken (nur wenn beide gesetzt) | beide |
chronometer + when + when_relative | Laufender Timer; when in Sekunden ab jetzt (relative) oder als Unix-Zeitstempel | beide |
notification_icon | MDI-Icon, z. B. mdi:washing-machine | beide |
notification_icon_color | Icon-/Balkenfarbe (Hex) | iPhone |
color | Icon-Farbe (Hex) | Android |
silent | Update ohne Ton, stromsparend gebündelt | iPhone |
url | Ziel beim Antippen | iPhone |
background_color / text_color / progress_bar_color | Eigene Farben der Karte | iPhone |
progress_bar_direction | increasing oder decreasing | iPhone |
alert_once | Ton/Vibration nur einmal | Android |
sticky | Bleibt beim Antippen bestehen | Android |
Fehlerbehebung: Wenn nichts erscheint
- iPhone – Schalter prüfen: iOS-Einstellungen → Home Assistant → Live-Aktivitäten aktiv? Und den einmaligen Datenschutz-Hinweis in der App bestätigt?
- Verbindung: Erreicht die App deinen Home Assistant gerade (zuhause oder Fernzugriff)? Ohne Verbindung klappt der Token-Austausch nicht – die Automation läuft dann zwar „erfolgreich“ durch, aber am Handy passiert nichts.
- Zu viel getestet? iOS begrenzt, wie oft neue Karten per Push gestartet werden dürfen. Wer beim Basteln zehnmal startet und beendet, verbraucht dieses Budget – danach starten neue Karten still nicht mehr. Kein Fehler im Log, kein Hinweis. Das Budget füllt sich von selbst wieder (Minuten bis Stunden); ein Neustart des Handys hilft nicht. Also: beim Testen lieber updaten als ständig neu starten.
- Karte hängt: Einmal
clear_notificationmit dem Tag schicken, dann neu starten – oder einen anderen Tag verwenden. - Updates kommen nicht an: Automation aktualisiert zu häufig → siehe Regel oben.
- Android – normale Benachrichtigung statt Karte: Fehlt der
title? Android 16 installiert? Samsung: „Live-Benachrichtigungen für alle Apps“ in den Entwickleroptionen. - Übersicht in der App: Unter Einstellungen → Live Activities (iPhone) siehst du, ob die Funktion aktiv ist, und kannst laufende Karten manuell beenden.
Häufige Fragen
Brauche ich Nabu Casa? Nein. Du brauchst nur einen Weg, wie dein Handy Home Assistant erreicht. Nabu Casa ist der bequemste, ein VPN (z. B. WireGuard) oder eine eigene Domain funktionieren genauso.
Geht das auf der Apple Watch? Die Live Activity selbst läuft auf dem iPhone; auf der Watch erscheinen die normalen Benachrichtigungen der App. Mit einem iPhone ohne Dynamic Island (bis iPhone 14) siehst du die Karte nur auf dem Sperrbildschirm.
Warum verschwindet die Karte nach ein paar Stunden? Apple beendet Live Activities spätestens nach 8 Stunden. Für sehr lange Vorgänge (z. B. Laden über Nacht) startest du sie einfach per Automation erneut.
Kann ich mehrere Karten gleichzeitig haben? Ja – einfach unterschiedliche tag-Werte verwenden. In der Dynamic Island teilen sich zwei Aktivitäten den Platz (minimale Darstellung).
Kostet das etwas? Nein, die Funktion ist Teil der kostenlosen Companion-App. Nur der Fernzugriff kann je nach Lösung Geld kosten.
Fazit
Live Activities sind für mich eines der praktischsten Features der letzten Zeit: Ein Blick aufs Handy reicht, um zu wissen, ob die Wäsche fertig ist oder das Auto voll – ganz ohne Benachrichtigungs-Flut. Der Einstieg dauert zwei Minuten, die Waschmaschinen-Automation oben ist in zehn Minuten eingerichtet. Wichtigste Regel: Statuswechsel statt Sekundentakt, dann läuft’s stabil.
Wenn du noch ganz am Anfang stehst, hilft dir mein Home-Assistant-Starter-Guide. Die Steckdosen und Sensoren, die ich selbst nutze, findest du in meiner Ausstattung – und für ein Dashboard im gleichen Look wie deine neuen Sperrbildschirm-Karten gibt’s mein gratis Icon-Pack mit 259 Smart-Home-Icons, wenn du dich unten für den Newsletter einträgst.
Imagine you glance at your phone – and without unlocking it you see right there on the lock screen: „Washing machine – 23 minutes left“, complete with a progress bar. Or for the EV: „Charging · 62%“. That’s exactly what Live Activities (iPhone) and Live Updates (Android) do with the Home Assistant app. No digging through dashboards, no notification spam – just a small card that updates itself.
In this guide we’ll set the whole thing up step by step: from a first two-minute test to a finished washing machine automation with a smart plug. You don’t need any programming skills – just a bit of copy & paste.
What are Live Activities anyway?
You know them from delivery services or sports apps: a small card sticks to the top of your lock screen (and in the Dynamic Island on iPhone) showing the current status – without new notifications constantly popping up. Home Assistant can do this too with the current Companion app. The card is fed by push messages from your automations and lives for a maximum of 8 hours (Apple’s limit).
- iPhone: Card on the lock screen + Dynamic Island (iPhone 14 Pro and later / all iPhone 15 and newer). There are no Live Activities on iPad (Apple restriction).
- Android: Pinned in the notification shade, on the lock screen, the always-on display and as a small chip in the status bar.
Typical uses: washing machine/dryer/dishwasher, robot vacuum, EV charging, 3D printer, alarm system status, package delivery, timers of all kinds.
Requirements (quick checklist)
- Home Assistant Core 2026.7 or newer (check under Settings → About).
- Companion app up to date (App Store / Play Store).
- iPhone: iOS 17.2 or newer. Under iOS Settings → Home Assistant → Live Activities the toggle must be on.
- Android: Android 16 or newer. On Samsung you may need to enable „Live notifications for all apps“ in the developer options.
- Reachability: The app has to be able to reach Home Assistant to exchange tokens – so either at home on Wi-Fi or on the go via remote access (Nabu Casa, VPN, your own domain). Without a connection, no Live Activity will start.
Step 1: Find out your phone’s name
Every message goes to an action called notify.mobile_app_<dein_gerät>. You assigned the name when you connected the app – usually something like notify.mobile_app_iphone_von_torsten.
- In Home Assistant, open Developer tools → Actions.
- Type „mobile_app“ into the search field – the list shows you all your phones.
- Note down your device’s name. We’ll use it everywhere below where it says
notify.mobile_app_dein_handy.
Alternatively, you’ll find it in the app under Settings → Companion App → Servers & Devices.
Step 2: The two-minute test
Before we build an automation, let’s test the Live Activity directly in the developer tools. In Developer tools → Actions, switch to YAML mode in the top right and paste this in:
action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Programm gestartet"
data:
tag: waschmaschine
live_update: trueClick „Perform action“ – and the card appears on your lock screen. Two things are crucial here:
live_update: truetells the app: „Show this as a Live Activity, not as a regular notification.“tagis the name of the card. If you later send a message with the same tag, the existing card gets updated instead of a new one being created. Letters, numbers, hyphens and underscores are allowed (max. 64 characters).
Android note: Without a title, the message ends up as a regular notification. So always set a title.
Step 3: Add a progress bar and timer
Now it gets pretty. With progress / progress_max you get a bar, with chronometer + when a running countdown that ticks directly on the phone – without any further push messages:
action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Spülen · 1 von 2"
data:
tag: waschmaschine
live_update: true
progress: 900 # aktueller Wert (z. B. 900 Sekunden vergangen)
progress_max: 3600 # Maximalwert (z. B. 3600 Sekunden = 1 Stunde)
chronometer: true # laufender Timer anzeigen
when: 2700 # Restzeit in Sekunden ...
when_relative: true # ... ab jetzt gerechnet
notification_icon: mdi:washing-machine
notification_icon_color: "#22d3ee" # iPhone: Icon- und Balkenfarbe
color: "#22d3ee" # Android: Icon-FarbeExplained line by line:
- progress / progress_max: The bar only appears if both are set. 900 of 3600 = 25%.
- chronometer + when + when_relative: „Count down 2700 seconds (45 minutes) starting now.“ The timer runs locally on the phone – you don’t have to send anything else.
- notification_icon: Any Material Design icon works, e.g.
mdi:robot-vacuum,mdi:ev-station,mdi:dishwasher. - Colors: iPhone uses
notification_icon_color, Android usescolor. Just set both.
Step 4: Update the card
To update it, simply send another message with the same tag. The card changes silently – no banner, no sound:
action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Fertig – bitte ausräumen"
data:
tag: waschmaschine
live_update: true
progress: 3600
progress_max: 3600
notification_icon: mdi:washing-machine
notification_icon_color: "#a3e635"
color: "#a3e635"Heads up: The title is only set at start – updates can’t change it anymore. The message text, on the other hand, can be changed.
Step 5: End the card
Done is done – at some point the card should disappear. To do that, send the clear_notification command with the matching tag (works on iPhone and Android):
action: notify.mobile_app_dein_handy
data:
message: "clear_notification"
data:
tag: waschmaschinePractical example 1: Washing machine with a smart plug
The classic setup: the washing machine is plugged into a smart plug with power monitoring. While the machine is running, the power draw goes up; once it’s done, it drops to almost zero. That’s exactly what we use as the trigger. I use the Shelly Plug S for this – reliable, Wi-Fi, local in Home Assistant and measures accurately:
The Shelly Plug S Gen3 measures consumption reliably, runs fully local over Wi-Fi in Home Assistant and switches up to 2500 W – more than enough for a washing machine or dryer. Its power sensor is exactly the trigger for the automation below.
In the automation, replace sensor.waschmaschine_leistung with your plug’s power sensor (in watts) and notify.mobile_app_dein_handy with your device. The thresholds (5 W / 3 W) work for most machines – check your plug’s history to see what yours draws when idle.
alias: Waschmaschine Live Activity
description: Zeigt den Waschmaschinen-Status auf dem Sperrbildschirm
mode: single
triggers:
- trigger: numeric_state
entity_id: sensor.waschmaschine_leistung
above: 5
id: gestartet
- trigger: numeric_state
entity_id: sensor.waschmaschine_leistung
below: 3
for:
minutes: 3
id: fertig
actions:
- choose:
- conditions:
- condition: trigger
id: gestartet
sequence:
- action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Läuft gerade"
data:
tag: waschmaschine
live_update: true
chronometer: true
when: 5400 # typische Laufzeit: 90 Minuten
when_relative: true
progress_bar_direction: increasing
notification_icon: mdi:washing-machine
notification_icon_color: "#22d3ee"
color: "#22d3ee"
url: /lovelace/haushalt # iPhone: öffnet diese Ansicht beim Tippen
- conditions:
- condition: trigger
id: fertig
sequence:
- action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Fertig – Wäsche ausräumen"
data:
tag: waschmaschine
live_update: true
progress: 100
progress_max: 100
notification_icon: mdi:washing-machine
notification_icon_color: "#a3e635"
color: "#a3e635"
- delay:
minutes: 15
- action: notify.mobile_app_dein_handy
data:
message: "clear_notification"
data:
tag: waschmaschineWhat’s happening here? When the power draw rises above 5 W, the card starts with a 90-minute countdown whose bar fills up (progress_bar_direction: increasing). If the draw stays below 3 W for 3 minutes, the card switches to „Done“ in lime green – and clears itself after 15 minutes. The for: minutes: 3 is important because many machines pause briefly in between (e.g. while soaking).
Practical example 2: Robot vacuum with battery progress
For the robot vacuum, we use the state of the vacuum entity as the trigger and show the battery as a bar. To avoid overloading iOS, we do not update on every battery percent, only on state changes:
alias: Saugroboter Live Activity
mode: queued
triggers:
- trigger: state
entity_id: vacuum.roborock
to:
- cleaning
- returning
- docked
- error
actions:
- choose:
- conditions: "{{ trigger.to_state.state == 'docked' }}"
sequence:
- action: notify.mobile_app_dein_handy
data:
message: "clear_notification"
data:
tag: saugroboter
default:
- action: notify.mobile_app_dein_handy
data:
title: "Saugroboter"
message: >-
{% set s = trigger.to_state.state %}
{{ {'cleaning': 'Saugt gerade', 'returning': 'Fährt zurück zur Station', 'error': 'Fehler – bitte nachsehen'}[s] }}
data:
tag: saugroboter
live_update: true
critical_text: "{{ state_attr('vacuum.roborock', 'battery_level') }} %"
progress: "{{ state_attr('vacuum.roborock', 'battery_level') | int(0) }}"
progress_max: 100
notification_icon: mdi:robot-vacuum
notification_icon_color: "{{ '#f87171' if trigger.to_state.state == 'error' else '#22d3ee' }}"
color: "{{ '#f87171' if trigger.to_state.state == 'error' else '#22d3ee' }}"The critical_text is the small text in the top right of the card or in the Android status bar chip – here, the battery level. If there’s an error, the icon turns red.
Practical example 3: EV charging (in 5% steps)
The charge level changes constantly – if we pushed on every change, iOS would throttle the updates. That’s why we only push every 5%:
alias: E-Auto Ladung Live Activity
mode: queued
triggers:
- trigger: state
entity_id: sensor.eauto_ladestand
conditions:
- condition: template
value_template: "{{ trigger.to_state.state | int(0) % 5 == 0 }}"
- condition: state
entity_id: binary_sensor.eauto_laedt
state: "on"
actions:
- action: notify.mobile_app_dein_handy
data:
title: "E-Auto lädt"
message: "Laden · {{ states('sensor.eauto_ladestand') }} %"
data:
tag: eauto-laden
live_update: true
critical_text: "{{ states('sensor.eauto_ladestand') }} %"
progress: "{{ states('sensor.eauto_ladestand') | int(0) }}"
progress_max: 100
notification_icon: mdi:ev-station
notification_icon_color: "#a3e635"
color: "#a3e635"
silent: trueOn top of that, add a second small automation that ends the card via clear_notification when binary_sensor.eauto_laedt → off. silent: true lets iOS batch the updates in a power-saving way – perfect for anything that isn’t urgent.
Practical example 4: Dishwasher or 3D printer with a timer
Many devices don’t report any progress, but you know how long they run. In that case a countdown is enough – a single message, and the rest runs on the phone:
action: notify.mobile_app_dein_handy
data:
title: "Spülmaschine"
message: "Eco-Programm läuft"
data:
tag: spuelmaschine
live_update: true
chronometer: true
when: 10800 # 3 Stunden
when_relative: true
notification_icon: mdi:dishwasher
notification_icon_color: "#22d3ee"
color: "#22d3ee"If your dishwasher is plugged into a Zigbee smart plug with power monitoring, you can of course start and end the whole thing automatically, just like with the washing machine. In the kitchen I like to use the Aqara plug – small, Zigbee (so no extra Wi-Fi device on the network) and with power monitoring:
The Aqara Smart Plug talks Zigbee (no extra Wi-Fi device), measures consumption and is small enough not to get in the way behind the dishwasher. Added with Zigbee2MQTT or ZHA in a few seconds.
The most important rule: don’t update too often
Every update is a push message. iOS has a budget for this: if you send too often, you get throttled – updates arrive late or not at all. So:
- ✅ Trigger on real state changes (running → done), not on every sensor tick.
- ✅ Use the
chronometerfor times – it counts on the device. - ✅ Round continuous values to sensible steps (every 5%, every 10 minutes).
- ❌ No
time_patternfiring every second. - ❌ Don’t trigger directly on power or temperature sensors that change every few seconds.
Pro tip „debouncing“: Set the automation to mode: restart and put a delay before the message. Every new trigger restarts the wait – in the end only one update with the latest value goes out:
mode: restart
triggers:
- trigger: state
entity_id: sensor.haeufig_wechselnder_wert
actions:
- delay: "00:00:30"
- action: notify.mobile_app_dein_handy
data:
title: "Mein Wert"
message: "{{ states('sensor.haeufig_wechselnder_wert') }}"
data:
tag: mein-wert
live_update: trueDesign: colors, tap action, bar direction (iPhone)
By default, the card is black with light text. You can give it your own colors – here to match the mastershort dark look:
action: notify.mobile_app_dein_handy
data:
title: "Waschmaschine"
message: "Fertig"
data:
tag: waschmaschine
live_update: true
background_color: "#0a0e14"
text_color: "#e6edf3"
progress_bar_color: "#22d3ee"
url: /lovelace/haushalt- background_color / text_color: Background and text color of the lock screen card. If you leave out
text_color, the app automatically picks a high-contrast color. - progress_bar_color: Bar color, separate from the icon.
- url: What happens when you tap – a relative path like
/lovelace/haushaltopens that dashboard view in the app, anhttps://address opens the browser. The value only applies to the update it’s sent with. - progress_bar_direction:
increasing(fills up) ordecreasing(empties). Default: progress fills, countdown empties.
By the way, the Dynamic Island always keeps its dark system look – the colors apply to the card on the lock screen.
All fields at a glance
title and message go directly under data:, everything else in the inner data: block.
| Field | Meaning | Platform |
|---|---|---|
tag | Unique name of the card (required). Same tag = update. | both |
live_update | true = show as a Live Activity | both |
title | Heading, can only be set at start | both (Android: required) |
message | Main text | both |
critical_text | Short extra text (top right / status bar chip) | both |
progress / progress_max | Progress bar (only if both are set) | both |
chronometer + when + when_relative | Running timer; when in seconds from now (relative) or as a Unix timestamp | both |
notification_icon | MDI icon, e.g. mdi:washing-machine | both |
notification_icon_color | Icon/bar color (hex) | iPhone |
color | Icon color (hex) | Android |
silent | Update without sound, batched to save power | iPhone |
url | Target when tapped | iPhone |
background_color / text_color / progress_bar_color | Custom card colors | iPhone |
progress_bar_direction | increasing or decreasing | iPhone |
alert_once | Sound/vibration only once | Android |
sticky | Stays when tapped | Android |
Troubleshooting: when nothing shows up
- iPhone – check the toggle: iOS Settings → Home Assistant → Live Activities enabled? And did you confirm the one-time privacy prompt in the app?
- Connection: Can the app reach your Home Assistant right now (at home or via remote access)? Without a connection, the token exchange won’t work – the automation will run „successfully“, but nothing happens on the phone.
- Tested too much? iOS limits how often new cards can be started via push. If you start and end ten times while tinkering, you use up that budget – after that, new cards silently stop starting. No error in the log, no hint. The budget refills on its own (minutes to hours); restarting the phone doesn’t help. So when testing, it’s better to update than to keep starting new cards.
- Card is stuck: Send
clear_notificationwith the tag once, then start again – or use a different tag. - Updates don’t arrive: The automation updates too often → see the rule above.
- Android – regular notification instead of a card: Is the
titlemissing? Android 16 installed? Samsung: „Live notifications for all apps“ in the developer options. - Overview in the app: Under Settings → Live Activities (iPhone) you can see whether the feature is active and end running cards manually.
FAQ
Do I need Nabu Casa? No. You just need a way for your phone to reach Home Assistant. Nabu Casa is the most convenient, but a VPN (e.g. WireGuard) or your own domain works just as well.
Does this work on the Apple Watch? The Live Activity itself runs on the iPhone; on the Watch you get the app’s regular notifications. On an iPhone without a Dynamic Island (up to iPhone 14), you’ll only see the card on the lock screen.
Why does the card disappear after a few hours? Apple ends Live Activities after 8 hours at the latest. For very long processes (e.g. charging overnight), simply restart it via an automation.
Can I have multiple cards at the same time? Yes – just use different tag values. In the Dynamic Island, two activities share the space (minimal view).
Does it cost anything? No, the feature is part of the free Companion app. Only remote access may cost money, depending on the solution.
Conclusion
For me, Live Activities are one of the most practical features in a long time: one glance at your phone is enough to know whether the laundry is done or the car is full – without a flood of notifications. Getting started takes two minutes, and the washing machine automation above is set up in ten. The most important rule: state changes, not every second, and it’ll run reliably.
If you’re just getting started, my Home Assistant starter guide will help you out. You’ll find the plugs and sensors I use myself in my gear list – and for a dashboard with the same look as your new lock screen cards, you’ll get my free icon pack with 259 smart home icons when you sign up for the newsletter below.


