yakut özcan kişisel blog: 2016

31 Aralık 2016 Cumartesi

RaspberryPi telegram botu ile resim gönderme

Çalışma ortamı
Merhabalar önceki yazımda raspberry pi ve hareket sensörü ile bir uygulama yapmıştık(Şu,Bu).
Şimdi ise ek olarak raspberry pi kamerası ile hareket algılandığı anda ve hareket kesildiğinde resim göndermesini sağladım, ek olarak "/GetImage" komutu ve botun bilmediği bir komut gittiğinde "Komut yok" hatasının geri dönmesini sağladık.
Aslında diğer konudan çok farklı bir değişiklik yapmadık dikkat etmeniz gereken şeyler ise dosya izinleri ve raspi-config üzerinden kamera modülünü aktif etmeniz gerekiyor.

Uygulamaya ait ekran görüntüleri

Github link: https://github.com/yakutozcan/RaspberryPiTelegramPIR/blob/master/TelePiGetImage.py

29 Aralık 2016 Perşembe

Scratch ile Arduino programla ve örnek uygulama(S4A)


Merhaba çocuklar bu yazım da sizler için Scratch ile Arduino programlamaya başlamayı anlatacağım
işlemlerime işletim sistemi olarak Ubuntu 16.10  donanımı olarak Arduino Leonardo ile devam edeceğim. Arduino programlama için ise S4A(Scratch for Arduino olarak yorumladım ben :) ) kullanacağız. 

Hemen işlemlere geçiyorum. S4A işletim sisteminize göre indirmek için
"http://s4a.cat" adresine gidiyorsunuz. Şimdilik desteklediği işletim sistemleri şu şekilde

Benim bilgisayarım Ubuntu ve debian tabanlı olduğu için Linux(Debian) seçiyorum ve bir .deb dosyası indiriyoruz. Ardından istersek çift tıklayıp paket yöneticisi ile yükleyebilirsiniz yada diğer yol komut satırından "dpkg -i S4A16.deb" komutu ile devam edebilirsiniz.
S4A Simgesi
Daha sonra arduino içine bir S4A için geliştirilmiş bir yazılım yüklemeniz gerekiyor. O yazımda şu adreste: "http://vps34736.ovh.net/S4A/S4AFirmware16.ino" bu yazılımı arduino başarılı bir şekilde yazdıktan sonra S4A  kullanmaya başlayabilirsiniz anlamına geliyor.

Yukarıda program ilk açıldığında bu şekilde bir ekran karşılıyor sizi sol panelde yaptıracak olduğunuz işlemlere ait bloklar bulunuyor kısaca hareket, kontrol, algılama,operatörler ve değişkenler en sık kullanacağınız bloklar var. Sağ tarafta arduino görüyorsunuz burada arduino üzerinde ki bazı pinlerin durumları ve arduino'nun bağlı olup olmadığı bilgisi yer alıyor.

Şimdi örnek bir uygulama yapacağız birlikte tabi ki ilk uygulamamız led yakıp söndürme olacak. S4A açmadan önce arduino bilgisayarınıza bağlamanız gerekli ve unutmadan arduino içine bir yazılım yüklemiyorsunuz S4A arduino içinde ki yazılım ile sizin S4A ile yaptığınız uygulamayı haberleştiriyor. Örnek uygulama ve arduino bağlı iken uygulama şu şekilde gözükecektir.
Sağ tarafta arduino üzerinde ki pinlerin durumu geldi ve "Searching board..." yazısı kalktı gördüğünüz gibi. Sağ tarafdaki yeşil bayrak ile yazılımın derlenip arduino ya ne yapması gerektiğini söylüyoruz.
Eğer arduino ile S4A ile bağlantı koparsa yazılımı arduino içine yüklemediği için arduino led yakıp sönme işlemi gerçekleşmeyecektir.

Bir aksilik olmazsa bu yazım bir yazı dizisi halinde devam edecek..

25 Aralık 2016 Pazar

NodeJS ile kullanıcının ip adresini öğrenme

