Zum Inhalt springen
Alles Automatisch

Automation

Home Assistant Rückfragen mit ask_question einrichten

Für alle ab
Für Mitglieder freigeschaltet

Früher Zugang für Kanalmitglieder

Das Video läuft schon, nur noch nicht für alle.

Kanalmitglieder sehen es jetzt. Für alle erscheint es am Sonntag, 15. November, um 9 Uhr. Die komplette Anleitung kannst du heute schon lesen, sie steht direkt darunter.

Mitglieder seit 16. Okt.Für alle am So., 15. Nov.
noch 25 Tage

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:

AktionWas passiertNimm sie für
assist_satellite.announceDer Satellit sagt einen Satz, hört danach nicht zuBestätigungen, Hinweise ohne Entscheidung
assist_satellite.ask_questionDer Satellit fragt, hört zu und liefert die passende Antwort-ID zurückJa oder nein, feste Auswahl
assist_satellite.start_conversationDer Satellit sagt einen Satz und übergibt danach an den KonversationsagentenOffene Gespräche, nur mit Sprachmodell
Push-NachrichtLandet auf dem Handy, egal wo du bistAlles, 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_question funktioniert 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:

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

yaml
homeassistant:
  packages: !include_dir_named packages

Leg dann die Datei packages/rueckfragen.yaml an:

yaml
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: box

Geprü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_aktiv ist 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_raumtemperatur und sensor.deine_helligkeit: die Sensoren im Raum
  • binary_sensor.deine_anwesenheit: dein Präsenzsensor im Raum des Satelliten
  • assist_satellite.dein_satellit: dein Satellit
  • media_player.dein_lautsprecher: der Lautsprecher im Raum
  • cover.deine_jalousie: die Jalousie
yaml
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: false

Die 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

yaml
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.

yaml
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: false

Geprü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 auf finished. Andere Integrationen nennen den Zustand anders, schau unter Werkzeuge → Zustände nach.
  • notify.mobile_app_dein_handy: dein Handy aus der Companion App.
yaml
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:

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

yaml
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_features prü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: true lä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 idle und in der Gute-Nacht-Automation das Warten darauf.
  • Ein Ja schaltet zu viel aus: in Automation 1 unter Werkzeuge → Template die Variable lichter ausprobieren 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_conversation mit einem Sprachmodell als Agent. Für Entscheidungen, die etwas schalten, bleibe ich bei ask_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.

Diskussion im Forum

Hast du Fragen oder Ideen zu diesem Thema?

Diskutiere im Forum

Video teilen

Community

Unterstütze den Kanal

Hat dir der Beitrag geholfen? Es gibt zwei Wege, etwas zurückzugeben.