
Yazılımın dünyayı yemesi fikri bundan yıllar önce ileri sürülen bir fikir. Ortaya çıkmasından bu yana geçen zaman bu olgunun doğru olduğunu hepimize gösterdi. Bundan çok değil 7-8 sene önce yazılımın ancak tamamlayıcı bir rol oynadığı akıllı ev sistemleri günümüzde yazılımlar tarafından tanımlanıyor ve yönlendiriliyor. Bu yazıda da bu alanın bana göre en güçlü oyuncusu olan Home Assistant ile tanıştırmak istiyorum sizi.
Günümüzde sık kullandığımız bir çok platform kullanıcılara cazip hale gelmek için çoğu hizmeti ücretsiz sunmaya çalışıyor. Elbette biz kullanıcılar açısından bu almak istediğimiz bir servise para ödememek gibi olumlu bir durum gibi gözükse de bu platformlar hizmet sunabilmek için paraya ihtiyaç duymaya devam ediyor. Bu ihtiyacı gidermenin yolu da kimi zaman son derece “yaratıcı” iş modelleri kurmak oluyor.
Mahremiyet algımız yıllar içinde gelişse de iş bu platformların önümüze koyduğu kullanıcı sözleşmelerini ve gizlilik politikalarını onaylamaya geldiğinde hala hoyratça kabul ediyorum tuşuna basmaya devam ediyoruz. Bu sayede çoğu şirket oyun oynarken izlediğiniz televizyon kanalından gittiğiniz restoranlara, sevdiğiniz şarkılardan araştırdığınız ürünlere kadar sizi takip ederek sizin için odaklanmış reklamlar üretmeye ya da verilerinizi paraya dönüştürmenin farklı yollarını aramaya devam ediyor.
Doğaldır ki akıllı ev platformları da bundan nasibini almış durumda. Mahremiyet algımız açısından aslında en iç halkalardan biri olan evimizde kullandığımız akıllı donanımlar hem bu mahremiyetin zaman zaman doğrudan ihlaline ya da suistimale uğrayarak dolaylı yoldan ortadan kalkmasına yol açabiliyor. Muhtemelen bir hevesten öteye çok gitmeyecek olan bazı özellikler evimizde yer alan donanımı üreten şirkete hayat tarzınızla ilgili önemli ipuçları verebiliyor.
Bu yüzden bu tip donanımların mümkün olduğu sürece yerel ağda çalışması ve mahremiyetinizi para kazanma arzusunun önüne koyması son derece önemli.İşte Home Assistant’da tam burada karşımıza çıkıyor.
Home Assistant Kimdir? Nedir? Ve Hatta Yenir mi?
Home Assistant yerelde kontrolü ve mahremiyeti merkezine koyan açık kaynak kodlu bir ev otomasyonu sistemidir. Açık kaynak olması sayesinde tek bir kurum tarafından değil bu alanda ilgili olan herkes tarafından geliştirilebilir. Bir Raspberry Pi üzerinde ya da evdeki mevcut sunucunuzda kolaylıkla kurup kullanabilirsiniz.
Home Assistant bir ev otomasyonu sisteminin temelde üç adet özelliğe sahip olması gerektiğini düşünür. Bunları Gözlem, Kontrol ve Otomasyon olarak çevirebiliriz. Kavramları tek tek inceleyelim:
Gözlem: Home Assistant kendisine bağlı olan tüm cihazların durumunu ve durumlarındaki değişiklikleri sürekli izler. Böylece evinizde herhangi bir cihazın durumunda değişiklik yaratacak bir olay olduğunda bu olaydan haberdar olmuş olur.
Kontrol: Home Assistant, bulutta herhangi bir veri depolamanıza gerek olmadan cihazlarınızı kontrol etmenize izin verir. Çoğu durumda evinizde kullandığınız cihazlar HA’ye bir kez bağlandıktan sonra internet’e çıkmaya ihtiyaç bile duymayabilirler. Home Assistant bu kontrolü mobil uyumlu ve son derece özelleştirilebilir bir arayüz üzerinden sunmaktadır. Bu sayede tam olarak ihtiyacınız olan şeyi yapabilirsiniz.
Otomasyon: Home Assistant evinizde yer alan her akıllı cihazla konuşabildiği için evinizde gözlemlediği bir değişiklik olduğunda bu değişikliğe göre aksiyon alınmasını sağlayabilir. Örneğin karanlıkta eve geldiğinizde ışıklarınızın otomatik olarak yanmasını sağlayabilir ya da salondaki sıcaklık belli bir derecenin üzerine çıktığında klimanızın otomatik olarak devreye girmesini sağlayabilirsiniz.
Ben kendi evimde neredeyse ilk sürümlerinden bu yana Home Assistant kullanıyorum. Kendisini kullanmama neden olan şeylerden birisi evdeki Philps Hue Hub’ımın ilk sürüm olması nedeniyle Hue’ya gelen yeni özelliklerden faydalanamaması oldu. Zaten sahip olduğum bir cihazın desteğinin kesildiği için kullanımında bir fark yaşayacak olmamın getirdiği mutsuzlukla yaptığım aramalar sayesinde HA ile tanıştık. O günden bugüne de aldığım her donanımın HA uyumlu olmasına dikkat ediyorum.
Home Assistant Mimarisi
TL;DR – Okumadım Kardeş Durumum Yoktu
Eğer ilginizi çekmiyorsa bu başlığı atlayabilirsiniz.
Tüm ev otomasyonları aşağı yukarı aynı şekilde çalışmaktadır. Tepede, kullanıcının ayarları yaptığı ve otomasyonları kurduğu bir kurallar dünyası vardır. Ortada yer alan ev kontrolörü cihazlardan gelen verileri toplar ve kurallarla ayarlara bakarak bir aksiyon alınıp alınmayacağına karar verir bu aksiyonu IoT cihazına iletir sonuçlarını da kurallar kapsamında kullanıcıyla paylaşır.
Örneğin evinde bir manyetik sensör, bir ışık sensörü ve akıllı bir lambası olan birini düşünelim. Kullanıcı bu ev kontrolörü aracılığıyla bu cihazların ayarlarını yapar ve sonrasında ise aşağıdaki gibi bir otomasyon kurar.
Manyetik kapı sensörü açık sinyalı verdiği zaman ışık sensöründen gelen ışık düzeyi belirlediğim seviyenin altındaysa giriş ışığını orta parlaklıkta beş dakika süreyle yak.
Bu otomasyonu incelediğimizde kontrolörümüzün üç farklı veriyi sürekli incelediğini göreceksiniz. İlki, manyetik sensörün durumu ve ikinicisi de ışık sensörü ve üçüncüsü de ışığın durumu. Manyetik sensörden gelen veri kapalıdan açığa döndüğünde kural tetiklenecek. Ev kontrolörümüzse aksiyon alıp almamak için kuraldaki şarta bakıp ışığın seviyesine göre bir karar verecektir.
Eğer ışık seviyesi belirlediğiniz limitin altındaysa yani diğer bir söylemle içerisi karanlıksa bu sefer akıllı ev sisteminiz lambanızla (ya da lambanızla iletişim kuran cihazla) iletişime geçecek ve lambanın yanmasını sağlayacaktır. Son olarak ayarladığınız süre sayılmaya başlanacak ve sürenin sonunda lamba tekrar kapanacaktır. Bu basit otomasyonu yapmak için Home Assistant aşağıdaki mimariyi kullanır.

