C.A.F.E. (Karmaşık Otomasyon Akış Editörü), Home Assistant‘a görsel bir “akış” editörü ekleyen bir entegrasyondur. Bu, biraz Node-RED ruhundadır, ancak önemli bir farkla: C.A.F.E. bir yürütme motoru değildir. Home Assistant, otomasyonlarınızı çalıştırmak için tek yetkili olmayı sürdürmektedir. C.A.F.E. sadece görsel şemanızı tamamen uyumlu YAML’ye dönüştürüp bunu Home Assistant sistemine doğrudan kaydeder.
Özetlemek gerekirse, mantığı oklar ile bağlı bloklar kullanarak çizersiniz, ardından kaydedersiniz… ve Home Assistant her zamanki gibi yürütür. Eklenmesi gereken bir Docker konteyneri yok, bakımı gereken bir veritabanı yok, Node-Red’deki gibi zayıf halka haline gelen bir eklenti yok. Projenin öne çıkardığı “sıfır ek yük” vaadi tam olarak budur.

Home Assistant için neden ilginç
YAML’dan hoşlanıyorsanız, nedenini zaten biliyorsunuzdur: sağlam, yerel, öngörülebilir… ancak bir otomasyon büyümeye başladığında, bir anda bir metin duvarıyla karşılaşabilirsiniz. C.A.F.E. tam olarak “makarna tabağı” haline geldiği o anı hedef alıyor. Mevcut bir otomasyonu okuyabilir ve görsel bir harita yeniden oluşturabilir; bu audit, anlama, yeniden düzeltme için çok kullanışlıdır.
Node-RED’den geliyorsanız, rahatlacı yönü şu: bir düğüm mantığı buluyorsunuz, ancak yürütmeyi Home Assistant dışına taşımıyorsunuz. C.A.F.E. arayüzü değiştirir, motor değil; ve istediğiniz zaman yerel editöre geri dönebilirsiniz.
Ayrıca, birçok kişiye hitap eden iki “bonus” var:
- C.A.F.E. görsel arayüzde değişken kavramını daha iyi yönetir; Home Assistant’ın yerel görsel editörü, genellikle bu tür şeyler için YAML ile uğraşmayı zorunlu kılar.
- C.A.F.E., Home Assistant izleri ile entegre olur: hedef, resmi araçlarda hata ayıklamayı sürdürmek, paralel bir evren icat etmeden.

Akıllı “trick”: kilit yok, egzotik format yok
Bu, muhtemelen en rahatlatıcı argüman: C.A.F.E.’yi kaldırdığınızda, otomasyonlarınız çalışmaya devam eder. Görsel düzeni kaybedersiniz (blokların konumları), mantığı kaybetmezsiniz; çünkü o standard YAML olarak kalır.
Ve bu düzeni korumak için C.A.F.E., otomasyon bloğunun variables içinde “zararsız” bir nesne olarak (düğüm konumları vb.) meta verileri saklar. Home Assistant’da bir otomasyonu değiştirebilir ve ardından C.A.F.E.’de yeniden açabilirsiniz: her ikisi de aynı kaynağı düzenler.
Home Assistant’da C.A.F.E. Kurulumu (HACS aracılığıyla)
Önerilen yöntem, özel depo eklenmesiyle HACS aracılığıyla geçer. Resmi README, takip edilecek adımları verir: HACS’de, Entegrasyonlar bölümünde, üç nokta menüsünde, “Özel depolar”, ardından https://github.com/FezVrasta/cafe-hass‘yi entegre olarak ekleyin.

Daha sonra, C.A.F.E.’yi HACS’de bulup (indirin) kurun.
Home Assistant’ı yeniden başlatın, ardından C.A.F.E. entegrasyonunu Ayarlar → Cihazlar ve hizmetler → Bir entegrasyon ekle yoluyla ekleyin.

Kurulduktan sonra, C.A.F.E. Home Assistant’ın yan panelinde bir panel olarak görünür. Bu bir “Lovelace” gösterim değildir; bu kesinlikle yan çubukta bir giriştir.

Kurulum olmadan test etmek mi istiyorsunuz?
Web arayüzü aracılığıyla, uzaktan Home Assistant erişiminiz olduğu sürece, C.A.F.E.’yi herhangi bir şey kurmadan denemek mümkündür.

Pratikte, Home Assistant’ı internet üzerinde sergilemenin düzgün bir şekilde yapıldığını unutmayın (Nabu Casa, ters proxy, kimlik doğrulama vb.). Bu mümkündür, ancak akıllı ev otomasyonu söz konusu olduğunda “yolo” modunu kaçınmak gerekir.
Eğer Home Assistant’ınıza erişim vermek istemiyorsanız (bu tamamen anlaşılabilir), son birkaç haftadır size sunduğum Home Assistant test sunucusunda C.A.F.E.’yi kurdum; bu da, evinizde her şeyi bozmadan test etmenizi sağlar ve uzaktan erişim verme gerekliliğini ortadan kaldırır ;-)
Kullanım: günlük hayatta nasıl kullanıyoruz
C.A.F.E.’ye girdiğinizde arayüz oldukça “akış editörü” gibidir: solda bir düğüm paleti (tetikleyiciler, koşullar, eylemler, gecikmeler, beklemeler…), ortada büyük bir tuval üzerine bloklar bırakırsınız ve sağda her düğümü yapılandırmak için bir özellik paneli bulunur. Yakınlaştırabilir, hareket edebilir ve karmaşık otomasyonlarda gezinmek için bir mini harita bile kullanabilirsiniz.

