DSL Speedtest mit dem Raspberry Pi

Grafisch aufbereiteter Speedtest

Vor ein paar Tagen habe ich von einem Kollegen seinen abgelegten Raspberry Pi (Generation 1) geschenkt bekommen. Nach dem ich schon viele Dinge gesehen habe die man mit solch einem kleinen Gerät machen kann, war das erste was ich (als Spielerei) umgesetzt habe eine Möglichkeit wie man seinen eigenen DSL speed mit Hilfe eines Raspberry Pi überwachen/testen kann. Das ist recht einfach und führt zu interessanten Ergebnissen, die man sicher auch mal gebrauchen kann, wenn es mal wieder darum geht ob ich auch das bekomme für das ich zahle.

Die Idee stammt nicht von mir, ich habe sie auf dem makezine Blog (en) gefunden und an einigen Stellen etwas angepasst. Ziel des ganzen soll es sein, die (reale) Geschwindigkeit der eigenen Internetleitung zu messen und mittels if this than that (IFTTT) visuell aufzubereiten. Was dazu benötigt wird, ist ein Raspberry Pi, ein wenig Ahnung wie man mit der Linux Konsole umgeht (Editoren verwenden, Grundlagen cron), einen IFTTT Account (kostenlos) und wenn ihr es wie ich in einer Google Doc-Tabelle speichern wollt, einen Google Account – das ist aber nicht zwingend notwenig dank IFTTT kann man mit den Daten auch viele andere tolle Dinge machen. Ich habe versucht die Anleitung für jeden verständlich zu machen. Wenn es mir an der einen oder anderen Stelle nicht gelungen ist, bitte ich um einen Hinweis, dann versuche ich das nachzubessern.

Der Raspberry Pi für den Speedtest vorbereiten

Zunächst ein mal muss der Raspberry Pi dazu gebracht werden einen bekannten Dienst anzufragen, wie schnell die Daten durch die eigene Leitung kommen. Dazu hat jemand eine Anwendung geschrieben, die genau das auf der Kommandozeile macht. Das muss erst ein mal installiert werden. Dazu loggt man sich auf der Konsole des Pis an.

Zuerst muss das System vorbereitet werden, damit es das Programm ausführen kann. Dazu muss sichergestellt werden, dass alle nötigen Komponenten installiert sind. (Das $-Zeichen bitte nicht mit kopieren, es soll nur zeigen, das es ein Bash-Befehl ist.)

Wenn python-pip oder ruby bereits installiert ist, um so besser. Im Anschluss kann das eigentliche Speedtest Tool installiert werden.

Wenn das erfolgreich durchgelaufen ist, kann man es direkt mal testen. Der Aufruf in der Konsole sieht dann so aus:

Jetzt könnt ihr auf der Konsole sehen, was euer Internet gerade her gibt. Das reicht aber noch nicht, wir wollen die Daten auch verarbeiten.

Die Daten vom Speedtest weiter verarbeiten

Wie ich am Anfang bereits geschrieben habe, möchte ich, dass meine Daten von dem Speedtest weiter verarbeitet werden. Dazu nehme ich den Dienst IFTTT und lass mir die Daten in eine Google Tabelle schreiben.

Zunächst müsst ihr bei IFTTT den Channel Maker aktivieren. Ein generell sehr nützlicher Channel, wenn ihr irgend welche Dinge aus Anwendungen holen wollt die mit dem Internet verbunden sind. Wenn ihr den Channel aktiviert habt, könnt ihr unter “Your key is:” euren persönlichen Key (secret key) ablesen. den benötigt ihr gleich.

Nachdem der Channel aktiviert und eingerichtet ist, geht es auf der Konsole weiter. Ihr benötigt noch eine weitere Komponente, die euch die lange Ausgabe des Speedtest so umwandelt, dass sie weiter verarbeitet werden kann. Das Tool findet ihr im folgenden als gist oder hier.

https://gist.github.com/sethiele/e19ca737dbd96887f5a1

Keine Angst davor. Alles was ihr machen müsst, ist euch auf der gist-Seite die Datei herunter zu laden. Entweder ihr ladet euch die ZIP-Datei herunter und entpackt diese auf eurem Raspberry Pi, oder ihr kopiert euch den Inhalt heraus und erstellt auf eurem Pi eine Datei die speedtest-cli-ext.rb heißt und kopiert dort den gesamten Inhalt rein. Im Weiteren gehe ich davon aus, dass ihr die Datei unter /home/pi/speedtest-cli-ext.rb abgelegt habt.