Peki şimdi bu mimariyi birlikte inceleyelim ve neyin nasıl yapıldığını anlamaya çalışalım. Öncelikle Home Assistant Core servisine biraz daha yakından bakalım.
Çekirdek Mimarisi
Home Assistant bir Python projesi ve proje olarak güncel Python sürümüne en yakın noktada gitmeye çalışıyorlar. Bu yazıyı kalem aldığım tarihte bu Python 3.8’di. Proje ilk başladığında aslında bir kişinin evdeki bir kaç cihaza bağlanmak için kullandığı betikler bütününden oluşuyordu ama zaman içinde büyüyerek belli bir noktaya kadar geldi.
Home Assistant’ın en güzel yanı mimariden de göreceğiniz gibi her bir akıllı ev çözümünü ayrı bir entegrasyon gibi değerlendirmesi ve bu sayede yapının sadece sizin kullandığınız cihazlara göre özelleşebiliyor olması. Home Assistant bu entegrasyonların tamamını da kendisi yapmaya çalışmıyor ve açık kaynak dünyasında daha önce bu amaçlarla üretilmiş olan kitaplıkları baz alarak kendi çekirdeği ile bu kitaplıkları iletişime geçirecek ara yüzleri yazıyor.

Çekirdek mimarisini biraz daha detaylı incelediğimizdeyse karşımıza şu bileşenler çıkıyor.
Event Bus: Home Assistant’ın kalbi de denilen bu kısım aslında Home Assistant’a bağlı tüm entegrasyonlardan gelen olayların dinlendiği ya da yeni olayların tetiklendiği kısım.
Evinizde ya da çevrenizde bir değişiklik meydana geldiyse bu bilginin dönüp dolaşıp Home Assistant’a gelmesi (listening) ya da Home Assistant’ın evde bir değişiklik yapmaya karar verip bir olayı tetiklemesi (firing) Event Bus kontrolünde olacak.
State Machine: Durumdan sorumlu daire başkanlığı diyebileceğimiz bu kısım adı üzerinde kendisine kayıtlı olan her bir nesnenin durumunu tutar ve bir değişiklik olduğunda bunu bir olay olarak Event Bus’a iletir.
Service Registry: Event Bus’tan gelen değişiklikleri dinler ve bir servis çağrısı gelirse bununla ilgilenir.
Timer: Zamanlayıcı olarak çalışır ve kadansı belirler. Her bir saniyede bir zamanın geçtiğini Event Bus’a bildirir.
Önyüz ve Frontend İşleri
Home Assistant bence göze hoş gelen kartlardan oluşan bir arayüze sahip. Bu arayüz sisteme ekli tüm donanımlarınızdan bilgi almanızı, yönetmenizi ve geçmişe yönelik veri tutmanıza izin veriyor. Arayüzden kolayca özelleştirebileceğiniz gibi YAML dosyaları aracılığıyla çok daha detaylı ayarlar yapabilirsiniz.
Arayüzün responsive olması sayesinde ister telefonda ister bilgisayarda bu arayüzü kolayca kullanabilirsiniz ayırca hem Android hem iOS uygulamaları ile deneyiminizi zenginleştirebilirsiniz.
Arayüzün nasıl göründüğünü merak ediyorsanız Home Assistant demo sitesini ziyaret edebilirsiniz. Aynı zamanda biraz uzmanlaştığınızda arayüzü özel kartlarla daha da zenginleştirebilirsiniz.
Gerçek Hayatta Nasıl?
Peki bu bilgiler bizim gerçek hayatta ne işimize yarayacak bir de ona bakalım.

