Przekieruj wszystkie komendy głosowe Home Assistant do własnego agenta
Chcesz, aby każda komenda głosowa trafiała do Twojego własnego agenta. Może to być lokalny model LLM lub asystent z obsługą MCP.
W wersji Home Assistant 2026.5 i nowszych standardowy sposób na osiągnięcie tego celu nie działa.
Jeśli użyjesz samego znaku wieloznacznego (wildcard) w automatyzacji, otrzymasz błąd HTTP 500. Błąd ten występuje, ponieważ system szuka listy, która nie istnieje.
Nawet jeśli unikniesz błędu, wbudowane komendy przejmą Twoje zapytania. Jeśli zapytasz „Kiedy będzie następny odpływ”, Home Assistant może zamiast tego spróbować odtworzyć kolejną piosenkę.
Oto jak rozwiązać oba te problemy.
Problemy
MissingListError: Gdy używasz
{text}w automatyzacji, Home Assistant oczekuje zarejestrowanej listy o nazwie „text”. Ponieważ nie można definiować list w automatyzacjach, system ulega awarii.Przejęcie intencji (Intent Hijacking): Wbudowane komendy, takie jak „turn on” lub „play next”, dopasowują się do Twoich słów, zanim Twój własny agent będzie miał szansę na ich przetworzenie.
Rozwiązanie
Musisz przenieść logikę typu „catch-all” z automatyzacji do własnych zdań (custom sentences). Pozwala to na zdefiniowanie prawdziwego znaku wieloznacznego i gwarantuje, że Twoja komenda zostanie załadowana jako pierwsza.
Krok 1: Utwórz własne zdanie
Utwórz plik w folderze custom_sentences. Rejestruje to prawdziwą listę wieloznaczną.
language: "en"
intents:
NaturaliQuery:
data:
- sentences:
- "{text}"
lists:
text:
wildcard: true
Krok 2: Użyj intent_script
Zamiast automatyzacji, użyj intent_script w pliku configuration.yaml. Obsługuje on odpowiedź i zapewnia płynność potoku głosowego (voice pipeline).
intent_script:
NaturaliQuery:
speech:
text: "Chwileczkę."
action:
- action: mqtt.publish
data:
topic: my/agent/ask
payload: '{"text": "{{ text }}"}'
Dlaczego to działa
• Lista wieloznaczna eliminuje błąd HTTP 500.
• Własne zdania są ładowane przed wbudowanymi intencjami. Twój agent jako pierwszy przechwytuje komendę.
• Użycie intent_script zapobiega blokadom głosowym (voice deadlocks) na wielu satelitach sprzętowych.
Uwaga: Pełny znak wieloznaczny przechwyci wszystko, w tym „turn on the lights”. Jeśli chcesz zachować natywne sterowanie, dodaj słowo prefiksu do swojego własnego zdania, aby uruchamiało się tylko wtedy, gdy tego chcesz.
Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi
