Takipçilerim biliyordur, bir süredir aktif olarak akıllı ev sistemleri ile ilgileniyorum. Zaman zaman Twitter üzerinden yayınladığım resimlerden projemin gelişmeleri görülecektir. Bu makalemde sizlere akıllı ev sistemlerinin önemli bir bileceğini olan Z-Wave için takip edilmesi gerekli adımları paylaşacağım. Hedefimiz, Raspberry Pi üzerinde kurulu OpenHAB 2 üzerinde bir Z-Wave cihazını yapılandırmak.
Akıllı ev sistemi denildiğinde akla gelen uygulamaların başında yer alan OpenHAB, bir binding vasıtasıyla z-wave desteği sunmakta. OpenHAB z-wave binding’i Z-Wave Serial API’si üzerinden sunduğu bu desteği kullanabilmek için öncelikle uyumlu bir Z-Wave Controller cihazınızın olması şart. Ben bu konudaki tercihimi Aeon Labs USB Z-Stick Gen5’ten yana kullandım. Makalemin devamında takip edeceğiniz adımlar bu cihaz ile uyumludur. Bu makalemde Raspberry Pi 3 ve Raspbian üzerinde koşan bir OpenHAB 2 kurulumunuzun olduğunu kabul ediyorum. OpenHAB 2 kurulumunu henüz yapmadıysanız öncelikle bir önceki makalemi okumanızı tavsiye ediyorum.
İşe başlarken öncelikle Raspbian kurulu sistemimizin güncellemelerini yapalım;
sudo apt-get update
sudo apt-get upgrade
Güncellemeyi tamamladığımıza göre şimdi sırada USB Z-Stick Gen 5’in path’ini bulmaya. Sistemimizin cihazı sıkıntısız şekilde tanıdığını teyit etmekte fayda var;
lsusb
Ekran görüntüsünde yer alan komut çıktısında yer alan aşağıdaki satır cihazımızın sistem tarafından tanındığını göstermekte;
Bus 001 Device 004: ID 0658:0200 Sigma Designs, Inc.
Sırada cihazımıza hangi path’ten erişeceğimizi bulmakta. Bunun için cihazımızı raspberry pi’ye taktıktan hemen sonra aşağıdaki komut yardımıyla kernel’den gelen sürücü mesajlarını dinlemeliyiz;
dmesg
Komutun çıktını paylaştığım yukarıdaki ekran görüntüsünde yer alan aşağıdaki satır bize cihazımızın /dev/ttyACM0 path’ine bağlandığını gösteriyor;
[69640.524700] cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device
USB cihazımız, Linux sistemlerde modem olarak (bknz: ACM)sisteme bağlanmaktadır ve varsayılan olarak standart kullanıcıların seri port üzerinde modemde işlem yapma yetkisi bulunmamaktadır. Bu durumda siz de benim gibi OpenHAB 2 uygulamasını sınırlı haklara sahip bir kullanıcı ile (örneğin; root olmayan bir kullanıcı) çalıştırıyosanız takip etmeniz gereken ek bir adım var, kullanıcımızı dialout grubuna dahil etmek;
sudo usermod -a -G dialout pi
Bu komutta yer alan ‘pi’ OpenHAB uygulamasının çalıştığı kullanıcı adıdır. Farklı bir kullanıcı ile çalıştırmanız durumunda buradaki değeri sizin kullandığınız kullanıcı adı ile değiştirmeniz gerekmektedir. Java içerisinden bu port’a erişebilmek için aşağıdaki parametreleri belirtmeliyiz;
-Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0
OpenHAB 2 bunun gibi ek parametreleri EXTRA_JAVA_OPTS ortam değişkeni üzerinden almakta. Dolayısıyla OpenHAB 2 başlatılmadan önce bu değer belirtilmeli;
export EXTRA_JAVA_OPTS=-Dgnu.io.rxtx.SerialPorts=/dev/ttyACM0
Bu işlemi yukarıdaki şekilde komut satırından yapabilirsiniz. Öte yandan benim gibi siz de OpenHAB 2’yi hizmet olarak çalıştırıyorsanız, bu pek pratik bir yol olmayacaktır. Bunun ek pratik yolu, yukarıdaki komutu start.sh dosyasına eklemek olacak.
Sıradaki adımda, eğer şimdine kadar henüz yapmadıysanız, Z-wave binding’i kurmalısınız. Bu işlemi yapılandırma dosyası üzerinden yapabileceğiniz gibi Paper UI üzerinden de yapabilirsiniz;
Kurulum ardından sıra geldi binding’in yapılandırmasında. Bu işlemi Paper UI üzerinden yapabileceğimiz gibi shell üzerinden elle de yapabiliriz.
Shell üzerinden yapılandırma için conf->services klasörü altında zwave.cfg adıyla yeni bir dosya oluşturmalıyız;
nano /opt/openhab2/conf/services/zwave.cfg
port=/dev/ttyACM0 healtime=2 softReset=false masterController=true setSUC = true
Bu dosya içerisinde yukarıdaki ekran görüntüsünde de göreceğiniz üzere daha önceden tespit ettiğimiz cihaz portumuzu eklemeliyiz.
OpenHAB 2’de yapılan son güncelleme ardıdan yukarıda sıraladığım yapılandırma yöntemleri dışında thing tanımlama sırasında da aşağıdaki şekilde bu bilgileri vermemiz mümkün oldu;
Bridge zwave:serial_zstick:controller [ port="/dev/ttyACM0", heal_time=2, controller_softreset=false, controller_master=true, controller_suc=true, security_networkkey="XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX" ]
Burada security_networkkey değerini sizin girmeniz gerekiyor. Bu yöntemde ayrıca bir zwave.cfg dosyası oluşturmaya gerek bulunmuyor.
Kurulum ardından OpenHAB hizmetini yeniden başlatmanızda fayda var;
sudo systemctl restart openhab
Son komut ile ilgili düşmem gereken önemli bir not var; Önceki makalemde kurulum detaylarını paylaştığım sistemim Raspbian üzerinde çalışmakta ve systemd’yi sistem yöneticisi olarak kullanmaktayım. OpenHAB 2’yi de sistem yöneticisine openhab adıyla kayıt ettim. Sisteminizde farklı bir sistem yöneticisi bulunuyorsa ya da farklı bir isimle kaydettiyseniz bu komutu sisteminize uygun yeniden başlatma komutu ile değiştirmelisiniz.
Binding kurulumunu Paper UI üzerinden yapmayı seçtiyseniz yapılandırma için Inbox sayfasına geçmelisiniz;
Paper UI Inbox sayfasında yeni bir cihazı iki şekilde ekleyebilirsiniz; + butonu ya da SEARCH FOR THINGS link’i. Z-Wave Binding’i otomatik aramayı desteklemediği için cihazımızı eklemenin tek yolu + butonu.
Sistemimizde şu an için sadece Z-Wave Binding’i olduğu için listemizda tek bir binding görüyoruz. Yeni Binding’ler eklendikçe bu ekranda yer alan liste uzayacaktır. Binding’imizi seçerek bir sonraki adıma geçiyoruz.
Z-Wave Binding’in otomatik arama özelliği olmadığı için bu ekranda ADD MANUALLY seçeneğini seçmeliyiz.
Açılan ekranda Z-Wave Serial Controller seçilerek devam edilir.
Açılan ekranda Cihaz adı, id’si Seri portu alanlarını doldurduktan sonra Controller is Master ve Controller is SUC seçeneklerini de aktif hale getirmeliyiz. Geri kalan ayarları olduğu şekilde bırakmalıyız. Cihazımız başarıyla eklendikten sonra Configuration –> Things ekranında görebilirsiniz;
Bu işlemler ardından sistemimiz OpenHAB 2 üzerinde Z-Wave kullanımına hazır duruma gelecek. Bir sonraki makalemde sizlere Z-Wave uyumlu bir cihazı nasıl ağınıza dahil edebileceğinizi ve OpenHAB 2 içerisinde nasıl kullanabileceğinizi anlatacağım.
Sayın hocam blogunuzu ilgiyle takip ediyorum ancak Z-Wave desteği olan cihazlar biraz pahalı ve ülkemizde henüz oturmuş bir satış sektörü yok sanki. Biz hobicilere çok hitap ettiğini düşünmüyorum şu an.