Tipik bir senaryo şu şekilde görünür: bir tetikleyici (örneğin “hareket algılandı”) eklersiniz, ardından bir koşul (örneğin “gece”) ekler, sonra bir eylem (örneğin “koridor lambasını aç”) koyarsınız ve hepsini bağlarsınız. Ardından, her düğümü açıp varlıkları ve hizmetleri seçersiniz. C.A.F.E., Home Assistant tarafındaki varlıkların zekasından faydalanarak (otomatik tamamlama, API üzerinden durum bilgisi) kimlikleri manuel olarak yazmaktan kaçınmanızı sağlar.
Çok pratik olan bir nokta: mevcut bir otomasyonu açabilir, tuval üzerinde “yerleşmesini” görebilir, blokları hareket ettirerek daha net görüp düzenleyebilir, ardından Home Assistant’ta kaydedebilirsiniz. Düzenlersiniz, kaydedersiniz ve otomasyonu yerel editörde bulursunuz; bu da düzenleme meta verileriyle zenginleştirilmiş YAML içerir!

İçe aktarma, dışa aktarma, hata ayıklama
C.A.F.E. mevcut bir otomasyonu içe aktarabilir ve ayrıca YAML veya JSON içe alabilir, ardından bir akışı JSON olarak dışa aktarabilir. Bu, bir “şemayı” paylaşmak veya karmaşık bir mantığı yeniden yapmadan önce bir versiyonu arşivlemek için kullanışlıdır.
Hata ayıklama tarafında düşünce basit: yürütmenin net bir okumasını korumak. Adım adım göstergesiyle hata ayıklama modu ve koşul sonuçlarını simüle etmek için seçenekler bulabilirsiniz; bu, otomasyondaki izlenen yolu görselleştirir.
Proje tarafında, Home Assistant İzleme Görünümü ile entegrasyon öne çıkan güçlü noktalardan biridir: ne olduğuna bakmak için resmi araçlarınızda kalırsınız.
C.A.F.E’nin gerçekten fark yarattığı somut örnekler
Biraz gerçekçi bir “akşam ışıkları” otomasyonu alalım. Tetikleme: güneşin batmasından hemen önce. Koşul: sadece belirli bir saatin öncesinde (aksi takdirde, çok geç, gereksiz). Eylem: belirli lambaları açmak, ancak belirli bir zaman dilimine bağlı olarak farklı aydınlatma ile. YAML’da bu sık sık “iç içe choose” ve kesişen koşullarla sonuçlanır. C.A.F.E’de bu tür bir mantık bir yol haritası haline gelir: ayırıcıları görebilir, yolları görürsünüz, rahat nefes alırsınız. Ve bu, transkripte gösterilen türde bir örnektir.
Bir diğer çok etkileyici örnek: değişkenlerle senaryolar. Basit bir örnek: bir bilgi (sıcaklık, tarif, özet durum) döndüren bir script çağırırsınız, yanıtı bir değişkende saklar, ardından bu değişkeni sonraki eylemlerde Jinja şablonları aracılığıyla yeniden kullanırsınız. README, “script yanıtları” (response_variable) mekanizmasını ve sonraki düğümlerde Jinja kullanımını {{ variable.champ }} açıklar.

Ve kurulumcular veya gelişmiş kullanıcılar için: döngüler, geri dönüşler veya doğrusal olmayan mantıklar söz konusu olduğunda, C.A.F.E. gerektiğinde “optimize edilmiş” bir derleme duyurur; bu, ihtiyaç olduğunda bir “durum makinesi” yapısı üretebilir ve aynı zamanda %100 Home Assistant uyumlu kalır.
Sınırlamalar ve önlemler (çünkü evet, bu bir beta)
Proje “yıkıcı olmayan” olarak sunulmuştur, ancak beta aşamasındadır ve sık sık düzeltmeler yapılmaktadır. İlk kural: önemli şeyleri değiştirmeden önce otomasyonlarınızın bir yedeğini alın.
İkinci kural: kritik bir otomasyon (alarm, ısıtma, güvenlik) üzerinde yavaş yavaş ilerleyin. Önce basit bir otomasyonu test edin, YAML’ı öncesi/sonrası karşılaştırın, izleme kaydını kontrol edin, ardından karmaşıklığı artırın. Bu biraz “bir evi bir seferde tüm duvarları yıkarak yenilemeyin” yöntemidir (ve gelecekteki huzurunuz size teşekkür eder!).
Üçüncü kural: otomatik düzenleme ve görsel yeniden oluşturmanın, çok karmaşık bir YAML üzerinde %100 mükemmel olmayacağını kabul edin. Proje bunu kabul etmekte: karmaşık manuel YAML’ın içe aktarılması, bazı pürüzlere sahip olabilir.
Şimdi benimsemeli miyim?
Eğer yerel editörden rahatsanız ve otomasyonlarınız basit kalıyorsa, C.A.F.E. “zorunlu” değildir. Ancak, eğer her yöne giden senaryolarınız varsa, uzun YAML’lar okumayı sevmiyorsanız veya Node-RED’in görsel rahatlığını seviyorsanız ama ikinci bir motor istemiyorsanız, C.A.F.E. birçok açıdan faydalıdır: görsel, yerel, ek yük yok ve uzun vadede bir tuzağa düşmeden standart Home Assistant otomasyonlarında kalıyorsunuz. Buradaki kullanım ise kesinlikle benimsenmiştir!




