GOOGLE ASİSTAN (GA) ve ALEXA programlarıyla EV OTOMASYON ve KENDİ ASİSTANIMIZI YAPMAK.

GOOGLE ASİSTAN (GA) ve ALEXA programlarıyla EV OTOMASYON kontrol etme ve MIT APP INVENTOR ile KENDİ ASİSTAN PROGRAMIMIZI YAZMA.

Bu yazımda ALEXA ve Google asistan (GA.) ile ev otomasyon kontrolünü anlatacağım. Tabii ki pahalı ve direkt smart (akıllı) sistemlerin, otomatik tanınan cihazları anlatmayacağım.

SMART denilen akıllı cihazları (SONOFF benzeri şekilde) ESP8266-01 modülünü kullanarak nasıl asistan programlarıyla kontrol edebiliriz. Bunu anlatmaya çalışacağım.

Tabii ki öncelikle bunların mantığını çözmemiz gerekir. Bu mantık aslında basittir fakat ara bağlantı için kullanılan yerler sizden para isteyebiliyorlar. Ben bu ara bağlantı yapan sitelerin bedava özelliğini kullandım. Tabii ki deneme için yetse de devamlı kullanacaksanız cihaz sayınız artacaksa uygun bir ücret vermeniz gerekebilir.

Bu siteler IFTTT ve SINRICPRO siteleridir. Bu sitelerle nasıl bağlantı kuracağınızı ve ayrıntılı ARDUINO ESP01 programlarını yazıda bulacaksınız.

Fakat önce otomasyon mantığına bakalım.
Otomasyon 2 yönlü trafik gerektirir. Ev otomasyonu da bu bağlamda komutların uygulamasını sağlayan röleler, motorlar vs. ve algılama işi için sensörler ile yapılır. Çoğu smart (akıllı)  cihazınız sadece komut uygulayan kısmında olsa da, akıllı sensörler de piyasa da mevcuttur.

Bizim yapmamız gereken ev otomasyonunda, hem röleler hem de sensörler olmalı.
Yazımda 2 adet geri bildirim göreceksiniz. Bunlardan biri Little nodes denilen site ile yapılmakta ve diğer geri bildirim ise google E-tablo script kodu ile yapılmakta.
ALEXA, little nodes sitesindeki alarm bildirimlerine erişebiliyor. Fakat GA. (Google asistan)  Bu siteden bilgi alamamaktadır. GA için e-tablo kullandığınızda ALARM seviyesine çıkıldığında Script kodu e-mail yollar. Bu şekilde e-mail bildiriminiz sayesinde evdeki durumdan bilgi almış olursunuz.
Tabii ki GA nın da akıllı sensör firmalarıyla bağlantıda olduğunu ve bu tip sensörlerle bilgi alabildiğini söylemeliyim. Fakat biz kendi denememizi yapacağımız için E-tablodan faydalanabiliriz.

Öncelikle bir ev otomasyon için gerekli olanları özetleyelim:
1-) Markalı, smart home denilen Akıllı EV cihazları gerektirir. ( Fakat bu tip cihazlar pahalı olabileceğinden kendimiz ESP8266-01 ve diğer ESP çeşitlerini kullanarak akıllı ev cihazı yapabiliriz.)
2-) Kontrol programı: Bu program ses ile kontrol edebildiği gibi elle kontrol programı da olabilir. Bu tip programlar aldığınız akıllı ev cihazları için verilebildiği gibi bu tip cihazlar için yapılan genel amaçlı otomasyon programları da mevcuttur. ( Burada da bu tip programları kullanabileceğimiz gibi APP INVENTOR ile kendi programımızı yazabiliyoruz. )
3-) Bir MQTT broker denilen, internet üzerinde bilgi yollayıp alabileceğimiz Web sitelerinden hesap alıp, otomasyon programlarının internette ev değişkenlerini tutabilmesi ve değiştirilebilmesini sağlarız. ( Burada da seçeneklerimiz çeşitlidir. İstersek paralı, parasız MQTT alanı alırız. Ya da FIREBASE üzerinde BEDAVA database (Veri Tabanı) uygulamasını kullanırız. Ya da Google sheet (e-tablo) gibi bir uygulamayı kullanabiliriz. )
4-) Bunun yanı sıra sesli asistan programları, her ne kadar markalı akıllı ev cihazlarınızı direkt kontrol edilebilse de kendi cihazlarınız için IFTTT, SINRIC ve LITTLE NODES gibi web sitelerinden yardım almanız gerekecektir. Bu tip siteler internette fazlasıyla mevcuttur.
Bu siteler, birkaç deneme yapacağınız FREE hesaba sahip olsa da, daha fazla yetenek isterseniz PARALI olarak yükseltmenizi isteyecektir.
Bunlardan IFTTT size 5 komut için bedava erişim sağlamaktadır. Daha sonrası için 2$/AY ücret istemektedir. SINRIC ise 3 tane CİHAZ için bedava erişim sağlamakla beraber 3$/YIL gibi düşük bir fiyata daha fazla yetenek sunuyor. LITTLE NODES ise asistan uygulamalarınıza bildirim vermenizi sağlar.
Bu ne demek derseniz evinizde bir anda bir sensör, çok yüksek sıcaklık gösterir. Evde değilseniz rutin kontrolde fark edebilirsiniz. Fakat LITTLE NODES kullanıyorsanız ALEXA ya bildirim gönderir, anında haber alabilirsiniz. Bu geri bildirim programı ALARM durumları için çok faydalı olacaktır.

