Thread overview
D ile internet üzerinden ev otomasyonu
Jul 26, 2012
erdem
Jul 26, 2012
Salih Dinçer
Jul 27, 2012
erdem
Jul 27, 2012
erdem
Jul 27, 2012
erdem
July 26, 2012

Evinize uzaktaki bir bilgisayardan bağlanıp, evdeki elektronik cihazları denetlemek oldukça eğlenceli olurdu herhalde. İşyerinden eve geliyoruz, evinizdeki bir sunucuya bağlanıp çay makinesine çayı hazırlaması için bir komut gönderseniz, oldukça kullanışlı olurdu herhalde.

Biraz daha ilerletelim. Örneğin, hırsız modunda iken, evinizin değişik yerlerine yerleştireceğiniz hareket sensörlerinden alınacak veriye göre evde hareket varsa cep telefonuna SMS çektirebilirsiniz. Ya da uzaktan çiçeklerinizi sulayabilirsiniz. (http://www.biltek.tubitak.gov.tr/gelisim/elektronik/2.htm)

Uygulamamız şimdilik sadece uzaktan veri gönderme amaçlı olacak. Yapmak istediğim paralel porta bağlı bir röle kontrol devresi var. Uygulamamızın amacı, sunucuya TCP/IP protokolü ile bağlanıp, sunucu üzerinde bulunan paralel port üzerindeki 8 bitlik çıkıştan istediğimizi yüksek yapmak.

Bu uygulamayı D ile yapmak için hangi kütüphaneleri kullanabiliriz?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 27, 2012

TCP/IP kullanmak akıllıca ki bizim şirketteki yerli tasarım ürünleri (http://www.colife.com.tr/) de bu şekilde haberleştiriyoruz. Çünkü devir tablet devri ve sisteme bir Android dahil edip komşunuz ile görüntülü görüşme dahil sınırsız sayıda uygulama gerçekleştirilebiliyor.

Bunun için sigorta kutusuna yerleştirilen (Rejinet isminde) PIC mikrodenetleyicili bir kart kullanıyoruz. Dolayısıyla analog uçlar ayrıntılı bir kontrol için (su basma ve yangın algılayıcıları, gaz/su vanası kesme, asansör çağırma, klima çalıştırma vb.) arttırılabilir sayıda olabiliyor. O yüzden paralel portlu bir bilgisayar kullanmak yerine düşük güçte çalışabilen sistemler (embedded) daha avantajlı.

Başarılar...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 26, 2012

Web arayüzü daha kullanışlı olur mu? O zaman sunucu vibe.d ile yazılabilir:

http://vibed.org/

İstemcilerin işleri de gelen HttpServerRequest'lere göre paralel port ile oynanarak halledilir.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 27, 2012

@salih : Böyle bir şirkette çalıştığını bilmiyordum ;-) Evet dediklerin doğru. Haklısın kesinlikle katılıyorum.

Ama özellikle D ile bir şeyler yapmak için paralel port kullanıyoruz. Şimdilik bildiğim kadarıyla D 16 bitlik sistemlere destek vermiyor.

Gömülü sistemlere gelince geçen bir arkadaş Beaglebone için C++ kullanarak GPIO programlamayı anlatan bir bağlantı vermişti.

http://www.youtube.com/watch?v=SaIpz00lE84

Eğer C++ kullanılabiliyorsa D ile de yapılabilir diye düşünüyorum. Ama hiç denemedim ve deneyimim yok bu konuda.

Ali bey verdiğiniz bağlantı sanırım bir HTTP sunucusu oluşturuyor. Henüz denemedim ama deneyince yazarım.

Bağlantı için teşekkürler! :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 27, 2012

Ali bey şimdi denedim. Aslında çok ilginç örnekler var. Örneğin bir zaman sunucusuyla iletişime geçip tarih zaman bilgisini alabiliyor. Ya da bir internet sayfasının kaynak kodunu alabiliyor.

Ama bazı örnekler hatalı çalışıyor. Ya da ek izin mi vermek gerekiyor acaba. Bir de örnekleri nasıl derleyeceğiz onu anlamadım. Örneğin http sunucusu örneğinin olduğu dizine gelip belgelerinde anlatıldığı gibi vibe programını çalıştırıyorum.

'../vibe.d/examples/http_server$ vibe
[B762EF80:00000000 INF] Updating application in '/home/erdem/Çalışmalar/vibe.d/examples/http_server'
[B762EF80:00000000 INF] You are up to date
[B76D9F80:00000000 INF] Listening on 0.0.0.0 port 8080 succeeded
[B76D9F80:00000000 ERR] Error binding listening socket
[B76D9F80:00000000 INF] Listening on :: port 8080 failed
[B76D9F80:00000000 INF] Running event loop...
'

Ama burada bir hata veriyor anladığım kadarıyla. Bir de uygulamaları nasıl derleyeceğiz onu anlamadım. 'Vibe 'programı bizim için örnekleri çalıştırıyor ama çalıştırılabilir bir program oluşmuyor.

Programın kaynak kodu da şu şekilde:

import vibe.d;

void gelenİstekleriİşle(HttpServerRequest istek, HttpServerResponse yanıt)
{
   yanıt.writeBody(cast(ubyte[])"Merhaba, Dünya!", "text/plain");
}

static this()
{
   auto ayarlar = new HttpServerSettings;
   ayarlar.port = 8080;
   listenHttp(ayarlar, &gelenİstekleriİşle);
}

Ama bir taraftan bu hatayı vermesine rağmen sunucu da çalışıyor.

http://farm9.staticflickr.com/8158/7658774318_7897a6dc15.jpg (http://www.flickr.com/photos/elektronikhobi/7658774318/)

Neler olup bittiğini anlamakta biraz güçlük çekiyorum :huh:

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 27, 2012

Burada anlatılanlara göre (https://github.com/rejectedsoftware/vibe.d/issues/8) aynı anda hem IPv4 ve IPv6'yı dinliyormuş. IPv6 olanı da hata veriyor sanırım.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 27, 2012

Alıntı (erdem):

>

Ali bey verdiğiniz bağlantı sanırım bir HTTP sunucusu oluşturuyor.

Çok iyi şeyler duydum ama kendim denemedim. HTTP sunucusu da nasıl olsa bit TCP/IP programıdır. Varsayılan olarak 80 numaralı portu kullanıyor. Belki o modülün başka yaralı tarafları da vardır. Denediğin için teşekkürler! :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 27, 2012

Uzun zamandır merak ediyordum. Belki bu hafta sonu zaman bulur bakarım.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]