Assist versteht von Haus aus schon viel – Licht schalten, Temperatur abfragen, Timer stellen. Doch irgendwann will man dem Sprachassistenten etwas beibringen, das kein Standard-Intent abdeckt: «Wie läuft die Wärmepumpe?» oder «Aktiviere den Filmabend». Genau dafür gibt es in Home Assistant zwei Bausteine, die zusammen ein mächtiges Duo bilden: eigene Sätze (custom sentences) und Intent-Skripte (intent_script). Damit definierst du selbst, welche Formulierung welche Aktion auslöst – und welche Antwort der Assistent spricht.
Das Prinzip: Satz trifft Skript
Die Aufgabenteilung ist simpel. Der eigene Satz ist der Auslöser – vergleichbar mit dem Trigger einer Automation. Er fängt gesprochene oder getippte Formulierungen ab und leitet einen benannten Intent ein. Das Intent-Skript ist die Ausführung: Es ruft Aktionen auf und formuliert die gesprochene Antwort. Zwischen beiden können Parameter (sogenannte Slots) übergeben werden, etwa ein Raumname oder eine Zahl.
Eigene Sätze legst du in YAML-Dateien im Ordner config/custom_sentences/ ab – für Deutsch also config/custom_sentences/de/. Die Intent-Skripte selbst kommen in die configuration.yaml. Nach einem Neustart kennt Assist die neuen Befehle.
Schritt 1: Den eigenen Satz definieren
Ein Beispiel: Du willst den Zustand deiner Wärmepumpe abfragen. Lege dazu die Datei config/custom_sentences/de/waermepumpe.yaml an:
language: "de"
intents:
WaermepumpeStatus:
data:
- sentences:
- "wie läuft die wärmepumpe"
- "status wärmepumpe"
- "wie geht es der heizung"
Der Intent heisst hier WaermepumpeStatus. Alle aufgeführten Sätze lösen ihn aus. Kleinschreibung und Varianten helfen, damit unterschiedliche Formulierungen erkannt werden.
Schritt 2: Das Intent-Skript hinterlegen
In der configuration.yaml beschreibst du nun, was passieren soll und was Assist antwortet. Du kannst dabei direkt auf Sensorwerte zugreifen – etwa den Taktzähler des Verdichters:
intent_script:
WaermepumpeStatus:
speech:
text: >
Die Wärmepumpe hatte heute
{{ states('counter.cta_verdichter_starts_heute') }} Verdichterstarts.
Der Heizbetrieb ist aktuell
{{ 'aktiv' if is_state('binary_sensor.cta_heizbetrieb_aktiv','on') else 'aus' }}.
Assist liest jetzt auf Zuruf den aktuellen Stand vor – ganz ohne Blick aufs Dashboard. Der speech-Block nutzt normale Jinja-Templates, du kannst also beliebige Zustände kombinieren und formatieren.
Schritt 3: Aktionen auslösen
Ein Intent-Skript kann nicht nur reden, sondern auch handeln. Ergänze einen action-Block, um zum Beispiel eine Szene zu starten:
intent_script:
Filmabend:
action:
- service: scene.turn_on
target:
entity_id: scene.filmabend
speech:
text: "Alles klar, der Filmabend ist bereit."
Der passende Satz dazu (config/custom_sentences/de/filmabend.yaml) enthält etwa «aktiviere den filmabend» oder «starte kinomodus». So wird aus einer gesprochenen Anweisung eine komplette Lichtszene samt Rückmeldung.
Slots für flexible Befehle
Richtig elegant wird es mit Platzhaltern. Statt für jeden Raum einen eigenen Intent zu bauen, fängst du den Raumnamen als Slot ab:
language: "de"
intents:
RaumTemperatur:
data:
- sentences:
- "wie warm ist es im {raum}"
lists:
raum:
values:
- "büro"
- "dachzimmer"
Im Intent-Skript greifst du dann über {{ raum }} auf den erkannten Wert zu und wählst den passenden Sensor aus. Ein einziger Satz deckt so mehrere Räume ab.
Testen und Feinschliff
Bevor du dich über nicht erkannte Befehle ärgerst, hilft der Assist-Dialog in den Entwicklerwerkzeugen. Dort tippst du deine Sätze ein und siehst sofort, ob der richtige Intent anspringt und welche Slots gefüllt werden. Häufige Stolpersteine sind Tippfehler im Dateipfad, eine fehlende Sprachangabe oder Umlaute, die im gesprochenen Text anders ankommen als erwartet. Es lohnt sich, pro Intent mehrere Formulierungsvarianten zu hinterlegen – Menschen fragen selten zweimal mit exakt denselben Worten. Wer viele eigene Sätze sammelt, sortiert sie am besten thematisch in mehrere YAML-Dateien, das hält die Konfiguration übersichtlich und wartbar.
Wer seine Sprachsteuerung ganz ohne Cloud betreiben will, findet die Grundlagen im Beitrag HA Voice PE: Lokale Sprachsteuerung ohne Cloud – die eigenen Sätze aus diesem Artikel funktionieren dort genauso wie mit einem Cloud-basierten Assistenten.
Fazit
Mit eigenen Sätzen und intent_script machst du Assist zu einem echten Sprachrohr deines Smart Homes: individuelle Statusabfragen, komplexe Szenen und flexible Raumbefehle – alles in deiner eigenen Sprache formuliert. Beginne klein mit einer einzigen Statusabfrage, teste sie im Assist-Dialog und erweitere Schritt für Schritt. Achte darauf, die Sätze nach jeder Änderung mit einem Neustart oder dem Neuladen der YAML-Konfiguration zu aktivieren. Schon nach wenigen Minuten sprichst du mit deinem Haus in genau den Worten, die dir am natürlichsten von der Zunge gehen.