Seviye:
Pythonn programlama dilinde yer alan kütüphaneler kullanılarak bulut platformları ile kolaylıkla iletişim kurulabilir. Böylelikle sensörlerden elde edilen veriler gerçek zamanlı olarak internet üzerinden takip edilebiliriz. Aynı zamanda internet üzerinden de cihazların çevre birimlerine erişip bu birimlerin kontrolü sağlayabiliriz.
Cihazların birbirleri ile ya da son kullanıcı ile haberleştikleri bu teknolojiyi nesnelerin interneti (IoT- Internet of things) olarak adlandırıyoruz. Ubidots, IoT uygulamalarında verilerin internette izlenmesi ve cihazlar ile etkileşim kurma konusunda kullanımı kolay ve kapsamlı bir bulut platformudur.
Bu uygulamada python ile “sicaklik” ve “nem” olarak iki değişkene rasgele sayılar atayacağız ve bu sayıları ubidots platformu üzerinde görüntüleyeceğiz.
Ubidots nasıl çalışır?
Geliştirme kartına bağlı sensörlerden gelen veri her güncellendiğinde, bir veri noktası (dots) oluşturulur. Ubidots, cihazlardan gelen bu “veri noktalarını” değişkenlerin içerisinde saklar. Ayrıca bu değişkenlerin her birine karşılık gelen bir zaman damgası oluşturulur. Kısacası cihaz tarafından üretilen her veri ubidots platformu tarafında bir değişken içerisinde tutulur ve izlenir.
Ubdots ile veri alışverişi birçok protokol üzerinden gerçekleştirilebilir. Bu protokollerden biri de http protokolüdür. http protokolü, istemci (MİDEP kartı, PC vs.) ile sunucu (Ubidots) arasında bir takım verileri çekip göstermek istendiğinde kullanılan bir iletişim yöntemidir. Günümüzde web/mobil uygulamaların çoğunda bu iletişim protokolü kullanılır. http protokolü request (istek) ve buna karşılık response (cevap) olmak üzere iki kısımdan oluşmaktadır. http request kendi içinde farklı metotlardan (GET, POST, PUT, DELETE, vb.) meydana gelir.
Bu uygulamada POST metodunu kullanacağız. POST metodu belirtilen kaynağa bir veri (entity) göndermek için kullanılır, bu da genellikle sunucuda bir durum değişikliğine neden olur. Yani cihaz (MİDEP) tarafından üretilen veri http protokolü içerisinde bulunan POST metodu ile ubidots platformuna gönderilecek ve ubidots tarafında veri görselleştirilecektir.
Uygulamaya başlamadan önce ubidots platformunda hesap açmak gerekecektir.
Bunun için https://ubidots.com/ sitesinde gidip menüden “industries > stem” sekmesine tıklayın.
Açılan sayda kullanıcı adı şifre bilgilerini girip, “My IoT project is for personal, non-commercial use.” Kutucuğunu tıklayarak üye olun.
Adresinize gelecek linke tıklayıp üyeliğiniz onaylandıktan sonra kullanıcı adı ve şifrenizi girerek sisteme giriş yapın.
Programlama
Öncelikle programda kullanılacak python “request” kütüphanesinin yüklenmesi için terminal penceresine aşağıdaki komutu yazıp enter’e basın.
pip install requests
Python IDLE açın. Yeni dosya oluşturun ve program kodunu yazın.
import time
import requests
import math
import random
TOKEN = "TOKEN'i buraya yapistirin"
DEVICE_LABEL = "cihaz_MIDEP" # cihaz etiketini yazin
VARIABLE_LABEL_1 = "sicaklik" # birinci degiskeni olusturun
VARIABLE_LABEL_2 = "nem" # ikinci degiskeni olusturun.
def build_payload(variable_1, variable_2):
# 2 rasgele veri olusturulur
value_1 = random.randint(-10, 50)
value_2 = random.randint(0, 85)
payload = {variable_1: value_1,
variable_2: value_2}
return payload
def post_request(payload):
# HTTP request portokolu olusturulur
url = "http://industrial.api.ubidots.com"
url = "{}/api/v1.6/devices/{}".format(url, DEVICE_LABEL)
headers = {"X-Auth-Token": TOKEN, "Content-Type": "application/json"}
status = 400
attempts = 0
while status >= 400 and attempts <= 5:
req = requests.post(url=url, headers=headers, json=payload)
status = req.status_code
attempts += 1
time.sleep(1)
# islem sonucu goruntuleme
print(req.status_code, req.json())
if status >= 400:
print("[ERROR] veri gönderilemedi!")
return False
print("[INFO] istek gönderildi, cihaz guncellendi!")
return True
def main():
payload = build_payload(
VARIABLE_LABEL_1, VARIABLE_LABEL_2)
print("[INFO] veri gonderiliyor.")
post_request(payload)
print("[INFO] tamamlandı")
if __name__ == '__main__':
while (True):
main()
time.sleep(1)
Program kodunda TOKEN = "..."
kısmına ubidots tarafından size verilen Token numarasını kopyalayıp yapıştırın.
Token numarasını bulmak için ubidots sayfanızda sağ üst köşedeki profil resminizin üzerine ve ardından “API Credentals” sekmesine tıklayın.
Açılan sekmeden Tokens kısmında yer alan default token numarasını “copy” düğmesine basarak kaydedin.
Token numarasını kopyaladıktan sonra program kodunda TOKEN = "..."
satırında tırnak aralığı içerisine yapıştırın.
Programı çalıştırın ve ubidots sayfanıza gidin.
"Devices > devices" sekmesine tıkladığınızda pyhton programında cihaz olarak tanımladığınız cihazınızı ubidots üzerinde görüntüleyebilirsiniz.
Sayfada görünen cihaz adının üzerine tıkladığınızda “cihaz_MİDEP” ten alınan verileri görebilirsiniz.
Sıcaklık ve nem verilerini ana sayfada görüntülemek için ise sol üst köşede yer alan ubidots butonuna tıklayarak “dashboard”unuza gidin. Açılan sayfada “+” simgesine ya da “add new widget” üzerine tıklayın.
Açılan pencerede “Line chart” seçin.
Açılan pencerede “Name” kısmından grafiğinize isim verin. Ardından “add variable” düğmesine tıklayın.
Açılan pencereden cihaz_MİDEP üzerine tıklayarak sicaklik verisini seçin.
Onayladıktan sonra sıcaklık verisi çizgi grafik olarak pano sayfanızda (dashboard) görünecektir. Benzer adımları dilediğiniz grafik biçiminde nem verisini görüntülemek için de yapabilirsiniz.