Merhaba arkadaşlar bu yazımda NodeJS ile sitenize giren kişinin gerçek ip adresini bulmayı anlatacağım bunun için Nginx'den yararlanacağız. 
Olay şu şekilde gerçekleşiyor Nginx de header içerisine "x-real-ip" ile gerçek ip adresimizi ekliyoruz NodeJS ile de bu gelen veriyi alıyoruz :) Olay basit aslında.
Örnek Nginx alt domain dosyası
Dosya varsayılan ayarlarda ubuntu üzerinde şu dizinde("/etc/nginx/sites-enabled") 
"nano temp" diyerek oluşturuyoruz alt domain ile aynı isimde olması gerekli("temp.haydut.xyz")


Örnek NodeJS kodlarımız


Neşeli günler :) 

22 Aralık 2016 Perşembe

Digitalocean ubuntu üzerinde OpenVPN kurulumu

Merhaba arkadaşlar bugün size DigitalOcean üzerinde OpenVPN kurulumunu anlatacağım. OpenVPN iki kullanıcıya kadar ücretsiz DigitalOcean ise aylık 5$ gibi bir ücret ile sanal sunucu hizmeti alabiliyorsunuz. Kurulumu anlatmaya başlıyorum.
Öncelikle şurada DigitalOcean üzerinde sanal sunucu oluşturmayı anlattım.
https://yakutozcan.blogspot.com.tr/2016/12/digitalocean-sanal-sunucu-olusturma.html
Şimdi gelelim OpenVPN kurulumuna ben oluşturduğum sanal sunucuda "Ubuntu 16.04 32Bit" tercih ettim. İşlemlerime de ona göre devam edeceğim.

Şu adresten kullanacak olduğumuz linux işletim sistemini seçiyoruz.
https://openvpn.net/index.php/access-server/download-openvpn-as-sw.html


Sisteminiz için uyumlu yazılım paketinin üzerine gelip sağ tık "Bağlantı adresini kopyala" seçeneği ile paketin adresini kopyalayıp. SSH ile bağlandığımız sunucumuz da wget ile indirme işlemini başlatıyoruz.
"wget http://swupdate.openvpn.org/as/openvpn-as-2.1.4b-Ubuntu16.i386.deb"


İndirme işlemi bittikten sonra "dpkg -i openvpn-as-2.1.4b-Ubuntu16.i386.deb" ile yüklüyoruz.


Yükleme bittikten sonra bize aşağıda ki gibi bilgiler ile karşılıyor ardından da "passwd openvpn" ile vpn kullanıcımıza şifre oluşturmamızı istiyor.


Yüklemeden sonra verilen linkleri açınca chrome sertifika hatası veriyor pek ciddiye alıncak bir surum değil. ******* sitesine ilerle seçerek devam edebilirsiniz.


OpenVPN admin giriş ekranı

OpenVPN yönetim paneli
Kişisel bilgisayarınıza OpenVPN istemcisi kurmak ve kullanmak için şu adımları uygulayabilirsiniz.
"apt-get install openvpn"
OpenVPN kurulduktan sonra
Kullandığınız tarayıcıdan
"https://sunucuipadresiniz:943/?src=connect" adresine giderek. 
Aynı kullanıcı bilgileriniz ile giriş yapınız.
OpenVPN kullanıcı giriş ekranı
Giriş yaptıktan sonra kullandığınız cihaza göre erişim bilgilerini indiriniz, ben şuan ubuntu için işlemlerime devam ediyorum.
OpenVPN kullanıcı arayüzü
"Yourself (user-locked profile)"  seçerek "client.ovpn" dosyamı indiriyorum. Ve tekrar komut satırına dönerek şu komutu veriyorum.
"openvpn --config client.ovpn" ve bizden kullanıcı adı şifresi isteyecektir başarılı bir şekilde girdikten sonra whatismyip diyerek tarzı sistemden sorgulama işlemi yapabilirsiniz.
OpenVPN Android: https://play.google.com/store/apps/details?id=net.openvpn.openvpn
OpenVPN IOS: https://itunes.apple.com/us/app/openvpn-connect/id590379981

Gizli kalın iyi geceler. 💾

DigitalOcean sanal sunucu oluşturma

Merhaba arkadaşlar bu yazım aslında bundan sonra ki yazım için ön hazırlık olsun diye yazdım :D
Çok böyle beklentiniz olmasın zaten konu da basit bir olay bence basit diyelim de :)
Şu adresten giriş yapabilirsiniz:
https://cloud.digitalocean.com/

Sağ üst köşede ki yeşil düğmeden "Create Droplet" yazana tıklıyoruz.

Sonra yükleyecek olduğumuz dağıtımı seçiyoruz. Ben "Ubuntu 16.04.1 32Bit" seçmişim. 
Burada da oluşturulacak sanal sunucu özelliklerini seçtik. 
Sanal sunucumuzun fiziksel olarak bulunacağı ülkeyi seçiyoruz. Burada seçim için bu sunuculara ping atarak erişim sürenizin en kısa olanlarını seçmeniz erişim sürenizi azaltacaktır.
 
"Private Networking" kendinize ait sanal sunucular ile paylaşım yapmanız için. Diğerlerini isimlerinden de anlaşıldığı işleri yapıyor :)
Bu ayarlar ile kaç tane sanal sunucu oluşturmanız gerektiği sol alt köşede onun tam karşısında ise sanal sunucunuzun ismini yazıyorsunuz.
Söyle bir işlem çubuğu ile size oluşturma işlemi sırasında arkadaşlık ediyor.
Bittikten sonra espri yapmayı da ihmal etmiyor. Ve size erişim için gerekli bilgileri mail atıyor.

Ve mail adresimizde ki bilgiler ile SSH ile ilk bağlantımızı gerçekleştirdiğimizde bizden şifremizi değiştirmemizi istiyor.
Biraz alaylı bir anlatım oldu işlemler basit ve anlaşılabilir olduğu için "oha abi bunu da anlattım ya" dediğim içindir. Takıldığınız nokta olduğunda sormaktan çekinmeyin :)
Unutmadan mail de bilgiler var tabi ama sunucuyu sildim sazan.avi olmayın.

15 Aralık 2016 Perşembe

DigitalOcean sunucuya domain ekleme işlemi

Merhabalar bu yazımda DigitalOcean üzerinde bulunan sanal sunucumuza domain ekleme işleminden bahsedeceğim. xyz domainler isimtescil'de indirimde(0.90$) olunca 1 tane aldım ve hali hazırda sanal sunucumun bulunduğu DigitalOcean'daki sunucuma tanımladım. Sizlerle de nasıl yaptığımı paylaşmak istedim.

İsimtescil kontrol paneline giriş yaptıktan sonra "Domainlerim" sekmesi ardından ilgili domain için "Detaylı Yönetim" dedikten sonra.

Karşımıza aşağıda ki bir yönetim penceresi daha açılacaktır.
Bu pencereden "Yeni Ekle" diyoruz ve aşağıda ki gibi ilgili alanları doldurup "Kaydet" deikten sonra "DNS Güncelle" diyoruz.
Artık isimtescilde ki işlemlerimiz bitti sırada DigitalOcean var.
DigitalOcean kontrol paneline giriyoruz sonra "Networking" sekmesinden "Domains", "Add a domain" sonra otomatik ayarlar ekliyor ama ben onlarla verim alamadığım için benim ayarlarım aşağıda ki gibi oldu.
intodns.com ile yaptığınız ayarları test edebilirsiniz.
Kolay gelsin :) 
DigitalOcean

6 Aralık 2016 Salı

NodeJS http get isteği ile mail gönderme işlemi

Node.js logo
Merhaba arkadaşlar Node.js ile maceralarım devam ediyor bir tane web uygulamam var http get isteği gönderince mail atıyor.

https://rfidopenpcsendmail.herokuapp.com/sendmail?page_access_token=testss&message=Hello&subject="konu

Yukarıda gördüğünüz üzere
page_access_token = testss
message=gönderilecek mesaj
subject=mail konusu 

Fikir olarak ise herhangi bir nesnelerin interneti üründe kullanmak amacıyla yazdım heroku üzerinde çalışacak bir github deposu üzerinde hazır. Ve sadece heroku da bir kaç ayarlama yapmanız yeterli.

Heroku uygulama ayarları
Heroku ayarları yukarıda ki gibi yaptıktan sonra gmail güvenlik gereği izinde vermeniz gerekiyor o ayarları da aşağıda ki linklerden yapabilirsiniz.

https://www.google.com/settings/security/lesssecureapps
https://g.co/allowaccess
Uygulamanın Github adresi:
https://github.com/yakutozcan/NodejsHerokuHttpGetRequest

Python ile basit istek göndermek isterseniz github deposunda GetRequestPython.py
ile basit bir kullanım da mevcut. İyi çalışmalar.

23 Kasım 2016 Çarşamba

NodeMcu web server ve Android,Python uygulaması

