Ana içeriğe atla

IoThook [iot] ile Raspberry Pi bağlantısı

IoThook ve IoT Nedir?

IoT Nedir?


Nesnelerin İnterneti IoT (internet of things) kavramı için geliştirilmiş olan IoThook u tanımaya başlamadan önce IoT yi anlamak gereklidir. Bunun için önce iot kavramını açıklayacağım.


Teknolojik gelişmelerin hızla ilerlediğine hepimiz şahitlik ediyoruz. Gün geçmiyor ki yeni bir şey görelim, öğrenelim, duyalım. Teknoloji araştırmaları ilk olarak uzay  sanayisinde ikinci olarak savunma sanayinde ve üçüncü olarak endüstriyel uygulamalarda karşımıza çıkmaktadır.  


Endüstri uygulamaları üzerindeki gelişmeler;
1- Buhar gücünün kullanımı,
2- Elektriğin kullanımı,
3- Seri üretim teknolojilerinin gelişmesi ve elektronik alanda yapılan buluşlar
ve
4- İnternet teknolojilerinin kullanıma geçmesi,

olarak özetlenebilir.


Elektroniğin icadı 17, 18 ve 19. yüzyıla elektriğin üzerinde geliştirilen buluşlar ile yarı iletken teknolojisinin hayatımıza girmesi şeklinde değerlendirilir. İnternetin çıkışı ise 1960 li yıllara ARPANET e Amerikan Savunma Bakanlığı projesine dayanır.

Peki ne oldu da nesneler akıllandı?


Aslında olan var olan elektronik ve internet teknolojisinin bir araya getirilmesidir. Bu buluşma donanım maliyetlerinin ucuzlaması sebebiyle tatilde iken evimizdeki saksının nemini kontrol ederek sulama sistemini devreye almamızı sağlamıştır. Nesnelerin interneti dediğimiz kavram tam olarak budur. Okullar, evler, iş merkezleri, sanayi, tarım, güvenlik gibi daha pek çok alanda kullanılmaya başlanan nesnelerin interneti hepimiz tarafından çok sevildi. Öyle sevildi ki şu anda dünyadaki insan sayısından fazla cihaza ulaşmış durumda. Resimde de görüleceği üzere 83 sene sonraki insan nüfusu 3 yıl sonraki iot  nesnelerinin 5 te birine eşit

olacak. Nesnelerin interneti çok hızlı gelişiyor ve bu hızı bir an önce yakalamamız gerekli.

IoThook Nedir?


IoThook nesnelerin interneti alanında çalışma yaparken ihtiyaç duyacağımız bulut veri tabanı servisidir. IoThook a veriler push (itmek) edilir ve gerektiğinde pull (çekmek) edilerek çekilir. Servis Python programlama dili ile geliştirilmiş ve Django framework ile geliştirilmiştir. HTTPS yapısı ile güvenli veri trafiği sağlanır.

IoThook da kullanılan teknolojiler şu şekilde özetlenebilir:

  • Ubuntu server
  • Python (2 ve 3) programlama dili
  • Django web framework
  • Github (versiyon 1 açık kaynak sürüm olarak ilerliyor)
  • Bitbucket (versiyon 1.2 çatal ayrıldı. özel depo da tutuluyor)
  • Django Rest framework
  • Django REST Swagger


IoThook un versiyon 1 i açık kaynak olarak geliştiricilere açılmış ve katkı sağlamak isteyenlerin istifadesine sunulmuştur. Github üzerinden iotdashboard projesine linkden ulaşabilirsiniz. https://github.com/electrocoder

IoThook un özellikleri nelerdir?


  • IoThook ile Arduino, Raspberry Pi, Android, iOS, Windows Phone, Web Site, Banana Pi, Orange Pi, Beaglebone, ARM, Pic, Windows, Mac OS X, ve Linux tabanlı sistemleri birbirlerine bağlayabilir veri gönderebilir ve alınabilir,
  • IotHook hızlıdır,
  • Sunucu sistemleri Türkiye de bulunmaktadır,
  • Ücretsiz olarak kredi kartı kullanmadan kanal açabilir 3 element kolayca bağlanabilir,
  • Tüm cihazlar ile kolayca veri gönderebilirsin (post),
  • Tüm iot cihazlarından kolayca veri alabilirsin (get),
  • Datalarını gerçek zamanlı takip edebilirsin,
  • Dataların için gerçek zamanlı grafik oluşturabilirsin,
  • SSL ile şifreleme

IoThook ile veri gönderme nasıl yapılır?


IoThook a veri göndermeye başlamak için üyelik, kanal oluşturma ve element ekleme adımlarının tamamlanmış olması gerekmektedir. Davetiye kodu isteyerek  fazladan kanal açma hakkına sahip olabilir veya iletişime geçip www.iothook.com
üzerinden yardım alabilirsiniz.

Github üzerindeki örnek kodlara https://github.com/electrocoder/IotHook adresinden ulaşabilir yine Github üzerindeki https://github.com/electrocoder/IotHook/issues sorunlar bölümünden örnek kodlardaki sorunlar ve çözümleri hakkında yardım alabilirsiniz.

Python ile IoThook a nasıl veri gönderilir?


Örneğimizin çalışabilmesi için iothook üzerinde test için ‘anonymoususer’ kullanıcısı oluşturulmuştur. Bu kullanıcının şifresi ‘a12345678’  dir. Kullanıcı paneli üzerinden ‘A’ isminde bir kanal oluşturulmuş ve kanala 3 adet element eklenmiştir. Bu element isimleri ise ‘Bir’, ‘İki’ ve ‘Üç’ olarak belirlenmiştir. Veri gönderimi için element isimleri yerine element isim_id lerinin yazılması gerektiği unutulmamalıdır!




'anonymoususer' kullanıcısına ait kanala aşağıdaki örnek ile veri gönderilebilmektedir.


import requestsimport jsonimport time
headers = {'Content-type': 'application/json'}url = 'https://iothook.com/api/v1.2/datas/'
auth=('anonymoususer', 'a12345678')
for i in range(10):   data={       'api_key':'7db86398856-53f581b854f',       'element_1':'bir', 'value_1':i*10,       'element_2':'iki', 'value_2':i*20,       'element_3':'uc', 'value_3':i*30,       }
  data_json = json.dumps(data)   response = requests.post(url, data=data_json, headers=headers, auth=auth)   print(response)   print(response.json())   time.sleep(15)





Bu örneğe Github üzerinden veya https://goo.gl/fsoM52  adresinden direkt ulaşabilirsiniz.

Ve sonuç :


Bu konunun devam edebilmesi üyelerin/kullanıcıların ilgisine odaklıdır. Açık kaynak versiyonun kod anlatımları, çalışan örnekleri hakkında devam edilmesi planlanmaktadır.

Bu blogdaki popüler yayınlar

Raspberry Pi 3 IP sabitleme, Static IP verme

Raspberry Pi 3 ün terminal ekranı açılır.

work ssh pi@192.168.1.201 pi@192.168.1.201's password: The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Aug 3 20:00:07 2017 pi@raspberrypi:~ $








sudo nano /etc/dhcpcd.conf ile ayar dosyası açılır ve aşağıdaki satırlar yapıştırılır veya yazılır.


# kablolu bağlantı için - ethernet interface eth0 static ip_address=192.168.1.201/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1 # kablosuz bağlantı için - wifi interface wlan0 static ip_address=192.168.1.202/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1



C# ile JSON veri alma

oThook kullanıcısının tüm kanallarına ait veriyi alabilmesi için GET metodu ile ‘?data=last’ değişkeninin gönderilmesi gereklidir. Aynı örnekdeki data değişkeninin alabileceği değerler: ?data=all : Kullanıcının tüm datalarını getir?data=first : Kullanıcının ilk datasını getir?data=last : Kullanıcının son datasını getir CSharp örneğinde HttpWebRequest metodu kullanılmıştır. Bu örneği http://bit.ly/iot_csharp_get Github sayfasından inceleyebilirsiniz.

/* C# ile IoThook REST Api Testi Bu örnek ile CSharp ve Request metodu ile kullanıcının datalarının get metodu ile alınması gerçekleştirilmiştir. 'autorization' ile kullanıcı adı ve parola değeri verilmelidir. Bu ornek IotHook servisine veri almak/gondermek icin baslangic seviyesinde testlerin yapilmasini amaclamaktadir. 29 Temmuz 2017 Sahin MERSIN Daha fazlasi icin http://www.iothook.com ve https://github.com/electrocoder/iotHook sitelerine gidiniz. Sorular ve destek talepleri icin https://github…

C# ile Json veri gönderme

. IoThook kullanıcısının kanal ve elementlerine veri gönderebilmesi için POST metodu ile JSON olarak değişkenlerin gönderilmesi gereklidir. CSharp örneğinde using Newtonsoft.Json; metodu kullanılmıştır. Bu kütüphaneyi indirmek için http://www.newtonsoft.com/json adresine gidiniz. Bu örneği http://bit.ly/iot_csharp_post Github sayfasından inceleyebilirsiniz.

/* C# ile IoThook REST Api Testi Bu örnek ile CSharp ve JSON ile kullanıcının dataları POST metodu ile gönderme işlemi gerçekleştirilmiştir. 'autorization' ile kullanıcı adı ve parola değeri verilmelidir. Bu ornek IotHook servisine veri almak/gondermek icin baslangic seviyesinde testlerin yapilmasini amaclamaktadir. 29 Temmuz 2017 Sahin MERSIN Daha fazlasi icin http://www.iothook.com ve https://github.com/electrocoder/iotHook sitelerine gidiniz. Sorular ve destek talepleri icin https://github.com/electrocoder/iotHook/issues sayfasindan veya Meşe Bilişim den yardım alabilirsiniz. Yayi…