skip to Main Content

raspberry pi üzerinde minidlna

çok fazla karışık olmayan basit bir dlna server ihtiyacınız varsa minidlna tam size göre. raspbery pimi açıyoruz ve kurulumu gerçekleştiriyoruz.

 sudo apt-get install minidlna

kurulum sorunsuz olarak tamamlandıktan sonra. minidlna mızı konfigüre edebiliriz.. bunun için bize öncelikle video, ses, resim dosyalarımızın konumu gerekiyor. raspberrypi ye herhangi bir taşınabilir bir disk taktığınızı ve doğru şekilde mount edildiğini varsayacağız.

 df
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda1      976760001 366707224 610052777  38% /media/usb

taşınabilir diskimizin kontrolü yaptıktan sonra minidlna nın root olarak çalıştırılmaması önerilmektedir.

 sudo nano /etc/default/minidlna

dosyası içerisinde

# User and group the daemon should run as
#USER="minidlna"
#GROUP="minidlna"

gerekli değişiklikler yapılabilir.. şu aşamada bu çok önemli değil. genel ayarları yapalım. konfigürasyon dosyasını açalım

sudo nano /etc/minidlna.conf

dosya içerisinde aşagıdaki satırları bulalaım

#   * "A" for audio    (eg. media_dir=A,/var/lib/minidlna/music)
#   * "P" for pictures (eg. media_dir=P,/var/lib/minidlna/pictures)
#   * "V" for video    (eg. media_dir=V,/var/lib/minidlna/videos)
#   * "PV" for pictures and video (eg. media_dir=PV,/var/lib/minidlna/digital_camera)
media_dir=/var/lib/minidlna

ben video ve müzik için tanımlamaları yapacağım.

media_dir=V,/media/usb/ARSIV/FILM
media_dir=A,/media/usb/ARSIV/mp3

dosyayı kaydedip çıktıntan sonra. minidlna nın başlatılması gerekecek. şimdi başlatalım. aktif olarak çalışıyorsa yeniden başlatmanız gerekiyor tabiki..

sudo service minidlna start
sudo service minidlna restart
sudo service minidlna force-reload

uygun parametre ile minidlna yı başlattıktan sonra, durum bilgisini kontrol ettiğinizde servisin yeniden başladığından emin olmalısınız.

pi@raspberrypi:~ $ sudo service minidlna status
● minidlna.service - LSB: minidlna server
   Loaded: loaded (/etc/init.d/minidlna; generated)
   Active: active (running) since Sun 2020-07-26 17:40:36 +03; 24min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1478 ExecStart=/etc/init.d/minidlna start (code=exited, status=0/SUCCESS)
    Tasks: 2 (limit: 2068)
   CGroup: /system.slice/minidlna.service
           └─1497 /usr/sbin/minidlnad -f /etc/minidlna.conf -P /run/minidlna/minidlna.pid -r

Jul 26 17:40:36 raspberrypi systemd[1]: Starting LSB: minidlna server...
Jul 26 17:40:36 raspberrypi systemd[1]: Started LSB: minidlna server.

artık minidlan kullanıma hazır. aynı ağdaki bir cihazdan tarayıcınıza

http://raspberry-pi-ip-adresi:8200

adresini yazarak minidlna nın durum bilgisine ulaşamabilirsiniz… yazdığım dizinlerde 481 tane film 2887 tanede mp3 müzik dosyası varmış.

dlna client özelliği olan herhangi bir cihazdan artık içeriğe erişebiliriz. ben testi evdeki vestel televizyonda ve windows 10 da test yaptım.

ekran görüntüsü yer aldığı gibi raspberrypi yi sorunsuz olarak gördü. videoları sorunsuz izleyebiliyorum. ancak mp3 lerde sorun yaşadım. mp3 kısmını kullanmadığım için çok detaylı incelemedim ancak mp3 sayısının çok fazla olması, cache aktif etmemem ve mp3 isimlerinde ve mp3 taglarında çok fazla türkçe ve absürt karartker yer almasından kaynaklandığını düşünüyorum.

artık elimizde çalışan bir dlna servisimi var. biraz kişileştirmek isterseniz konfigürasyon dosyasını açarak

