Raspberry Pi 3 – Service Discovery (ZeroConfig)

Merhaba,

Raspberry Pi projelerinde kullanabileceğiniz  oldukça kullanışlı mDNS/DNS-SD servisinden bahsedeceğim.

mDNS/DNS-SD : Yerel ağda servis bulmak veya servis yayınlamak için kullanılır. Zeroconf veya bonjour olarakta geçer. Linux’ta avahi paketi altında implement edilmiştir.

Avahi kurulumu :

  • $ sudo apt-get install avahi-daemon avahi-utils

paketlerini kuralım.

avahi-daemon, protokolün temel işlerine bakan ana süreçtir. Komut satırından programlanabilir veya başka bir uygulama içindende erişilebilir. Program içinde kullanmak için buraya bakabilirsiniz. Ben bu yazımda komut satırından nasıl servis yayınlanacağını anlatacağım.

Servis Yayınlama :

Servis yayınlamak için avahi-publish-service komutunu kullanacağız. Komutun syntax’ı aşağıdaki gibidir :

avahi-publish-service SERVİS-ADI  _UYGULAMA-PROTOKOLÜ._TAŞIMA-PROTOKOLÜ PORT “AÇIKLAMA” –sub ALTPROTOKOL

Örnek kullanım :

  • avahi-publish-service LetheRC _socket._tcp 1903 “/Lethe RC Survelliance Robot” –sub _letherc._sub._socket._tcp

Bu servisi başka bir cihazda taradığımızda sonuç aşağıdaki gibi olacaktır :

Linuxta tüm servisleri taramak için :

  • $ avahi-browse -ar

yazalım. Bu komut yerel ağdaki tüm servisleri çözer ve listeler. Bizim az önce başlattığımız servisi burada görebilirsiniz. RaspberryPi’dan başlattığım servisi dizüstü bilgisayarımdan taradığımdaki sonuç :

discovery-result

Peki servisi başlattık bu ne işimize yarayacak diye soruyorsanız? Artık Raspberry Pi 3’e bağlanmak için statik ip kullanmak zorunda değiliz. Raspberry Pi başka bir ip alsa bile bu servisi çözerek o ip’yi alabilir ve dinamik bağlantı kurabiliriz. Son bir adım olarak Raspberry Pi her başladığında bu servisin başlaması için küçük bir script yazalım.

Yeni bir dosya açalım :

  • nano start-letherc-nsd.sh

Dosya içeriğine başlatmak istediğiniz servisi yazınız. Ben örnekteki servisi yazıyorum. Dosyanın başına #!/bin/sh yazmayı unutmayın. Örnek içerik :

#!/bin/sh

#Start publishing service.

avahi-publish-service LetheRC _socket._tcp 1903 “/Lethe RC Survelliance Robot” –sub _letherc._sub._socket._tcp

 

Dosyayı kaydedip çıkalım. Ve scripti çalıştırılabilir yapalım.

  • $ chmod +x start-letherc-nsd.sh

Scriptimiz hazır son olarak scripti crontab’e ekliyoruz.

  • $ crontab -e

Açılan dosyanın en altına :

@reboot /home/pi/MyScripts/start-letherc-nsd.sh” (tırnaksız) ekleyin. Eklerken kendi scriptinizin bulunduğu yolu eklemeyi unutmayın.Kaydedip çıkın. Artık raspberry pi her başladığında crontab servisimizi çalıştıracak ve böylece dinamik olarak ip/port bilgisi alacağız.

Bir sonraki yazımda android cihazdan bu servisi kullanarak raspberry pi’a bağlanacağım.

İyi çalışmalar.

 

775 total views, 0 views today

Facebooktwittergoogle_plusredditpinterestlinkedinmail