Bütün bunların yanı sıra internet üzerinde paralı veya parasız birçok kontrol sitesi bulabilirsiniz. Hepsinin yetenekleri farklı olabilir. Fakat benim bulduklarımın, genel yapılandırma için yeterli olacağı düşüncesindeyim.

Ev otomasyonu, illa ki bu şekilde yapılır diyemem.
Google e-tablo ile firebase ve PHP ile nasıl internet üzerinden evinizi kontrol edebileceğinizi, önceki yazılarımda anlatmıştım.

E-tablo ile ev kontrolü yazımı okuyabilirsiniz.

Firebase database( veri tabanı) nasıl açılır ve kullanılır yazımı okuyabilirsiniz.

PHP ve postman ile dünyadan evinizi kontrol etmek yazımı okuyabilirsiniz.

Bu yazım da ise Asistanları kullanarak nasıl ev otomasyon sistemi yapılacağını göstereceğim.

Bu yazıya konu olan ALEXA ve Google Asistan programlarınızı telefonunuza kurabilirsiniz. Google asistan programı android 6.0 sistemine kurulmakla birlikte, ALEXA için daha yüksek işletim sistemi gerekecektir.
Ayrıca Küçük bir bilgi vermek istiyorum. Bu bilgi kendi tecrübeme göre bir karşılaştırmadır.
2 asistanın da avantaj ve dezavantajları olabiliyor.
Kullanım şekline göre ALEXA nın google asistana göre bence üstün tarafı menülerle kendi komutlarınızı oluşturmanızı sağlayabilmesi ve çeşitli varyasyonlarla detaylı ve kolay kullanımını sağlaması. Bu bana ayarlama olanağı verdiği için kendimi daha rahat hissetmemi sağladı.
Google asistan ise kimine göre daha kolay gelebilir. Hiç ayar yapmadan cihaz ekle ile direkt kullanmaya başlamasıdır. Fakat bu da kullanıcıya seçenek bırakmadığı için kolay kullanım ama tam hakimiyet vermiyor.
Google asistan bunun yerine bir de cihazlarınız için ayarları yapabileceğiniz ek program google HOME uygulamasını yükleyerek daha fazla hakimiyet sağlamanıza olanak verir. Fakat ben Google HOME kullanmak istemedim. Çünkü elimde bilinen markalı akıllı ev cihazları yok. Bundan dolayı gerekli görmedim. IFTTT gibi bağlantılar için google asistan rahatlıkla yetiyor.

Alexa’nın dez avantajı İngilizce kullanması ve bizim telaffuzumuz iyi değilse hata yapması. Tabii ki bu zamanla düzelecektir. Avantajlarının yanında bu küçük bir dezavantaj olabilir.
GA da ise tamamen Türkçe kelimeler seçiyorsunuz. Konuşma rahatlığıyla bunu yapabiliyorsunuz. Tabii ki onda da bir sorun var. Mesela cihaz ismini direkt kullanıyorsanız Lamba Aç ve Lamba kapat diyorsunuz. Şayet Sanal isim olarak cihazı tanıtıyorsanız, lambayı aç diyorsunuz lambayı kapat diyemiyorsunuz. Yine AÇ kelimesini kullanıyorsunuz. Cihaz ismi olarak söylediğinizde Cihaz açıldı diyor. Fakat Sanal isim kullanılıyorsa Cihaz etkinleştirildi diyor. İlginç fakat bir dezavantaj oluyor.

Tabii ki bu sadece SCENE denilen lakap dediğimiz sahte cihaz isminde bu şekilde oluyor. Fakat Gerçek cihaz adı olduğunda LAMBA 4 AÇ ve LAMBA 4 KAPAT diyerek komutu uygulatabiliyorsunuz.

Bu da GA nın bir uyumsuzluğu. IFTTT bağlantılarında ve sinricpro nun scene denilen kısmında bu HATAYI YAPIYOR.
GA aynı zamanda daha çok Türkçe sesler duyduğu için ve Türkiye lokasyonlu olduğumuz için ve bir de telaffuz sorunumuz olduğundan İngilizce olarak anlasa bile bol miktarda hata yapıyor. Türkçe kelimelerde pek hata yapmıyor.

ALEXA,
SKILL&GAMES kısmından LITTLENODES ve SINRICPRO seçilerek bu sitelere bağlantı için izin verilir. IFTTT ise cihaz ekle kısmından seçilir ve izin verilir.
Sonrasında IFTTT ve SINRICPRO cihazlarını otomatik tanısa bile GA gibi değil. Sizin Routine hazırlamanızı ister.

ROUTINE Hazırlama:
Aşağıdaki resimlerdeki menülere gidip rutin ekle dediğinizde önce rutin ismini girersiniz. Sonra ise hangi komutu söyleyecekseniz bunu yazarsınız. Sonrasında ise ADD ACTION kısmından SKILL ya da DEVICE seçeneğini seçersiniz. Bu cihazlar zaten otomatik tanındığı için size getirilecek. Şayet yeni bir cihaz isterseniz listeden onu da seçebilirsiniz. Mesela IFTTT den seçecekseniz işaretlediniz orada bağlı olan cihazı seçebilirsiniz. Ya da SKILL kısmından seçecekseniz sinricpro cihaz ya da scene isimlerinden seçebilirsiniz. Bu da tamamlandıktan sonra kayıt edilir. Size hem manuel hem de sesle kumanda edebileceğiniz bir imkan verecektir. Artık yazdığınız komutu söylediğinizde alexa istediğiniz rutini çalıştıracak ve rutin içerisindeki işlemi yapmak için IFTTT yi tetikleyecektir.
Aşağıdaki resimler size yardım edecektir. (Ayrıca videoda bu anlatılmaktadır)

