ESP8266-01 ile Tüm Dünyadan Evinize web sitenizle bağlantı kurun.

ESP8266-01 + Arduino ile Tüm Dünyadan Evinize web sitenizle bağlantı kurun. (ESP Kütüphanesine ve Gerçek IP adresinize ihtiyacınız olmadan). Hem evinizdeki bütün alıcıların durumlarını kontrol edin. Hem de evinizdeki aygıtları web siteniz üzerinden çalıştırın.

Daha önceki yazımda internete bilgi göndermeyi göstermiştim. thingspeak örneği gibi.

Şimdi ise kendi web sitenizi kullanarak ya da ücretsiz web sitesi yaparak evinize bağlanmayı göstereceğim. Burada PHP kullanımı ön planda olsa da kullanılan dosyalar anlaşılabilir ve geliştirilebilir olduğundan az bir bilgi ile kendinize göre değiştirebilirsiniz.(Benim PHP bilgim hiç yoktu. Yinede standart komutlarla bir şeyler değiştirebildim. Sizlerde küçük bir çabayla örnekleri istediğiniz şekilde değiştirebilirsiniz.)

MQTT sistemini bilmiyorum. İlk izlenimlerime göre bu sistemin MQTT benzeri bir sisteme benzediğini söyleyebilirim. MQTT sisteminde broker denilen aracı var tüm vericiler buraya bilgileri bırakır ve tüm alıcılarda buradan bilgileri alırlar. Burada anlatacağım konu da benzer bir sistem. Web sitenizi broker olarak kullanmanızı sağlayacak. GÜVENLİ Mİ? Bu haliyle güvenli değil. Güvenli hale gelebilir mi. Evet bir anahtar kelime belirlersiniz ve bu anahtar kelime olmadan web siteniz bile açılamaz. Ben güvenlik tarafına girmeyeceğim.

Sistem kafanızda canlansın diye yukarıdaki resmi koydum. Broker yazan yer WEB SİTENİZ olacak.Resimdeki gibi bir web sitesinde alıcı ve vericileri buluşturabileceksiniz.( Tabii ki şimdilik güvenli anahtar olmayacak. )

Ayrıca evinize bağlanmak için Modeminizin gerçek IP sini bile bilmenize gerek yok. ( Bu konuya da ileride değineceğiz. ESP8266-01 ile Gerçek IP nizi nasıl bulacaksınız ve daima güncel olacak. istediğinizde sanki ev ağınızı kullanıyormuş gibi bağlanabileceksiniz. )

Artık konumuza geçelim.

Öncelikle 1. videoda çalışma sistemini göreceksiniz. Bunu arduino ile gösteremiyorum çünkü bütün çıktıları bir arada görebilmeniz gerekiyor. Bunu da proteus simulatör ve seri port’a bağlı gerçek ESP8266-01 modülüyle gösterebiliyorum. ESP kütüphanelerinin kullanılmasına gerek yok. ya da ESP ye program yüklemenize gerek yok.
Zaten ESP modül satın alındığında 115200 baud hızında AT komut seti kullanılabilir olarak geliyor. Sadece arduino nun TX ve RX uçlarını bağlamanız yetiyor. (Tecrübesiz olanlar için uyarı. TX RX uçları bağlıyken arduinoya program yükleyemeyebilirsiniz. TX RX uçlarını programınızı yükledikten sonra bağlayın.)
Programda F komutları göreceksiniz. Bunlar sadece değişkenlerin az olan data belleğinde değil program belleğinde saklanması içindir. Data belleğini verimli kullanmak için bunu yapıyorum.
Arduino Nano yada Uno kullanılabilir. DHT22 kütüphanesi mevcut olduğundan programda DHT22 kütüphanesini kullandım. Bu sensör yerine DHT11 ve benzeri sıcaklık ve nem sensörleri kullanılabilir. ( program içerisinde sensöroku kısmını dht11 e göre revize etmeniz gerekebilir. )
ESP kütüphanelerine ihtiyacınız yok fakat DHT-sensor-library-master, ve o kütüphanenin kullanılmasında gereken, Adafruit_Sensor-master kütüphaneleri ile birlikte JSON formatını çözümleyen ArduinoJson-master kütüphanelerini buradan indirebilirsiniz.

Normalde sistem 3 ışık kontrolüne göre yapılsa da proteus ta 4 temsili led göreceksiniz.
Sensör sayısında yada kontrol edeceğiniz lamba röle gibi cihazların sayısında sınırlama yok. Bu sınır ancak web sitesinde kullanacağınız MYSQL denilen veritabanı sınırlarına kadar kullanılabilir, ki bu kadar sensörü bir yerde toplamanız çok zordur. çünkü veritabanları binlerce bilgi alır. Tabii ki bir de  Arduino nun kontrol kapasitesine bağlıdır. Dosyaları anladığınızda bunun bir sorun olmadığını göreceksiniz.

Sistemin mantığı :  ESP, sensör bilgilerini arduino ile okuduktan sonra verileri web sitemizdeki veritabanına iletir. Bizim web sitemizden gönderdiğimiz komutları ise php dosyaları veritabanına yazar. ESP veritabanına yazdığımız komutları okuyup arduinoya iletir ve arduino bu bilgileri JSON kütüphanesiyle ayrıştırıp, uygulamaya koyar. PHP dosyaları da arduinonun kaydettiği sensör bilgilerini web sitesinden bize gösterir.
Örnek senaryo: Evimizde yokken bir duman sensörü aktif oldu. bunu arduino ile hissedip veritabanına yazdık. Veri tabanına biz okuyuncaya kadar haberdar olamayız. Bu durumda haberdar olmamız için PHP dosyasına bir kontrol mekanizması oluşturup acil durumlarda sms atmasını söyleyebiliriz. Ya da ESP burada devreye girerek hem bilgileri veritabanına iletir ve hem de SMS ile bizi bilgilendirir. Kullanıcı acil mesajı alır almaz web sitesini açar ve duruma müdahale etmek için evin elektriğini keser. Ayrıca yangın sistemi varsa yangın sistemini çalıştırabilir. Bu yangın sadece bir odadaysa o zaman kullanıcı sadece o odanın söndürme sistemine komut verebilir. Kamera olmadan sensörlerin durumuna göre karar verebilir ya da internete bağlı kamerası varsa evin içerisini görüp web sayfasından komut vererek problemi çözmeye çalışır.
Bu sistem acil durum haricinde her 30sn de bir kullanıcı komutu var mı diye veritabanını okumaya gidecek şeklinde ayarlanabilir. ben videoda süreklilik olsun diye 3-5 saniye kadar ayarladım.

video sistemin proteusta çalışmasını gösteren küçük bir video.

Şimdi bu videodaki sistemin arka planını inceleyelim. Sistemin mantığını yukarıda okudunuz. Bu işlemi 2 şekilde yapacağız.

1.yol : Web sitemiz yoksa 000webhost.com adresinden web sitemizi oluşturarak .
2.yol : Önceden Web sitemiz varsa ve PHP destekliyorsa kendi web sitemizi kullanmak.

Burada göstermek istediğim birinci yol free hosting veren 000webhost sitesinden bağlantı. (2017 yılında bu site kendi domainini vermeyi durdurduğundan farklı bir ücretsiz domain almanız ve bu siteye videodaki gibi bağlamanız gerekecek. Unutmayın domain, aldıktan 1-2 gün sonra sisteme girer. bu süreçte webhost kısmını ayarlayıp beklemelisiniz. ) Domain nedir derseniz: Kısaca sitenizin ismi olarak söyleyebilirim.
Free domain her yerden alabilirsiniz.
ben, (http://www.freenom.com/tr/index.html?lang=tr) adresinden 3 aylık ücretsiz aldım. Uzun süre kullanmak isterseniz buradan ya da başka bir yerden paralı almalısınız.
Domain açıldı mı diye kontrol etmek için 000webhost da örnek web sitelerinden birini ücretsiz olarak kendi alanıma yükledim. web sitesi yayındaysa artık domain hayata geçmiştir.
Webhost kısmı 2. videoda ayrıntılı anlatılacağından burada yazmak istemiyorum.

2. video webhost kurulumu:

Bu 000webhost sistemindeki dosyaları ben yapmadım. Bunların orjinal adresi burasıdır. Yabancı bir kaynaktır. Ben bu kaynağa göre kendim tecrübe ederek videoda anlattım. Çünkü video eski olduğundan aynı şeyleri yapsanız da başarılı olamıyorsunuz.  000WEBHOST bazı sistematik değişiklikler yapmış. Videoda göreceğiniz gibi sadece veritabanı bağlantı parametresi değiştirmek için config.php dosyasında bilgiler değişecek. diğer dosyaları değişiklik yapmadan kullanabilirsiniz.
000webhost sitesindeki Programların orjinal sahibi : http://iotmonk.com/courses/creating-iot-cloud-scratch-using-php-mysql-esp12e/

NOT: bu dosyalar PHP 5.2 kullandığından ve yeni web siteleri ise PHP 7.0 a geldiğinden verilen kodlar sadece 000webhost gibi yerlerde php5.2 nin bulunduğu yerlerde geçerli olacaktır.Videoda belirtildiği gibi ayarlar bölümünden genel kısmı seçip PHP versiyonunu değiştirebilirsiniz.
www.mikrobotik.com sitemde yeni versiyonları nasıl kullanabileceğinizi görebileceksiniz. 

000WEBHOST   php dosyaları. 

Birde denemelerinizi yapabileceğiniz google eklentisi var. POSTMAN. Bu program sitenize ulaşıp PHP dosyalarını çalıştırıp sonuçları görmenizi sağlar. Bu sadece bilgisayarda denemelerinizi yapabilmeniz içindir. Postman kullanımı 4. videoda anlatılacaktır.

Şimdi gelelim kendi sitemde kullandığım metotlara. Burada ki dosyaları da indirebilirsiniz.  kendi sitenizde kullanıma açabilirsiniz. Kendi php programlarınızda değişecek olan tek yer. veritabanı ismi veri tabanı kullanıcı adı, veri tabanı şifresidir. Bunları değiştirdikten sonra tüm dosyaları rahatlıkla kullanabilirsiniz. Videoda dizin yapısı mevcuttur.
Burada benim PHP versiyonum 5.5 olarak ayarlı. videoda Cpanelde nasıl yapılacağını gösterdim. Sizlerde sitelerinizde bu ayarı yapabilirsiniz. 
POSTMAN programıyla PHP sisteminizin ve MYSQL sisteminizin çalıştığını kontrol edin. Daha sonra web sitesi aracılığıyla kullanılacak olan programı da kurup deneyin.
Dosyalar yaklaşık 2 ay boyunca test amaçlı kullanılabilir. Postman vasıtasıyla verileri görüp değiştirebilirsiniz. 

Mikrobotik_php_dosyalar. 

3. video mikrobotik sitesindeki kullanım. 

 

Artık Arduino ile ESP8266-01 kullanımına sıra geldi. Burada da ESP nin AT komutlarını kullanacağız. Bunlar için hiç bir kütüphaneye ihtiyacınız olmayacak. zaten 3-5 komut ile internete bağlanabileceksiniz.(baud hızı 115200 olarak ayarlanacak.Çünkü ESP8266-01 modüller genellikle 115200baud hızında çalışacak şekilde geliyor.   Şayet ilk bağlantı durumunu test etmek isterseniz bu sitede ESP 8266 giriş yazısı var. o yazıdaki programla ve usb seri çevirici kullanarak ilk testlerinizi yapabilirsiniz. )

Arduino programında Modeminizin bağlantı kurması için gerekli olan SSID ve password yazdığınızda ESP01, modeminize bağlanıp internete çıkmaya hazır olacak. Aynı postman daki gibi verileri web sitenize gönderecek. Web sitenizde ısı ve nem değerlerini kayıt edecek, Lamba durumunu da web sitenizdeki veri tabanından alıp uygulayacak. Bütün bu dataları kaydederken ve okurken kullanıcının web sitesi üzerinden gönderdiği light on ve off komutlarını alarak gerekli işlemleri yapabilecek. Kütüphane kullanmadan derken ESP ile ilgili kütüphaneyi kastettim. Fakat gelen bilgi JSON formatında geldiğinden bunu ayrıştırmak için arduino json kütüphanesini kullandım. Json formatı artık günümüzde bir çok yerde programlar arası data aktarımı için kullanılmaktadır.
Json formatı hakkında geniş bilgiyi bu siteden elde edebilirsiniz. Json site
bu formatı değiştirirken hata yaparsanız tüm dizi çalışmaz. bundan dolayı formatı değiştirdiğinizde formatı bir format kontrol noktasında deneyebilirsiniz.
Ayrıca Arduino için kendi formatınızın JSON parçalamasına ait kodlamayı da bu siteden alabilirsiniz.

Arduino program link:Programda delay süreleri proteusa göre verildi kendinize göre ayarlayabilirsiniz.

 

Programda bakgel alt programı sadece esp den dönen bilgileri bufferdan siler. ve ortalama gecikmeyi sağlar.
espready alt programı ESP nin göndermesi gereken bilgileri göndermek için hafızaya alır ve ilk komutları yollar.
Jsonpar alt programı JSON dizisini parçalar ve komutları uygular.
Weatherkontrol alt programı temp ve hum değişkenlerindeki ısı ve nem değerlerini gönderir.
webkontrol alt programı kullanıcıdan gelen bilgileri okuyup json parçalamaya gönderir.
( burada readstring json son karakteri olan “]” parantezi arar ve bulduğunda alımı durdurur. bundan dolayı son parantezi bir alt satırda ekleme yapıyoruz.)
loop alt programı ise gerekli ara gecikmeyi verip organizasyonu başlatır.

