KundenkontoAccountTikTok

Home Assistant Live Activities: Waschmaschine, Saugroboter & E-Auto direkt auf dem Sperrbildschirm (iPhone & Android)

19. September 2026

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.
Wichtig: Beim allerersten Start fragt die App einmalig nach, ob du damit einverstanden bist, dass Inhalte ohne Entsperren sichtbar sind. Das musst du bestätigen, sonst passiert nichts.

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.

  1. Öffne in Home Assistant Entwicklerwerkzeuge → Aktionen.
  2. Tippe in das Suchfeld „mobile_app“ – die Liste zeigt dir alle deine Handys.
  3. Merk dir den Namen deines Geräts. Den setzen wir gleich überall dort ein, wo unten notify.mobile_app_dein_handy steht.

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: true

Auf „Aktion ausführen“ klicken – und auf dem Sperrbildschirm erscheint die Karte. Zwei Dinge sind hier entscheidend:

  • live_update: true sagt der App: „Zeig das als Live Activity, nicht als normale Benachrichtigung.“
  • tag ist 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-Farbe

Zeile 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, Android color. 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: waschmaschine

Praxisbeispiel 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:

Meine Empfehlung für die Waschmaschine

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.

* Affiliate-Link · Preis kann abweichen

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: waschmaschine

Was 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: true

Dazu 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:

Zigbee-Alternative für die Küche

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.

* Affiliate-Link · Preis kann abweichen

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 chronometer nutzen – der zählt auf dem Gerät.
  • ✅ Kontinuierliche Werte auf sinnvolle Schritte runden (alle 5 %, alle 10 Minuten).
  • ❌ Kein time_pattern im 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: true

Design: 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_color weg, 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, eine https://-Adresse den Browser. Der Wert gilt jeweils nur für das Update, mit dem er geschickt wird.
  • progress_bar_direction: increasing (füllt sich) oder decreasing (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.

FeldBedeutungPlattform
tagEindeutiger Name der Karte (Pflicht). Gleicher Tag = Update.beide
live_updatetrue = als Live Activity anzeigenbeide
titleÜberschrift, nur beim Start setzbarbeide (Android: Pflicht)
messageHaupttextbeide
critical_textKurzer Zusatztext (oben rechts / Statusleisten-Chip)beide
progress / progress_maxFortschrittsbalken (nur wenn beide gesetzt)beide
chronometer + when + when_relativeLaufender Timer; when in Sekunden ab jetzt (relative) oder als Unix-Zeitstempelbeide
notification_iconMDI-Icon, z. B. mdi:washing-machinebeide
notification_icon_colorIcon-/Balkenfarbe (Hex)iPhone
colorIcon-Farbe (Hex)Android
silentUpdate ohne Ton, stromsparend gebündeltiPhone
urlZiel beim AntippeniPhone
background_color / text_color / progress_bar_colorEigene Farben der KarteiPhone
progress_bar_directionincreasing oder decreasingiPhone
alert_onceTon/Vibration nur einmalAndroid
stickyBleibt beim Antippen bestehenAndroid

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_notification mit 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.
Important: The very first time, the app asks once whether you agree to content being visible without unlocking. You have to confirm this, otherwise nothing happens.

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.

  1. In Home Assistant, open Developer tools → Actions.
  2. Type „mobile_app“ into the search field – the list shows you all your phones.
  3. 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: true

Click „Perform action“ – and the card appears on your lock screen. Two things are crucial here:

  • live_update: true tells the app: „Show this as a Live Activity, not as a regular notification.“
  • tag is 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-Farbe

Explained 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 uses color. 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: waschmaschine

Practical 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:

My pick for the washing machine

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.

* Affiliate-Link · Preis kann abweichen

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: waschmaschine

What’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: true

On 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:

Zigbee alternative for the kitchen

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.

* Affiliate-Link · Preis kann abweichen

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 chronometer for times – it counts on the device.
  • ✅ Round continuous values to sensible steps (every 5%, every 10 minutes).
  • ❌ No time_pattern firing 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: true

Design: 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/haushalt opens that dashboard view in the app, an https:// address opens the browser. The value only applies to the update it’s sent with.
  • progress_bar_direction: increasing (fills up) or decreasing (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.

FieldMeaningPlatform
tagUnique name of the card (required). Same tag = update.both
live_updatetrue = show as a Live Activityboth
titleHeading, can only be set at startboth (Android: required)
messageMain textboth
critical_textShort extra text (top right / status bar chip)both
progress / progress_maxProgress bar (only if both are set)both
chronometer + when + when_relativeRunning timer; when in seconds from now (relative) or as a Unix timestampboth
notification_iconMDI icon, e.g. mdi:washing-machineboth
notification_icon_colorIcon/bar color (hex)iPhone
colorIcon color (hex)Android
silentUpdate without sound, batched to save poweriPhone
urlTarget when tappediPhone
background_color / text_color / progress_bar_colorCustom card colorsiPhone
progress_bar_directionincreasing or decreasingiPhone
alert_onceSound/vibration only onceAndroid
stickyStays when tappedAndroid

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_notification with 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 title missing? 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.

Das könnte dich auch interessieren