Örnekte bir hareket algılanmasından lambanın yanmasına kadar geçen süreç var. Yeşil renkli sensörümüz hareketi algılar ve kablosuz olarak Z-Wawe üzerinden köprüye haber verir. Köprü bu haberi alır ve bağlı olduğu ikili sensör komponetine taşır. Bu entegrasyon sayesinde Home Assistant olayın haberini almış olur. Yaşanan bu durum State Machine tarafında ilgili varlığın durumunu (Örneğin, yatak odası hareket sensörünün) Temiz’den Hareket Algılandı’ya dönüştürür.
Bu durum değişikliği Event Bus tarafından dinlenilir ve bir başka komponent olan otomasyona gönderilir. Otomasyon kendi üzerindeki kuralları kontrol ederek oluşan bu olay karşısında bir aksiyon alınıp alınmayacağına karar verir ve lambayı açması gerektiğine karar verdiği anda ilgili lambanın açılması için servise çağrıda bulunur.
Servis çağrısını alan Service Registry ilgili ışık entegrasyonuna gider ve açılması gereken ışığı ve belirlenmesi gereken özelliklerin bilgisini verir. Işık komponenti bu lambanın hangi entegrasyondan geldiğini bulur kendindeki bilgileri o entegrasyona aktarır ve varsa bir köprü ile ya da doğrudan iletişim varsa onun sayesinde ışığa ulaşışır ve yanmasını sağlar. Bu olay gerçekleştikten sonra bu sefer yukarıdaki süreç ışık için başlar ve hayat devam eder.
Tabi yazılı olduğunda okuması belki 10 saniye süren bu akışın genelde 1 saniyenin altında gerçekleştiğini unutmamak gerek.
Elbette amacı sadece evini akıllandırmak olan bir kullanıcının bunları bu kadar detaylı incelemesine kesinlikle gerek yok. Home Assistant özellikle son zamanlarda aldığı – ve büyük tartışmalara neden olan – bazı kararlarla aslında çoğu konunun arayüzden çözülmesine izin veriyor. Bununla birlikte yazılıma ilginiz varsa ya da kendi akıllı ev çözümlerinizi geliştiriyorsanız mimari sizin ilginizi çekecektir.
Nasıl Kurulur?

Home Assistant kurulum için birden fazla yolu desteklemekte. Bu sayede ihtiyacınız ve Linux bilginize bakarak kurulum için size uygun yolu seçebilirsiniz.
Home Assistant: Eğer bu yazılımı -çoğu kullanıcı gibi- elinizdeki bir Raspberry Pi ya da benzeri tek kart bir bilgisayara kurmak düşünceniz varsa ya da altyapı işleri ile çok uğraşmak istemiyorsanız size bu kurulum yöntemini tavsiye ederim. İndireceğiniz donanımınıza uygun disk imajını bir micro-sd karta yazarak kısa bir sürede Home Assistant kurabilirsiniz.
Bu yöntemin bir diğer avantajıysa zaman içerisinde Home Assistant ile birlikte kullanmak isteyebileceğiniz ek yazılımları eklenti olarak kurmanıza izin veren bir sistemi de içinde getirmesi. Temel olarak tüm bileşenlerin Docker üzerinde çalıştığı yönetimi için ek bir teknik bilgi ya da Linux aşınalığı gerektirmeyen bir yöntem. Yeni başlayanlara benim de tavsiyem bu olacak.
Docker: Eğer evinizde hali hazırda sürekli çalışan bir bilgisayarınız varsa ve bunun üstünde Docker çalıştırıyorsanız HA’yı Docker konteyneri olarak da kurabilirsiniz.
Virtual Environment: Bu yöntem projenin ilk desteklediği kurulum yöntemiydi ve ben hala bu şekilde kullanıyorum. Evde hali hazırda bu işlere ayırdığım bir bilgisayarda Python için kurduğum bir venv içerisinde çalışıyor HA. Benim için avantajı hem el alışkanlığımın olması hem de kendimi rahat hissetmem. Yine de bu yöntemi kullanmak için temel Linux bilginizin olması ve biraz komut satırı kullanmayı biliyor olmanız gerektiğini söyleyebilirim.
Yakın zamanda hem Home Assistant’ın imajının nasıl kurulduğu hem de Virtual Environment’ın nasıl kurulduğunu anlatan birer blog yazısı yazacağım. O zamana kadar siz de kuruluma dair notları İnternet’te kolayca bulabilirsiniz.
Kod Yazacak mıyım?

Kod yazmak benim hep yapmak istediğim ama bir türlü öğrenemediğim ve muhtemelen bundan sonra da öğrenemeyeceğim bir iş. Böyle bir yeteneğim olmadığı için evimi daha akıllı yapmakta zorlanacağımı düşünsem de işin aslı öyle değil.
Home Assistant kural olarak tüm ayarlarınızı metin tabanlı dosyalarda tutmakta. Geçmişte hem Json hem de YAML kullanmalarına rağmen son zamanlarda tüm ayarlar ve frontend işleri için YAML’ı standart haline getirdiler.
O yüzden YAML nedir, nasıl yazılır bilmek sizin için yeterli olacaktır. Elbette herkesin YAML yazmak istememesi ve öğrenme bariyerinin arayüzden yapılan ayarlara göre yüksek olması bir handikap gibi görülebilir. Bunun farkında olan Home Assistant ekibi son üç dört ayını ayarların çoğunu YAML dosyası kullanmak yerine arayüzden yapmayı sağlayacak geliştirmeler yaptı.
Şu anda bir otomasyon oluşturma, evinizle ilgili temel ayarları yapma ve çok kullanılan entegrasyonları ekleme gibi çoğu işi arayüzden yapmanız mümkün. Benim düşüncem 2021 yılı itibariyle Home Assistant’ın tamamen arayüzden kullanılabileceği yönünde. O yüzden istisnai haller haricinde hiç bir kod yazmadan ve bazı işler için YAML dosyalarını düzenleyerek kolayca Home Assistant kullanabilirsiniz.
Ben blog’ta yazacağım yazılarda hem YAML dosyasında yapmanız gereken ayarlardan hem de aynı işi arayüzde nasıl yapacağınızdan bahsedeceğim.
Sonraki Adımlar
Eğer Home Assistant ilginizi çektiyse web sitesine göz atabilir, kendi bilgisayarınıza kurabilir ya da yakın zamanda bloga ekleyeceğim kurulum belgelerini bekleyebilirsiniz.
Okuduğunuz için teşekkür ederim.
Merhaba,
Ben de yavaş yavaş akıllı ev konusunda adımlar atmaya başladım. Fakat home asistant uygulamasında kodlamalar, benim gibi bilgisi olmayanlar için biraz zor gibi geldi. Tabiki biraz araştırma ile herşeyi yapmak mümkündür. Sizden ricam evimde kullandığım Broadlink rm pro, Broadlink S3 hareket sensörü + Hub ve üç adet TC2 ışık anahtarını home asistant uygulamasına ekleme konusunda destek olabilir misiniz? Home Asistant kurduğumda sadece Rm pro cihazını görüyor. Bu cihazlarımı ve rm pro üzerinden kullandığım uzaktan kumanda( TV, klima vs.) apple homekit’e nasıl ekleyebilirim? Desteğiniz için şimdiden teşekkür ederim.
Merhaba,
Cihazlar bende olmadığı için çok yardımcı olamayabilirim ama aktif bir discord grubumuz var. adresinden katılabilirsiniz.