Raspberry Pi ile Servis ve Website etkileşimi

Raspberry Pi ile Servis ve Website etkileşimi

Raspberry Pi ile Servis ve Website etkileşimi

Raspberry Pi ile XML/JSON ve Python ile Servis kullanarak işlem yaptırın.

Raspberry Pi ile Servis ve Website etkileşimi

Bu makale ve fikir tamamen bana ait olup, sizlerin de geliştirmesine olanak tanımak amacıyla paylaşmak istedim.

Sağladığı avantajlar

  • Apache kullanmanıza gerek kalmaz.
  • Ücretli/ücretsiz dns servisi kullanmanıza gerek kalmaz.
  • IP adresine bağımlılık derdi ve maliyeti olmaz.
  • Cihaza doğrudan erişim değil, cihaz ile servisin, servis ile web'in etkileşimi sağlanır.
  • Cihaz ile etkileşim kopması ve tekrar bağlanmasından sonra, görevler ile web servis konuşacağından işlem sırasına bağıl sorun oluşmaz. (işlem zamanının uzunluğuna bağlı)
  • IoT Organizasyonu sağlanabilir.

Sağladığı dezavantajlar

  • Uygulamamız cron ile belirli zamanlarda görevi gerçekleştireceğinden, belirli görevlerde zaman gecikmesi yaşanabilir.

Hangi amaçlarla kullanılabilir ?

  • Her dakikada 1 kez fotoğraf çekip, web ortamına yüklemek. (JSON POST)
  • Ortamın sıcaklığını web ortamına taşıyabilmek. (POST)
  • Web ortamından alınan görevleri yerine getirmek (gpio pin açma-kapama yada sistemsel görevler)

Not: Cihazı kişisel erişiminize ait olan alanlar dışında kullanmanız gerekli durumlarda, ssh,rdp gibi servislerin kapatılmasını öneririm.

Örnek çalışma 1: (Web ortamından alınan bilgilere göre gpio pin açma-kapama / Turta 4 Kanal Röle kartı ile denenmiştir.)

Python kodlarımız:

from xml.dom import minidom
import RPi.GPIO as GPIO
import urllib
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
url_str = 'http://websiteniz.com/items.xml'
xml_str = urllib.urlopen(url_str).read()
xmldoc = minidom.parseString(xml_str)
itemlist = xmldoc.getElementsByTagName('item')
#print(len(itemlist))
#print(itemlist[0].attributes['name'].value)


if itemlist[0].attributes['value'].value == '1':
        GPIO.setup(21, GPIO.OUT)
        GPIO.output(21, GPIO.HIGH)
        print "GPIO pin 21 on"
else:
        GPIO.setup(21, GPIO.OUT)
        GPIO.output(21, GPIO.LOW)
        print "GPIO pin 21 off"


if itemlist[1].attributes['value'].value == '1':
        GPIO.setup(22, GPIO.OUT)
        GPIO.output(22, GPIO.HIGH)
        print "GPIO pin 22 on"
else:
        GPIO.setup(22, GPIO.OUT)
        GPIO.output(22, GPIO.LOW)
        print "GPIO pin 22 off"


if itemlist[2].attributes['value'].value == '1':
        GPIO.setup(23, GPIO.OUT)
        GPIO.output(23, GPIO.HIGH)
        print "GPIO pin 23 on"
else:
        GPIO.setup(23, GPIO.OUT)
        GPIO.output(23, GPIO.LOW)
        print "GPIO pin 23 off"


if itemlist[3].attributes['value'].value == '1':
        GPIO.setup(24, GPIO.OUT)
        GPIO.output(24, GPIO.HIGH)
        print "GPIO pin 24 on"
else:
        GPIO.setup(24, GPIO.OUT)
        GPIO.output(24, GPIO.LOW)
        print "GPIO pin 24 off"

Web siteniz için xml sayfa kodlarımız:

Denetim için Cron kullanıyoruz. (Belirli sürelerle python kodlarımızı çalıştırmak için);

İyi çalışmalar dilerim.


İlgili kelimeler;
raspberry raspberrypi json xml python
İlgili kategori;
Raspberry Pi Dersleri
Makaleyi paylaşın; Google+FacebookTwitterTumblrPinterestLinkedIn

Benzer makaleler mi eklemeliyim ? Bana LinkedIn ve Github adreslerimden üzerinden ulaşabilirsiniz.