Mein Home Assistant fragt mich mittlerweile selbst, ob die Jalousie runter soll, ob das Licht aus darf oder ob er mich an die Wäsche erinnern soll. Ich antworte mit Ja oder Nein, mehr ist nicht nötig. Möglich macht das die Aktion assist_satellite.ask_question, die es seit Home Assistant 2025.7 gibt. Eine Automation stellt dabei über einen Sprachsatelliten eine Frage und wartet auf deine Antwort.
Ich nutze das für drei Fälle: Beschattung anbieten, nach „Gute Nacht“ das Licht prüfen und an die fertige Wäsche erinnern. Wichtig war mir, dass nie etwas ohne ein klares Ja passiert und das Haus nicht nervt. Dafür gibt es ein paar Schutzregeln. Die zeige ich dir natürlich auch.
Was du dafür brauchst
- Home Assistant 2025.7 oder neuer. Getestet habe ich mit 2026.10.1.
- Einen Assist-Satelliten, der Gespräche beginnen kann. Bei mir ist das die Home Assistant Voice Preview Edition. Ob dein Gerät das kann, prüfst du in Schritt 1.
- Eine Sprachpipeline mit Spracherkennung, lokal mit Whisper oder über Home Assistant Cloud. Die Pipeline stellst du unter Einstellungen → Sprachassistenten ein: Sprachassistenten öffnen.
- Für die Beispiele: Temperatur- und Helligkeitssensor im Raum, eine Jalousie mit Positionswert, einen Präsenzsensor, eine Waschmaschine mit Statussensor und die Companion App auf dem Handy.
Der Konversationsagent spielt für ask_question keine Rolle. Die Pipeline läuft nach deiner Antwort nur bis zur Spracherkennung, danach vergleicht Home Assistant den erkannten Text selbst mit den Antwortsätzen, die du vorgibst. Das funktioniert also auch mit dem eingebauten Assist-Agenten. Mit lokaler Spracherkennung bleibt das Ganze komplett im Haus und kostet keine Tokens.
Anders ist es bei assist_satellite.start_conversation: Dort führt der Agent das Gespräch weiter. Der eingebaute Assist-Agent kann laut Doku noch keine Gespräche. Dafür brauchst du ein Sprachmodell als Agent.
Welche Aktion für welchen Fall passt
Satelliten können unterschiedlich viel. Auch die Aktionen haben ihre eigenen Aufgaben. Diese Tabelle hilft mir bei der Entscheidung:
| Aktion | Was passiert | Nimm sie für |
|---|---|---|
assist_satellite.announce | Der Satellit sagt einen Satz, hört danach nicht zu | Bestätigungen, Hinweise ohne Entscheidung |
assist_satellite.ask_question | Der Satellit fragt, hört zu und liefert die passende Antwort-ID zurück | Ja oder nein, feste Auswahl |
assist_satellite.start_conversation | Der Satellit sagt einen Satz und übergibt danach an den Konversationsagenten | Offene Gespräche, nur mit Sprachmodell |
| Push-Nachricht | Landet auf dem Handy, egal wo du bist | Alles, was auch ohne dich im Raum ankommen muss |
Ich gehe dabei der Reihe nach vor. Bist du nicht zu Hause, reicht eine Push-Nachricht, denn Sprachausgabe bringt dann nichts. Ist ein Satz ohne Antwort genug, nimmst du eine Durchsage, die auch mit jeder Box im Netzwerk geht. Willst du frei antworten wie bei einem Menschen, brauchst du start_conversation und ein Sprachmodell dahinter. Reicht dir eine feste Auswahl, bist du bei ask_question.
Schritt 1: Satellit prüfen und Probelauf
Öffne Einstellungen → Werkzeuge → Zustände und such deinen Satelliten (assist_satellite.…). Das Attribut supported_features sagt, was er kann:
1: nur Durchsagen.ask_questionfunktioniert damit nicht.3: Durchsagen und Gespräch beginnen. Das brauchst du.
Meine Voice PE meldet 3. Den Zustand brauchst du gleich auch: idle heißt, der Satellit ist frei.
Dann ein Probelauf unter Einstellungen → Werkzeuge → Aktionen. Ersetze assist_satellite.dein_satellit durch die ID deines Geräts und klick auf Aktion ausführen:
1action: assist_satellite.ask_question
2data:
3 entity_id: assist_satellite.dein_satellit
4 question: "Hörst du mich? Sag ja oder nein."
5 answers:
6 - id: ja
7 sentences:
8 - "ja [bitte]"
9 - "klar"
10 - id: nein
11 sentences:
12 - "nein [danke]"Geprüft mit Home Assistant 2026.10.2
Darunter erscheint unter Antwort das Ergebnis mit id (die erkannte Antwort), sentence (was die Spracherkennung verstanden hat) und slots. Passt nichts, ist id leer. Sagst du gar nichts, endet die Aktion mit einem Fehler. Genau deshalb tragen alle Automationen unten continue_on_error: true.
Eckige Klammern machen Wörter optional, (schlafen|ins Bett) erlaubt mehrere Varianten. Satzzeichen lehnt Home Assistant in den Antwortsätzen ab.
Schritt 2: Helfer als Package anlegen
Die Schutzregeln brauchen fünf Helfer: einen Hauptschalter, zwei Zeitstempel und zwei Schwellen. Am schnellsten geht das als Package. Falls du noch keine Packages nutzt, steht in der configuration.yaml einmal:
homeassistant:
packages: !include_dir_named packagesLeg dann die Datei packages/rueckfragen.yaml an:
1input_boolean:
2 rueckfragen_aktiv:
3 name: "Rückfragen aktiv"
4 icon: mdi:account-voice
5
6input_datetime:
7 letzte_rueckfrage:
8 name: "Letzte Rückfrage"
9 has_date: true
10 has_time: true
11 beschattung_pause_bis:
12 name: "Beschattung pausiert bis"
13 has_date: true
14 has_time: true
15
16input_number:
17 beschattung_ab_temperatur:
18 name: "Beschattung ab Temperatur"
19 min: 20
20 max: 30
21 step: 0.5
22 unit_of_measurement: "°C"
23 mode: box
24 beschattung_ab_helligkeit:
25 name: "Beschattung ab Helligkeit"
26 min: 0
27 max: 5000
28 step: 50
29 unit_of_measurement: "lx"
30 mode: boxGeprüft mit Home Assistant 2026.10.2
Danach Home Assistant neu starten. Lieber per Oberfläche? Unter Einstellungen → Geräte & Dienste → Helfer → Helfer erstellen heißen die Typen Schalter, Zeitpunkt-Eingabe (mit „Datum und Uhrzeit“) und Zahlenwert-Eingabe. Prüf danach die Entity-IDs: aus „Rückfragen aktiv“ macht Home Assistant input_boolean.ruckfragen_aktiv, die Automationen unten erwarten rueckfragen_aktiv.
Ein neuer Zahlenhelfer steht auf seinem Minimalwert, also auf 20 °C und 0 lx. Damit würde die Beschattung sofort fragen. Stell beide Werte ein, bevor du die Automation einschaltest. Ich habe mit 24,5 °C und 600 lx angefangen und ziehe die Werte nach den ersten Sonnentagen nach. Schalte zum Schluss Rückfragen aktiv ein.
Schritt 3: Schutzregeln gegen ein nerviges Haus
Ein Haus, das von selbst redet, nervt schnell. Die Beschattung unten achtet auf alle dieser Regeln. Bei der Waschmaschine und bei Gute Nacht steht jeweils dabei, was gilt. Das sind die Regeln im Einzelnen:
- Hauptschalter:
input_boolean.rueckfragen_aktivist an. Damit schaltest du alles mit einem Klick ab, etwa wenn Besuch da ist. - Ruhezeit: nur zwischen 9 und 21 Uhr.
- Anwesenheit: jemand sitzt im Raum des Satelliten. Eine Frage ins leere Zimmer bringt nichts.
- Satellit frei: der Satellit steht auf
idle. Läuft gerade ein Sprachbefehl, fragt die Automation nicht dazwischen. - Keine Musik: der Lautsprecher im Raum spielt nichts.
- Cooldown: höchstens eine Rückfrage pro 30 Minuten, gemessen über
input_datetime.letzte_rueckfrage. - Kein Antwortzwang: sagst du nichts oder etwas Unpassendes, passiert nichts. Wo eine Nachricht trotzdem ankommen muss, geht sie als Push raus.
- Bestätigung: nach jedem Ja sagt der Satellit, was er getan hat.
Schritt 4: Beschattung anbieten
Wird es im Raum warm oder hell und die Jalousie ist offen, fragt der Satellit nach. Bei „Ja“ fährt sie auf halbe Höhe, bei „Nein“ fragt er für den Rest des Tages nicht mehr.
Anlegen unter Einstellungen → Automationen & Szenen → Automation erstellen → Neue Automation erstellen, dann oben rechts im Menü In YAML bearbeiten und den Block einfügen. Ersetze diese Platzhalter:
sensor.deine_raumtemperaturundsensor.deine_helligkeit: die Sensoren im Raumbinary_sensor.deine_anwesenheit: dein Präsenzsensor im Raum des Satellitenassist_satellite.dein_satellit: dein Satellitmedia_player.dein_lautsprecher: der Lautsprecher im Raumcover.deine_jalousie: die Jalousie
1alias: "Rückfrage: Beschattung anbieten"
2description: "Fragt, ob die Jalousie halb runter soll, wenn es im Raum warm und hell ist. Ohne Ja passiert nichts."
3mode: single
4triggers:
5 - trigger: numeric_state
6 entity_id: sensor.deine_raumtemperatur
7 above: input_number.beschattung_ab_temperatur
8 for: "00:05:00"
9 - trigger: numeric_state
10 entity_id: sensor.deine_helligkeit
11 above: input_number.beschattung_ab_helligkeit
12 for: "00:10:00"
13 - trigger: event
14 event_type: rueckfrage_test
15 event_data:
16 beispiel: beschattung
17 id: test
18conditions:
19 - alias: "Beim Vorführen gelten die Regeln nicht"
20 condition: or
21 conditions:
22 - condition: trigger
23 id: test
24 - condition: and
25 conditions:
26 - condition: state
27 entity_id: input_boolean.rueckfragen_aktiv
28 state: "on"
29 - condition: time
30 after: "09:00:00"
31 before: "21:00:00"
32 - condition: state
33 entity_id: binary_sensor.deine_anwesenheit
34 state: "on"
35 - condition: state
36 entity_id: assist_satellite.dein_satellit
37 state: idle
38 - condition: not
39 conditions:
40 - condition: state
41 entity_id: media_player.dein_lautsprecher
42 state: playing
43 - alias: "Höchstens eine Rückfrage pro 30 Minuten"
44 condition: template
45 value_template: >
46 {{ now() - (states('input_datetime.letzte_rueckfrage') | as_datetime | as_local) > timedelta(minutes=30) }}
47 - condition: numeric_state
48 entity_id: sensor.deine_raumtemperatur
49 above: input_number.beschattung_ab_temperatur
50 - condition: numeric_state
51 entity_id: sensor.deine_helligkeit
52 above: input_number.beschattung_ab_helligkeit
53 - condition: numeric_state
54 entity_id: cover.deine_jalousie
55 attribute: current_position
56 above: 40
57 - alias: "Nicht pausiert nach einem Nein"
58 condition: template
59 value_template: >
60 {{ now() > (states('input_datetime.beschattung_pause_bis') | as_datetime | as_local) }}
61actions:
62 - action: input_datetime.set_datetime
63 target:
64 entity_id: input_datetime.letzte_rueckfrage
65 data:
66 datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
67 - action: assist_satellite.ask_question
68 continue_on_error: true
69 data:
70 entity_id: assist_satellite.dein_satellit
71 preannounce: true
72 question: >-
73 Hier hat es {{ states('sensor.deine_raumtemperatur') | float(0) | round(0) | int }} Grad
74 und die Sonne scheint rein. Soll ich die Jalousie halb runterfahren?
75 answers:
76 - id: ja
77 sentences: ["ja", "ja bitte", "gerne", "mach das", "mach mal", "okay"]
78 - id: nein
79 sentences: ["nein", "nein danke", "lass mal", "lass offen", "nicht nötig", "später"]
80 response_variable: antwort
81 - choose:
82 - conditions: "{{ antwort is defined and antwort.id == 'ja' }}"
83 sequence:
84 - action: cover.set_cover_position
85 target:
86 entity_id: cover.deine_jalousie
87 data:
88 position: 50
89 - action: assist_satellite.announce
90 data:
91 entity_id: assist_satellite.dein_satellit
92 message: "Alles klar, die Jalousie fährt auf halbe Höhe."
93 preannounce: false
94 - conditions: "{{ antwort is defined and antwort.id == 'nein' }}"
95 sequence:
96 - action: input_datetime.set_datetime
97 target:
98 entity_id: input_datetime.beschattung_pause_bis
99 data:
100 datetime: "{{ today_at('23:59').strftime('%Y-%m-%d %H:%M:%S') }}"
101 - action: assist_satellite.announce
102 data:
103 entity_id: assist_satellite.dein_satellit
104 message: "Okay, dann frag ich heute nicht mehr."
105 preannounce: falseDie Bedingungen prüfen beide Schwellen noch einmal, weil schon einer der beiden Auslöser reicht. Gefragt wird nur, wenn es warm und hell ist. Der dritte Auslöser rueckfrage_test ist zum Vorführen da: er überspringt alle Regeln, mehr dazu in Schritt 7. Bei Home Assistant heißt Position 100 offen, deshalb fragt die Automation nur ab einer Öffnung über 40 %.
Schritt 5: Gute Nacht mit Rückfrage
Sagst du „Gute Nacht“, antwortet der Satellit und fragt danach, ob die noch brennenden Lichter aus sollen. Offene Fenster nennt er nur, schließen musst du sie selbst.
Das sind zwei Automationen. Die erste beantwortet den Satz, die zweite stellt die Frage. Getrennt sind sie, weil der Satellit erst seine Antwort zu Ende sprechen muss: solange er spricht, ist er nicht frei und ask_question würde scheitern.
Lichter, die nie gemeint sind (Status-LEDs, Schalter für „Bitte nicht stören“), bekommen unter Einstellungen → Bereiche, Labels & Zonen → Labels das Label „Gute Nacht ignorieren“. Seine ID gute_nacht_ignorieren liest das Template per label_entities. Lichtgruppen fallen automatisch raus, sonst stünde jeder Raum doppelt in der Frage.
Automation 1: Gute Nacht beantworten
1alias: "Rückfrage: Gute Nacht"
2description: "Antwortet auf Gute Nacht und stößt die Rückfrage zu Lichtern und Fenstern an."
3mode: single
4triggers:
5 - trigger: conversation
6 command:
7 - "Gute Nacht"
8 - "Ich geh[e] (schlafen|ins Bett)"
9actions:
10 - variables:
11 lichter: >
12 {{ states.light | selectattr('state', 'eq', 'on')
13 | rejectattr('attributes.entity_id', 'defined')
14 | rejectattr('entity_id', 'in', label_entities('gute_nacht_ignorieren'))
15 | map(attribute='entity_id') | list }}
16 - set_conversation_response: >-
17 {% if lichter | count == 0 %}Gute Nacht, schlaf gut.{% else %}Gute Nacht. Eine Frage noch.{% endif %}
18 - if:
19 - condition: template
20 value_template: "{{ lichter | count > 0 and is_state('input_boolean.rueckfragen_aktiv', 'on') }}"
21 then:
22 - event: gute_nacht_rueckfrage
23 event_data:
24 lichter: "{{ lichter }}"
25 satellit: "{{ trigger.satellite_id or 'assist_satellite.dein_satellit' }}"Geprüft mit Home Assistant 2026.10.2
trigger.satellite_id ist der Satellit, der den Satz gehört hat. So kommt die Frage aus dem Raum, in dem du „Gute Nacht“ gesagt hast. Sprichst du über die App, gibt es keinen Satelliten und der Platzhalter springt ein.
Satz-Auslöser gehen vor dem Konversationsagenten, das klappt also auch mit einem Sprachmodell in der Pipeline.
Automation 2: Lichter und Fenster nachfragen
Ersetze binary_sensor.deine_fenster durch eine Gruppe deiner Fensterkontakte.
1alias: "Rückfrage: Gute Nacht, Lichter und Fenster"
2description: "Fragt nach Gute Nacht, ob die noch brennenden Lichter aus sollen. Offene Fenster nennt sie nur."
3mode: single
4triggers:
5 - trigger: event
6 event_type: gute_nacht_rueckfrage
7actions:
8 - variables:
9 satellit: "{{ trigger.event.data.satellit }}"
10 lichter: "{{ trigger.event.data.lichter }}"
11 raeume: >
12 {% set ns = namespace(r=[]) %}
13 {% for l in lichter %}
14 {% set a = area_name(l) or state_attr(l, 'friendly_name') or l %}
15 {% if a not in ns.r %}{% set ns.r = ns.r + [a] %}{% endif %}
16 {% endfor %}
17 {{ ns.r }}
18 raumtext: >-
19 {% if raeume | count == 1 %}{{ raeume[0] }}{% else %}{{ raeume[:-1] | join(', ') }} und {{ raeume[-1] }}{% endif %}
20 fenster: >
21 {% set ns = namespace(r=[]) %}
22 {% for f in expand('binary_sensor.deine_fenster') | selectattr('state', 'eq', 'on') %}
23 {% set ns.r = ns.r + [area_name(f.entity_id) or f.name] %}
24 {% endfor %}
25 {{ ns.r | unique | list }}
26 - wait_template: "{{ is_state(satellit, 'idle') }}"
27 timeout: "00:00:20"
28 - delay: "00:00:01"
29 - action: assist_satellite.ask_question
30 continue_on_error: true
31 data:
32 entity_id: "{{ satellit }}"
33 preannounce: false
34 question: "Es brennt noch Licht: {{ raumtext }}. Soll ich es ausschalten?"
35 answers:
36 - id: ja
37 sentences: ["ja", "ja bitte", "gerne", "alles aus", "mach aus", "okay"]
38 - id: nein
39 sentences: ["nein", "nein danke", "lass an", "lass brennen"]
40 response_variable: antwort
41 - variables:
42 fenster_hinweis: >-
43 {% if fenster | count == 1 %} Übrigens ist noch ein Fenster offen: {{ fenster[0] }}.{% elif fenster | count > 1 %} Übrigens sind noch Fenster offen: {{ fenster[:-1] | join(', ') }} und {{ fenster[-1] }}.{% endif %}
44 - choose:
45 - conditions: "{{ antwort is defined and antwort.id == 'ja' }}"
46 sequence:
47 - action: light.turn_off
48 target:
49 entity_id: "{{ lichter }}"
50 - action: assist_satellite.announce
51 data:
52 entity_id: "{{ satellit }}"
53 message: "Erledigt.{{ fenster_hinweis }} Schlaf gut."
54 preannounce: false
55 - conditions: "{{ antwort is defined and antwort.id == 'nein' }}"
56 sequence:
57 - action: assist_satellite.announce
58 data:
59 entity_id: "{{ satellit }}"
60 message: "Okay, bleibt an.{{ fenster_hinweis }} Gute Nacht."
61 preannounce: falseGeprüft mit Home Assistant 2026.10.2
Hier gibt es bewusst keine Ruhezeit und keinen Cooldown: die Frage folgt direkt auf deinen eigenen Satz. Die Raumnamen kommen aus den Bereichen. Ein Licht ohne Bereich erscheint mit seinem Namen.
Schritt 6: Waschmaschine mit Erinnerung
Ist die Wäsche fertig und du sitzt beim Satelliten, fragt er, ob er dich in 20 Minuten noch einmal erinnern soll. Bist du nicht da oder sagst nichts, kommt eine Push-Nachricht. Hier gibt es kein Triggerwort. Die Automation reagiert auf ein Ereignis in Home Assistant, nämlich den Zustand der Maschine.
Zusätzlich zu den Platzhaltern aus Schritt 4:
sensor.deine_waschmaschine: der Statussensor. Bei Home Connect heißt er „Betriebszustand“ und steht nach dem Programm auffinished. Andere Integrationen nennen den Zustand anders, schau unter Werkzeuge → Zustände nach.notify.mobile_app_dein_handy: dein Handy aus der Companion App.
1alias: "Rückfrage: Waschmaschine fertig"
2description: "Fragt beim Satelliten, ob er in 20 Minuten erinnern soll. Sonst kommt eine Push-Nachricht."
3mode: single
4triggers:
5 - trigger: state
6 entity_id: sensor.deine_waschmaschine
7 to: finished
8 - trigger: event
9 event_type: rueckfrage_test
10 event_data:
11 beispiel: waschmaschine
12 id: test
13conditions:
14 - condition: or
15 conditions:
16 - condition: trigger
17 id: test
18 - condition: and
19 conditions:
20 - condition: state
21 entity_id: input_boolean.rueckfragen_aktiv
22 state: "on"
23 - condition: time
24 after: "08:00:00"
25 before: "21:30:00"
26actions:
27 - variables:
28 test: "{{ trigger.id == 'test' }}"
29 - if:
30 - condition: or
31 conditions:
32 - condition: trigger
33 id: test
34 - condition: and
35 conditions:
36 - condition: time
37 after: "09:00:00"
38 before: "21:00:00"
39 - condition: state
40 entity_id: binary_sensor.deine_anwesenheit
41 state: "on"
42 - condition: state
43 entity_id: assist_satellite.dein_satellit
44 state: idle
45 - condition: not
46 conditions:
47 - condition: state
48 entity_id: media_player.dein_lautsprecher
49 state: playing
50 - alias: "Höchstens eine Rückfrage pro 30 Minuten"
51 condition: template
52 value_template: >
53 {{ now() - (states('input_datetime.letzte_rueckfrage') | as_datetime | as_local) > timedelta(minutes=30) }}
54 then:
55 - action: input_datetime.set_datetime
56 target:
57 entity_id: input_datetime.letzte_rueckfrage
58 data:
59 datetime: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
60 - action: assist_satellite.ask_question
61 continue_on_error: true
62 data:
63 entity_id: assist_satellite.dein_satellit
64 preannounce: true
65 question: "Die Waschmaschine ist fertig. Soll ich dich in zwanzig Minuten nochmal erinnern?"
66 answers:
67 - id: ja
68 sentences: ["ja", "ja bitte", "gerne", "erinner mich", "okay"]
69 - id: nein
70 sentences: ["nein", "nein danke", "nicht nötig", "mach ich gleich"]
71 response_variable: antwort
72 - choose:
73 - conditions: "{{ antwort is defined and antwort.id == 'ja' }}"
74 sequence:
75 - action: assist_satellite.announce
76 data:
77 entity_id: assist_satellite.dein_satellit
78 message: "{{ 'Mach ich. Zum Test erinnere ich dich schon in einer Minute.' if test else 'Mach ich.' }}"
79 preannounce: false
80 - delay: "{{ '00:01:00' if test else '00:20:00' }}"
81 - alias: "Wäsche noch nicht ausgeräumt, beim Vorführen immer"
82 condition: template
83 value_template: "{{ test or is_state('sensor.deine_waschmaschine', 'finished') }}"
84 - if:
85 - condition: state
86 entity_id: binary_sensor.deine_anwesenheit
87 state: "on"
88 then:
89 - action: assist_satellite.announce
90 data:
91 entity_id: assist_satellite.dein_satellit
92 message: "Kleine Erinnerung: Die Wäsche wartet noch in der Maschine."
93 else:
94 - action: notify.mobile_app_dein_handy
95 data:
96 title: "Waschmaschine"
97 message: "Die Wäsche wartet seit 20 Minuten."
98 - conditions: "{{ antwort is defined and antwort.id == 'nein' }}"
99 sequence:
100 - action: assist_satellite.announce
101 data:
102 entity_id: assist_satellite.dein_satellit
103 message: "Okay."
104 preannounce: false
105 default:
106 - action: notify.mobile_app_dein_handy
107 data:
108 title: "Waschmaschine"
109 message: "Die Waschmaschine ist fertig."
110 else:
111 - action: notify.mobile_app_dein_handy
112 data:
113 title: "Waschmaschine"
114 message: "Die Waschmaschine ist fertig."Nach den 20 Minuten prüft die Automation, ob die Maschine noch auf finished steht. Hast du die Tür inzwischen geöffnet, wechselt der Zustand bei Home Connect und die Erinnerung fällt weg. Beim Vorführen über rueckfrage_test kommt die Erinnerung schon nach einer Minute und ohne diese Prüfung.
Schritt 7: Rückfragen vorführen, ohne auf die Sonne zu warten
Auf Hitze oder eine fertige Waschmaschine kannst du nicht warten, wenn du etwas ausprobieren oder zeigen willst. Deshalb hören beide Automationen zusätzlich auf das Event rueckfrage_test. Kommt es, fragt der Satellit sofort: ohne Schwellen, Ruhezeit, Anwesenheit und Cooldown. Die Waschmaschine erinnert dabei schon nach einer Minute.
Ausgelöst wird das Event über ein kleines Skript. Anlegen unter Einstellungen → Automationen & Szenen → Skripte → Skript erstellen → Neues Skript erstellen, dann In YAML bearbeiten:
1alias: "Rückfrage vorführen"
2description: "Löst eine Rückfrage sofort aus, ohne die Schutzregeln."
3icon: mdi:account-voice
4mode: single
5fields:
6 beispiel:
7 name: Beispiel
8 required: true
9 default: beschattung
10 selector:
11 select:
12 options:
13 - value: beschattung
14 label: Beschattung
15 - value: waschmaschine
16 label: Waschmaschine
17sequence:
18 - event: rueckfrage_test
19 event_data:
20 beispiel: "{{ beispiel }}"Geprüft mit Home Assistant 2026.10.2
Für jedes Beispiel einen Knopf ins Dashboard legen, etwa als Kachel:
1type: tile
2entity: script.rueckfrage_vorfuehren
3name: Beschattung jetzt fragen
4icon: mdi:blinds
5hide_state: true
6tap_action:
7 action: perform-action
8 perform_action: script.rueckfrage_vorfuehren
9 data:
10 beispiel: beschattung- Die Automation muss eingeschaltet sein. Eine ausgeschaltete Automation hört auch auf das Test-Event nicht.
- Gute Nacht brauchst du nicht vorzuführen: sag einfach „Gute Nacht“, während noch ein Licht brennt.
- Ob und warum etwas nicht gelaufen ist, zeigen die Traces der Automation. Beim Vorführen steht dort als Auslöser das Event
rueckfrage_test.
Tipps und Troubleshooting
- Der Satellit fragt nie: zuerst
supported_featuresprüfen (Schritt 1), dann die Traces. Meist hält eine Schutzregel an, etwa die Anwesenheit oder der Cooldown. - Fehler „no answer“ im Trace: du hast nichts gesagt oder die Spracherkennung hat nichts verstanden. Mit
continue_on_error: trueläuft die Automation einfach weiter und es passiert nichts. - „Nein“ wird nicht erkannt: im Trace steht unter
antwort.sentence, was die Spracherkennung gehört hat. Diesen Satz ergänzt du in der passenden Antwortliste. - Der Satellit ist beschäftigt: läuft schon eine Durchsage oder ein Sprachbefehl, lehnt Home Assistant die Frage ab. Deshalb die Bedingung
idleund in der Gute-Nacht-Automation das Warten darauf. - Ein Ja schaltet zu viel aus: in Automation 1 unter Werkzeuge → Template die Variable
lichterausprobieren und alles, was nicht gemeint ist, mit dem Label versehen. - Offene Gespräche: Willst du freie Antworten statt Ja und Nein, nimm
assist_satellite.start_conversationmit einem Sprachmodell als Agent. Für Entscheidungen, die etwas schalten, bleibe ich beiask_question, weil dort nur genau die Sätze zählen, die ich vorgebe.
Was hast du schon alles mit Sprachassistenten und Sprachmodellen gebaut? Schreib es mir gern in die Kommentare, dann können wir uns gegenseitig ein paar Ideen abschauen.
