Tüm Home Assistant Ses Komutlarını Özel Bir Ajan'a Yönlendirin
Her sesli komutun kendi ajanınıza gitmesini istiyorsunuz. Bu, yerel bir LLM veya MCP desteğine sahip bir asistan olabilir.
Home Assistant 2026.5 ve daha yeni sürümlerde, bunu yapmanın standart yolu başarısız oluyor.
Bir otomasyonda yalın bir wildcard (joker karakter) kullanırsanız, HTTP 500 hatası alırsınız. Bu hata, sistemin var olmayan bir listeyi araması nedeniyle oluşur.
Hatadan kaçınsanız bile, yerleşik komutlar sorgularınızı ele geçirecektir. Eğer "Bir sonraki alçak gelgit ne zaman?" diye sorarsanız, Home Assistant bunun yerine bir sonraki şarkıyı çalmaya çalışabilir.
İşte her iki sorunu da nasıl düzelteceğiniz.
Sorunlar
MissingListError: Bir otomasyonda
{text}kullandığınızda, Home Assistant "text" adında kayıtlı bir liste bekler. Otomasyonlarda liste tanımlayamadığınız için sistem çöker.Intent Hijacking (Niyet Ele Geçirme): "turn on" veya "play next" gibi yerleşik komutlar, özel ajanınıza fırsat tanımadan kelimelerinizle eşleşir.
Çözüm
Tümünü yakalama (catch-all) mantığını otomasyonlardan çıkarıp özel cümlelere (custom sentences) taşımanız gerekir. Bu, gerçek bir wildcard tanımlamanıza olanak tanır ve komutunuzun ilk önce yüklenmesini sağlar.
Adım 1: Özel bir cümle oluşturun
custom_sentences klasörünüzde bir dosya oluşturun. Bu, gerçek bir wildcard listesi kaydeder.
language: "en"
intents:
NaturaliQuery:
data:
- sentences:
- "{text}"
lists:
text:
wildcard: true
Adım 2: Bir intent_script kullanın
Bir otomasyon yerine, configuration.yaml dosyanızda bir intent_script kullanın. Bu, yanıtı işler ve ses hattının (voice pipeline) sorunsuz çalışmasını sağlar.
intent_script:
NaturaliQuery:
speech:
text: "One moment."
action:
- action: mqtt.publish
data:
topic: my/agent/ask
payload: '{"text": "{{ text }}"}'
Neden bu işe yarar
• Wildcard listesi HTTP 500 hatasını durdurur.
• Özel cümleler, yerleşik intent'lerden önce yüklenir. Ajanınız komutu ilk önce yakalar.
• intent_script kullanmak, birçok donanım uydu cihazında (hardware satellites) ses kilitlenmelerini (voice deadlocks) önler.
Not: Tam bir wildcard, "turn on the lights" dahil her şeyi yakalayacaktır. Yerel kontrolü korumak istiyorsanız, özel cümlenize bir ön ek kelime ekleyin; böylece yalnızca istediğinizde tetiklenir.
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi
