UPDATE | Raspberry Pi: Internet-Geschwindigkeit-Tests automatisieren (quick & dirty)
Are you willing to resist
The people you’ve never met?
The devil’s wheel revolves
But it needs to be reset
Never never try to gauge temperature
When you tend to travel at such speed
It’s our velocity!
Our Velocity, Maxïmo Park
Unser Erster Beitrag zur Internet-Geschwindigkeitsmessung ist auf sehr viel Zuspruch gestoßen – die dort beschriebene Vorgehensweise ist nun etwas in die Jahre gekommen. Zeit für ein schnelles und dreckiges (dennoch nicht ohne einen gewissen Qualitätsanspruch) Update zu diesem Thema.

1. Messen
Zur Messung benötigen wir einen lauffähigen Raspberry Pi (oder sonstigen Kleinstrechner) inkl. einem (am Besten) Debian-basierten Betriebssystem wie z.B. dem weit-verbreiteten und beliebten Raspbian. Dabei mit Putty eine SSH-Verbindung zum Pi aufbauen und schon gehts los!
Die Messergebnisse werden final in ein einfaches CSV-File geschrieben. Dieses lässt sich anschließend auf alle erdenklichen Art und Weisen auswerten.
Notwendiges installieren:
sudo apt-get install gnupg1 apt-transport-https dirmngr
export INSTALL_KEY=379CE192D401AB61
export DEB_DISTRO=$(lsb_release -sc)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $INSTALL_KEY
echo "deb https://ookla.bintray.com/debian ${DEB_DISTRO} main" | sudo tee /etc/apt/sources.list.d/speedtest.list
sudo apt-get update
sudo apt-get remove speedtest-cli
sudo apt-get install speedtest
Test-Messung durchführen (Beim ersten Aufruf die Lizenz mit “YES” bestätigen):
speedtest

2. Automatisieren
Skriptausgabe in ein csv-File vorbereiten:
cd ~
mkdir speedtest
cd speedtest
nano speedtest.zsh
Folgenden Code im Editor erfassen:
#!/bin/sh# echo "\"$(date +%F" "%T)\",$(speedtest --format=csv)"
Mit Strg+X den Editor verlassen und mit Y die Änderungen speichern.
File ausführbar machen:
chmod +x speedtest.zsh
Cronjob zur zeitgesteuerten, automatischen Ausführung einrichten (Ausführung jede Stunde):
crontab -e
0 * * * * bash ~/speedtest/speedtest.zsh 2>>~/speedtest/error.log >> ~/speedtest/speedtest.csv
Mit Strg+X den Editor verlassen und mit Y die Änderungen speichern.
3. Auswerten
Nach einigen Stunden kann man bereits die Ergebnisse auswerten. Dazu am Besten mit einem FTP-Client wie FileZilla am Raspberry Pi anmelden und die speedtest.csv herunterladen.
Mit der Tabellenkalkulation der Wahl kann man die CSV-Datei grafisch aufbereiten:

