IoT için kullanabileceğiniz donanımlar
nesnelerin interneti için veri kayıt alanları : thingspeak platformunun raspberry ile kullanım örneği
nesnelerin interneti için veri kayıt alanları : thingspeak temel kullanım yazısında thingspeak üzerinde nasıl kanal oluşturulacağı ve temel yönetim özellikleri değinilmişti.
şimdi bu platform üzerine basit bir örnek yapalım. raspberry pi üzerinde phyton ile bir kaç temel parametreyi okuyarak thingspeak kanalı üzerine gönderelim.
thingspeak üzerinde bir kanalda veri tutulabiliyor. biz bu örneğimizde anlık cpu kullanımı, ram kullanımını ve cpu sıcaklık değerini gönderelim.
siz gpio arayüzünden aldığınız verileri kod üzerinde ufak bir değişiklik ile gönderebilirsiniz.
import httplib, urllib
import psutil
import time
import os
def cpu_sicaklik_oku():
res = os.popen('vcgencmd measure_temp').readline()
return(res.replace("temp=","").replace("'C\n",""))
if __name__ == "__main__":
while True:
cpu = psutil.cpu_percent()
ram = (psutil.avail_phymem()/1024)/1024
cpu_sicaklik = cpu_sicaklik_oku()
params = urllib.urlencode({'field1': cpu, 'field2':ram, 'field3':cpu_sicaklik, 'key':'THINKSPEAK_KEY'})
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
conn = httplib.HTTPConnection("api.thingspeak.com:80")
conn.request("POST", "/update", params, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()
time.sleep(60)
şimdi yazdığımız basit bu konu çalıştıralım.
pi@cicek ~ $ python thingspeak_ornek.py > /dev/null &
artık her 1 dakikada bir bu veriler okunarak thingspeak platformuna gönderilecektir. benim yapmış olduğum bu örneğin sonuçlarını
https://thingspeak.com/channels/70080/
adresinden bakılabilir. isterseniz web siteniz içerisinede sorunsuz olarak gömebiliyorsunuz.
<iframe width="450" height="260" style="border: 1px solid #cccccc;" src="http://api.thingspeak.com/channels/70080/charts/1?width=450& height=260&results=60&dynamic=true&yaxis=Y%C3%BCzde&xaxis=Tarih& title=CPU%20Kullan%C4%B1m" > </iframe>
nesnelerin interneti için veri kayıt alanları : thingspeak temel kullanım
nesnelerin interneti uygulamalarının artması, uygulamalardan elde edilen verilerin kaydedileceği veri kayıt merkezi uygulamaları ihtiyaçlarınıda doğurmaktadır. bu verilerin yerelde tutulması kimi zaman imkansız, kimi zamanda veriye erişim ve inceleme gereksinimlerinden dolayı bir uygun değildir. yani nesnelerin interneti kavramı büyük veri ve bulut bilişim ile iç içe geçmiş durumdadır.
bu gereksinimin farkında olan bir çok şirket kullanıcılara parasız ve paralı seçenekler sunmaya başlamıştır. bunlardan bir taneside arkasında mathworksun olduğu thingspeak. thingspeak i diğerlerinden farklı kılan yanı matlab ile entegrasyonu. matlab ile veri işlemeye ve karışık hesaplamalarla sıklıkla uğraşan birisiyseniz gerçek dünyadan elde ettiğiniz verileri saklamak için ideal bir ortam konumunda.
örnek olarak iliniz içerisinde ayırdığınız bölgelerdeki hava sıcaklık, nem, rüzgar ile hava kirliği arasında bir ilişki konusunda bir araştırma yapıyorsanuz sahadaki internet erişimi olan sensörlerinizin verilerini bu platformda tutabilirsiniz.
https://thingspeak.com/users/sign_up adresinde çok kısa sürede kendinize bir hesap oluşturabilirsiniz.
hesabınızı oluşturduktan sonra My Channels linkine girerek New Channel diyerek yeni bir channel – yani bir veri tabanı – tablo oluşturuyoruz.
karşımıza çıkan ekran yandaki şekilde olacaktır.
burada yer alan alanlara ait açıklamalar kısaca aşagıdaki şekildedir.
- Channel Name: kanal için kullanılacak isim.
- Description: kanal için açıklama.
- Field#: kanalda kaydedilebilecek 8 adet veri alanı mevcuttur. bu veri alanı için isim. kullanabilek için yandaki kutucuk seçilerek aktif edilmelidir..
- Metadata: kanal datasının JSON, XML, veya CSV olup olmadığı bilgisi.
- Tags: kanalı tanımlamak için kullanılacak anahtar kelimeler.
- Latitude: kullanılacak sensör – kanal için enlem bilgisi
- Longitude: kullanılacak sensör – kanal için boylam bilgisi.
- Elevation: kullanılacak sensör – kanal için yükseklik bilgisi..
- Make Public: verileri herkese açık hale getirmek.
- URL: kanal hakkında bilgi içeren bir web sitesi var ise.
- Video ID: kanal hakkında bilgi içeren bir youtube veya vimeo videosu var ise..
her kanal içine 8 tane anlık veri kaydedebiliyoruz. bu bir çok uygulama için yeterli olacaktır. formu doldurarak kaydettiğimizde thingspeak bize bir kanal oluşturacaktır.
oluşturulan her kanala ait bir idye sahip olacaktır. verilere erişmek için bu id bilgisi gerekmektedir.
kanalı oluştuduktan sonra My Channels görünümü aşagıdaki şekilde olacaktır.
burada bizim için önemli alanları inceleyelim.
private ve public viewde kendimizin görebileceği ve herkesin görebileceği verileri görebiliyruz. burada kanal id miz ve kanala ait temel bilgilerde yer almaktadır.
Chanel Setting kanalı oluşturken kullandığmız alanları yönetebileceğimiz kısımdır.
API Keys altında ise thingspeaka veri yazma ve okuma işlemi sırasında kullanacağımız keyler yer almaktadır. bu keyler birbirinden farklı olduğu için uygulmalar sırasında buna dikkat etmek gerekmektedir.
Data Import/Export altında ise kanal altında veri eklemenize ve veri almanıza yarayan tool mevcuttur.. Export ile CSV formatında alınan dosya yapısı aşagıdaki şekildedir.
created_at,entry_id,field1
2015-12-04 19:26:13 UTC,1,
2015-12-04 19:32:53 UTC,2,0.0
2015-12-04 19:33:16 UTC,3,1.9
2015-12-04 19:33:31 UTC,4,1.9
2015-12-04 19:33:45 UTC,5,6.3
2015-12-04 19:33:59 UTC,6,3.5
2015-12-04 19:34:15 UTC,7,1.8
2015-12-04 19:34:29 UTC,8,2.4
2015-12-04 19:34:43 UTC,9,1.9
2015-12-04 19:34:58 UTC,10,4.7
2015-12-04 19:35:18 UTC,11,3.2
2015-12-04 19:35:32 UTC,12,2.1
2015-12-04 19:35:46 UTC,13,6.8
2015-12-04 19:36:00 UTC,14,4.3
2015-12-04 19:36:14 UTC,15,2.6
bir sonraki yazıda raspberry üzerinde python ile veri gönderimi konusunda bir örnek yapılacaktır. uygun bir zamandada matlab kısmına değinebiliriz.