Sinricpro, IFTTT, littlenodes gibi sitelere ekleme yaptıysanız alexa size yeni eklendi diye bilgi verir.

 

Buradan rutin ya da Skill menüsüne geçilir.

 

Bu resimde SKILLS dediğimiz bağlantıların yapıldığı gösteriliyor.
Hazırlanmış rutinler burada görünür. sağ üstteki + işaretiyle ekleme yapılır. ayrıca buradaki mavi semboller elle kumanda butonudur. Test için kullanılabilir.
Resimde Littlenodes rutin hazırlama var. burada alexa say kısmını kullanıyoruz. çünkü bir cihaz değil. Bu sadece sesle alarm vermek içindir.
Bu resimde bir cihazın IFTTT ile nasıl ayarlandığı görülüyor. Burada IFTTT action kısmında bulunan komuttur. Bu komutu ise yandaki mavi resimde tetikleme için kullanıldığı görülüyor.
IFTTT de alexa dan gelecek TETİKLEME kısmıdır. Alexa bu tetikleme bağlantısını kurarsa IFTTT 2. blokta hazırladığınız işlemi uygulayacaktır. Bu işlem yukarıda açıklanmıştır.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bunların yanı sıra başlamadan önce

 https://ifttt.com/

https://sinric.pro/

https://www.littlenodes.com/index.php

https://firebase.google.com/    (Google hesabınız yeterli olacaktır. )

https://docs.google.com/spreadsheets  (Bunun içinde google hesabınız yeterli olacaktır.)

Hesap almanız ve ayarlarını yapmanız gerekiyor. Alexa ve GA bu sitelere bağlanırken sizden bağlantı izni için şifre girmenizi ister. Bu hesaplarınızı orada kullanacaksınız. 

Bunları yaptıktan sonra karar vermeniz lazım.
Bilgilerinizi firebase realtime database üzerinde tutacaksanız ki en uygun görebildiğim budur. Database oluşturup evdeki cihazlarınız için kontrol bilgilerini oraya girmeniz yeterli olacaktır. Bu tip bir database size sadece bilgiyi kayıt ve değiştirme olanağı sunar. Bunun dez avantajı ise anında ALARM verebilecek durumu kontrol edememesidir.

Firebase database açma ve kullanma yazımı okuyabilirsiniz.

Bunun yerine Google E-tablo kullanılırsa, evinizden gelen veri yüksek olduğunda telefonunuza ya da telefonunuzun mail hesabına bildirim yollayabilmesine olanak sağlayan SCRIPT programının
e-tablo ile hareket edebilmesidir. Tabii ki firebase’in bu dezavantajını LITTLE NODES ile ortadan kaldırabilirsiniz. Ev cihazınız direkt olarak asistan programlarınıza LITTLE NODES ile bildirim verebiliyor. Bu sadece ALEXA da çalışıyor.

