Die Einkaufsliste ist die unscheinbarste, aber meistgenutzte Entität im Smart Home. todo.einkaufsliste lebt in Home Assistant seit der grossen Todo-Reform 2023 als vollwertige Entität – inklusive Service-Aufrufen, Template-Zugriff und nativer Voice-Anbindung. In Kombination mit einem lokalen Voice-Satellit (Home Assistant Voice oder Raspiaudio Muse Luxe) entsteht damit ein Workflow, den selbst Alexa-Veteranen vermissen werden, sobald sie ihn einmal eingerichtet haben: Mitten beim Kochen sagt man «Hey Nabu, schreib Mehl auf die Einkaufsliste» – fertig. Kein Telefon, keine Cloud, keine Werbung.
Problem und Idee
In der Praxis scheitert die Einkaufsliste nicht an der Technik, sondern an der Reibung. Wer beim Kochen Hände voll Teig hat, greift nicht zum Handy. Wer beim Aufräumen feststellt, dass das WC-Papier ausgeht, vergisst es bis zum nächsten Einkauf. Die Lösung ist eine Voice-fähige Liste, die auf Zuruf hört – plus zwei Automationen, die die Liste regelmässig auf den richtigen Geräten ausspielt: am Freitagabend auf dem Küchen-Tablet und beim Verlassen des Hauses per Push aufs Handy.
todo.einkaufsliste bringt alles mit, was es dafür braucht. Die Items werden im Status needs_action oder completed geführt. Per Service-Call todo.add_item lassen sich neue Einträge anlegen, mit todo.update_item lassen sich Status ändern, und der State der Entität zeigt die Anzahl offener Punkte als Zahl an.
Schritt 1: Voice Assist verstehen lassen
Voice Assist erkennt den Satz «Schreib X auf die Einkaufsliste» seit HA 2024.3 nativ – sofern Conversation Agent und Wake Word eingerichtet sind. Wer einen lokalen Voice-Satellit nutzt, kann auf Cloud verzichten. Für mehr Flexibilität lohnt sich ein eigenes Custom Sentence in config/custom_sentences/de/einkaufsliste.yaml:
language: "de"
intents:
HassListAddItem:
data:
- sentences:
- "schreib [bitte] {item} auf [die|meine] einkaufsliste"
- "setz {item} auf [die|meine] einkaufsliste"
- "merk dir {item} für [den|den nächsten] einkauf"
slots:
name: "Einkaufsliste"
Damit erkennt der Assistent auch umgangssprachliche Varianten – «merk dir Butter für den Einkauf» landet zuverlässig in der Liste. Wichtig: Der Slot name muss exakt dem Namen der Todo-Liste entsprechen (Achtung Gross-/Kleinschreibung beachten oder mit Aliasen arbeiten).
Schritt 2: Push beim Verlassen des Hauses
Sobald device_tracker.iphone_mike von home nach not_home wechselt und die Einkaufsliste mindestens drei offene Punkte enthält, soll eine Push-Nachricht an das Handy gehen – mit den Einträgen direkt sichtbar.
alias: "Einkaufsliste beim Weggehen mitschicken"
trigger:
- platform: state
entity_id: device_tracker.iphone_mike
from: "home"
to: "not_home"
for: "00:00:30"
condition:
- condition: numeric_state
entity_id: todo.einkaufsliste
above: 2
action:
- service: todo.get_items
target:
entity_id: todo.einkaufsliste
data:
status: needs_action
response_variable: liste
- service: notify.mobile_app_iphone_mike
data:
title: "Einkaufsliste ({{ liste['todo.einkaufsliste']['items'] | length }} Punkte)"
message: >-
{% for i in liste['todo.einkaufsliste']['items'] -%}
• {{ i.summary }}
{% endfor %}
data:
url: "/todo-dashboard"
mode: single
Der Trick ist todo.get_items mit response_variable – seit HA 2024.4 lassen sich Listeninhalte direkt in Templates ausspielen. Kein Helper, keine Krücke.
Schritt 3: Freitag-Reminder auf dem Tablet
Am Freitag um 17 Uhr soll die Einkaufsliste laut vorgelesen werden – über den HomePod in der Küche oder über den Voice-Satellit. Voraussetzung: TTS-Engine wie tts.home_assistant_cloud oder die Google-Translate-Engine eingerichtet.
alias: "Einkaufsliste Freitag vorlesen"
trigger:
- platform: time
at: "17:00:00"
condition:
- condition: time
weekday: [fri]
- condition: numeric_state
entity_id: todo.einkaufsliste
above: 0
action:
- service: todo.get_items
target:
entity_id: todo.einkaufsliste
data:
status: needs_action
response_variable: liste
- service: tts.cloud_say
data:
entity_id: media_player.homepod
message: >-
Auf der Einkaufsliste stehen
{{ liste['todo.einkaufsliste']['items'] | length }} Punkte:
{{ liste['todo.einkaufsliste']['items']
| map(attribute='summary') | join(', ') }}.
Mit media_player.home_assistant_voice_0a204b_media_player als Target funktioniert dasselbe vollständig lokal – ohne Internet-Abhängigkeit.
Dashboard-Tile als Kontrolle
Auf dem Wohnzimmer-Tablet zeigt eine Mushroom-Card die Anzahl offener Punkte und springt bei Tap auf die Listen-Ansicht. Wer Markdown bevorzugt, kann mit {{ states('todo.einkaufsliste') }} direkt die Zahl ziehen. Für die Vollintegration mit weiteren Bereichen lohnt der vertiefende Blick auf «Paperless-ngx in HA: Dokumente klug automatisieren» – die Get-Items-Mechanik mit response_variable ist dieselbe.
Fazit
Drei Bausteine – Custom Sentence, Push beim Weggehen, Freitag-TTS – machen aus todo.einkaufsliste ein Werkzeug, das die ganze Familie nutzt, ohne dass jemand «Smart Home» dazu sagt. Genau das ist der Test, ob eine Automation taugt: Wenn die Bewohner nicht mehr darüber sprechen, sondern sie einfach benutzen, hat sie ihren Zweck erfüllt.