NodeMcu maceramıza kaldığımız yerden devam ediyoruz arkadaşlar. Bu örneğimiz de nodemcu'ya web server olarak kullanıp dijital pinin durumunu yine html çıktısı olacak alıp android ve python ile yazdığım iki uygulama ile güzelleştirdim diyebiliriz. 



Python uygulaması çalışması için "notify-send" kurulu olması gerekli (sudo apt-get install notify-osd)

Python uygulamasına ait görüntüler



 Python uygulamasına ait görüntüler



Android uygulaması da aynı mantıkla web sayfasını görüntüleyip "acik" ise sesli ve titreşimli bildirim veriyor telefon üzerinde. Bildirimi açıp okuyana kadar bildirim gelmeye devam edecektir.




 Android uygulamasına ait görüntüler

 Android uygulamasına ait görüntüler

Yazılar için geri dönüşler oldukça benim de yazma hevesim bir o kadar artıyor. İyi çalışmalar.

16 Kasım 2016 Çarşamba

RaspberryPi telegram botu ile hareket sensörü kullanımı

Merhaba arkadaşlar daha önce duyduğum ve kurcalamaya vakit bulamadığım teknolojiler ile daha çok vakit geçirmeye başladım.  "python yardımı için Umut'a teşekkürler."


Uzatmadan projeyi tanıtıyorum. Elimde önceden alınma PIR sensörum vardı bunu raspberry pi ile denemek istedim işin içine birde telegram botu girdi güzel oldu.
Elimde ki PIR ı şu görsele göre bağladım. Şurada anlatlılıyor
"https://www.raspberrypi.org/learning/parent-detector/worksheet/"


Telegram botunun nasıl oluşturulacağı ise 
https://core.telegram.org/bots#6-botfather" bu adreste anlatılmış.

Bot ve raspberry pi



Proje github:


14 Kasım 2016 Pazartesi

NodeMCU TCP sunucu ve istemci haberleşmesi

Sosyal medyadan aldığım destek ile denediklerimi ve yaptığım basit örnekleri artık daha korkusuzca paylaşabiliyorum :)
Çok uzatmadan uygulamamıza geçelim.
NodeMCU ESP8266 kullanan bir geliştirme kartı Aliexpress'den temin edebilirsiniz daha ucuz. Lua ve arduino programlama dili ile kullanabilirsiniz ben arduino tercih ettim erişebileceğim kaynak sayısı daha çok olduğunu bildiğim ve aşina olduğum bir dil olduğu için.

 Arduino IDE kullanabilmek için kartı eklemeniz gerekiyor bunun nasıl yapılacağı şurada anlatılmış.


Evet bunun içinde ufak bir python scripti var :)


Örnek ekran görüntüsü

13 Kasım 2016 Pazar

Yerel ağda ki raspberry pi bulmanın yolları

Merhaba arkadaşlar raspberry pi ile başımdan bir macera geçti ve bu maceranın sonunda da bir sorun ile karşılaştım ve çözüm yolları aramaya başladım :) 
Sorun: Üniversiteye götürdüğüm RPi lokal ağda bulmam gerekiyordu.
Sorunun cevabından önce diğer yolları da yazayım istedim.
  1. NMap(Zenmap)

sudo nmap -sP 22 192.168.1.0/24
 
sudo nmap -p 22 192.168.1.0/24
Zenmap
Neyse nmap uzmanı değilim bu şekilde değişik komutlar ile ağı tarayıp RPi bulabilirsiniz.
Hatta burada da biraz değinilmiş
Windows kullanıcıları içinde zenmap mevcut ve bir kaç tane daha araç mevcut
Angry ip scanner
Mobil olarak fing.io var ios ve android desteklemekte.

Şimdi asıl sorunumuza dönecek olursak üniversite ağı çok kalabalık ağı öyle her istediğimizde de taramak sıkıntı çıkarabilir. Bende bir tane python scripti ile işi çözebileceğimi düşündüm :) 

Ve şöyle bir python kodu var

Kısaca açıklamak gerekirse UDP den 1907 portunu dinliyor ve "haydut_rpi" yazanlara ip adresim bu deyip gönderiyor. Kullanmak için raspberry pi açılışına eklemek yeterli. ("nano /etc/rc.local") 
Birde java arayüz yaptım. 
Mobil uygulama da var aslında ama tam istediğim gibi olmadı ileride belki onuda paylaşırım.