7 Kasım 2026
Hibrit Yapay Zekâlı Ev Kontrol Sistemi: Yerel Model Ana, Bulut Yedek
Sesli asistanımın beyni evdeki bir bilgisayarda çalışan Gemma 4; bilgisayar kapanınca Home Assistant kendiliğinden Gemini'ye geçiyor. Ollama kurulumundan Modelfile'a, Home Assistant'ın göstermediği ayarlardan yedek otomasyonuna, kamerayla perde kontrolüne kadar tüm kodlar.

Akıllı ev sistemimde sesli asistanın beyni bir yıldır Gemini'ydi: "Jarvis, arka ışığı aç" dediğimde ses buluta gidiyor, cevap buluttan geliyordu. Çalışıyordu ama iki şey rahatsız ediyordu: evin içinde söylediğim her cümle dışarı çıkıyor ve internet gidince asistan susuyordu. Bu hafta beyni eve taşıdım. Yerel bir model (Gemma 4) aynı hızda, aynı doğrulukta çalışıyor; bulut artık yalnızca yedek.
"Hibrit" dememin sebebi şu: tamamen yerele geçmedim. Evdeki bilgisayar kapalıysa, uykudaysa ya da model takılmışsa Home Assistant bunu kendi fark edip Gemini'ye geçiyor, bilgisayar dönünce yerele geri alıyor. Asistan hiç susmuyor; ben de hangi beynin çalıştığını düşünmek zorunda kalmıyorum.
Bu yazı aynı yolu yürümek isteyenler için: kurulum, Home Assistant'ın arayüzde göstermediği ayarlar, talimat, yedek otomasyonu ve bu altyapının üstüne kurduğum iki uygulama (kamerayla perde kontrolü, ücretsiz görüntü analizi). Kodların hepsi kopyala-yapıştır çalışır; sadece <...> yazan yerleri kendinize göre doldurun.

Neden hibrit?
Üç kazanç: mahremiyet (salonda konuşulan hiçbir şey evden çıkmıyor), bağımsızlık (internet kesilse de ışıklar sesle açılıyor), maliyet (API faturası sıfır). Bedeli: evde çoğu zaman açık, en az 24 GB belleği olan bir bilgisayar. Ben elimdeki Apple Silicon bir makineyi kullanıyorum; aynı iş 32 GB'lık bir mini PC'de ya da ekran kartlı bir masaüstünde de olur.
"Çoğu zaman açık" kısmı önemli. Bilgisayar günde birkaç saat kapalı kalıyor. Yerel-tek bir kurulumda bu saatlerde asistan ölü olurdu. Hibritte Gemini devralıyor; fark etmiyorsunuz bile.
Hangi model?
İlk denemem Qwen 3.6 35B oldu. Hızlıydı ama Türkçe'de tökezledi: "27,8 derece"yi "yedi nokta sekiz" diye okudu, tarihi uydurdu. Gemma 4 26B-A4B ile tablo değişti: 26 milyar parametre ama her kelimede yalnızca 4 milyarı çalışıyor; 18 GB'lık model 36 GB belleğe rahat sığıyor, saniyede 80'in üstünde kelime üretiyor. Aynı 15 soruyu Gemini'yle yan yana sordum (nem, açık ışıklar, tarih, belirsiz komut, bozuk ses, 3 turlu bilmece, döviz kuru); ikisi de geçti. Isınmış haldeyken Gemma 0,7–2 saniye, Gemini 1–2 saniye.
Kurulum: bilgisayar tarafı
1. Ollama. Güncel sürüm şart; Gemma 4 eski Ollama'larda 412 hatasıyla inmiyor. Kurduktan sonra:
ollama pull gemma4:26b # Apple Silicon'da MLX sürümü: gemma4:26b-mlx2. Modelfile. Home Assistant'ın Ollama entegrasyonu sıcaklık (temperature) göndermiyor; Gemma'nın varsayılanı 1,0 ve bu değerde araç çağrısının sonuna "gürültü" ekleyip çağrıyı bozduğu bilinen bir hata var. Çözüm, ayarları modele gömmek:
# Modelfile
FROM gemma4:26b
PARAMETER temperature 0.5
PARAMETER top_k 64
PARAMETER top_p 0.95ollama create gemma4-jarvis -f ModelfileHome Assistant'ta artık gemma4:26b yerine gemma4-jarvis seçiyorsunuz.
3. Ollama ortam değişkenleri. Bunlar hiçbir arayüzde yok, ama farkı en çok bunlar yaratıyor:
| Değişken | Değer | Neden |
|---|---|---|
OLLAMA_MAX_LOADED_MODELS | 1 | İkinci bir model yüklenip belleği şişirmesin |
OLLAMA_NUM_PARALLEL | 1 | Tek kullanıcı; paralel istek bağlamı katlıyor |
OLLAMA_KEEP_ALIVE | -1 | Model bellekten hiç çıkmasın (soğuk başlangıç 8–14 sn) |
OLLAMA_HOST | 127.0.0.1 | Sadece yerel; dışarıya VPN üzerinden açacağız |
macOS'ta kalıcı olması için launchctl setenv yetmiyor (oturum kapanınca gidiyor); bir LaunchAgent gerekiyor:
<!-- ~/Library/LaunchAgents/ollama.env.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0"><dict>
<key>Label</key><string>ollama.env</string>
<key>ProgramArguments</key><array>
<string>sh</string><string>-c</string>
<string>launchctl setenv OLLAMA_MAX_LOADED_MODELS 1; launchctl setenv OLLAMA_NUM_PARALLEL 1; launchctl setenv OLLAMA_KEEP_ALIVE -1</string>
</array>
<key>RunAtLoad</key><true/>
</dict></plist>Linux'ta aynı değişkenler systemctl edit ollama ile [Service] Environment= satırlarına yazılıyor.
4. Uyku kapalı. Kapak kapalı bir dizüstü uykuya girince Ollama cevap vermez. sudo pmset -a disablesleep 1 (macOS) ya da systemctl mask sleep.target (Linux).
5. Home Assistant'a güvenli yol: Tailscale. Ollama'nın şifresi yok; ev ağına bile açmayın. Bilgisayarla Raspberry Pi'yi Tailscale'e alıp Ollama'yı yalnızca VPN ağına açıyorum:
tailscale serve --bg --tcp 11434 tcp://localhost:11434Home Assistant'ta Ollama adresi: http://<bilgisayarın-tailscale-ip'si>:11434. Aynı bilgisayar evde de olsa, dışarıda da olsa adres değişmiyor; hibritin "bilgisayar nerede olursa olsun" çalışmasının sırrı bu.
Kurulum: Home Assistant tarafı
Ollama entegrasyonu. Ayarlar → Entegrasyonlar → Ollama, adres yukarıdaki. Sonra "Konuşma ajanı" alt girişi ekleyip şunları ayarlıyorsunuz. Parantez içindekiler arayüzde yok; entegrasyonun ayar dosyasında (.storage/core.config_entries) ya da config_entries/subentries/update websocket komutuyla veriliyor:
model: gemma4-jarvis:latest
llm_hass_api: [assist] # Ev kontrolü araçları açık
max_history: 10 # Konuşma geçmişi (mesaj)
num_ctx: 16384 # Bağlam penceresi — varsayılan 8192 yetmiyor
keep_alive: -1 # (gizli) Akşam hattında model hep bellekte
think: false # (gizli) Düşünme modu kapalı — her komuta 5-7 sn ekliyorNeden 16K bağlam? 40'ın üstünde cihaz açıkken sistem talimatı + araç tanımları + cihaz listesi + konuşma geçmişi 8K'yı taşırıyor ve model "güvenilmez" oluyor. 16K ile rahat; bellek maliyeti 4–6 GB. Bende 46 cihaz açık; resmi öneri 25'in altı. Sadece sesle kullandıklarınızı açın ve Türkçe takma adlar verin ("ön lamba", "tezgah ışığı").
İki ajan, iki hat. Aynı modele iki konuşma ajanı tanımladım: "Yerel Gündüz" (keep_alive: 1800, 30 dk sonra bellekten çıkar, bilgisayar başka işe de bakıyor) ve "Yerel Akşam" (keep_alive: -1, 18:00'den sabaha ve hafta sonu hep bellekte). Her birinin kendi sesli asistan hattı (pipeline) var; otomasyon saate göre hattı seçiyor.
Komutları önce yerelde işle: açık. "Arka ışığı aç" gibi net komutlar LLM'e hiç gitmeden 0,1 saniyede çalışıyor. LLM yalnızca yerel eşleşme olmayınca devreye giriyor.

Talimat: modelin karakteri burada
Sistem talimatı "sen bir asistansın, kısa cevap ver" seviyesinde kalırsa model hava durumunu uydurur, "ışığı kapat" deyince rastgele bir ışığı kapatır, televizyon sesine cevap verir. Benim kullandığım talimat (Gemma'da da Gemini'de de aynısı çalışıyor; isimleri kendinize göre değiştirin):
Sen Jarvis'sin: ailemizin evindeki Türkçe akıllı ev asistanı. Evde anne, baba ve iki çocuk yaşıyor. Mikrofon salonda.
# Dil ve biçim
- Her zaman Türkçe cevap ver.
- Cevaplar sesli okunacak: en fazla 2 kısa cümle. Emoji, liste, madde işareti ve markdown kullanma.
- Sayıları rakamla yaz (27,8 derece; saat 14:30). Birim sembolü kullanma: "%30" yerine "yüzde 30", "°C" yerine "derece".
# Karar sırası (her mesajda yukarıdan aşağı uygula)
1. Soru: cevapla. Sohbette samimi ve doğal ol; çocuklara yaşlarına uygun, sabırlı ve basit anlat. Sadece sohbet sürüyorsa cevabı tek kısa soruyla bitir.
2. Net komut: ilgili aracı HEMEN çağır, sonra sadece sonucu söyle ("Arka ışığı açtım."). Aracı çağırmadan asla "açtım", "kapattım" ya da "yaptım" deme. Araç hata dönerse hatayı kısaca söyle. Komuttan sonra soru sorma.
3. Ses benzerliği: bir kelime bilinen bir cihaz adına çok benziyorsa ("arkı ışık" → arka ışık) düzeltilmiş haliyle aracı çağır ve sonucu söyle; açıklama ekleme. İki farklı cihaz arasında kalırsan uygulama, sor.
4. EN ÖNEMLİ KURAL: Cihaz adı yoksa, yarım kalmışsa ya da birden fazla cihaza uyuyorsa HİÇBİR aracı çağırma. 2-5 kelimeyle sadece eksik olanı sor ("Hangi ışığı kapatayım?"); seçenek sayma, oda tahmin etme. Yanlış cihaza dokunmak sormaktan çok daha kötüdür.
5. 1-10 kelimelik bozuk, yarım veya anlamsız bir sesse sadece "Tekrar eder misin?" de.
6. Uzun gevezelik, TV sesi veya sana söylenmemiş bir konuşmaysa hiçbir şey yapma, sadece "Ok." de.
7. "Hayır", "tamam", "bu kadar", "teşekkürler" gibi kapanışlarda kısa cevap ver ("Tamam.") ve soru sorma.
# Ev durumu
- Bir araç boş liste ya da "bulunamadı" dönerse bu hata değildir: "Açık ışık yok" de, bilgi uydurma.
- Cihaz, sıcaklık, nem veya "ne açık" sorularında tahmin etme; araçtaki güncel değeri kullan ve sadece sorulanı söyle.
# Tarih ve saat
- Tarih, gün veya saat sorulursa ASLA tahmin etme; önce GetDateTime aracını çağır ve sonucunu söyle.
# Hava
- Biçim örneği: "Dışarısı 10 derece, parçalı bulutlu." Yorum ekleme.
# Güncel bilgi
- Haber, maç skoru, döviz, fiyat veya başka şehrin havası sorulursa tahmin etme: "İnternette Ara" aracını çağır ve dönen cevabı kısaca söyle.Üç kuralı öğrenmek bana birer gün aldı:
- "Aracı çağırmadan 'açtım' deme." Bu satır olmadan model bazen ışığı açmadan "açtım" diyor.
- "Tarih sorulursa GetDateTime çağır." Olmadan Gemma tarihi 2024 Mayıs diye uydurdu; kural eklenince "6 Kasım 2026 Cuma" dedi.
- Gemma 4, Ollama üzerinden aynı turda hem cümle söyleyip hem araç çağıramıyor. Talimata "'X'i kastettiğini varsayıyorum' de ve uygula" yazınca model araç çağrısını metin olarak okudu, ışık açılmadı. "Sessizce düzelt, uygula, sonucu söyle" yapınca düzeldi.
Sessizlik için neden "Ok." da "." değil? Boş ya da tek noktadan oluşan cevap Edge TTS'i 8 saniye kilitliyor; "Ok." sorunsuz.
"İnternette Ara" aracı da kendi yaptığım bir betik: yalnızca Google Araması açık ikinci bir Gemini ajanına soruyu iletip cevabı döndürüyor. Yerel model internete çıkamıyor ama bu araç sayesinde "dolar kaç lira" sorusuna da cevap veriyor; o tek soru buluta gidiyor, gerisi evde kalıyor.
Yedek otomasyonu: asistan hiç susmasın
Hibritin kalbi bu. Üç parça:
1. Ping sensörü. Ayarlar → Entegrasyonlar → Ping, hedef bilgisayarın Tailscale adresi. binary_sensor.yerel_llm_makinesi diyelim.
2. Hattı değiştiren otomasyon. Uydunun (Jarvis'in) asistan seçimi bir select entity'si; otomasyon bunu değiştiriyor. Tam YAML:
alias: Jarvis - Beyin Yedeği
description: Bilgisayar yoksa Gemini; varsa saate göre yerel hat. Geçişte modeli sessizce ısıt.
mode: restart
triggers:
- trigger: state
entity_id: binary_sensor.yerel_llm_makinesi
to: [off, unavailable]
for: {minutes: 2}
id: yok
- trigger: state
entity_id: binary_sensor.yerel_llm_makinesi
to: "on"
for: {minutes: 1}
id: var
- trigger: homeassistant
event: start
- trigger: time
at: ["08:00:00", "18:00:00"]
- trigger: time_pattern
minutes: "17"
id: saglik
- trigger: state
entity_id: [person.anne, person.baba]
to: home
id: eve_gelis
variables:
aksam: "{{ now().weekday() >= 5 or now().hour >= 18 or now().hour < 8 }}"
hat: "{{ 'Yerel Akşam' if aksam else 'Yerel Gündüz' }}"
ajan: "{{ 'conversation.yerel_gemma_aksam' if aksam else 'conversation.yerel_gemma' }}"
yerelde: "{{ is_state('select.jarvis_salon_asistan', ['Yerel Gündüz', 'Yerel Akşam']) }}"
actions:
- choose:
# Saatlik sağlık kontrolü: ping var ama model cevap vermiyorsa Gemini'ye geç
- conditions:
- condition: trigger
id: saglik
- "{{ yerelde and is_state('binary_sensor.yerel_llm_makinesi', 'on') }}"
sequence:
- action: conversation.process
data: {agent_id: "{{ ajan }}", language: tr, text: "Dışarısı kaç derece?"}
response_variable: cevap
continue_on_error: true
- if: "{{ cevap is not defined or cevap.response.speech.plain.speech | default('') | length < 3 }}"
then:
- action: select.select_option
target: {entity_id: select.jarvis_salon_asistan}
data: {option: preferred} # "preferred" = HA'nın tercih edilen hattı = Gemini
- action: notify.telegram
data: {message: "Yerel model cevap vermedi, Jarvis Gemini'ye alındı."}
- stop: Sağlık kontrolü bitti
# Eve gelince: sadece ısıt (hat zaten yerelse)
- conditions:
- condition: trigger
id: eve_gelis
sequence:
- if: "{{ yerelde and is_state('binary_sensor.yerel_llm_makinesi', 'on') }}"
then:
- action: conversation.process
data: {agent_id: "{{ ajan }}", language: tr, text: "Salonun sıcaklığı kaç?"}
continue_on_error: true
- stop: Isıtma bitti
# Diğer tetikleyiciler: 30 sn bekle (HA açılışında entegrasyonlar otursun), sonra karar ver
- delay: {seconds: 30}
- if: "{{ is_state('binary_sensor.yerel_llm_makinesi', 'on') }}"
then:
- action: conversation.process # Önce ısıt: ilk soru modeli belleğe yükler
data: {agent_id: "{{ ajan }}", language: tr, text: "Salonun sıcaklığı kaç?"}
response_variable: cevap
continue_on_error: true
- if: "{{ cevap is defined and cevap.response.speech.plain.speech | default('') | length >= 3 }}"
then:
- action: select.select_option
target: {entity_id: select.jarvis_salon_asistan}
data: {option: "{{ hat }}"}
else:
- action: select.select_option
target: {entity_id: select.jarvis_salon_asistan}
data: {option: preferred}
else:
- action: select.select_option
target: {entity_id: select.jarvis_salon_asistan}
data: {option: preferred}Neden böyle:
- Ping 2 dakika kesilince geç, 1 dakika gelince dön. Kısa Wi-Fi kopmalarında hat ileri geri oynamıyor.
- Dakikada bir değil, saatte bir gerçek soru. Ping bilgisayarın açık olduğunu söyler, modelin çalıştığını değil. İlk gün bu kural işe yaradı: ayarları arka arkaya değiştirirken Ollama kilitlendi, bellek 27 GB'a şişti; ping cevap veriyordu, model vermiyordu. Ama her dakika sormak bilgisayarı boşuna yorar; saatte bir yeter.
- Önce ısıt, sonra hattı değiştir. Model bellekte değilken ilk cevap 8–14 saniye; otomasyon bu bedeli kendisi ödüyor, siz asla ödemiyorsunuz. Eve gelince de sessizce bir soru soruyor; kapıdan girip "Jarvis" dediğinizde model çoktan hazır.
- "preferred" seçeneği HA'nın "tercih edilen asistan"ı; Gemini'li hattı tercih edilen yaparsanız yedek otomatik o olur.
3. Haber ver. Telegram'a (ya da telefona) bir satır. Hangi beynin çalıştığını bilmek, "neden bugün farklı cevap verdi" sorusunu çözüyor.
Aynı altyapıyla: kamerayla perde kontrolü, ücretsiz görüntü analizi
Yerel modeli kurduktan sonra şunu fark ettim: evde her görüntü için buluta sormak da gereksiz. Üç örnek.
Perdeler. Salondaki motorlu perdeler kızılötesi kumandayla çalışıyor (Broadlink RM Pro ile HA'dan tetikliyorum). Sorun şu: kumandada sadece AÇ ve KAPAT var, perde kapalıyken tekrar KAPAT göndermek motoru zorluyor. HA'nın hafızası da güvenilmez (biri elle kapatmış olabilir). Çözüm: komut göndermeden önce kameraya bakmak.
Evdeki eski bir dizüstü (Ubuntu + Docker) zaten Frigate çalıştırıyor. Üzerine 80 satırlık bir Python servisi koydum: Frigate'in son karesini alıyor, perde bölgesini kırpıyor, parlaklık/kenar/renk istatistiklerini daha önce etiketlediğim örneklerle karşılaştırıyor (en yakın komşu). Model yok, GPU yok, buluta istek yok; cevap 100 ms.
# analiz.py — özet
@app.get("/perde")
def perde(donem: str): # gunduz | gece | alaca
kare = frigate_son_kare() # http://127.0.0.1:5000/api/salon/latest.jpg
sonuc = {}
for ad, kutu in BOLGELER.items(): # buyuk: (x0,y0,x1,y1), kucuk: ...
oz = ozellik(kare.crop(kutu)) # ort. parlaklık, std, kenar oranı, mavi-kırmızı
durum, guven = en_yakin_komsu(oz, ORNEKLER[donem][ad])
sonuc[ad] = durum if guven >= 0.40 else "belirsiz"
return sonuc
@app.get("/ogren") # Telegram cevabı gelince o kareyi örnek olarak kaydet
def ogren(perde: str, durum: str, donem: str): ...HA tarafında perde betiği şöyle karar veriyor:
# script.perde_hareket (özet)
sequence:
- if: "{{ is_state('input_boolean.' ~ perde ~ '_acik', 'on') == (hedef == 'ac') and not zorla }}"
then: {stop: Zaten hedefte, komut yok}
- action: rest_command.kamera_perde_durum # sunucuya sor
response_variable: kamera
- choose:
- conditions: "{{ kamera.content[perde] == ('acik' if hedef == 'kapat' else 'kapali') }}"
sequence:
- action: remote.send_command # Broadlink: 5-6 sn basılı tut = tam açılış/kapanış
target: {entity_id: remote.broadlink}
data: {device: perde, command: "{{ hedef }}", num_repeats: 8}
- action: input_boolean.turn_{{ 'on' if hedef == 'ac' else 'off' }}
target: {entity_id: "input_boolean.{{ perde }}_acik"}
default: # belirsiz ya da hafızayla çelişiyor → sor
- action: telegram_bot.send_photo
data:
file: /config/www/perde_son.jpg
caption: "{{ perde }} perdesi: kamera emin değil. Ne yapayım?"
inline_keyboard: ["Kapat:/perde_kapat_{{ perde }}, Aç:/perde_ac_{{ perde }}, Bir şey yapma:/perde_yok"]Telegram'dan "Kapat" dersem hem komut gidiyor hem o kare "kapalı" örneği olarak sunucuya öğretiliyor (/ogren). İlk hafta günde 2–3 soru sordu, şimdi hiç sormuyor. Jarvis'e "perdeleri kapat" dediğinizde de aynı betik çalışıyor; emin değilse "Perdenin durumundan emin değilim, sordum" diyor.
Projeksiyon açık mı? HA projeksiyonu sadece Chromecast üzerinden görüyor; HDMI'dan maç izlerken "kapalı" sanıyor ve anons videosunu ekrana basıyordu. Aynı servise /epson ekledim: ekran bölgesindeki kenar yoğunluğu %12'nin üstündeyse ekran açık. HA'da bir REST sensörü 30 saniyede bir okuyor; "izleniyor" koşulu artık buna da bakıyor.
rest:
- resource: http://<sunucu>:8099/epson
scan_interval: 30
sensor:
- name: salon_epson_kenar
value_template: "{{ value_json.kenar }}"
template:
- binary_sensor:
- name: epson_ekrani_kamera
state: "{{ states('sensor.salon_epson_kenar') | float(0) > 12 }}"
delay_on: {minutes: 1}
delay_off: {minutes: 3}Gemini'ye giden görüntüleri azaltmak. "Salonda kimse var mı", "eve kim geldi" gibi sorular hâlâ Gemini'ye gidiyor (ücretsiz katman günde 500 istek). Ama bu işlerin yarısı artık sunucudaki basit analizle hallolduğu için kota hiç dolmuyor. Kural: hız gerektiren ve dil isteyen işler yerel LLM'de, basit görüntü soruları evdeki sunucuda, gerisi bulutta.
Bilinen tuzaklar
- Bellek şişmesi. Ollama'yı ayarları değiştirirken arka arkaya yeniden yüklerseniz 27 GB'a çıkıp kilitleniyor. Çözüm:
pkill -9 -i -f ollama; open -a Ollama. Sağlık otomasyonu bu sırada Gemini'ye geçtiği için evdekiler fark etmedi. - Düşünme modu. Gemma düşünerek daha doğru araç seçiyor ama 5–7 saniye ekliyor. Sesli asistanda kapalı; metin sohbetinde açabilirsiniz.
- Cihaz sayısı. 46 cihazla 16K bağlam yetiyor; 80'in üstüne çıkarsanız 32K gerekir, bellek de 8–10 GB artar.
- Ollama'yı ağa açmayın. Tailscale (ya da WireGuard) şart;
tailscale servetek satır, ACL ile yalnızca HA'ya izin verin. - Pipeline değişince uydu 1–2 saniye sessiz kalıyor. Geçişleri otomasyon yaptığı için pratikte fark edilmiyor.
Sonuç
Yerel model, iyi bir modelle ve doğru ayarlarla buluttan ayırt edilemiyor; kötü ayarlarla "bazen çalışıyor" seviyesinde kalıyor. Hibrit kurulumla ikisini birden alıyorsunuz: mahremiyet ve hız günün çoğunda, süreklilik her zaman. Bende bugün: ısınmış haldeyken 0,7–2 saniye cevap, sıfır API maliyeti, evden çıkmayan konuşmalar, bilgisayar kapalıyken bile susmayan bir asistan ve kameraya bakıp karar veren perdeler.
Donanım tarafı, yani "Hey Jarvis" diyen kutunun kendisi, sonraki yazıda: Kendi Home Mini'ni Yap, Türkçe Konuştur. Sorularınız için İletişim sayfasından yazabilirsiniz.
Kaynaklar: Home Assistant Community — "My Journey to a reliable and enjoyable locally hosted voice assistant", "So You Want to AI in Home Assistant"; Home Assistant Ollama ve Ping entegrasyonu dokümanları; Ollama FAQ (ortam değişkenleri); Ollama GitHub issue'ları (#15539, #17562, #18649); Frigate dokümanı.
Yorumlar
Yorumlar yükleniyor…