Ihr müsst noch die Zugriffsrechte der Datei so anpassen, dass sie auch ausführbar ist.

Bevor es daran geht das Script laufen zu lassen müsst ihr noch euren persönlichen IFTTT – Maker – Secret key in die Datei eintragen. Dazu öffnet die Datei in einem euer Editoren, und ersetzt die “XXXXXXXXXXX” in Zeile 7 mit euren Key, den ich weiter oben beschrieben habe.

Speedtest Daten visuell darstellen und automatisch erstellen

Bis jetzt haben wir nur eingerichtet, dass der Raspberry Pi, einen Speedtest auf der Konsole durchführen kann, dass diese Daten umgewandelt werden, damit sie verarbeitet werden können, und dass sie (hoffentlich) an IFTTT gesendet werden. Was noch fehlt ist, dass die Daten bei IFTT auch verarbeitet werden können und das der Test auch automatisch verarbeitet werden können.

Fangen wir damit an, dass IFTTT auch etwas vernünftiges damit anfangen kann.
Dazu legen wir uns ein Rezept an das den Input des Maker Channels erfasst und an Google Tabellen sendet. Das Rezept habe ich bei IFTTT bereitgestellt.
Anmerkung zu den Werten 50 und 10 – das sind meine Soll-Geschwindigkeit, die ich für die Darstellung in dem Diagramm nutze. Kann gerne gelöscht oder angepasst werden.

Ausgabe des Speedtest in Google Tabellen

Nach etwas Formatierung kann es dann in Google Tabellen so aussehen

Jetzt noch etwas Magie mit Diagrammen, und dann kann es auch optisch etwas ansprechender aussehen.

Grafisch aufbereiteter Speedtest

Wenn man etwas mit Diagrammen rum spielt kann es dann so aussehen.

Nachdem wir IFTTT dazu gebracht haben, unsere erfassten Daten zu verarbeiten, sollten wir nun auch dafür sorgen, dass die Daten erfasst werden.

Zunächst testen wir die Verarbeitung in der Konsole per Hand. Dazu ruft ihr die Datei /home/pi/speedtest-cli-ext.rb in eurer Konsole per Hand auf.

Keine Angst wenn da erst ein mal nichts zu sehen ist, das Tool Arbeitet im Hintergrund. Die Ausgabe die darunter kommt, ist erst ein mal uninteressant. Wichtiger ist, was eure Google Tabelle sagt. Da sollte jetzt ein Eintrag zu finden sein, wie in dem Beispiel weiter oben zu sehen ist.

Wenn das geklappt hat, können wir jetzt dafür sorgen, dass der Raspberry Pi den Speedtest automatisch durchführt. Ich lass den Test zu jeder vollen Stunde ein mal durchführen.

Dazu benutzen wir einen cron job. Die Bearbeitung öffnet man mit

In dem Fenster müsst ihr folgende Zeile (ganz unten) eintragen:

Nachdem ihr die Datei beendet habt, sollte der Raspberry Pi den Speedtest zu jeder vollen Stunde durchführen und das Ergebnis an IFTTT senden, das es wiederum in eure Google Tabelle schreibt.

Ausblick – mehr Spaß mit dem Speedtest

Das hier ist eigentlich nur eine Basisausstattung für den Speedtest. Mit den Grundlagen, die hier beschrieben sind, könnt ihr dann noch viel mehr machen. Beispielsweise, lass ich die Grafik auf einer Webseite ausgeben, auf der in Zukunft auch noch weitere Projekte kommen sollen.

Oder man kann auch seinen Provider automatisiert darüber informieren, wenn das Internet mal wieder schlecht ist. Wie es beispielsweise dieser Twitter Account macht. Oder ihr schreibt eurem Provider direkt eine Mail – da freuen die sich bestimmt.

Alles was ihr machen müsst ist, entweder die Datei speedtest-cli-ext.rb anpassen (sie ist in ruby geschrieben), oder ihr könnt IFTTT dazu bringen andere coole Dinge zu machen. Grenzen sind dabei keine gesetzt.

Wenn ihr was cooles damit macht, dann würde ich mich über einen Hinweis dazu freuen. Ich bin immer auf der Suche nach neuen, tollen Dingen.