sudo nano /etc/minidlna.conf

örneğin clientlerda görünen dlna sunucu adını,

# Name that the DLNA server presents to clients.
# Defaults to "hostname: username".
#friendly_name=
friendly_name=cicek_dlna_server

değiştirebilirsiniz.

NOT: bu servisi aktif kullanılırken raspberrynizde aktif bir şeyler yapmak isterseniz dikkatli olur.. benim rpi de hd video izlerken %25 sistem kaynakların tüketiyor.

raspberry pi üzerinde en basitinden telegram

yaptığınız uygulamaları sosyal platformlar ile buluşturmak istiyorsanız telegram bunun için iyi bir başlangıç olabilir.

öncelikle mevcut bir telegram hesabınız olması gerekiyor. hesabınızla

BotFather

botunu bulun ve sırayla

/start
/newbot
/kullanicak_bot_adi_bot ( sonunda bot olmak zorunda)

yazıyoruz. adımları doğru şekilde gerçekleştirdiysek; yeni bir bot oluşturarak bize bir token / HTTP API üretecek.

uygulamamızı raspberry pi üzerinde gerçekleştireceğimiz için bize öncelikle sağlam bir kütüphane gerekiyor. ben bu uygulamamızda python – teleport kütüphanesi kullanacağım

pip install telepot

ile kütüphanemizi raspberry pi üzerine kuralım. ( python , pip vb gereksinimlerin daha önceden kurulu olduğu varsayılmaktadır)

kullanıcıdan gelecek komutları dinleyen ve buna cevap dönecek basit bir bot yapalım. aşağıdaki örnekte raspberry pi nin gerçek ipsini, zamanı gibi basit bir kaç fonksiyonun nasıl gerçekleştirileceği görülmektedir.

uygulamayı geliştirerek raspberry pi ile istediğiniz tüm işlemleri telegram üzerinden yönetebilirsiniz.

#coder :- Ferhat Cicek

import sys
import time
import telepot
import requests
import datetime

def handle(msg):
    chat_id = msg['chat']['id']
    command = msg['text']

    print('Komut: %s' % command)

    if command =='ip':
       ipadd = requests.get('https://checkip.amazonaws.com').text.strip()
       bot.sendMessage(chat_id, str(ipadd))
    elif command == 'zaman':
        bot.sendMessage(chat_id, str(datetime.datetime.now()))
    elif command == 'resim':
        bot.sendPhoto(chat_id, photo="http://www.ferhatcicek.com/wp-content/uploads/2019/09/kalyon.jpg")
    elif command == 'dosya':
        bot.sendDocument(chat_id, document=open('/home/pi/telegram/telegram.py'))
    elif command == 'muzik':
        bot.sendAudio(chat_id, audio=open('/home/pi/test.mp3'))

bot = telepot.Bot('6686324245:AAVuDyUVKAYeKVLW3TuFD5ty_3XTVQTnpZQ')
bot.message_loop(handle)
print('Komut bekleniyor...')

while 1:
    try:
        time.sleep(10)
    except KeyboardInterrupt:
        print('\n Program sonlandı')
        exit()
    except:
        print('Hata')

python ile yazdığımız bu küçük uygulamayı çalıştırsak ve raspberry pi

ve telegrama ait ekran görüntüleri aşağıdaki gibi olacaktır.

raspberry pi – statik ip ayarları

raspberry pi nizi statik ip kullanan bir ağa dahil etme durumunuzda /etc/network/interfaces dosyasında ufak bir değişiklik yapmanız gerekecektir.

pi@raspberrypi:~ $ sudo nano  /etc/network/interfaces

dosyamızı açalım. eth0 arayüzü varsayılan olarak dhcp üzerinden ip olacak şekilde yapılandırılmış durumdadır. öncelikle bu satırın başına # ekleyerek pasif hale getirelim.

auto eth0
#iface eth0 inet dhcp

sonrasında kullanacağımız ağa ait gerekli bilgileri girelim. bu örnekte 192.168.5.208/28 ağında 192.168.5.212 ipsini kullanacak şekilde yapılandırma yapıyoruz

