Dauer Speedtest mit dem PI

Ziel ist es eine Stündliche Übersicht über die eigene aktuelle Bandbreite zu bekommen.

 

Dazu wird benötigt:

  1. Ein Raspberry PI (Ich empfehle mindestens die Version 2 da eine gewisse Leistung benötigt wird und das Ergebnis ansonsten verfälscht werden könnte)
  2. 1 SD-Karte min. 8GB
  3. Netzteil sowie Microusb-Kabel
  4. Netzwerkkabel

 

Zuerst muss die SD-Karte mit dem aktuellen Raspbian bespielt werden.

Danach können dann die Benutzereigenen Einstellungen (z.B. feste IP-Adresse) getroffen werden.

Ist das geschehen sollte der Raspberry mit „apt-get update“ und „apt-get upgrade“ auf einen aktuellen Stand gebracht werden.

 

Als nächstes müssen die benötigten Softwarekomponenten installiert werden.

Dies geschieht mittels:

sudo apt-get install apache2 php5 mysql-server mysql-client php5-mysql python-pip

sudo pip install speedtest-cli

ACHTUNG: Das Passwort für Mysql bitte unbedingt notieren!

Jetzt sollte es möglich sein mittels dem Befehl „speedtest-cli“ manuell einen Speedtest aus zu lösen.

 

Nun wird eine Datenbank und eine Tabelle für den Speedtest angelegt:

echo "create database speed;" |mysql -uroot -p"IHR PASSWORT";

echo "CREATE TABLE stest (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
j VARCHAR(30) NOT NULL,
m VARCHAR(30) NOT NULL,
t VARCHAR(30) NOT NULL,
s VARCHAR(30) NOT NULL,
mi VARCHAR(30) NOT NULL,
down VARCHAR(30) NOT NULL,
up VARCHAR(30) NOT NULL,
ping VARCHAR(30) NOT NULL,
reg_date TIMESTAMP
);" |mysql -uroot -p"IHR PASSWORT" speed;

 

Als nächstes benötigen wir ein Script das uns die ermittelten Daten auswertet und in die Datenbank schreibt:

( /local/speedtest/stest.sh)

j=`date +%Y`
m=`date +%m`
t=`date +%d`
s=`date +%H`
mi=`date +%M`
/usr/local/bin/speedtest-cli > /local/speedtest/erg.log 2>&1
cat /local/speedtest/erg.log |grep Download:| awk '{print $2}' >/local/speedtest/down
cat /local/speedtest/erg.log |grep Upload:| awk '{print $2}' >/local/speedtest/up
cat /local/speedtest/erg.log |grep ms| awk 'NF && NF-1 { print ( $(NF-1) ) }' >/local/speedtest/pin
dow=`cat /local/speedtest/down`
up=`cat /local/speedtest/up`
pi=`cat /local/speedtest/pin`


echo "INSERT INTO stest (j,m,t,s,mi,down,up,ping) VALUES ('$j', '$m', '$t', '$s', '$mi', '$dow', '$up', '$pi');" |mysql -uroot -p"IHR PASSWORT" speed;

Das Script wird im Anschluss mittels „chmod 777 /local/speedtest/stest.sh“ ausführbar gemacht.

 

Zum Schluss wird dann noch ein Crontab angelegt der Das Script immer zur vollen Stunde ausführt.

„crontab -e“

0 * * * * /local/speedtest/stest.sh > /dev/null 2>&1

 

In der Datenbank wird nun jede Stunde das Ergebnis des Speedtest abgelegt und kann von dort aus weiter verarbeitet werden.

Eine Ausgabe der Tabelle mittels:

echo "select * from stest;" |mysql -uroot -p"IHR PASSWORT" speed;

Sieht dann in etwa so aus:

id      j       m       t       s       mi      down    up      ping    reg_date
1       2018    05      23      11      03      93.19   6.00    17.402  2018-05-23 10:03:32
2       2018    05      23      12      05      93.19   6.00    17.402  2018-05-23 10:05:04