O zaman şöyle bir soru aklımıza gelir. Bağımsız olarak asistanlar database üzerindeki değişken veriyi değiştiriyor. Fakat direkt olarak evdeki cihazın bundan nasıl haberi olacak?
 Tabii ki ESP8266-01 modülleri burada devreye giriyor. Her daim database kontrolü yaptığından oradaki değişikliği fark edip kendisini yapılan değişikliğe göre uyarlar. Böylece komut uygulanmış olacaktır. İsterseniz komut uygulandıktan sonra geri bildirim verebilir. ( Burada kontrol hızını abartarak çok küçük yaparsanız site sizi uyarır ve bağlantı yapmanıza engel olur. Komut sonrasında 3-5s beklemek yerinde olacaktır.


Sistemin çalışma mantığı resimdeki gibidir. Siz de fark edeceksiniz. ESP arada bir cihaz gibi devamlı veri alışverişi yapıyor. Şayet ESP32 gibi bol giriş çıkış ucu olan bir modül kullanılırsa, bu giriş çıkış pimlerinin kontrol ettiği cihaz ya da sensörlerin bilgilerini, devamlı olarak database üzerinde kontrol eder veya değiştirir. Şayet ESP8266-01 kullanılacaksa fazla giriş çıkış pimi olmadığından kısıtlı bir çalışma olacaktır. Bunun yerine ARDUINO ile ESP01 bağlantılı çalışırsa Arduinonun gönderdiği veya ihtiyaç duyduğu verileri internete gönderip internetten alabilecektir. O zaman daha fazla bir cihazı kontrol imkanı verecektir.
Ayrıca Bu yöntemin avantajı hem wifi, hem bluetooth hem de RF cihazlarınızla ARDUINO ile ev içinden rahat erişim sağlanacaktır. ( ALEXA, ECHO cihazı sayesinde hem wifi hem de bluetooth cihazlarınıza erişim sağlamaktadır. Bundan dolayı bu tip cihazlar karışık olarak kullanılabilmektedir) Sizler de Arduinoyu bir ECHO cihazınız gibi ayarlayıp kullanabilirsiniz.

Asistan programları mutlaka internet bağlantısı ister. Bu bağlantı kurulmazsa sizin sözlerinizi bile anlayamaz. Cihaz bilgileri internette olduğundan zaten erişemeyecektir. Bazı yerlerde önceden kurulmuş alarmlar çalışır diyor ama güvenilir olmadığı da söyleniyor.

Bütün bunları kenara bırakırsak kendimiz ses ve elle kontrol edebileceğimiz bir küçük asistan programı yazabiliriz. APP INVENTOR programı bunu bize sağlıyor. Hem de internet olmaz ise ev sunucusu oluşturduysanız internet kesilse bile ev sunucusu üzerinden yaptığınız cihazları elle kontrol edebilirsiniz. İnternet kesilse bile cihazlarınız ev sunucusuna otomatik ayarlı olacağından elle kontrol için ev sunucusuna bağlı cihazlarınızı veya bluetooth gibi cihazlarınızı telefonunuzdan kontrol edebilirsiniz. ( Tabii ki Bu bilgi denenmedi TEORİK olarak konuşuyorum. )
Bunun için ESP8266 modülünüzü ev sunucunuza bağlamanız yeterli olacağını düşünüyorum. ( Daha önce REPEATER uygulaması yapmıştım. İsterseniz evinizdeki cihazlara soft ap yi kullanarak erişebiliyorsunuz isterseniz internetteki bir sayfaya STA modunda ulaşabiliyordunuz. )

ESP8266 REPEATER yazımı okuyabilirsiniz.

Şimdi ise IFTTT ayarlarına bakalım. ( Videolarda pratik olarak da görebileceksiniz. )

IFTTT programı SinricPRO ya göre daha kötü olsa da bazı avantajları yok değil. Sinricpro da cihazlara direkt olarak ulaşabildiğiniz gibi scene denilen ek erişim yapılmış bununla da cihazlara erişebiliyorsunuz. Mesela cihazı aç kapat demek için sadece turn on turn off demek yetiyor. Fakat IFTTT sitesinde Her komut için 1 bağlantı harcamak zorundasınız. Yani 1 cihaza 2 buton diye düşünebilirsiniz.
Tabii ki bu da barındırma için harcadığınız paranın 2 kat olması demektir.
Fakat IFTTT nin de avantajı var. İsterseniz firebase isterseniz e-tablo ve değişik birçok yere bağlantı kurmanızı sağlar.

Bu da yabana atılacak bir avantaj değildir.

IFTTT sitesinde 5 buton ücretsiz hakkınız var. Her butonda 2 bölüm var.
1. Bölüm Asistan ile tetikleyeceğimiz bölüm.
2. Bölüm ise tetikleme geldiğinde ne yapılacağını söylediğimiz bölümdür.

Bu bölümler kolaylıkla hazırlanabiliyor ve hemen aktif hale geliyor. Asistanın algılamasını istediğiniz kelimeyi tetikleme kısmına yazıyorsunuz. 2. kısım ise webhook denilen kısım firebase ya da e-tablo ile bağlantı kurabilirsiniz. Ayrıca bunları elle test edebileceğiniz bölümler de mevcut. Bununla birlikte IFTTT sitesine girince bol miktarda bağlantı butonu görebilirsiniz. Bunları da kullanmanız mümkün. Tabii ki 5 butondan sonrası paralı. Bu biraz dezavantaj gibi. Ayarlarını ise videoda görebilirsiniz.

SINRICPRO sitesinde çalışma şekli:
Sinricpro da ise 3 cihaz hakkınız ücretsiz olarak var. Bu cihazları oluşturduğunuzda Asistanlar otomatik tanıyor. Ayrıca Scene oluşturduğunuzda bunları da otomatik olarak tanıyor.

Ben Alexa için cihaz isimlerinin 2 tanesini İngilizce yaptım. 1 tanesini ise GA için Türkçe yaptım.
Ayrıca GA için SCENE kısmında Türkçe isimlerle bu 3 cihaza erişim ayarladım. Bu ayarlamaları zaten ilgili videoda görebileceksiniz.

Bu şekilde ALEXA ile kontrol edeceksem “turn on cihaz ismi” diyorum ya da “turn off cihaz ismi” diyorum.
GA da ise SCENE kısmında “lamba 1 aç” komutunu kullanıyorum. GA “lamba 1 kapat” olarak kabul etmiyor. (yukarıda açıkladığım sebeplerden dolayı) Söndürmek için de AÇ kelimesini kullanmanız gerekiyor.
Yani lamba 1 aç dediğinizde lamba 1 açılıyor. Tekrar lamba 1 aç dediğinizde kapanıyor. ( Bu sadece scene ve IFTTT ve skills kullanıldığında oluyor. Sinricpro da cihaz ismi tanımladığınızda “aç” ve “kapat” diyebiliyorsunuz. ) Tabii ki SCENE kullanıyorsak komut 2 ye bölünmüş oluyor. 2 tanesi de aynı cihazı kontrol edecektir.
Ben burada aynı ismi kullanamadığım için LAMBA 20, LAMBA 21 gibi kullandım. Manası ise LAMBA 2 yi kapat dediğimde 20 dediysem 0 kapat anlamına 1 aç anlamına geliyor.
Bundan dolayı lamba 20 =kapat, Lamba 21=aç anlamında kullanılıyor. Tabii ki bu sadece SCENE kısmında böyle kullanılıyor. Cihaz ismi olduğunda sorun yok. Sadece ismini söylemeniz yeterli olacaktır. ( Bu mantık videoda anlatılmıştır. )

Bu tip farklılıklar olduğu gibi başka farklılıklar da var.
Mesela ALEXA ya ALARM durumunda geri bildirim verebiliyorsunuz. GA da bunu hala bulamadım. Bilen varsa bana da söyleyebilir. ALEXA little nodes sitesiyle birlikte kullanıldığında Evde bir alarm durumu olduğunda little nodes sitesine bilgi gönderip evde bir şeylerin yolunda olmadığını söyleyebilirsiniz.
Fakat GA ve IFTTT kullanarak E-tablo kullanıyorsanız, E-tablonun script kodlaması ile kendinize ALARM için Mail gönderebilirsiniz. Bu GA dan bağımsız olsa da durumu eşitler.

Bu yazımda kullandığım arduino programları şunlardır.
( Bu arada ESP01 modülünün 3.3V kullanıldığını ve diğer ledin 5V luk bir gerilimle beslendiğini. Ayrıca TTP223 dokunmatik anahtarın 3.3V ile çalıştırıldığını söylemeliyim. Bundan dolayı 5V-3.3V arası direnç ile seviye dönüşümü yapmıştım. Bazı videolarda 3. bir kart var. Bu kart sadece seviye dönüşüm kartıdır. Daha sonra devreyi sadeleştirdim ve son durumda seviye dönüşüm kullanmadan video çektim. Videolarda bunu görünce farklı devre olarak algılamayın. Devre hepsinde aynı devredir. Ayrıca devre fotoğrafında Arduino NANO görünüyor ama O KULLANILMIYOR.)

1-) Code_NodeMCU_Google_Alexa_SinricPro_4Relay_Switch: Bu program esp01 kullandığım için 2 cihaza kadar kontrol ediyor. Fakat programın kendisi 4 cihaza göre hazırlanmış. Sizler IO pinleriniz fazla ise bunları çoğaltabilirsiniz. Ben ayrıca 2 adet anahtar kullandım. Normalde ESP01 de 4 port kullanabilirsiniz. Bunların 2 tanesi TX ve RX pimleridir. Ben de bu pimleri kullanarak 2 anahtar 2 led kullandım. Yani cihazları asistan ile kontrol edebildiğiniz gibi aynı zamanda duvardaki anahtardan da kontrol edebilirsiniz. Devrede 1 adet pushbutton var. Bu pushbutton ile basarsanız on bırakırsanız off yapıyor. Tabii ki bu durumda bastığınız şekilde kalamayacağı için bizim burada normalde lamba anahtarı gibi bir on off anahtar kullanmamız lazım. Ya da dokunmatik olsun istersek TTP223 gibi bir dokunmatik sensörü TOGGLE moda çalıştırabiliriz. Devre de bunu da görmektesiniz.

Burada şunu hatırlamanız gerekiyor. GPIO-0 asla input olarak ayarlanmamalı. Çünkü GND ye bağlı olarak enerji verildiğinde ESP01 programlama moduna girer. Bundan dolayı ÇIKIŞ olarak kullanılmalı. Şayet INPUT olarak kullanılacaksa mutlaka PULL UP direnci konularak enerji verilirken HIGH durumunda olması sağlanmış olmalı. Şayet OUTPUT olarak kullanacaksanız mutlaka direnç ile çıkış verilmeli yoksa GND ye yakın bir gerilim oluşursa yine programlama moduna döner.

Devrede kullanılan TTP223 Dokunmatik sensörün çalışması nasıldır?
Merak eden arkadaşlar bu yazımı okuyabilir.

Ayrıca bu devre tüm videolarda kullanılmıştır. Tüm kontrol programları bu şekilde kullanılmıştır. 

2-) esp01_http_client_alexa_php: Bu program ise LİTTLE NODES sitesine bağlantı kurarak ALEXA ya alarm geri bildirimi veriyor. Bu arduino program, https ye iletişim kuramadığından kendi web sitemde PHP dosyası oluşturdum ve bu program https ye bağlantı kuruyor.
Aslında https://www.littlenodes.com/api/alexa/triggeralexa.php?email=xxx&apikey= sizin api keyiniz olarak iletişim kurabilirsiniz.
Bu siteden erişim ayarlayabilirsiniz. https://www.littlenodes.com/home.php
Ayrıca littlenodes_direct.ino programı ile direkt olarak https linkini kullanabilirsiniz.
2 ayrı program verdim. Birisi işinizi direkt olarak görür fakat bazen güvenlikten dolayı siteler sorun yaratabiliyorlar. PHP olanı ise bir çözüm yolu olarak verdim. PHP olarak program yazmanıza gerek kalmadan, bağlantı linkini POSTMAN programı ile çalıştırdığınızda O size PHP dosyanızı veriyor.

POSTMAN programı linklerin testinde kullanılabilir. Buradan download edebilirsiniz. Aynı zamanda PHP kod örneklerini buradan alabilirsiniz. BU yazımda da nasıl kullanıldığını bulabilirsiniz.

3-) Firebase kısmı biraz karışık gibi dursa da sitemde oluşturduğum PHP dosyaları ile çok kolay bir şekilde iletişim kuruyorum.
ESP01_http_client_alexa_php programında sadece link değiştirerek bu programı kullanabilirsiniz. Ya da sadece kontrol edip cihazı çalıştırırım derseniz WiFiClientInsecure_firebase arduino programını kullanabilirsiniz. Bu program sadece firebasedeki değişkeni kontrol ediyor.
Fakat data değiştirme dediğinizde FİREBASE ile ilgili birçok fikir ve kütüphane bulabilirsiniz. Tabii ki hangisi çalışıyor bilemiyorsunuz. Çünkü ESP01 ile denediğim kütüphanelerde başarısız oldum.
Halbuki daha önceki yazımda sorun yoktu. O zamandan bu zamana Firebase sitesi güvenliği yenilemiş. Kimisi çalıştığını söylüyor, çalışmıyor. Kimisi de finger print denilen parmak izine ihtiyaç duyuyor diyor fakat bu da zaman içerisinde değişebiliyor.
Benim bulduğum en iyi yol bir PHP dosyasına veriyi göndermek ve oradan firebase sitesine göndermek oldu.
Bu kütüphanesiz ve daha kolay oldu. Tabii ki nasıl yapacağınız sizin tercihiniz.

