Merhabalar,
Bu yazımda size intel’in Edison ve Galileo kartları için sağladığı IoT analytics sisteminden bahsedeceğim. Aynı zamanda sistemin işlevselliğinin anlaşılması için elimde bulunan Edison kart ile örnek bir uygulama yapacağım.
Bulut Tabanlı Analitik Sistemi (Cloud Based Analytics System)
IoT analitik intel firmasının Edison, Galileo gibi geliştirme kartları için bulut tabanlı sensör verilerini toplamak, analiz etmek vb. işlemler için sağladığı sistemdir. IoT analitik kullanarak Edison/Galileo kartınız ile herhangi bir bulut hizmeti sağlayıcısına ücret ödemeden sensör vb. verilerinizi bulut üzerinde saklayıp analiz edebilirsiniz.
Şekil-1
Şekil-1’de IoT analitik kullanımının basitçe blok diyagramı görülmektedir. Görüldüğü gibi sensör ağı olarak çalışan Edison/Galileo kartı topladığı verileri internet üzerinden buluta (IoT analitik) göndermektedir. Bulut üzerinde depolanan verilere ise internete bağlı herhangi bir bilgisayar üzerinden erişilip verilerin analizi yapılabilmektedir. İnteli’in sağladığı IoT analitik sistemini kullanarak İntel Edison / Galileo kartları ile geliştirdiğiniz uygulamalara esneklik kazandırabilirsiniz.
IoT Analitik Kullanımı
IoT analitik sisteminin kullanımına ait bilgiler burada (ingilizce) detaylı olarak bulunmaktadır. IoT analitik sistemini kullanabilmek için öncelikle IoT Analytics Dashboard sitesi üzerinde hesap oluşturulmalıdır.
Site üzerinden kayıt olarak yada Facebook, Google+, Github hesapları ile sisteme kayıt olabilirsiniz.
Şekil-3
Giriş yaptıktan sonra karşınıza gelen şartlar ve koşulları kabul edip hesap ismini girdikten sonra şekil-3’teki gibi hesabınız oluşturulur. Görüldüğü gibi yeni kayıt olduğu için herhangi bir kayıtlı cihaz yada gelen veri bulunmamaktadır. Web üzerinde bütün analitik işlemleri oluşturduğunu hesap üzerinden yapılmaktadır. Edison/Galileo kısmında ise IoT Kit Agent arayüzü kullanılmaktadır.
IoT Kit Agent arayüzü ile Edison/Galileo kartları üzerinden bulut sistemine veri gönderme vb. işlemler yapılmaktadır. IoT kit arayüzü Edison üzerinde hazır olarak yüklü gelmektedir. Eğer yüklü olarak gelmediyse burada anlatılan basit adımlar ile IoT Kit Agent arayüzünü yükleyebilirsiniz. IoT kit Agent arayüzünün yüklü olup olmadığını anlamak için terminal üzerinde “iotkit-admin” komutunu çalıştırmanız yeterli. Terminal kullanımı, Putty programının kullanılması ile ilgili bilgileri bir önceki İntel Edison SBC inceleme yazımda bulabilirsiniz.
Şekil-4
Edison/Galileo kartınızda IoT kit agent yüklü ise şekil-4’teki gibi terminal ekranı gelmesi gerekir.
Iotkit agent arayüzünü başlatmak için terminalde “systemctl start iotkit-agent” komutu yazılır. Benzer şekilde durdurmak için “systemctl stop iotkit-agent” komutu girilir. Ayarlamalar sırasında iotkit agent durdurulabilir.
IoT kit agent arayüzünün network bağlantısını test etmek için terminalde “iotkit-admin test” komutu yazılır.
Şekil-5
Eğer internet bağlantısı var ise test komutundan sonra şekil-5’teki gibi terminal çıktısı alınmalıdır. Eğer hata alıyorsanız muhtemelen Edison kartınız internete bağlı değildir. Edison kartı wifi üzerinden internete bağlamak için aşağıdaki adımların izlenmesi gerekir.
Terminalden “configure_edison –wifi” komutu girilir.
Şekil-6
Bu komut girildikten sonra etraftaki wifi ağları taranıp listelenir. Bulunan ağlardan bağlanılmak istenen ağın numarası girilip enter tuşuna basılır. Sonrasında sorulan soruya Y yazılarak enter tuşuna basılır. Son olarak ağın şifresi yazılarak enter tuşuna basılır. Bu işlemler yapıldıktan sonra Edison wifi üzerinden ağa bağlanmaya çalışır.
Şekil-7
Herhangi bir bağlantı sorunu yok ise şekil-7’deki gibi bir terminal çıktısı alınır. Şekil-7’deki terminal çıktısı alınıyorsa Edison ağa bağlanmış demektir. http://192.168.3.1 adresine gidilerek bağlantı test edilebilir.
IoT analitik sistemine bağlanabilmek için her cihazın (Edison/Galileo) benzersiz ID’si vardır. “iotkit-admin device-id” komutu ile kartınızın ID’sini öğrenebilirsiniz.
root@edison:~# iotkit-admin device-id
2015-01-15T19:43:57.005Z – info: Device ID: 02-8e-c1-75-e6-0c
Cihaz açma kapama gibi bazı durumlarda cihazın ID’si değişebilir. Bu durumda cihaz IoT analitik sistemine bağlanamaz. Cihazın eski ID’sini yada farklı bir ID atamak için “iotkit-admin set-device-id <
root@edison:~# iotkit-admin set-device-id 02-8e-c1-75-e6-0c
2015-01-15T19:50:16.862Z – info: Config Key : device_id value 02-8e-c1-75-e6-0c
2015-01-15T19:50:16.899Z – info: Device ID set to: 02-8e-c1-75-e6-0c
İntel Edison Cihaz aktivasyonu
Edison/Galileo cihazımızı IoT Analitik hesabımıza kayıt etmek için site üzerinden aktivasyon kodu alınması gerekir.
Şekil-8
Site üzerinde hesap isminize tıklayarak şekil-8’deki sayfaya ulaşabilirsiniz. Şekil-8’de görüldüğü gibi site tarafından verilen aktivasyon kodu 1 saat geçerlidir. 1 saat içinde Edison/Galileleo kartı bu kod ile aktif edilebilir.
Aktivasyon için “iotkit-admin activate <<activate-_code>>” komutu girilmelidir.
root@edison:~# iotkit-admin activate erjC7bmd
2014-10-09T09:24:38.520Z – info: Activating …
2014-10-09T09:24:40.986Z – info: Saving device token…
2014-10-09T09:24:40.999Z – info: Sending attributes…
root@edison:~#
Şekil-9
Cihazımızı kayıt ettikten sonra şekil-9’da ki gibi hesabımız üzerinde cihazlar kısmına eklenmelidir.
Kayıt işleminden sonra sensör tanımlamaları yapılır. Site üzerindeki hesabımızdan Catalog kısmında varsayılan olarak tanımlı sensör profilleri görülmektedir.
Şekil-10
Şekil 10’da görüldüğü gibi hesabımızda varsayılan olarak humidity (nem), power switch (Güç anahtarı) ve temperature (sıcaklık) olmak üzere 3 adet sensör profili tanımlıdır. Bunlarda ayrı sensör profili tanımlamak için Add a New Catalog Item butonuna tıklanır.
Şekil-11
şekil-11’de örnek sensör profili görülmektedir. Temp1 isimli profil 0-100 arasında float sayı değerleri alabilmektedir. Sensör birimi olarak santigrat derece(°C) seçtim. Bu şekilde ben örnek uygulamamda Temp1 ve Temp2 olmak üzere 2 adet sıcaklık sensörü profili bir adette Random isimli rastgele tam sayı değerleri gösteren profil oluşturdum. Tüm profillerin değer aralıkları 0-100 olarak ayarladım. Benzer şekilde isteğe özel sensör profilleri tanımlanabilir.
Şekil-12
Şekil 12-‘de eklenen sensör profilleri görülmektedir. Sensör profillerine otomatik olarak versiyon numaraları da eklenmektedir.
Eklediğimiz sensör profillerini Ediso/Galileo cihazı ile ilişkilendirmek için “iotkit-admin <<sensor>> <<profile>>” komutu kullanılır. Ayrıca sistem üzerinde kayıtlı profilleri görmek için “iotkit-admin catalog” komutu kullanılır.
Şekil-13
Şekil-13’te görüldüğü gibi iotkit-admin catalog komutu ardından hesabımızda tanımlı olan profiller listelenir. Görüldüü gibi bizim tanılmadığım 3 profil ve varsayılan profiller ile birlikte 6 adet profilimizi bulunmaktadır. Bunun anlamı 6 adet sensör verisi çizdirmek için grafiğimiz var demektir. Şimdi tanımladığımız profillere keyfi bir isim vererek Edison kartımız üzerinde IoT kit agent ile ilişkilendirelim.
Şekil-14
kayıt işlemini yaptıktan sonra şekil-14’teki gibi çıktı alıyorsanız sensörleriniz kayıt olmuş demektir. Örnek uygulamada ben sıcaklık sensörlerine LM35_1 ve LM35_2, Rasgele elemana ise Random ismini verdim. Sensörleri kayıt ettikten sonra site üzerinden sol üst köşedeki butona tıklayarak açılan menüden Charts butonuna tıklayarak kayıt ettiğiniz sensörleri görebilirsiniz.
Şekil-15
Şekil-15’te Charts kısmında kayıt edilmiş sensörler görülmektedir. Şuanda herhangi bir veri girişi olmadığı için grafik gösterilmemektedir. Edison/Galileleo üzerinden sensörlere veri göndermek için “iotkit-admin observation <<sensor>> <<value>>” komutu kullanılır.
Şekil-16
Şekil-16’da görüldüğü gibi sensörlere örnek değerler gönderilmiştir. Veri gönderme işlemi sonrasında herhangi bir hata yok ise şekil-16’da ki terminal çıktısı alınmalıdır.
Şekil-17
Şekil-17’de görüldüğü gibi gönderdiğimiz veriler grafik olarak çizidirilmiştir. Ben örnek olarak grafikleri üst üste çizdirdim. İstenirse grafikler ayrı ayrı görüntülenebilir. Ayrıca Charts menüsü üzerinde grafiklerin güncelleme süresi, zaman aralığı, grafik gösterim şekli gibi çeşitli ayarlar yapılabilir.
Veri göndermede sorun yaşanması durumunda “systemctl stop iotkit-agent” ve “systemctl start iotkit-agent” komutları ile iotkit agent arayüzü tekrar başlatılıp sorun giderilmeye çalışılabilir.
Görüldüğü gibi terminal komutları ile sensör verilerini göndermek mümkündür. Fakat uygulama olarak sürekli veri göndermek gerekirse bunu için edison/galileo kartları için arduino iotkit kütüphaneleri kullanılabilir. Kütüphane dosyalarına buradan ulaşılabilir. Kütüphaneleri intel Arduino IDE’sine dahil ettikten sonra örnekleri inceleyerek kendinize özel uygulama geliştirebilirsiniz.
Ben örnek uygulamamda Edison kit üzerine elimde bulunan iki adet LM35 sıcaklık sensörünü bağladım. Ayrıca birde rastgele değişken tanımlayarak 0-100 arasında değerler ürettim. Bu üç değeri IoT analitik üzerinde tanımlı Temp1, Temp2 ve Random isimli sensör profillerine göndererek grafiklerini çizdirdim. Uygulamaya ait arduino kodları aşağıdaki gibidir.
#include <IoTkit.h> // include IoTkit.h to use the Intel IoT Kit #include <Ethernet.h> // must be included to use IoTkit #include <aJSON.h> IoTkit iotkit; int rand1; float temp1,temp2; int tempPin1 = A0; int tempPin2 = A1; int led = 13; void setup() { iotkit.begin(); pinMode(led, OUTPUT); } void loop() { rand1 = random(0, 100); // 0-100 arası rasgele sayı üret temp1 = analogRead(tempPin1); // A0(LM35)kanalını oku temp1 = temp1 * 0.48828125; // Okunan değeri sıcaklığa çevir temp2 = analogRead(tempPin2); // A1(LM35)kanalını oku temp2 = temp2 * 0.48828125; // Okunan değeri sıcaklığa çevir iotkit.send("Random", rand1); // Random isimli sensör profiline rand1 değerini gönder iotkit.send("LM35_1", temp1); // LM35_1 isimli sensör profiline temp1 değerini gönder iotkit.send("LM35_2", temp2); // LM35_2 isimli sensör profiline temp2 değerini gönder // 5 saniye aralıklarla sürekli olarak değerler gönderilir digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(4000); }
Şekil-18
Şekil-18’de uygulama devresi görülmektedir. Uygulamada kullanılan LM35 sıcaklık sensörleri İntel Edison Arduino genişletme kartındaki A0 ve A1 analog girişlerine bağlanmıştır. Benzer şekilde LM35’lerin besleme gerilimleri Arduino üzerindeki 5V ile sağlanmıştır.
Yazının başındaki wifi, kayıt, aktivasyon vs. ayarları yapılıp Edison kartın enerjisini kesmeden arduino kodlarını yükledikten sonra “systemctl start iotkit-agent” komutu ile iotkit-agent arayüzü başlatılır. Iotkit agent arka planda çalışarak sensör verilerini IoT analitik üzerindeki hesabımıza gönderir. Uygulama her 5 saniyede bir sıcaklık sensör verilerini ve rastgele üretilen değeri IoT analitik üzerindeki hesabımıza gönderir. Uygulamanın çalışıp çalışmadığı kart üzerindeki ledin yanıp sönmesinden anlaşılabilir.
Şekil-19, şekil-20 ve şekil-21’de Edison tarafından gönderilip IoT Analitik (Bulut) üzerinde toplanan verilerin grafikleri görülmektedir. Şekil-19’da 0-100 arası üretilen rastgele sayıların grafiği görülmektedir. Benzer şekilde şekil-20’de ise LM35 sıcaklık sensörlerinden elde edilen verilerin grafiği görülmektedir. Görüldüğü gibi sensörler oda ortamında olduğu için sensör değerleri 22°C-24°C arasında değişmektedir. Son olarak şekil-21’de ise 3 grafik üst üste çizidirilmiştir. Görüldüğü gibi IoT analitik sensör değerlerine göre dikey ekseni otomatik ölçeklemektedir.
Sonuç olarak Edison kartı ile bulut tabanlı IoT analitik sistemi üzerinde tanımlı olan hesabımıza sensör verileri gönderilmiştir. Fikir olarak çok güzel bir hizmet, hiç bir bulut servisi ile uğraşmadan direk olarak sensör verilerinizi depolayıp analiz edebilirsiniz. IoT analitik sistemi ile bir çok uygulama yapılabilir. Örneğin; tarla, sera, çiftlik gibi ortamların sıcaklık, nem, ışık miktarları vs. ölçülerek bulut üzerinde depolanabilir. Depolanan bu verilere uzaktan erişerek ortamın durumu hakkında bilgi sahibi olunabilir.
Ayrıca IoT analitik üzerinde Rules kısmında çeşitli durumlar tanımlanarak bu durumların oluşması halinde alarm verilip e-posta gönderilebilir. Örneğin ortamın sıcaklık değeri belli bir değer altına düştüğünde e-posta ile haberdar olabilirsiniz. Bu şekilde bir çok farklı senaryo tanımlanabilir. Bu açıdan çok faydalı ve kullanışlı bir hizmet.
Bu uygulamayı yaparken Edison ile ilgili yaşadığım hatalardan bahsetmeden geçemeyeceğim. Öncelikle Edison yeni bir platform olduğu için bazı hatalar olduğu aşikar. Gerek wifi ayarlarını yaparken gerekse IoT kit ayarlarını yaparken bağlanamama gibi bir çok hata aldım. Bu hataları, resetleyerek, Edisonun enerjisini keserek yada tekrar imaj yükleyerek vs. çeşitli yollar deneyerek giderdim. Fark ettiğim diğer bir sorun ise kart üzerindeki iki usb kablo bilgisayara bağlı olunca Edison üzerinde yüklü arduino kodu çalışmıyordu. Genellikle bu durum böyleydi. Sensör verilerini göndermiyordu. Bazen gönderdiği oluyordu. Ayrıca bu uygulamayı yaparken fark ettim hem adaptör bağlı iken hemde usb(güç sağlayan usb portu) bağlı iken LM35 sensörlerini çalıştıramadım. Sonuç itibari ile Edison ile uğraşırken bu ve bunun gibi hatalar ile uğraştım. Karşılaştığım hataların bir kısmı benden yada kullandığım malzemelerden vs. kaynaklı olabilir. Bunları Edison ile uğraşan arkadaşlara bilgi olsun diye söylüyorum. Edison ile uğraşırken temkinli yaklaşmakta fayda var. Umarım en kısa sürede bu ve bunun gibi sorunlar düzeltilir stabil bir Edison sürümü piyasaya sunulur.
Konu ile ilgili eksik, hatalı vs. bir yer varsa bildirirseniz sevinirim. Faydalı olması dileğiyle, Bir sonraki yazıda görüşmek üzere inşaallah, iyi çalışmalar…
Yayım tarihi: 2015/02/09 Etiketler: arduino, arduino lm35, intel edison, intel edison arduino, lm35
Bununla akıllı ev projesi yapabiliriz galiba internet üzerinden sadece gelen verilere mi erişebiliyoruz yoksa veride gönderebilir miyiz? Mesela ledi yak veya ledi kapat gibi