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ç :
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.
Hocam Merhabalar,
Degerli bilgileriniz icin tesekkurler.
Avahi kullanarak debian uzerinden local link IP adresi nasıl tespit edebiliriz?
iyi calismalar…
Tesekkurler.
Merhaba,
avahi-browse -ar
komutu bağlı olduğunuz ağdaki tüm cihazları IPleri ve (varsa) ekstra bilgileriyle beraber listeleyecektir. Ancak aradığınız cihazın daha önce kendisini aynı ağdaki dns sunucusuna kaydetmiş olması gerekir.
iyi çalışmalar dilerim,