Firebase ile çalışmak yerine e-tablo ile çalışırsanız yine WiFiClientInsecure_firebase arduino programını kullanabilirsiniz. Orada // işareti ile kapatılmış E-tablo satırları var. Bunları devreye aldığınızda program e-tabloya ayarlanmış olur. Tabii ki linklerde bazı şeyleri kendi tablonuza göre ayarlamanız lazım.

Firebase konusunda yazdığım yazı buradadır.

Aşağıdaki yazıya göre e-tablonuzu oluşturabilirsiniz. Ve asistan programlarınızla IFTTT vasıtasıyla kullanabilirsiniz. Ayrıca her yerden bu tabloya ulaşabileceğiniz gibi, bir de script dosyasındaki e-mail alarm gönderisini de, evinizdeki acil durumlar için geri bildirim olarak kullanabilirsiniz.

E-TABLO  için ise bu yazımı okuyabilirsiniz

Firebase webden erişim okuma php link’i=  http://mikrobotikradyo.tk/api/firebase_MIT.php

Firebase okuma direkt link= https://esp8266-4140a.firebaseio.com/diz0.json?auth=2NaRXXwRefCCxTx9KBarrDm957KKDJsN4nJj1Dqq

Firebase data değiştirme php link’i = http://mikrobotikradyo.tk/api/firebasechange.php?deger=”40″

Kendi linklerinizi ve buradakileri hem web tarayıcınızdan hem de POSTMAN programında deneyebilirsiniz.

Erişim tamamlandığında bunları programınızda kullanabilirsiniz.
Ayrıca POSTMAN programının bir güzelliği daha var. Erişim tamamlandığında size PHP programını veriyor. Siz de bu PHP programını sitenize koyarak kolaylıkla işlem yapabiliyorsunuz. Ben kendi PHP programlarımı buradan kopyalayarak elde ettim. Küçük değişiklikler yaptım. ( Bu konu videoda gösterildi) 

Bazı programlar örnek olarak verildi. Hiç birinin GA,ALEXA,ve MIT asistan için görevi yoktur.
esp01_firebase_php= http://mikrobotikradyo.tk/api/firebasechange1.php?deger=”+String (deger) gibi bir string değeri firebase veri tabanına nasıl gönderebiliriz. PHP programı sayesinde.

PHP dosyalarda ise 
firebase_read1.php= firebase üzerinde bool datasını okumayı gösterir.
firebasechange1.php= Firebase üzerinde LED1 datasını nasıl değiştireceğimizi gösterir.
firebase_MIT.php = firebase üzerinden bool_mit datasını okur.

Önceki PHP ile dünyadan evinizi kontrol edin yazım buradadır POSTMAN dahil.

Şu da aklınıza gelebilir. PHP dosyasından göndermek ne kadar güvenli. Elbette ilk kopyaladığınızda güvenli değil. Fakat sizler biraz değiştirerek şifrenizi ya da auth key gibi bir rakamı PHP dosyalarınızda doğrulamak için kullanabilirsiniz. Bedava Sitelerde PHP dosyasına yer veren siteler database içinde yer verir.
Ya da firebase kullanıyorsanız firebase içerisinde bir de şifre kısmı koyarsınız. Gelen bilgide şifre kısmı doğru ise cihaz komutları yerine getirilir.
Güvenlik için daha pek çok yol bulabilirsiniz. Bunlar en son merak edeceğiniz şeyler olmalı.

Fakat yine de bilgi olsun derseniz bildiğiniz bir metodun PHP dosyalarına nasıl uygulanacağını buradan görebilirsiniz. 

Buradan sonra ise Alexa ve GA nın nasıl kullanıldığını anlatacağım. Bazı şeyler videoda anlatılmış olsa da resimlerle burada görmek işinizi kolaylaştırabilir.

Google asistan programı kurulum resimleri sırasıyla buradadır. 

SINRICPRO kurulum resimleri sırasıyla buradadır. 

Not: GA ve ALEXA ekran görüntü resimlerini, yazıyı doldurmasın diye buraya eklemedim sizler GITHUB sitemden de bakabilirsiniz.

Ayrıca Tüm programlara buradan ulaşabilirsiniz.  

Buradan sonra ise KENDİ SESLİ ASİSTANIMIZI YAZMAYA BAŞLIYORUZ. 

MIT APP INVENTOR size bunu sağlayabilecek kapasitededir.
Öncelikle GA ve ALEXA ya bakıp mantığını algılamalıyız. Onlar ne yapıyorlar.
Alexa yı ele alalım. Bir sesli komut oluşturuyoruz. Bu komut ile ne yapmak istediğimizi söylüyoruz.
( ALEXA ROUTINE oluşturma) Bu mantıkla baktığımızda Alexa sesli komutu yazıya çeviriyor. MIT app inventor  da sesleri yazıya çevirebiliyor.

O zaman sesi yazıya çeviren modülü ekliyoruz. (SpeechRecognizer). Daha sonra bu sesli komutu yazıya çevirdik. Bu yazıyı ne ile karşılaştıracağız.
İşte burada TINYDB modülü yerini alıyor. Bu modül database (veri tabanı) dediğimiz bir modüldür. Bu modüle 3 kademeli bilgi yazıyoruz. 1. kademe komutun karşılaştırılması için bir bilgi.
Mesela Lamba 1 aç Bu komutu söylediğimizde sesli komut Lamba 1 aç olarak yazıya dönüşecek ve karşılaştırma yapılacak. doğru ise komutun ne yapmasını istiyorsanız onu 2. kademe bilgi olarak vereceksiniz. Bu kademede OPEN ya da CLOSE ( Burada türkçe kelime kullanmayın MIT türkçe karakter sorunu yaşamasın. )  ya da yapmasını istediğiniz kelimeyi verirsiniz. Ben open close verdim. Sis ayar 125 gibi bir şey verebilirsiniz programınızı o şekilde ayarlarsınız RGB seviyesini ya da pwm seviyesini verebilirsiniz. 3. kademede ise cihaz ismini vereceksiniz. Mesela Lamba 1 veya lamba 2 ya da mutfak lambası gibi. Bu aynı zamanda firebase üzerindeki değişkenin ismi olacak.  Kayıtlarınızı yaptıysanız RECORD LIST butonu ile kontrol edebilirsiniz. Aşağıdaki resimdeki gibi görünmesi gerekiyor.