NOT: program içerisinde 155. satırda bir not var. Işık sayısı arttırıldığında bu sayıyı değiştirmeniz gerekir. bunu da oradaki linkten alabilirsiniz. Ayrıca gelen data büyüdükçe 151 ve 152. satırlardaki numaralarıda değiştirmeniz gerekecektir. sistem şu an 4 ışığa kadar kullanılabilecek durumdadır. 

WEB sayfası oluşumu ise yine PHP dosyasıdır. Herhangi bir cihazdan google gibi bir internet göstericisinden web sitesi olarak çağırabilirsiniz. Gelen sistemde 1. videoda gösterildiği gibi light butonları ve sensör kontrolleri vardır. bu dosya veri tabanına ulaşıp ESP den gelen verileri kontrol eder ve gösterir. Ayrıca kullanıcının komutlarını veri tabanına kayıt eder ve ESP nin almasını uygulamasını bekler.
İsterseniz daha da geliştirerek uyguladım mesajını da veri tabanına yazıp kullanıcıya iletebilirsiniz. Program kolaylıkla geliştirilebilir.

WEB üzerinde siz www.mikrobotik.com/api/webbutton.php olarak çağırdığınızda bu program yukarıdaki webuygun.php dosyasını çağırır. Çağırırken de hangi butona bastıysanız o butonu webuygun.php ye aktarır. Programı takip ettiğinizde kaç sensör ya da light buton varsa o sensör numarasına kadar ve light numarasına kadar arttırmalısınız. satır kopyalayarak yapabilirsiniz.
Bir de 11-13 satırlar arasındaki bilgileri veritabanınıza göre doldurmanız gerekir ki veritabanını açabilsin.
webbutton.php de ise yine satır kopyalayarak sensör ve lamba sistemini arttırabilirsiniz. 

Not: mikrobotik.com sitemdeki Sistem kurulurken 3 sensör ve 3 ışık üzerine kuruldu. bunlar kolaylıkla arttırılabilir. Hatta 000webhost taki gibi insert.php yapılıp, datalog oluşturulabilir ve daha sonra bu listeler analiz edilebilir. Aynı thingspeak  yazımdaki gibi.

POSTMAN VİDEOSU :

Başta da dediğim gibi Güvenlik herkesin kendi sorunudur. ben bunları deneme olarak kullanacağım diyorsanız veriler de çok önemli veriler değil diyorsanız rahatlıkla denemelerinizi yapabilirsiniz. Ben dosyaların isimlerini değiştireceğim derseniz değiştirebilirsiniz fakat bazı php dosyalarının içerisinde bulunan isimleri de değiştirmeniz gerekecektir. Özellikle web üzerinden ayar yapan programa bir şifre ilave ederseniz sizden başkası bu web sayfasına bağlanamaz.

Videodaki bilgiler ışığında ve buradaki bilgiler ışığında hala sorun varsa buradan bana ulaşabilirsiniz. PHP bilgim var mı diye sorarsanız hiç yok. Yinede kullanılan komutlar standart olduğundan sizlerde benim gibi küçük bir çabayla değişiklik yapabilirsiniz.

POSTMAN denemelerinizde kullanılacak linkler. 2 ay boyunca orjinal dosyaları kontrol edebilirsiniz.

http://phpdene.tk/api/led/read_all.php
http://phpdene.tk/api/led/update.php?id=2&status=on
http://phpdene.tk/api/weather/read_all.php
http://phpdene.tk/api/weather/update.php?id=1&temp=21

http://www.mikrobotik.com/api/led/Lreadmysql.php
http://www.mikrobotik.com/api/led/Lupdate.php?id=2&status=”off”
http://www.mikrobotik.com/api/weather/wreadmysql.php
http://www.mikrobotik.com/api/weather/wupdate.php?id=1&hum=35&temp=20

Dosyalar yaklaşık 2 ay boyunca test amaçlı kullanılabilir. Postman vasıtasıyla verileri görüp değiştirebilirsiniz. 

Bu sistemin gerçekleştirilmesinde bana yardımcı olan arkadaşlara teşekkür ederim.

Thank you for your valuable assistance.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir