Henüz bir milyoner değilseniz ve cebinizde fazla para yoksa ses ile yönetilen bir eve sahip olamayabilirsiniz. Çekmecenizde Raspberry Pi veya Banana Pi gibi bir ürün duruyorsa birazda el beceriniz var ise milyoner olmadan ses ile yönetilen bir eve sahip olabilirsiniz.
Daha önceden Amazon firmasının Alexa asistanı ile kurulan sistemler görmüşsünüzdür. Google da yerinde kalır mı tabi ki kalmaz. Geliştirici kitlesini kaçırmamak için Python Pip üzerinden Google Asistanın nasıl kurulabileceği hakkında bir rehber yayımladı.
Sistemin çalışması için Google üzerinden Google Asistan için bir api anahtarı oluşturmamız gerekiyor. Bu anahtar sayesinde geliştirici cihazımız Google hesabımız ile bağlanmış olacak.
Google Api Anahtarı Alma
-
- Google üzerinde bir proje oluşturun . | Proje Oluştur | Api Etkinleştir | Anahtar Oluştur
- İndirdiğiniz dosyanın ismini client.json olarak değiştirin ve geliştirici cihazınızın içine atın.
Google Asistan kurulumu
Raspberry pi yada geliştirici kitiniz de debian tabanlı bir dağıtım kullanıyorsanız ( Örnek Raspian ) aşağıdaki adımları takip ederek kurulumu yapabilirsiniz.
İlk olarak Google Asistan için gerekli olan Python kütüphanelerini kuruyoruz.
sudo apt-get update sudo apt-get install python3-dev python3-venv python3 -m venv env env/bin/python -m pip install --upgrade pip setuptools
Ptyhon kütüphanemiz kurulduktan sonra Google Asistanı cihazımıza kurmaya başlıyoruz.
cd source env/bin/activate #Google Asistan python -m pip install --upgrade google-assistant-library #Google doğrulama aracı python -m pip install --upgrade google-auth-oauthlib[tool]
Şuanda Google asistan sistemimiz de yüklü fakat hesabımıza bağlı durumda değil. Cihazı Google hesabımıza bağlamak için Google Auth kullanıyoruz.
google-oauthlib-tool --client-secrets $PWD/client.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
Şuanda artık Google Asistan sistemimizde yüklü ve hazır durumda. google-assistant-demo
kodunu girerek Google Asistanın çalışmasını sağlayabiliriz.
Kontrol yazılımı
Google asistanı çalıştırdığımızda OK Google dediğimizde bize cevap verdiğini göreceksiniz. Şimdi bu sonuçlar ile google kütüphanesinde bulunan araçlar ile bir sistem yazılabilir fakat ülkemizde verinin yurt dışına gitmesi gelmesi ve sistemde aktif olması biraz gecikmeye sebep oluyor. Gördüğümüz üzere Google bizim dediğimiz kelimeleri terminale çıktı olarak verebiliyor. Bizde bu çıktıdan yararlanarak bash tabanlı ufak bir if else yazılımı ile sistemde bulunan gpio pinlerini kontrol edebiliriz. Benim sistemimde 2 adet banana pi bulunuyor. Bunlardan 1. si yani ilk aldığım banana pi evdeki interneti kontrol ediyor ve gpio pinlerine röle bağlı durumda . Bu sistem kabloların rahat toplanabileceği bir yerde fakat sesimi algılayamayacak bir konumda.
Google asistanı 2. Bananapi üzerinde kurdum ve oda UTP kablosu ile yerel ağa bağlı durumda . Siz isterseniz kablosuz bir adaptör alarak sistemi sadece güç kaynağı kablosu ile çalışabilecek duruma getirebilirsiniz.
Banana piler arasında iletişim kurmak için netcat kullandım. Siz illa birden fazla geliştirici kiti kullanmak zorunda değilsiniz. Ben sistemin düzenli olması ve stabilite açısından böyle bir sistem kurdum.
Birden fazla banana pi var ise apt-get install netcat expect -y komutu ile iki cihaza da netcat yazılımını ve buffer kapatmak amacıyla unbuffer sistemimize kuruyoruz.
2 Geliştirici kitli sistemde 1. cihaz üzerinde googlestart adlı bash sistemini oluşturalım.
# nano googlestart komutu ile googlestart dosyamızı düzenleyelim ve daha sonra aşağıdaki kodları sisteme ekleyeyim nano googlestart #!/bin/bash cd source env/bin/activate google-assistant-demo | stdbuf -o0 grep text | stdbuf -o0 cut -d"'" -f4 | nc -l 2266 -k
googlestart komutunu çalıştırabilmek için chmod 755 googlestart
ile gerekli izinleri ayarlayalım.
Şuanda 1. Geliştirici cihazımız yani GoogleAsistanın çalışacağı sistem hazır. 1. Sistemden oluşan çıktıları alacak olan ve bunları uygulamaya geçirecek olan sistemi hazırlamada.
İlk cihazdan gelen verileri alan ve bunu gpio kontrol yazılımımıza iletecek olan dinleme sistemi de yine oldukça basit. nano /usr/bin/googleiotstart
komutu ile dosyamızın içine girelim ve aşağıdaki komutları yazalım.
#!/bin/bash #NOT : burada ip adresi Google Asistanın çalıştığı cihazın ip adresini yazın. ipadresi="10.0.0.149" while :; do unbuffer nc $ipadresi 2266 | while read iot; do googleiot $iot; done; done
Programın çalışması için chmod 755 /usr/bin/googleiotstart
komutu ile gerekli dosya iznini sağlayalım.
Şuanda 1. cihazdan Google Asistan çıktıları geliyor ve bunu 2. cihaza aktarıyoruz fakat 2. cihazımız hala bir tepki vericek durumda değil. Bunun sebebi gelen çıktıları yorumlayacak bir sistemin olmaması. Yine bash üzerinde if else ile kendimize göre bir sistem kuruyoruz.
GPİO Kontrol Yazılımı
Gpio yazılmını sisteme yazmak için nano /usr/bin/googleiot
komutu ile yeni bir dosya oluşturuyoruz. Daha sonrasında GPIO pinlerini açma kapa komutlarını ve google dan gelen cevaplara göre yapılacak tepkileri if else ile yazıyoruz. Aşağıdaki kendi kullandığım sisteme sizde birkaç düzenleme ile kendiniz yeni kontrol ekleyebilirsiniz.
#!/bin/bash echo "Google aşağıdaki şekilde anladı" echo "$1 $2 $3 $4" ########## Lamba Kontrolü if [ $2 = light ] || [ $2 = lamp ] || [ $2 = Lamp ]; then #### lamba seçimi Yatak if [ $1 = bed ] || [ $1 = one ] || [ $1 = beds ]; # lamba seçimi Yatak then if [ -z $3 ]; then lamba-kontrol 0 fi if [ $3 = on ]; then gpio write 0 0 fi if [ $3 = off ] || [ $3 = of ]; then gpio write 0 1 fi fi #### lamba seçimi Yatak #### lamba seçimi Masa if [ $1 = desk ] || [ $1 = best ] || [ $1 = test ]; # ışık masa fi2 then if [ -z $3 ]; then lamba-kontrol 2 fi if [ $3 = on ]; then gpio write 2 1 fi if [ $3 = off ] || [ $3 = of ]; then gpio write 2 0 fi fi #### lamba seçimi Masa fi ########## Lamba Kontrolü ################## Tüm labaları kontrol et if [ $1 = Light ] || [ $1 = light ] || [ $1 = Lights ] || [ $1 = lights ] ; then if [ $2 = on ] ; then gpio write 2 1 #lamba 2 gpio write 0 0 #lamba 1 fi if [ $2 = off ] ; then gpio write 2 0 #lamba 2 gpio write 0 1 #lamba 1 fi fi ########################################## #monitor kontrolü if [ $1 = Screen ] || [ $1 = screen ]; then if [ $2 = on ] ; then gpio write 1 1 #Monitor 1 fi if [ $2 = off ] ; then gpio write 1 0 #Monitor 1 fi fi ########################################## ###### Çıkış exit ######
Yine dosyaların çalışması için chmod 755 /usr/bin/googleiot
komutunu kullanıyoruz.
Şuanda sistem çalışır durumda fakat iki farklı cihaz kullanmak istemeyebilirsiniz. Bu durumda ikinci cihazda yazmış olduğumuz GPİO Kontrol Yazılmını birinci cihaz üzerinde yazıyoruz ve google asistanı başlatan uygulamada ufak bir değişiklik yapıyoruz.
#!/bin/bash cd source env/bin/activate google-assistant-demo | stdbuf -o0 grep text | stdbuf -o0 cut -d"'" -f4 | while read iot; do googleiot $iot; done;
Sistem şuanda çalışmaya hazır.
Sistemi çalıştırmadan önce mikrofon ses seviyesini en yükseğe çektiğinize emin olun.
Sistemin denemesi
Bu komutlar ile kendi sesimizi kayıt edip farklı şeyler yapmasını sağlayabilir miyiz ? Bir robotun bizim komutlarımız ile karşılık vermesini yani robotla konuşmamızı sağlayabilir miyiz ?
Programlama becerinize kalmış.
Merhaba, adımların hepsini gerçekleştirdim ve tek raspberry üzerinde işlemlerimi gerçekleştiriyorum fakat en sonda yazdığınız kodu girince syntax error veriyor bunun çözümü nedir yardımcı olur musunuz? Kod:
google-assistant-demo | stdbuf -o0 grep text | stdbuf -o0 cut -d”‘” -f4 | while read iot; do googleiot $iot; done; done
Sonda bir tane
done
fazla. silince sorun düzelmesi lazım. Birde google asistanın son versiyonunu test etmedim. Son versiyonu ile alakalı bir problem varsa deneyip düzeltmem lazım (2 temmuz dan sonra deneyebilirim)Cevabınız için çok teşekkür ederim. Sondaki “done” ifadesini silince “google şu şekilde anladı” şeklinde bir yazı gelmiyor ve gpio pinlerinin durumunu değiştirmiyor. Bu konuda ne önerirsiniz ?
Merhaba.
Google asistana güncelleme gelmiş olabilir. Çıkan veride bir değişiklik varsa sistem yorumlamada sıkıntı yaşıyor olabilir.
Şuanda sınavlar ile uğraştığımdan maalesef bu konuda deneme şuan için yapamayacağım. Temmuzdan sonra denemelere başlayabilirim. Hem o zamana kadar Türkçe desteği (Google I/O 2018 de onaylandı diye biliyorum.) de gelirse onu da test etmiş olacağım.