Not: TinyDB ismini programınıza göre değiştirirseniz iyi olur. Ben tiny_ses yaptım. TinyDB olarak bırakırsanız ve diğer programınız da tinyDB olarak kaldıysa telefonunuzda database kısımları birbirine girer ve komutlarınız diğer programın verileriyle silinebilir. TinyDB kullanılırken buna çok dikkat etmelisiniz.

RECORD LIST butonuna basınca görülen tiniydb database içeriği

Buraya kadar komut ve komut ile yapılacak işler için veri tabanımızı hazırladık.

Bundan sonra ses butonuna basarak komut verebiliriz ve bu komutu yazıya dönüştürüp bu kelimeyi de veri tabanı içerisinde ararız. Aynı komutu bulduğumuzda 2. kademedeki yapılacak işi ve 3. kademedeki cihaz isimlerini okuruz.
Firebase linkini oluştururken cihaz ismi link içerisinde .json olarak yer alır.
https://esp8266-4140a.firebaseio.com/diz0.json?auth=2NaRXXwRefCCxTx9KBarrDm957KKDJsN4nJj1Dqq
Mesela Bu link içerisindeki diz0.json kısmındaki değişkeni veritabanından okuduğunuz değişken ile değiştiriyorsunuz. Mesela lamba1.json gibi. Tabii ki bu komut karşılaştırma ve veri tabanı okunduktan sonra cihaz ismi belli olduğunda bu link’e ekleniyor.
Sonrasında ise değişken ismine ise OPEN CLOSE komutları için true ve false  komutunu ekliyoruz. Okurken buna ihtiyaç olmasa da data değiştirecekseniz bunu yapmak zorundasınız. Mesela aşağıdaki resimde gönderilen link görünüyor. Bu link’i inceleyelim. Aşağıdaki resimde KIRMIZI yazıyla yazılan linkte lamba1.json veri tabanından gelen değişken.
Bu kısım ise standart. https://esp8266-4140a.firebaseio.com/  Sonrasında ise AUTHkey var. Bu şekilde okuma yapılabiliyor. Bu ekrandaki okuma MIT app inventor WEB modülü ile yapıldığından en üstte gördüğünüz 200 hata kodudur. Burada 200 OK fakat farklı bir numara varsa hatadır.
EVOTO/oturma kelimesi ise cihazın bulunduğu dizindir. Bütün hepsi blok olarak birleştirilir.
EVOTO/oturma kelimesi firebase modülünün sabit ayarlarında ProjectBucket kısmında verilebilir. Fakat başka dizinler de programınıza eklenecekse orada bu isimde blok var. Bunun ile değiştirebilirsiniz. O zaman tinyDB database kısmında 4. kademe oluşturup dizin ismini de girebilirsiniz. Mesela EVOTO dizini içerisinde oturma odasına ait verileri değiştiriyorum Fakat firebase mutfak değişkenleri de var. Bunları da değiştireceksem ProjectBucket bloğunu kullanarak dizin ayarlaması yapabiliriz. Oturma yerine mutfak yazılabilir.

FIREBASE EVOTO dizini.

 

 

 

 

 

 

 

 

 

 

 

 

Burada bir dönüşüm yapılıyor. Bunun sebebi ise OPEN CLOSE kelimelerini true false olarak versek firebase değişken içeriğinde “”true”” gibi iki tırnaklı geliyor. Çünkü yazılanı string olarak görüp ” işareti koyuyor bu da ESP01 programında fazladan işlem gerektiriyor. Bunun sebebi firebase modülünün sadece string yollamasından kaynaklanıyor. Bundan dolayı Bir karşılaştırma yapıp sonucunu yolluyoruz. Mesela OPEN ise true yolla dediğimizde firebasedeki değer “true” olarak string görünüyor. Bu şekilde o dezavantajı ortadan kaldırıyoruz. ( Normalde BOOLEAN olarak true ve false yollayabilse direkt olarak true ve false yazabiliriz. Fakat FIREBASE modülü sadece integer ve string gönderebiliyor. )
Blok resminde bu da görülüyor. Bu resimde ise Button1_click kısmında hem firebase hem de web modüllerini görüyorsunuz. WEB modülü sadece okumak için kullanılıyor. Sizlere bu modüllede okuyabileceğinizi göstermek istedim. Sizler bunu kaldırabilirsiniz. Tabii ki web modülü ana ekrandan kaldırdığınızda web1 got text bloğu da ekrandan kalkacaktır. Tamamen web modülünden kurtulursanız biraz daha sadeleşecektir.


