Raspberry Pi İle Gerçek İnternet Hızını Ölçün >> Servis sağlayıcıya hızımı artır deyin
|Bu aralar internet hızınızın düşük olmasına kızıyor musunuz? Örneğin 25 megabit fiber anlaşmanız olabilir, ama servis sağlayıcı size maksimum hız garanti etmiyor. Sadece 25 megabite kadar diyor. Kısacası oyun oynar veya Youtube izlerken hız 3 mbps’ye düşebilir. Raspberry Pi’la ölçün.
Robotistan’dan Raspberry Pi alıp programlayarak ISP’nin sağladığı gerçek internet hızını ölçebilirsiniz. Böylece VPN kullanırken, Youtube izler veya oyun oynarken hızınız düşerse bunu görebilirsiniz. Hatta ISP’nin TOR browser trafiğini yavaşlattığını görebilir ve interneti gözetleyenleri bu kez siz gözetleyebilirsiniz.
İlgili yazı: İnternetinizi Uçuracak En İyi 10 Modem
Ev yapımı internet izleme
İnternet hızınız vaat edilen maksimum hızın çok altında kalıyorsa ISP’ye ulaşıp hızınızı yükseltmesini isteyebilir ve bu durum sık tekrarlanıyorsa hakkınızı yasal yollardan arayabilirsiniz. Raspberry Pi internet izleme sistemi sizin için gereken delilleri toplayacak.
AKN ile karıştırmayın
Türkiye’de Adil İnternet Kotası (AKN) ayrı bir dert, ama bu yazıda söz ettiğimiz hız yavaşlaması AKN ile ilgili değil. Ancak, Raspberry Pi ile (AKN kotanız dolu değilken) internet hızının düşüp düşmediğini gerçek zamanlı olarak görebilirsiniz.
Devlet vatandaşı internet kullanmaktan caydırmak üzere fibere yatırım yapmıyor ve her yıl kullanıcı sayısı artarken internetin yavaşlamasına göz yumuyor. İnternet hızını düşüren AKN de bunu saklamak için kullanılan bir bahane ve biz buna gizli sansür diyoruz. Örneğin 2002 yılında Türkiye’de internet hızı 256 kbps idi.
İlgili yazı: İnternette yeni sansürü TOR browser ile aşın
Neden internet hızını ölçmelisiniz?
Şimdi 16 mbps’ye kadar internet bağlantısı sağlayan ADSL modem ile aylık 50 GB AKN kullandığınızı düşünün. Aylık kotanızı internet hızına bölünce “aylık ortalama internet hızınız” ne çıkıyor biliyor musunuz? 256 kbps! 25 megabit fiberde aylık 75 GB AKN ile yine aynı hesap.
Devlet geniş bant internet vermiyor
Diyeceksiniz ki benim ISP şirketim devlet değil, özel teşebbüs. Acaba? Avea, hatta Turkcell ile Superonline pratikte Türk Telekom sayılır. Aslında tüm ISP’ler Türk Telekom altyapısını kullanıyor. O yüzden devlet vatandaşa geniş bant internet vermiyor dedik.
Öte yandan 2016’da akıllı evler ve akıllı ofisler yaygınlaşıyor. TV, tablet, laptop, ailedeki tüm akıllı telefonlar, akıllı kombi, akıllı lamba, akıllı buzdolabı, hatta akıllı kettle hep internete giriyor. Bu yüzden aylık 100 GB AKN bile adil değil. İnternet meraklısı için 100 GB kota 15 günde biter.
İlgili yazı: İnternette teknik takip ve gözetimi önleme rehberi
Speedtest ile ölçsek yetmez mi?
Yetmez. Çünkü Speedtest (o da TTNET’in engellemediği günlerde) sadece o anki hızınızı ölçüyor. Oysa sizin 16 mbps hız 3 mbps’ye düştüğü anda (hem de VPN kullanmadığınız halde) bunu görmeniz ve müşteri hizmetlerine telefon açıp “Hızımı yükseltin” demeniz gerekiyor.
Ben de birkaç kez yaptım. Şimdi düzeltiyoruz diyorlar, bir düğmeye basıyorlar ve bir anda hızım artıyor. Peki neden böyle oluyor? Çünkü biz vatandaşlar kurumsal değil, bireysel internet hattı kullanıyoruz; yani bizim bağlantımız paylaşımlı internet bağlantısı.
İlgili yazı: TP-Link’ten 3 Kat Hızlı Modem
Kendi internetinizi kendiniz gözetleyin
Türk Telekom kurnaz ve diyor ki Cumartesi akşamı internete çok yüklendiler, Ali Bey de 12 saattir internete girmedi. Onun sinyalini kısayım, yoğun saatlerde bant genişliği tasarrufu yapayım.
İşte bu nedenle Raspberry Pi kullanarak internet hızınızı bir ay boyunca ölçebilir, ayın hangi günleri ve saatlerinde internet hızınızın yavaşladığına bakarak gerçek ISP hizmet kalitesini görebilirsiniz. Gerekirse ISP değiştirebilir, hatta uydu internete çıkabilirsiniz.
Peki nasıl yapacaksınız?
Öncelikle 140 TL’ye bir Raspberry Pi anakart satın alarak. Sonra da aşağıdaki talimatları izleyip programlayarak; ama önce önemli not: Türkiye insanları gözetlemeyi kolaylaştırmak için VPN bağlantılarını bilerek yavaşlatıyor.
Raspberry Pi 2 ile bunu ölçebilir ve ISP’ye bildirebilirsiniz. Ancak Youtube, Twitter, Facebook ve online video oyunlarını da tek tek yavaşlatabiliyorlar (Örneğin sunucuya diyor ki bu adama ayda sadece 10 saat Full HD Youtube hızı ver. Aşarsa Youtube hızını kes). Bunu Raspberry Pi ile ölçemezsiniz.
Ancak VPN kullanırsanız Youtube ve Facebook’u yavaşlatamazlar, çünkü web trafiğini göremezler. Bunun yerine VPN’i yavaşlatarak sizi sansürlemeye çalışabilirler. Siz de Raspberry Pi ile bunu ispat edip hizmet şartlarına aykırı davrandıkları ve anayasadaki iletişim özgürlüğünü ihlal ettikleri için yasal yollara başvurabilirsiniz.
İlgili yazı: Dünyanın en iyi 5 VPN sağlayıcısı
Siz direndikçe sansür zor
Yeter ki vatandaş bilinçli olsun. Nitekim Washington’da bir vatandaş bu sistemi kullanarak internet hizmeti aldığı Comcast’i gözetlemeye başladı ve internet hızı düşünce Comcast’i otomatik olarak halka şikayet eden bir tweet atma kodu yazdı. Vatandaşın interneti yavaşlayınca Raspberry Pi ile çalışan hız ölçüm sistemi hemen tweet atıyordu.
Ancak daha yapıcı olabilir ve Raspberry Pi sistemini ISP’nin müşteri destek hizmetlerine otomatik olarak bağlanmak ve ticket açmak üzere programlayabilirsiniz. Böylece ne zaman internet yavaşlasa sistem teknik destek ekibine bildirim gönderir.
Bu yazının bir amacı da bu, yani vatandaşı bilinçlendirmek fakat bu kadar giriş yeter. Şimdi Raspberry Pi ile internet hızını ölçen cihazın nasıl programlanacağını anlatalım. Öyle ya, hep sizi mi gözetleyecekler? Biraz da siz ISP’yi gözetleyin. 🙂
Önce yazılım
Günümüzde her şey yazılım değil mi? Bu örnekte Raspberry Pi programlamak için Python dilinde yazılmış speedtest-cli komut satırı arayüzünü kullanıyoruz. Bu arayüz speedtest.net sunucularına otomatik olarak bağlanmanızı sağlıyor.
Evet, işi çözdünüz! Her seferinde Speedtest sayfasına gitmek yerine, Raspberry Pi kartını programlayarak bunu otomatik yapacaksınız.
Kurmak çok kolay
Raspberry Pi’da bir terminal penceresi açıp aşağıdaki komut satırlarını girin
$ sudo apt-get install python-pip
$ sudo pip install speedtest-cli
Bu komut (karta yüklü değilse) Python paket yönetim sistemi pip’i kuracak. Ardından pip arşivinden speedtest-cli paketini kuruyoruz. Sonra Raspberry Pi’ı çalıştırıp geniş bant internet hızını ölçüyoruz:
$ speedtest-cli
Retrieving speedtest.net configuration…
Retrieving speedtest.net server list…
Testing from Acme Broadband Provider. (XXX.XXX.XXX.XXX)…
Selecting best server based on latency…
Hosted by Foo Limited (Metropolis) [2.52 km]: 35.27 ms
Testing download speed………………………………….
Download: 14.47 Mbit/s
Testing upload speed…………………………………………..
Upload: 1.46 Mbit/s
$
Her ne kadar yazının okunaklı olması için detayları gizlesek de bu raporun tipik bir ADSL2+ modemden gelen verileri kullanarak hazırlandığını hatırlatalım.
Gerçi internet hızınız düşükse bile en azından istikrarlı olsun. Bir an 3 mbps’ye düşmesi ve sonra 16 mbps’ye çıkmasının anlamı yok. 12 mbps’de istikrarlı olsa yeter ve Raspberry Pi ile bunu da görebilirsiniz.
İlgili yazı: 100 dolardan ucuza 3D printer yap
Daha bitmedi
Şimdi sistemi her saat internet hızını ölçmek için programlamak gerekiyor. Bunun için speedtest-cron.sh gibi basit bir script yazalım. Söz konusu script test sonuçlarını tarihiyle birlikte günlük dosyasına kaydedecek.
#!/bin/bash
date >> /home/pi/speedtest.log
/usr/local/bin/speedtest –simple >> /home/pi/speedtest.log
Şimdi crontab dosyasını düzenleyerek script’i her saat başı çalıştıracak bir giriş ekleyeceğiz:
$ crontab -e
Şimdi crontab dosyasına şu satırı ekleyip kaydediyoruz.
0 * * * * /home/pi/speedtest-cron.sh
Böylece aşağıdaki günlük gibi kayıtlar tutmaya başlıyoruz.
$ cat speedtest.log
Sun Jan 31 19:49:01 GMT 2016
Ping: 34.961 ms
Download: 14.44 Mbit/s
Upload: 1.41 Mbit/s
$
Raporu okunaklı olması için sadeleştirin
Dikkat ederseniz speedtest-cli raporları basit raporlama seçeneği kullanırken bile oldukça karmaşık. Bu raporu tüketici mahkemesine taşıyacak veya ISP müşteri destek ekibine göndereceksek daha kolay okunan ve anlaşılan bir şekle sokmalıyız.
En iyisi elimizdeki raporu basit bir bash script ile adam edelim. En hızlı çözüm için speedtest-cli-extras script’i kullanabilirsiniz. Bu script speedtest-cli çıktılarını alıp formatlıyor ve aşağıdaki gibi basit bir CSV dosyası halinde düzenliyor:
$ git clone https://github.com/HenrikBengtsson/speedtest-cli-extras.git
$ cd speedtest-cli-extras/bin
$ ./speedtest-csv
2016-01-31 17:00:33;2016-01-31 17:01:27;Acme Broadband Provider;XXX.XXX.XXX.XXX;Foo Limited (Metropolis);2.52 km;34.768 ms;14.43 Mbit/s;1.31 Mbit/s;http://www.speedtest.net/result/XXXXXXXXXX.png
$
Boş yerlere internet hızını düşüren ISP’nin kimliği gelecek. Üstelik bu çıktı ile Google Analytics benzeri grafikler de hazırlayabilirsiniz. Ardından düşük hizmet kalitesini blogda ve sosyal medyada ifşa edebilirsiniz.
Ya seyahatte iken?
Bu sistem elbette evdeki internet hızını ölçecek, 3G ve 4G mobil interneti ölçmeyecek. Ancak şehir dışına çıktığınızda işiniz zor. Her saat başı şifreli SSH ile Raspberry Pi’a uzaktan bağlanıp rapor alacak haliniz yok.
Siz evde yokken bunu otomatik yapacak bir yazılım lazım. Şansımıza IFTTT’nin Maker Channel platformu 2015 ortasında gerekli kodu hazırladı. Şu kod speedest adında bir Maker Channel etkinliği oluşturuyor ve speedest-cli script’nin çıktısını alıp otomatik olarak Google Tablolarda kaydediyor.
Maker Channel nedir?
IFTTT’nin web kanalı evinizdeki elektronik aletleri ve mobil cihazları akıllı ev mantığıyla programlayarak kendi iş akışınızı oluşturmanızı ve otomatik bir raporlama sistemi kurmanızı sağlıyor. Dolayısıyla her kodcunun bu siteye göz atmasında fayda var.
İlgili yazı: Star Wars Güç Uyanıyor > 7 adımda kendi BB8 akıllı robotunu yap
Raspberry Pi’dan IFTTT’ye veri aktarımı
Bunun için speedtest-cli-extras script’inde değişiklik yapacağız. Artık log dosyası çıktısı almak yerine, raporumuza karşılık gelen etkinlik adı ve gizli anahtarımız ile POST web isteği gönderecek. Bu anahtar internet hızı formunu Maker Channel’a bağlarken atanıyor.
https://maker.ifttt.com/trigger/speedtest/with/key/{secret_key}
Kısacası aktarımı JSON formatıyla yapıyoruz. Bu raporda ping süresi, indirme ve karşıya yükleme hızı yer alacak. Aşağıdaki gibi:
#!/usr/bin/env bash
###########################################################################
# Originally written by: Henrik Bengtsson, 2014
# https://github.com/HenrikBengtsson/speedtest-cli-extras
# Modified to use IFTTT by: Alasdair Allan, 2015
# License: GPL (>= 2.1) [http://www.gnu.org/licenses/gpl.html]
###########################################################################
# Character for separating values
# (commas are not safe, because some servers return speeds with commas)
sep=”;”
# Temporary file holding speedtest-cli output
user=$USER
if test -z $user; then
user=$USERNAME
fi
log=/tmp/$user/speedtest-csv.log
# Local functions
function str_extract() {
pattern=$1
# Extract
res=`grep “$pattern” $log | sed “s/$pattern//g”`
# Drop trailing …
res=`echo $res | sed ‘s/[.][.][.]//g’`
# Trim
res=`echo $res | sed ‘s/^ *//g’ | sed ‘s/ *$//g’`
echo $res
}
# Display header?
if test “$1” = “–header”; then
start=”start”
stop=”stop”
from=”from”
from_ip=”from_ip”
server=”server”
server_dist=”server_dist”
server_ping=”server_ping”
download=”download”
upload=”upload”
share_url=”share_url”
else
mkdir -p `dirname $log`
start=`date +”%Y-%m-%d %H:%M:%S”`
if test -n “$SPEEDTEST_CSV_SKIP” && test -f “$log”; then
# Reuse existing results (useful for debugging)
1>&2 echo “** Reusing existing results: $log”
else
# Query Speedtest
/usr/local/bin/speedtest-cli –share > $log
fi
stop=`date +”%Y-%m-%d %H:%M:%S”`
# Parse
from=`str_extract “Testing from “`
from_ip=`echo $from | sed ‘s/.*(//g’ | sed ‘s/).*//g’`
from=`echo $from | sed ‘s/ (.*//g’`
server=`str_extract “Hosted by “`
server_ping=`echo $server | sed ‘s/.*: //g’`
server=`echo $server | sed ‘s/: .*//g’`
server_dist=`echo $server | sed ‘s/.*\\[//g’ | sed ‘s/\\].*//g’`
server=`echo $server | sed ‘s/ \\[.*//g’`
download=`str_extract “Download: “`
upload=`str_extract “Upload: “`
share_url=`str_extract “Share results: “`
fi
# Standardize units?
if test “$1” = “–standardize”; then
download=`echo $download | sed ‘s/Mbits/Mbit/’`
upload=`echo $upload | sed ‘s/Mbits/Mbit/’`
fi
# Send to IFTTT
secret_key=”SECRET_KEY”
value1=`echo $server_ping | cut -d” ” -f1`
value2=`echo $download | cut -d” ” -f1`
value3=`echo $upload | cut -d” ” -f1`
json=”{\”value1\”:\”${value1}\”,\”value2\”:\”${value2}\”,\”value3\”:\”${value3}\”}”
curl -X POST -H “Content-Type: application/json” -d “${json}” https://maker.ifttt.com/trigger/speedtest/with/key/${secret_key}
view raw speedtest-ifttt.sh hosted with ❤ by GitHub
Önce test edin
Şu linki tıklayarak yukarıdaki komut satırlarını indirin ve anahtarı kendi SECRET_KEY’inizle değiştirin. Ardından elle değişiklik yaptığınız script’i komut satırında çalıştırarak test edin. Her şey yolunda giderse şöyle bir şey göreceksiniz:
$ ./speedtest-ifttt.sh
Congratulations! You’ve fired the speedtest event
$
Şimdi Google Drive’a gidip bakın. Speedtest diye yeni bir tablo olmalı.
Bu tablo dört sütunlu tek satır formatında olacak. İlk sütunda IFTTT Maker Channel etkinliği tarih damgası var. İkincisinde milisaniye cinsinden ping süresi (WoW oyuncuları, siz buna latency diyorsunuz) ve elbette 3 ile 4.’sünde sırasıyla mbit/s cinsinden indirme ve karşıya yükleme hızları var.
January 26, 2016 at 02:49AM 34.039 12.56 1.32
Bu tamamsa speedtest-cron.sh script’inde değişiklik yaparak her saat başında yeni script’i çalıştırmasını sağlayacağız.
#!/bin/bash
date >> /home/pi/speedtest.log
/home/pi/speedtest-ifttt.sh >> /home/pi/speedtest.log
echo “” >> /home/pi/speedtest.log
Böylece her saat Google tablosuna yeni bir satır eklenecek.
Raspberry Pi ile otomatik ölçüm
Artık Raspberry Pi tabanlı izleme sisteminiz ile geniş bant internet hızını saat başı ölçebilir ve otomatik olarak bulutta yedekleyebilirsiniz. Elbette her ISP’nin müşteri destek sistemi farklı.
Bu da size ev ödevi olsun ve yazıyı örnek alıp kendi otomatik ISP bildirim sisteminizi kurun. Gerçek internet hızınızı ölçün ve gerekirse verdiğiniz paranın hesabını sorun.
Merhaba Kozan Bey.Çok güzel bir yazı olmuş fakat bir işe yaratacağını düşünmüyorum.Öncelikle dediginiz gibi bu bir devlet politikası ve maalesef şuanki partiye oy verenler bırakın teknik terimleri internetin aslında ne oldugunu bile bilmiyorlar.Ben kendi yaptıgım hız ölçümleri sonucunda en az 50 kere aramışımdır ttneti fakat telefona ilkokul mezunu elindeki kagıttan talimat okuyan cahil tipler dışında kimse çıkmıyor.Tüketici haklarıda yok maalesef.
Öyle demeyin. 2014’te bütün interneti Çin gibi sansürleyeceklerini ve Twitter ile Facebook’u kapatacaklarını söylüyorlardı. Ancak vatandaş tepki gösterince ve insanlar dava açınca geri adım attılar; yani susmak yerine hakkımızı aramak şart. Sansürü bir kenara bırakın, bir-iki kişi ISP’leri hız düşüklüğü yüzünden hizmet kalitesi sözleşmesine aykırı davranmaktan dava etse, tek bir emsal karar çıksa işleri biter. Dünyanın her yerinde böyledir. Ağlamayan bebeğe meme yok, hak istenmez, hak alınır. Umutsuzluğa kapılmayın. İktidarlar arkalarında halk desteği oldukça hiç korkmaz ama halk tepki koyunca geri adım atar. Onlar bir tek bundan anlar. İstediklerini verelim.
kozan güzel çeviri eline sağlık.
https://www.hackster.io/aallan/monitoring-your-broadband-connection-with-raspberry-pi-ff63f1?ref=platform&ref_id=5755_trending___&offset=1
Ozan yazıyı dikkatli okursan çeviri olmadığını görürsün, o kadar çok orijinal içerik var ki. Yine de teşekkürler. 🙂 Bu arada yararlandığım bütün kaynakların linkini zaten vermiş olduğum için yorumun ilginç olmuş. Ha bir de komut satırlarını o sayfadan almadım. Bunlar açık kaynak kod olduğu için hepsinin başında kimin yazdığı ve modifiye ettiği yazıyor. Senden de güzel bir yazı bekliyoruz artık.
İlk bastaki anlasmada kac mbit oldugunu unttum nerden bakabilirim
Abi tam geek yazısı olmuş. Benim kafama takılan şu o an interneti kullanan başka bir şey varsa hızı nasıl düzgün ölçüyor. Ben raspberry piyi download box yaptım. özellikle gece saatlerinde cayır cayır download yapıyor. Böyleyken düzgün ölçümü nasıl yapacak?
Hizmet hızının verdiği değeri, gerçekten aldın indirme ve karşıya yükleme hızı ve ayrıca almış olan gereken ping süresiyle karşılaştıracak.