4. Chillen
Nach getaner Arbeit ein Bier öffnen und genießen. 🙂
[…] Dieser Beitrag ist veraltet und wird nicht mehr gepflegt. Es steht eine aktuellere Version der Anleitung zur Verfügung. Letzter Stand: […]
Vielen Dank für die Anleitung! Hat prima funktioniert. Dennoch zwei Fragen:
1. In welcher Reihenfolge werden welche Werte in die CSV geschrieben? Tu mich schwer, die einzelnen Zahlen zuzuordnen/zu interpretieren.
2. Ich bekomme mehrfach die Fehlermeldung “Configuration – Couldn’t resolve host name (HostNotFoundException)”. Kann man den angefragten Server festlegen oder woher kommt der Fehler?
Markus, die Werte werden in der Reihenfolge der Ausführung in die CSV geschrieben. Den Server kann man, glaube ich, über den Parameter
Wie mache ich denn auch den CSV Zahlen lesbare Werte bzw. was finde ich denn in welcher Spalte?
(wie muss man das alles umrechnen damit man eben auf DOWNLOAD Mbps 67.62 usw. kommt?)
Gerd, mit dem Parameter
kannst du dir zusätzlich die Spaltenbezeichner anzeigen lassen. Die csv-Datei in Excel aufbereiten, ist auch keine Magie (“Text in Spalten”)… 🙂 Viel Erfolg!
Ich bin in dem leider noch nicht so fit. Wie muss ich –output-header an
echo “\”$(date +%F” “%T)\”,$(speedtest –format=csv)”
anhängen?
Meine Ergebnisse variieren zwischen gar keinem Header und Header ohne Datum, was die ganze csv zerschiesst. Dankeschön
Der speedtest funktioniert wunderbr. Nur leider wird keine csv Datei mit dem Script erstellt.
Also die Werte in der CSV Datei sind mir etwas ein Rätsel.
Ich erhalte ab der Spalte C Zahlen:
C: 30587
D: 23655
E: 848
F: N/A
G: 6687150
H: 6258696
I: 45410976
J: 33081008
Wenn ich den Link zur Messung aufrufe, der auch in der Zeile steht, dann ergab diese folgende Werte:
Ping: 24ms
Download: 53.50 Mbps
Upload: 50.07 Mbps
Die Spalte D könnte ja was mit dem Ping zu tun haben, abber alles andere kann ich so nicht nachvollziehen.
@Marcel
Ich habe die Zeile in der Crontab so angepasst, das die kompletten Verweise für das Verzeichnis da sind. Dann ging es bei mir mit der CSV:
/home/pi/speedtest/speedtest.zsh usw ….
Ich habe das gleiche Problem, wie Uwe. Ich habe in den Spalten C-J Werte, die ich nicht zurodnen kann. Ansatzweise könnte man es sich vorstellen, was mit jenem Wert gemeint sein könnte, aber sicher bin ich mir leider auch nicht. Ich finde die Anleitung für den Test sehr gut und, vor allem, er läuft.
Erklärung der Spalten nach der “Text zu Daten” funktion von Excel:
C: Server ID
D: Ping in ms
E: Jitter in ms ( Vom Ping )
F: Denke packet loss? Bei mir steht durchgehend eine 0 drin.
G: Download in kiloByte (kB). Druch 125 teilen für Megabit (Mb). Pro Sekunde.
H: Upload, berechnen wie bei G
I + J, braucht man nicht. Sind wahrscheinlich die Größen welche Heruntergeladen/Hochgeladen wurden (data used).
Super, endlich mal eine Anleitung, die auf Anhieb funktioniert. Hat schon einmal jemand eine Visualisierung der Daten hinten drangehängt? Das würde ich auch noch gern autpomatisieren, anstatt jedesmal mit Excel herumzufuhrwerken.
Danke für diese super Anleitung, hat auf anhieb funktioniert.
vielen lieben Dank für die Anleitung – das hat sogar für mich als Neuling sofort geklappt. genau die Funktion , die ich gesucht habe.
jedoch hänge ich auch noch (wie die anderen) an der Interpretation bzw. Umwandlung der Daten. also .csv ist erfolgreich erstellt. Die Einträge ab Spalte C- J wäre interessant zu wissen, um was es sich genau handelt. die oben angesprochene Umrechnung (Division durch 125) erschliesst sich mir nicht… oder ich stehe da komplett auf dem Schlauch 😉
Macht genau was es soll.
Ich verstehe aber einfach nicht, warum es keine Benutzerfreundliche Version gibt.
Das Auswerten finde ich einfach viel zu aufwendig. Früher gab es das mal mit googlecloud, wo es das direkt selber gemacht wird.
Gibt es kein fertiges Tool, was über einen gewissen Zeitraum die Werte vernünftig darstellt und ich das analysieren kann? Ähnlich wie samknows das mit ihrem eigenen Router macht?