iface eth0 inet static
        address 192.168.5.212
        netmask 255.255.255.240
        gateway 192.168.5.209
        network 192.168.5.208
        broadcast 192.168.5.223

dosyayı interfaces dosyasını kaydedip çıkıyoruz. değişikliğin geçerli olması için network ile ilgili servisleri yeniden başlatılması gerekir ancak biz daha sağlam bir yol izliyoruz ve raspberry pi yi yeniden başlatıyoruz

pi@raspberrypi:~ $ sudo reboot

raspberry yeniden başladıktan sonra gerekli kontrollerimizi yapalım

pi@raspberrypi:~ $ ifconfig eth0	
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.212  netmask 255.255.255.240  broadcast 192.168.5.223
        inet6 fe80::ba27:ebff:fe40:752b  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:40:75:2b  txqueuelen 1000  (Ethernet)
        RX packets 7839  bytes 3539827 (3.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5185  bytes 1208823 (1.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

raspberry pi üzerine webmin kurulumu

aslında kurulumu gerçekleştirmek oldukça basit. http://www.webmin.com/deb.html adresinden güncel paket bilgisini öğrenerek kıyayolunu kopyalayarak raspberry pi üzerine indiriyoruz.

pi@raspberrypi:~ $ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.900_all.deb
--2019-02-23 21:50:12--  http://prdownloads.sourceforge.net/webadmin/webmin_1.900_all.deb
prdownloads.sourceforge.net (prdownloads.sourceforge.net) çözümleniyor... 216.105.38.13
prdownloads.sourceforge.net (prdownloads.sourceforge.net)[216.105.38.13]:80 bağlanılıyor... bağlantı kuruldu.
HTTP isteği gönderildi, yanıt bekleniyor... 301 Moved Permanently
Yer: http://downloads.sourceforge.net/project/webadmin/webmin/1.900/webmin_1.900_all.deb [izleyen]
--2019-02-23 21:50:13--  http://downloads.sourceforge.net/project/webadmin/webmin/1.900/webmin_1.900_all.deb
downloads.sourceforge.net (downloads.sourceforge.net) çözümleniyor... 216.105.38.13
Bağlantı tekrar kullanılıyor: prdownloads.sourceforge.net:80.
HTTP isteği gönderildi, yanıt bekleniyor... 302 Found
Yer: https://kent.dl.sourceforge.net/project/webadmin/webmin/1.900/webmin_1.900_all.deb [izleyen]
--2019-02-23 21:50:14--  https://kent.dl.sourceforge.net/project/webadmin/webmin/1.900/webmin_1.900_all.deb
kent.dl.sourceforge.net (kent.dl.sourceforge.net) çözümleniyor... 212.219.56.185
kent.dl.sourceforge.net (kent.dl.sourceforge.net)[212.219.56.185]:443 bağlanılıyor... bağlantı kuruldu.
HTTP isteği gönderildi, yanıt bekleniyor... 200 OK
Uzunluk: 15846232 (15M) [application/octet-stream]
Kayıt yeri: `webmin_1.900_all.deb'

webmin_1.900_all.deb               100%[===============================================================>]  15,11M  1,97MB/s    in 10s     

2019-02-23 21:50:25 (1,46 MB/s) - `webmin_1.900_all.deb' kaydedildi [15846232/15846232]

sıra kurulum işlemine geldi.

pi@raspberrypi:~ $ sudo dpkg --install webmin_1.900_all.deb 
Daha önce seçili olmayan webmin paketi seçiliyor.
(Veritabanı okunuyor ... 140139 dosya veya dizin kurulu durumda.)
Paket açılacak: webmin_1.900_all.deb ...
Paket açılıyor: webmin (1.900) ...
Ayarlanıyor: webmin (1.900) ...
Webmin install complete. You can now login to https://raspberrypi:10000/
as root with your root password, or as any user who can use sudo
to run commands as root.
Tetikleyiciler işleniyor: systemd (232-25+deb9u9) ...

şimdi raspberryinin ip adresini öğrenelim

i@raspberrypi:~ $ hostname -I
192.168.1.5 192.168.5.1 

webmin 10000 portunu kullanıyor. tarayıcımıza adresi yazalım
https://192.168.1.5:10000
karşılama ekranı aşağıdaki gibidir.

kullanıcı adı : pi
şifre : raspberry
bilgileri webmine ilk giriş için geçerlidir. giriş sayfamız aşağıdaki gibidir.

raspberry pi ile internet paylaşımı (hotspot)

raspberry pi de eth0 ile edindiğimiz internet paylaşımın wlan0 üzerinden paylaşıma açacak şekilde bilinen adıyla hotspot bir örnek uygulama yapalım.

bu işlemi yapabilmemiz için öncelikle ethernet arayüzlerin doğru şekilde yapılandırılmış ve çalışıyor olması ön şarttır. bu konuya bu yazıda değinmeyeceğiz.

bu paylaşım için yapabilmek için paylaşımı gerçekleştirecek bir servis uygulamasının aktif edilmesi gerekmektedir. bunu yapabileceğiniz en temel uygulama hostapd dir. bununla birlikte istemcilere ip dağıtımını / yönetimini yapacak bir servis ihtiyacınız daha olacaktır. dns servis için kullanabileceğiniz uygulama sayısını çok daha fazladır. bu örnekte dnsmasq kullanacağız.

hostapd ve dnsmasq temel raspberry dağıtımlarında yer almamakta ancak depolarda bu uygulamalar mevcuttur. bu uygulamaları öncelikle kuralım

sudo apt-get install hostapd dnsmasq

artık yapılandırma sürecine başlayabiliriz. raspberry üzerinde bu ve benzeri uygulamalar yaparken karşılaşacağınız temel bir sorunu öncelikle çözmeliyiz.

dhcpcd üzerinden internet paylaşımı yapacağımız wlan0 arayüzünü pasif hale çekmemiz gerekiyor. bunun nedeni ip dağıtımı için dnsmasq kullanacak olmamızdır.

sudo nano /etc/dhcpcd.conf

dhcpcd.conf dosyasını açtıktan dosyanın en altında wlan0 için gerekli satırı ekleyelim

denyinterfaces wlan0

sıra geldi ethernet arayüzleri için gerekli yapılandırmalara

sudo nano /etc/network/interfaces

interfaces dosyası için loopback, eth0 ve wlan0 için gerekli yapılandırma ayarlarını girelim. loopback ve eth0 için ilave bir şey yapmıyoruz. wlan0 için hotplug olarak izin vererek yukarıda sorundan kaynaklı olarak static yapılandırma yapıyoruz. bu örnekte wlan0 için 192.168.5.0/24 adresini rezerve ederek kullanacağız.

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.5.1
    netmask 255.255.255.0
    network 192.168.5.0
    broadcast 192.168.5.255

arayüz tanımları yapıldıktan sonra hostapd servis tanımlarını yapmaya geldi

sudo nano /etc/hostapd/hostapd.conf

burada yayın yapılacak kablosuz ağa ait servis ve güvenlik ayarlarını yapılandırıyoruz. burada hw_mode a özellikle dikkat etmek gerekiyor ancak fiziksel ve yazılımsal olarak desteği olmayan modlar seçilmemelidir.

aşağıdaki yapılandırma raspberry pi 3 de sorunsuz olarak çalışmaktadır.

interface=wlan0
driver=nl80211
ssid=fcicek_wifi
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=fcicek_wifi_sifre
rsn_pairwise=CCMP

hostapd ayarlarını yaptıktan sonra hostapd için yapılandırma dosyası konum ayarlarını yapalım.

sudo nano /etc/default/hostapd

hostapd dosyasını açarak DAEMON_CON=”” olarak görülen satırda gerekli değişikliği yapalım

DAEMON_CONF="/etc/hostapd/hostapd.conf"

hostapd için yapılandırmayı tamamlanmış olduk sırada dnsmasq ayarı kaldı. öncelikle mevcut dosyamızı yedekleyelim

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
sudo nano /etc/dnsmasq.conf

ve dnsmasq.conf dosyasını açarak kullanacağımız 192.168.5.0/24 için gerekli diğer ayarları girelim.

interface=wlan0 
listen-address=192.168.5.1
bind-interfaces 
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=192.168.5.10,192.168.5.50,24h

burada dns server olarak google sunucu adresi girilmiş ve 10 ve 50 arası kullanıcılar için açılmıştır. sudo reboot ile raspberryi yeniden başlatalım. raspberry pi yeniden başladıktan sonra fcicek_wifi ssid ağımız görebiliriz.

şimdi paylaşımdaki en önemli aşamaya geldik diyebiliriz. gerekli natlamanın yapılması. sysctl.conf dosyası altında net.ipv4.ip_forward parametresini aktif ederek 1 yapmamız gerekmektedir.

sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1

bundan sonra iptables ile gerekli nat / yönlendirmeleri yapıyoruz.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

son bir şey kaldı.. açılış dosyamıza iptables ayarlarının girilmesi. burada ekleyeceğimiz satırı exit 0 dan önce girmeye dikkat edin.

sudo nano /etc/rc.local
iptables-restore < /etc/iptables.ipv4.nat 

exit 0

temel olay bu kadar. eth0 ile yaptığımız bağlantıyı fcicek_wifi ssid ile paylaşıma snduk. şimdi raspberry üzerindeki arayüzlerden geçen trafiklerimizi kontrol edelim..

pi@raspberrypi:/etc $ vnstat

                      rx      /      tx      /     total    /   estimated
 eth0:
       Şub '19    192,83 MiB  /   11,59 MiB  /  204,42 MiB  /  258,00 MiB
     yesterday    162,42 MiB  /    5,47 MiB  /  167,89 MiB
         today     30,40 MiB  /    6,12 MiB  /   36,53 MiB  /     421 MiB

 wlan0:
       Şub '19      6,53 MiB  /   30,31 MiB  /   36,84 MiB  /   45,00 MiB
     yesterday       843 KiB  /      15 KiB  /     858 KiB
         today      5,70 MiB  /   30,30 MiB  /   36,00 MiB  /     409 MiB

raspberry pi 3 üzerinde kablosuz ağ ayarları

raspberry pi 3 kablosuz ağ özelliği ile geliyor ve eski modellerindeki gibi driver vb tanıtımı ile uğraşmıyorsunuz. bununla ilgili daha önce bir yazı paylaşmıştım. “raspberry pi – raspbian : kablosuz bağlantı ayarları

raspberry pi 3 üzerinde wifi gömülü olduğu için wifi ayarlarını yapmanız ise oldukça kolay. öncelikle wpa_supplicant.conf dosyasnı açıyoruz

pi@raspberrypi:~ $ nano /etc/wpa_supplicant/wpa_supplicant.conf

ve dosya içerisine

network={
ssid="kablosuz_agda_kullanilan_iot.gen.tr"
psk="kablosuz_ag_sifresi"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}

satırlarınızı ekliyoruz

burada ssid ve şifre dışındaki alanlar konusunda bilginiz yoksa ve modeminiz ile gerekli uyumlu şekilde konfigürasyon yapmak istiyorsanız aşagıdaki eşleştirmeyi kullanabilirsiniz..

proto : WPA2 için RSN ,  WPA1 için WPA
key_mgmt : kişisel ağ için WPA-PSK , kurumsal ağ için WPA-EAP
pairwise WPA2 için CCMP ve WPA1 için TKIP
auth_alg : ototik bağlannma OPEN, diğer ayarlar için LEAP veSHARED

raspberry nin ilk kurulumunda ssh aktif edilmesi

raspberry üzerine monitor ve klavye kullanmadan raspbian kurmak – kullanmak istiyorsanız ve boot sırasında ssh  aktif olmuyor diyorsanız yapmanız gereken kullandığınız sd card içine girerek config.txt dosyasının yer aldığı klasör (/boot) içine “ssh” isimli bir dosya oluşturarak içine ssh yazarak kaydedin.

raspberry in ilk açılış sırasında ssh artık aktif olacaktır. login olduktan sonra istediğiniz değişiklikleri yapabilirsiniz..

 

Back To Top