Sebastian kommt aus Berlin, arbeitet am Kunden bei einem Enterprise Webhoster, ist verheiratet und seit 2013 Vater eines Sohnes. Auch wenn er noch ganz knapp aus der Generation ohne Internet stammt, spielt sich sein Leben fast komplett digital ab. Seine große Begeisterung ist das Reisen, am besten in große Städte in denen viel los ist.

9 Kommentare Schreibe einen Kommentar

  1. Hallo, danke für die Anleitung.
    Leider bekomme ich in IFTTT immer die Meldung “We can’t check your Applet right now”. Heißt es ganz einfach nur, dass ich warten muss oder liegt irgendwo ein Fehler versteckt? Den Key habe ich in der rb Datei hinterlegt. Per Hand lässt sich die Datei starten, allerdings erscheint auch nichts im Google-Drive.
    Vielleicht hast du ja eine Idee.
    Vielen Dank und ein schönes Wochenende.

  2. Hallo Sebastian,
    danke für die Anleitung, perfekt 🙂
    Hast du einen Tipp/Hinweis, wie du die Ausgabe auf deinem Webserver realisiert hast? Anpassung des Scripts oder eigenes IFTT-Rezept?

    Danke & Gruß
    Axel

  3. hallo, eine super Anleitung! Hat prompt funktioniert und war in weniger als 20 Minuten eingerichtet. (Die Accounts hatte ich natürlich schon… 😉
    als Projekt Erweiterung würde ich jetzt gerne mehrere Anschlüsse gleichzeitig messen lassen, an verschiedenen Standorten. Dazu wäre es gut, wenn die Daten in der Tabelle entweder entsprechend markiert würden oder aber gleich in separate Blätter des gleichen Dokumentes geschrieben würden. So wie ich das verstehe, brauche ich da aber jeweils einen eigenen IFTT-Account, oder?
    PS: die Idee mit der automatisierten E-Mail bei unterschreiten bestimmt der Werte finde ich toll, sowohl an mich, mittelfristig auch an den Netzbetreiber und die Bundesnetzagentur!
    PS zwei: die Push Up notification von IF TT ist eigentlich nicht bei jedem ausführen sinnvoll, sondern nur dann, wenn bestimmte Werte unterschritten werden.

  4. Hallo Willy, hallo Sebastian,

    ich hatte das gleiche Problem – in dem IFTTT Recipe musst du unter “Recieve a web request” in dem Feld “Event Name” noch “speedtest” eintragen, sonst passt die URL mit der der Webtrigger aus dem Ruby Skript aufgerufen wird nicht.

    Vielen Dank für die tolle Anleitung. Hat mich keine Stunde gekostet das zum Laufen zu kriegen … inklusive Fehlersuche 🙂

  5. Hallo Sebastian!
    Ich versuche mich gerade an deiner Anleitung – scheitere aber wie der Kollege zuvor.
    Ich finde bei ifttt.com beim Maker den secret key nicht – vermutlich ist das mein Problem…
    Wenn ich den Channel verbinde, sehe ich dass die Verbindung steht. An Info ist da nur mehr “verbunden als xxxxx” und eine URL….
    Mehr ist da nicht…

    Vielleicht kannst du da noch etwas Aufklären 🙂

    Danke dir!!

    LG Daniel

  6. Hallo,
    danke erstmal für das klasse tut. Leider hapert es bei mir auch bei IFTTT, ichh finde dort meinen Key nicht, wo ist dieser denn versteckt?

    Liebe Grüße,
    Fillip

  7. Hallo, die Anleitung ist super, aber irgendwie komme ich ab dem Punkt beim Einrichten des IFTTT nicht weiter. In den Logs bei IFTTT bekomme ich nur Einträge mit “Maker Trigger Error”. Habe schon mehrere Stunden damit verbraucht aber es klappt nicht. Irgend was mache ich da wohl falsch.

Schreibe einen Kommentar


Bei der weiteren Nutzung dieser Website, akzeptierst du die Verwendung von Cookies. Mehr Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen", um Ihnen das beste Surferlebnis möglich zu geben. Wenn Sie diese Website ohne Änderung Ihrer Cookie-Einstellungen zu verwenden fortzufahren, oder klicken Sie auf "Akzeptieren" unten, dann erklären Sie sich mit diesen.

Schließen