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 = 'https://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.