Programda ana ekranda firebase test butonu var. Bu buton ile sadece WEB modülü çalışıyor. Dikkat ederseniz ses_komut bloklarında yine firebase kayıt bulunmaktadır. Yani sadece ses ile çalışsın diyorsanız GA ve ALEXA gibi bu butonu da kaldırabilirsiniz.
Fakat şunu da unutmayın. GA da bile, size ses ile komutu anlamadıysa yazma hakkı veriyor. Yani bazen algılamadığında sizin de yazma hakkını kullanıcıya vermeniz gerekiyor. Bu resimlerdeki ekran görüntüsünde Lamba 2 aç yazan yere elle komutu girebilirsiniz. Bazen ortam gürültülü olabilir ve sesi anlayamayabilir. O zaman elle komut girebilirsiniz. Firebase_test  butonunu o zaman kullanabilirsiniz.
Hatta Başka bir sayfa ekleyip görsel olarak basılacak butonlarla cihazları kontrol edebilirsiniz. Bu da bir elle kontrol ve sesle kontrol bir arada seçeneğiniz olabilir.
Programı kendinize göre düzenleyebilirsiniz. Bu programı yaparken sadece cihazları mı kontrol edeceğim derseniz yanılırsınız. Aynı asistan programları gibi başka işlevlerde ekleyerek programınızı büyütebilirsiniz. Mesela hava durumu sorgularsınız. Gelen bilgileri sesli olarak okutabilirsiniz. ( burada şunu belirtmem gerekiyor. Android 6.0 ile (text to speech) yazıdan sese dönüştürme çalışmıyor daha üst versiyon gerekiyor. Ayrıca türkçe kelimelerde sorunlu. Bundan dolayı gelecek olan bilginin İngilizce olması gerekiyor. ) Ya da web bileşeni ile web ekranı açılıp size hava durumu sayfasını getirebilir. Aynı GA nın yaptığı gibi. Hatta Activity ve uzantılarla asistanınızı güçlendirebilirsiniz. Sizin için müzik çalmasını ya da radyo çalmasını bile isteyebilirsiniz.

Yapacaklarınız MIT app inventor blokları ve uzantıları ile genişleyebilir.

MIT programımızı da yaptık.
Ya ESP01 programımız ne yapacak.
Alexa ve sinricpro ile yapılan program zaten direkt olarak sinricprodan verileri okuyup ledleri kontrol ediyor. Bunun için devamlı belirlenmiş olan verilere gidip değişiklik var mı diye bakıyor.
FIREBASE IFTTT ile yapılan programda ise yine aynı şekilde devamlı gidip değişken değişti mi diye bakıyor.
MIT APP INVENTOR asistan programının firebase üzerine kayıt ettiği datalarını alan ESP01 programında ise veriler tüm cihazlar için 1 kerede okunur ve ayrıştırılarak hangi cihazda değişiklik olduğuna bakılır. Bunun için EVOTO dizininin tamamı okunur. Daha tasarruflu davranılır. Sadece dizin okunur. Her cihaza gidip tek tek okunmaz. Bu da firebase programına ayrı ayrı bağlanmaması demektir. Yoksa tüm cihazlar için ayrı ayrı link oluşturup okumamız gerekirdi. Bu da trafiği etkileyecekti.
Bizim aldığımız veriler bunlar.
veriler= {“mutfak”:{“lamba 1″:”true”,”lamba 2″:”true”},”oturma”:{“lamba 1″:”true”,”lamba 2″:”true”}}
Bu verileri PHP dosyası gönderdiğinden ondan verileri, JSON formatında isteyerek Arduino json parse ile verileri kolaylıkla parçalayabilirsiniz. Fakat ben arduino json kütüphaneleri zaman içerisinde değiştiğinden kullanmak istemedim. Bunun yerine indexof ve substring komutlarını kullanarak verileri parçaladım.
Sizler de istediğiniz gibi programı değiştirebilirsiniz. Aynı zamanda PHP dosyalarının veri gönderim şeklini de değiştirebilirsiniz. Bu şekilde alınan verileri belirlerim. değişiklik varsa değişikliği uygularım. Tabii ki ESP01 e bağlı 2 adet anahtar bulunuyor. Bu anahtarları da kontrol ederek anahtarlar değişmişse cihaza değişiklikleri uygularım. Bu değişiklikler kalıcı olsun diye bunları yine firebase üzerine gönderirim. Şayet bunu yapmazsam tekrar firebase den veri okunduğunda cihazlar bir önceki haline döner. yani anahtarla yaptığım değişiklik kaybolur. Tabii ki bir de şu var. Benim yaptığım programda internet olmasa bile anahtarlar cihaz durumunu değiştirebilir. Fakat internet olmadığı için kayıt yapamayacağından internet geldiğinde cihazlar durumunu firebase son durumuna göre ayarlar. İnternet olmadığında Diğer asistan programları da çalışmayacaktır. Biz kendimiz yaptığımız için programımızı istediğimiz gibi ayarlayabiliriz. Mesela benim verdiğim ESP01 programında değişiklik yaparak siz bu dezavantajı yok edebilirsiniz. Ya da internet her zaman var sorun yok da diyebilirsiniz.

NOT: MIT APP INVENTOR ile asistan programınızda Lamba 1 aç komutu verecekseniz Lamba bir aç olarak da kayıt etmeniz gerekiyor. Bunun sebebi sesten yazıya çevrilirken bazen 1 rakamını bazen ise bir kelimesini döndürüyor. Bundan dolayı her ikisi için kayıt yapmanız gerekiyor. Diğer rakamlarda böyle bir sıkıntı olmuyor.

ALEXA çalışma videosu.

Google asistan ile ev otomasyonu videosu:

MIT APP INVENTOR ile kendi asistanımızı yapıyoruz.

Konu hakkında eksik ya da yanlış bilgiler varsa lütfen bilgilendirin. Hep birlikte düzeltelim. 

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.