Raspberry Pi + OpenHab 2 + Z-Wave

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 update' komutu ile güncel paket listesi ile bağımlılıkları bilgilerini alın

sudo apt-get upgrade

'sudo apt-get upgrade' komutu ile mevcut paketlerinizi güncelleyin

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

'lsusb' komutu ile sisteminize bağlı USB cihazlarını listeleyerek Z-Wave cihazınızı kontrol edin

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

'dmesg' komutu ile kernel sürücü mesajlarını dinleyerek cihazınızı path'ini bulun

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

'sudo usermod -a -G dialout pi' komutu ile kullanıcıyı dialout grubuna dahil edin

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.

start.sh dosyasına extra java seçenekleri eklenmeli

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;

paper-ui-binding

 

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

zwave-cfg-dosyası

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

OpenHAB 2 hizmetini yeniden başlatın

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ı üzerinden yeni cihazınızı ekleyebilirsiniz

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.

OpenHAB 2 Binding seçim ekranı

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 ADD MANUALLY seçeneğini seçmeliyiz

Z-Wave Binding’in otomatik arama özelliği olmadığı için bu ekranda ADD MANUALLY seçeneğini seçmeliyiz.

Bu ekranda Z-Wave Serial Controller seçilmelidir

Açılan ekranda Z-Wave Serial Controller seçilerek devam edilir.

OpenHAB 2 Z-Stick ayarları

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;

OpenHAB 2 cihaz listesinde yeni eklediğimiz Z-Stick görülebilir

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.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

1 Yorum

  1. Hakan GÜLEN   •  

    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.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir