Blog Post

Raspberry Pi: Internet-Geschwindigkeit-Tests automatisieren (kurz & gut)

Listen! This is now, this is here
This is me, this is what I wanted
You to see
That was then, that was that
That is gone, that is past
You cast yourself, cast
Passed by, thrown down fast, you say

“So fast, so numb”, REM

HINWEIS

Achtung! Dieser Beitrag ist veraltet und wird nicht mehr gepflegt.
Es steht eine aktuellere Version der Anleitung zur Verfügung.
Letzter Stand: 17.03.2020

Der kostengünstige Einplatinen-Rechner Raspberry Pi lässt sich für viele Dinge (miss-)brauchen. Momentan lassen wir darauf zu Test-Zwecken unser Heimautomatisierungs-System FHEM laufen. Eigentlich nur eine mehr-oder-weniger kleine Spielerei mit Homematic-Funk-Sensoren und -Aktoren. Zur Zeit wird z.B. der Fernseh-Bereich samt Zuspieler automatisch über Nacht abgeschaltet, falls der Verbrauch unter eine bestimmte Schwelle fällt. Falls es beim Lüften im Bad zu kalt wird, meldet ein Temperatur-Sensor über FHEM mittels einer Pushnachricht (Pushbullet->) dies an uns. Sehr nützlich ist auch die Sprach-Ausgabe über SONOS, dass der Waschgang der Waschmaschine im Keller abgeschlossen ist und die Wäsche entnommen werden kann.
Mitunter messen wir in regelmäßigen Abständen (eine Stunde) wie schnell unser DSL-Zugang in beide Richtungen funktioniert (Down- & Upload):

Warum? Es ist ganz nett zu sehen, ob der Provider in der Tat seine Versprechen eingehalten hat oder nicht. Außerdem merkt man deutlich, dass die Bandbreite (etwa um die Hälfte!) sinkt, wenn man seinen Router über die Powerline zum DSL-Modem anbindet.

Alles schön und gut. Nun wollen wir demnächst umziehen. Aus logistischen Gründen können wir in die neue, bereits gemietete Wohnung allerdings erst zwei Monate später einziehen. Somit haben übergangsweise beide Wohnungen zu bezahlen. Diese doppelte Haushaltsführung hat aber auch kleine Vorteile. In dieser Zwischenzeit kann man sich z.B. um den Internet-Zugang für die neue Wohnung kümmern. Da wir aber noch in der alten Wohnung sind – können wir nur schlecht feststellen, ob die Bandbreite zufriedenstellend und der Zugang in der neuen Wohnstätte an sich stabil ist. Deshalb wollen wir die FHEM-basierte Einrichtung zur Speedmessung zunächst in der alten “Bude” belassen und mit dem Zweit-Raspberry-Pi eine empirische quick-&-dirty Messung an der neuen Stätte durchführen. So kann man ggf. noch rechtzeitig den Provider-Wechsel anstreben, falls man mit der aktuellen Leistung nicht zufrieden sein sollte.

Es gibt eine sehr schöne Anleitung dazu – da diese leider einige (Tipp-)Fehler enthält, teilen wir unsere, leicht angepasste Lösung hier mit euch:

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 python-argparse python-lxml

UPDATE (13.10.2015): Bei aktuellen Python-Versionen (ab 2.7) ist “python-argparse” bereits enthalten – in diesem Fall einfach weglassen.
UPDATE (13.10.2015): Manchmal fehlt auch das Socks-Paket: In diesem Fall auch installieren: sudo pip install PySocks

Skripte runterladen (Autor: Jannis Jansons):
mkdir ~/scripts
wget https://raw.github.com/Janhouse/tespeed/master/tespeed.py -O ~/scripts/speedtest.py

Dieses Skript testet die Latenz zwischen den verfügbaren Mess-Servern und wählt den besten aus.

Test-Messung durchführen:
python ~/scripts/speedtest.py

Auf manchen Systemen kann folgender Fehler auftauchen:

ImportError: No module named SocksiPy

In diesem Fall das Skript leicht anpassen:
nano ~/scripts/speedtest.py

In Zeile #8 den markierten Teil des Textes so from SocksiPy import socks entfernen.

Mit Strg+X den Editor verlassen und mit Y die Änderungen speichern.

2. Automatisieren

Skriptausgabe in ein csv-File vorbereiten:
cd ~
mkdir bin
cd ~/bin
nano speedtest.zsh

Folgenden Code im Editor erfassen:

#!/bin/sh
echo "\"$(date -R)\",$(python ~/scripts/speedtest.py --csv -s)"

Mit Strg+X den Editor verlassen und mit Y die Änderungen speichern.

File ausführbar machen:
chmod +x speedtest.zsh

Cronjob zur zeitgesteurten, automatischen Ausführung einrichten (Ausführung jede Stunde):
crontab -e

0 * * * * bash ~/bin/speedtest.zsh 2>/dev/null >> ~/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. 🙂

UPDATE (13.10.2015): Fixed typos: Skripts shebang-Anweisung; cron-Jobs Direktangabe der shell

Comments (64)

  1. Kevin Sonntag, 16UTCSun, 16 Aug 2015 19:32:07 +0000 16. August 2015 at 19:32

    Hallo,

    wo genau finde ich per FileZilla die *.csv-Datei?

    Danke & Gruß

    1. smarthomebau.de Montag, 17UTCMon, 17 Aug 2015 18:31:32 +0000 17. August 2015 at 18:31

      Kevin,
      in unserem Beispiel befindet sich die CSV-Datei im “/home/pi/”-Verzeichnis. Über die Konsole (Putty) auch mit “cd ~” zu erreichen! Viel Spass damit! 🙂

  2. petjek Mittwoch, 26UTCWed, 26 Aug 2015 14:28:50 +0000 26. August 2015 at 14:28

    Hi,

    ich denke, ich habe alles richtig gemacht, bekomme aber die Fehlermeldung
    ImportError: No module named socks
    Gruß,
    petjek

    1. smarthomebau.de Mittwoch, 26UTCWed, 26 Aug 2015 19:58:37 +0000 26. August 2015 at 19:58

      Das Modul scheint zu fehlen, probiers mal bitte mit:
      sudo apt-get install python-socksipy

  3. Tom Mittwoch, 23UTCWed, 23 Sep 2015 20:53:59 +0000 23. September 2015 at 20:53

    Hi,

    bei mir wird die CSV-Datei erstellt aber leider ist diese immer leer.
    Woran kann das liegen?

    Gruß
    Tom

    1. smarthomebau.de Donnerstag, 24UTCThu, 24 Sep 2015 09:21:51 +0000 24. September 2015 at 09:21

      Tom,

      offenbar ist das Testergebnis nicht verfügbar. Funktioniert der Aufruf mit python ~/scripts/speedtest.py?

      1. Hoehn Samstag, 10UTCSat, 10 Oct 2015 16:41:53 +0000 10. Oktober 2015 at 16:41

        Hallo,
        ich habe das gleiche Problem dass die .csv-Datei leer bleibt. Führe ich das Skript einfach so aus funktioniert alles super.

        Grüße
        A.Hoehn

        1. smarthomebau.de Samstag, 10UTCSat, 10 Oct 2015 18:53:09 +0000 10. Oktober 2015 at 18:53

          Hmm… Ferndiagnose ist immer schwierig. Schau mal ins log, vielleicht steht das was über mögliche Fehler bei der (Cronjob-)Ausführung. Zum Beispiel damit: cat /var/log/syslog | tail -100

          1. Daniel Sonntag, 11UTCSun, 11 Oct 2015 16:19:59 +0000 11. Oktober 2015 at 16:19

            Hallo,

            zuerst einmal, danke für die ausführliche Anleitung.
            Leider habe ich das gleiche Problem wie Tom. Das Skript lässt sich manuell ausführen, die Bandbreite wird auch gemessen, aber die erstellte CSV-Datei bleibt leider leer. Alles was ich verändert habe sind die Zeitabstände in denen gemessen wird. In meinem Fall alle 5min:
            */5 * * * * ~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv

            Auch eine direkte Adressierung hat leider nicht funktioniert:
            */5 * * * * /home/pi/bin/speedtest.zsh 2>/dev/null >> /home/pi /speedtest.csv

            Angehängt der Log. Es liegt wohl lediglich am Schreiben der CSV-Datei. Kann es vielleicht auch daran leigen, dass ich den Speedtest über Wlan durchführe?

            Oct 11 15:25:01 raspberrypi /USR/SBIN/CRON[2884]: (pi) CMD (~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv)
            Oct 11 15:25:31 raspberrypi wpa_supplicant[1744]: wlan0: WPA: Group rekeying completed with XX:XX:XX:XX:XX:XX [GTK=CCMP]
            Oct 11 15:28:38 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
            Oct 11 15:28:41 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
            Oct 11 15:28:44 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
            Oct 11 15:28:48 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
            Oct 11 15:28:55 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
            Oct 11 15:29:02 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 13
            Oct 11 15:29:15 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 17
            Oct 11 15:29:32 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
            Oct 11 15:29:39 raspberrypi dhclient: No DHCPOFFERS received.
            Oct 11 15:29:39 raspberrypi dhclient: No working leases in persistent database – sleeping.
            Oct 11 15:30:01 raspberrypi /USR/SBIN/CRON[2891]: (pi) CMD (~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv)
            Oct 11 15:32:37 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
            Oct 11 15:32:40 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
            Oct 11 15:32:44 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
            Oct 11 15:32:51 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 11
            Oct 11 15:33:02 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 11
            Oct 11 15:33:13 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
            Oct 11 15:33:20 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 12
            Oct 11 15:33:33 raspberrypi dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5
            Oct 11 15:33:38 raspberrypi dhclient: No DHCPOFFERS received.
            Oct 11 15:33:38 raspberrypi dhclient: No working leases in persistent database – sleeping.

            Gruß Daniel

          2. smarthomebau.de Dienstag, 13UTCTue, 13 Oct 2015 18:37:24 +0000 13. Oktober 2015 at 18:37

            Daniel,

            Danke für die ausführlichen Infos! Ich habe die gesamte Installation nochmal durchgespielt und dabei einige Typos gefixed –> Skript: #!/bin/sh
            echo "\"$(date -R)\",$(python ~/scripts/speedtest.py --csv -s)"

            crontab -e: 0 * * * * bash ~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv

            Damit sollte es klappen – wenn nicht, bitte melden! 🙂

  4. Ray Muller Donnerstag, 24UTCThu, 24 Sep 2015 08:22:45 +0000 24. September 2015 at 08:22

    Moin Moin,

    vielen Dank für den Interssanten Beitrag. Ich hänge momentan an dem Punkt “Skripte herunterladen fest”. Folgende Meldung kommt:

    pi@raspberrypi ~ $ wget https://raw.githup.com/Janhouse/tespeed/master/tespeed.py -O ~/scripts/speedtest.py
    –2015-09-24 05:58:27– https://raw.githup.com/Janhouse/tespeed/master/tespeed.py
    Auflösen des Hostnamen »raw.githup.com (raw.githup.com)«… 95.211.117.206
    Verbindungsaufbau zu raw.githup.com (raw.githup.com)|95.211.117.206|:443… fehlgeschlagen: Die Wartezeit für die Verbindung ist abgelaufen.
    Erneuter Versuch.

    Woran könnte das liegen?

    Viele Grüße, Ray

    1. smarthomebau.de Donnerstag, 24UTCThu, 24 Sep 2015 09:19:10 +0000 24. September 2015 at 09:19

      Ray,

      der Abruf von github hat sich scheinbar inzwischen geändert, probiers bitte mal mit:

      wget https://raw.githubusercontent.com/Janhouse/tespeed/master/tespeed.py -O ~/scripts/speedtest.py

      (statt: wget https://raw.github.com/Janhouse/tespeed/master/tespeed.py -O ~/scripts/speedtest.py)

  5. Ray Muller Donnerstag, 24UTCThu, 24 Sep 2015 08:25:32 +0000 24. September 2015 at 08:25

    … hat sich gerade erledigt. War nur ein rechtschreibfehler. 😀

  6. Brot Barbar Freitag, 13UTCFri, 13 Nov 2015 11:24:58 +0000 13. November 2015 at 11:24

    Hi, ich hab dasselbe Problem, dass die CSV immer leer bleibt. Der Log zeigt an, dass der cronjob ausgeführt wird, getaktet auf alle 2 Minuten (zum Test).

    Nov 13 11:16:02 raspberrypi CRON[10258]: (pi) CMD (bash ~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv)
    Nov 13 11:17:01 raspberrypi CRON[10288]: (root) CMD ( cd / && run-parts –report /etc/cron.hourly)
    Nov 13 11:18:01 raspberrypi rsyslogd-2007: action ‘action 17’ suspended, next retry is Fri Nov 13 11:19:31 2015 [try http://www.rsyslog.com/e/2007 ]
    Nov 13 11:18:01 raspberrypi CRON[10354]: (pi) CMD (bash ~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv)
    Nov 13 11:20:01 raspberrypi rsyslogd-2007: action ‘action 17’ suspended, next retry is Fri Nov 13 11:21:31 2015 [try http://www.rsyslog.com/e/2007 ]
    Nov 13 11:20:01 raspberrypi CRON[10371]: (pi) CMD (bash ~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv)

    Wenn ich die CSV lösche wird diese auch wieder entsprechend erstellt, bleibt aber leer. Tippfehler sind garantiert keine drin. Wenn ich das Script manuell ausführe, bleibt die CSV auch leer.

    1. Brot Barbar Freitag, 13UTCFri, 13 Nov 2015 11:39:23 +0000 13. November 2015 at 11:39

      Edit:

      Wenn ich
      “python ~/scripts/speedtest.py –csv -s”
      ausführe, dann bleibt die CSV auch leer, sowie sie leer bleibt, wenn ich
      “bash speedtest.zsh” ausführe.

      1. smarthomebau.de Freitag, 13UTCFri, 13 Nov 2015 11:42:11 +0000 13. November 2015 at 11:42

        Brot, was passiert wenn du bash ~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv ausführst?

        1. Brot Barbar Freitag, 13UTCFri, 13 Nov 2015 11:48:58 +0000 13. November 2015 at 11:48

          Interessanterweise nichts. Hinterlässt auch keine Spur im log. Die Kommandozeile bleibt einfach wie sie ist, es tritt auch kein Fehler auf.

          1. Brot Barbar Freitag, 13UTCFri, 13 Nov 2015 11:51:07 +0000 13. November 2015 at 11:51

            Ich hab jetzt statt
            “bash ~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv”
            mal
            “bash ~/speedtest.zsh 2>/dev/null >> ~/speedtest.csv”
            ausgeführt, da sich die speedtest.zsh sich nicht in bin befindet, sondern in pi.
            Nun hat er tatsächlich geloggt.

  7. Brot Barbar Freitag, 13UTCFri, 13 Nov 2015 11:55:00 +0000 13. November 2015 at 11:55

    Ok, der Fehler ist gefunden. Meine speedtest.zsh war nicht im bin-Ordner, aber die crontab verwies auf ~/bin/speedtest.zsh.

    1. smarthomebau.de Freitag, 13UTCFri, 13 Nov 2015 13:48:36 +0000 13. November 2015 at 13:48

      Super! 😀 Freut mich, dass es nun klappt! Vielen Dank für die Rückmeldung!

  8. Dan Mittwoch, 06UTCWed, 06 Jan 2016 12:35:49 +0000 6. Januar 2016 at 12:35

    Hallo,

    ich schließe mich erst mal den Danksagungen für die tolle Anleitung an. Ich habe nur noch ein kleines Problem. Wenn ich den Befehl manuell ausführe funktioniert alles immer einwandfrei und es wird wie gewünscht ein Eintrag in die CSV geschrieben. Wenn ich den Befehl jedoch über cron ausführe schreibt er mir nur Datum und Uhrzeit in die CSV. Die Messergebnisse fehlen einfach immer. Vielen Dank für jede Hilfe.

    Grüße Dan

    1. smarthomebau.de Mittwoch, 06UTCWed, 06 Jan 2016 19:43:07 +0000 6. Januar 2016 at 19:43

      Dan, das ist komisch… Ferndiagnose ist ohne weitere Angaben leider auch schwierig. Der Job scheint ja zu grundsätzlich zu funktionieren, offenbar ist die Skript-Definition nicht ganz sauber. Kannst du diese bitte überprüfen? Danke!

      1. Dan Donnerstag, 07UTCThu, 07 Jan 2016 14:37:38 +0000 7. Januar 2016 at 14:37

        Hallo,

        vielen Dank für die schnelle Hilfe. Daran lag es. Ich hatte bereits bei meinem bash das Problem, dass ich der Platzhalter “~” nicht funktioniert hat. In meinem Script habe ich das jetzt durch “/home/user” ersetzt und jetzt funktioniert alles. Danke nochmal!

        Gruß
        Dan

        1. smarthomebau.de Donnerstag, 07UTCThu, 07 Jan 2016 14:39:13 +0000 7. Januar 2016 at 14:39

          Super Dan – das freut uns! Vielen Dank für die Rückmeldung!

  9. Skund Sonntag, 31UTCSun, 31 Jan 2016 22:15:19 +0000 31. Januar 2016 at 22:15

    Bei mir kam der Fehler ImportError: No module named lxml und der oben genannte Befehl für die Installation
    ging auch nicht.

    sudo apt-get install python-lxml

    Hat bei mir dann funktioniert.

    1. smarthomebau.de Sonntag, 31UTCSun, 31 Jan 2016 22:18:31 +0000 31. Januar 2016 at 22:18

      Skund, jap – je nach Distributions-Version-Stand kann es schonmal vorkommen, dass das ein oder andere Paket fehlt. Du hast es richtig gelöst: Einfach die fehlenden Pakete installieren! Danke für deine Rückmeldung und den Hinweis zur Lösung! 🙂

  10. Willy Sonntag, 14UTCSun, 14 Feb 2016 23:14:03 +0000 14. Februar 2016 at 23:14

    Ich wollte auch das Speedtest Script installieren, da meine DSL Verbindung abends immer einbricht und ich der Telekom gerne einen Beweis über die schlechte Verbindung belegen wollte. Leider schaffe ich es nicht, das Script runterzuladen. Bekomme im LXTerminal immer folgende Fehler:
    ————————————————————————————————
    pi@raspberrypi:~ $ wget https://raw.githubusercontent.com/Janhouse/tespeed/master/tespeed.py-O ~/scripts/speedtest.py
    –2016-02-14 23:08:31– https://raw.githubusercontent.com/Janhouse/tespeed/master/tespeed.py-O
    Auflösen des Hostnamen »raw.githubusercontent.com (raw.githubusercontent.com)«… 23.235.43.133
    Verbindungsaufbau zu raw.githubusercontent.com (raw.githubusercontent.com)|23.235.43.133|:443… verbunden.
    HTTP-Anforderung gesendet, warte auf Antwort… 404 Not Found
    2016-02-14 23:08:32 FEHLER 404: Not Found.

    /home/pi/scripts/speedtest.py: Schema fehlt.
    pi@raspberrypi:~ $
    ——————————————————————————————————–

    Fehlermeldung kommt, egal ob ich raw.github.com oder raw.githubusercontent.com nehme.

    Würde mich über Hilfe freuen.

    Vielen Dank

    1. smarthomebau.de Donnerstag, 18UTCThu, 18 Feb 2016 12:04:09 +0000 18. Februar 2016 at 12:04

      Willy,

      wir haben (momentan) mit beiden adressen keine Probleme. Kann es sein, dass noch ein Leerzeichen fehlt: Zwischen “.py ” und ” -O “?

      wget https://raw.github.com/Janhouse/tespeed/master/tespeed.py -O ~/scripts/speedtest.py

  11. Jakob Sonntag, 27UTCSun, 27 Mar 2016 18:43:39 +0000 27. März 2016 at 18:43

    Hallo wollte mich bedanken für die tolle Anleitung und folgende Bemerkung machen:
    Unter RPi3 (Jessie) ist gibt es nach “sudo apt-get install python-argparse python-lxml” folgende Fehlermeldung:
    “Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:

    The following packages have unmet dependencies:
    python-argparse : Depends: python2.6 but it is not installable
    E: Unable to correct problems, you have held broken packages.”

    Lösung: unter Python3 ist das bereits installiert, damit aber sppedtest.py nicht folgenden Fehler auswirft:
    “Traceback (most recent call last):
    File “speedtest.py”, line 26, in
    from lxml import etree
    ImportError: No module named lxml”

    muss in speedtest.py die Zeile 26: #from lxml import etree
    in: import xml.etree.ElementTree as etree
    geändert werden.

    Grüße

    1. smarthomebau.de Montag, 28UTCMon, 28 Mar 2016 20:13:53 +0000 28. März 2016 at 20:13

      Jakob, herzlichen Dank für deinen Hinweis – wir schätzen deine Rückmeldung sehr, ein wertvoller Tipp für alle RPi3-Besitzer! Als wir den Artikel initial schrieben, war der Raspberry Pi 3 noch nicht auf dem Radar… 🙂

  12. Arnd Weber Dienstag, 05UTCTue, 05 Apr 2016 14:07:04 +0000 5. April 2016 at 14:07

    Vielen Dank erst einmal für eure überaus hilfreiche Beschreibung. Basierend auf der produzierten speedtest.csv-Datei habe ich in R ein kleines Skript zur Visualisierung der Ergebnisse geschrieben, welches auf meinem Server basierend auf einem Banana Pi läuft. Die Beschreibung zur Einrichtung und das Skript zur Visualisierung findet sich hier:

    https://www.aqualogy.de/dsl-geschwindigkeiten/

    Ja, wenn denn der Webserver erreichbar ist… ;(

  13. DSL Geschwindigkeiten | aqualogy.de Sonntag, 24UTCSun, 24 Apr 2016 19:48:53 +0000 24. April 2016 at 19:48

    […] habe ich beschlossen Verbindungsgeschwindigkeiten und Erreichbarkeit zu überwachen. Basierend auf diesem Blogpost und dem zugrundeliegenden Python-Tool zur Messung von Verbindungsgeschwindigkeiten von […]

  14. Seb Freitag, 29UTCFri, 29 Jul 2016 22:36:07 +0000 29. Juli 2016 at 22:36

    Funktioniert super, Besten Dank!

  15. Patrick Sonntag, 15UTCSun, 15 Jan 2017 14:48:57 +0000 15. Januar 2017 at 14:48

    Hi
    Danke für dieses sehr gute Script. Es hat gleich beim ersten mal super funktioniert.
    Eine Fragen hätte ich trotzdem noch schnell.
    Kann man dieses Script auch auf eine spezielle Schnittstelle anwenden da ich versuchen will einen Vergleich zwischen Festnetz Internet und LTE Stick zu generieren. Und falls wie?

    1. smarthomebau.de Sonntag, 15UTCSun, 15 Jan 2017 20:14:14 +0000 15. Januar 2017 at 20:14

      Patrick,

      das Skript von Janhouse gibt das (momentan) leider nicht her. Den Wunsch gab es schon länger: https://github.com/Janhouse/tespeed/issues/12

      Sorry! 🙁

  16. kalli Samstag, 11UTCSat, 11 Mar 2017 23:20:23 +0000 11. März 2017 at 23:20

    Danke für das Script/ die Anleitung, bei mir wird allerdings immer (chronjob, Aufruf von speedtest.zsh und beim ausführen von bash ~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv) nur die Zeit in die Datei geschrieben. Wenn ich speedtest.py über python speedtest.py aufrufe funktioniert alles, es wird eben nur nicht gespeichert. Der Log sieht folgend aus Mar 11 22:10:02 raspberrypi /USR/SBIN/CRON[29795]: (pi) CMD (/home/pi/bin/speedtest.zsh 2>/dev/null >> /home/pi/speedtest.csv)
    Mar 11 22:11:01 raspberrypi /USR/SBIN/CRON[30076]: (pi) CMD (/home/pi/bin/speedtest.zsh 2>/dev/null >> /home/pi/speedtest.csv)
    Mar 11 22:12:01 raspberrypi /USR/SBIN/CRON[30357]: (pi) CMD (/home/pi/bin/speedtest.zsh 2>/dev/null >> /home/pi/speedtest.csv)
    Mar 11 22:13:01 raspberrypi /USR/SBIN/CRON[30638]: (pi) CMD (/home/pi/bin/speedtest.zsh 2>/dev/null >> /home/pi/speedtest.csv)
    Mar 11 22:14:01 raspberrypi /USR/SBIN/CRON[30919]: (pi) CMD (/home/pi/bin/speedtest.zsh 2>/dev/null >> /home/pi/speedtest.csv)
    Mar 11 22:15:01 raspberrypi /USR/SBIN/CRON[31201]: (pi) CMD (/home/pi/bin/speedtest.zsh 2>/dev/null >> /home/pi/speedtest.csv)
    Mar 11 22:16:01 raspberrypi /USR/SBIN/CRON[31468]: (pi) CMD (/home/pi/bin/speedtest.zsh 2>/dev/null >> /home/pi/speedtest.csv)
    Mar 11 22:17:01 raspberrypi /USR/SBIN/CRON[31750]: (root) CMD ( cd / && run-parts –report /etc/cron.hourly)
    Mar 11 22:17:02 raspberrypi /USR/SBIN/CRON[31757]: (pi) CMD (/home/pi/bin/speedtest.zsh 2>/dev/null >> /home/pi/speedtest.csv)
    Mar 11 22:18:01 raspberrypi /USR/SBIN/CRON[32040]: (pi) CMD (/home/pi/bin/speedtest.zsh 2>/dev/null >> /home/pi/speedtest.csv)

    Weiß jemand, wie ich das fixen kann?

    LG kalli

  17. Tom Mittwoch, 19UTCWed, 19 Apr 2017 17:22:56 +0000 19. April 2017 at 17:22

    Hi,
    sehr cool das Ganze… habs auch schon am Laufen und will mal sehen, wie mein Provider sich so schlägt.
    Aber eine interessante Frage wäre da auch noch.
    Ich hörte, es gibt Unterschiede in Bezug auf die Latenz zwischen einem DSL Anbieter und einem Kabel Anbieter. Jetzt fänd ich das schon spannend, diesen WErt mal zu messen – und zwar so:
    Ich lasse meinen Raspi mal einen Monat bei mir (Kabelanbieter) laufen und hänge das Teilchen dann beim Bekannten (DSL Anbieter) ins Netz.
    Somit könnte ich die Latenzen schön vergleichen und meinem Kabelanbieter mal lecker auf die Socken treten.
    Was denkst Du?

    Gruß
    Tom

    1. smarthomebau.de Mittwoch, 19UTCWed, 19 Apr 2017 17:55:46 +0000 19. April 2017 at 17:55

      Servus Tom!

      “Mal lecker auf die Socken treten”? 🙂 Das hast du schön gesagt! Die Messung an sich wird höchstwahrscheinlich funktionieren. Ob man die Werte allerdings als rechtlich relevanten Beleg akzeptieren wird, bezweifle ich. Bin allerdings auch kein Anwalt… Du könntest dies aber auch zum Anlass nehmen deinen Vertrag mit dem derzeitigen Anbieter zu überdenken. Freie Anbieterwahl ist doch etwas Feines! 🙂

  18. Mads Mittwoch, 26UTCWed, 26 Apr 2017 13:39:59 +0000 26. April 2017 at 13:39

    Moin,
    Erst einmal vielen Dank für die klasse Anleitung. Nach ein paar Startschwierigkeiten läuft das Tool perfekt!

    Ein Problem habe ich jedoch. Mein Raspberry hängt direkt an der FritzBox, kommt beim Test jedoch nicht über ~24mbit im down, sowie 12mbit im uploads hinaus. Mein Rechner hat i. d.R. 80/30mbit
    Der Pi (ich glaub Modell B) ist frisch aufgesetzt, es läuft nichts weiter drauf.
    Ist das technisch bedingt, oder habe ich evtl etwas falsch gemacht?

    1. smarthomebau.de Mittwoch, 26UTCWed, 26 Apr 2017 14:02:36 +0000 26. April 2017 at 14:02

      Moin Mads,

      eine Ferndiagnose ist grundsätzlich immer schwierig… Dennoch kannst du nicht so einfach die Messungen zweier unterschiedlicher Geräte vergleichen. Abgesehen von der Ausstattung und Vernetzung der Gerätschaften, kann man in der Regel nie sicher sein, dass zwei unterschiedliche Rechner sich mit der selben Quelle verbinden mit der die eigentliche Messung stattfindet.

      Vielmehr war der von uns beschriebene Aufbau primär als Langzeitaufzeichnung/-Überwachung angedacht.

      1. Mads Donnerstag, 27UTCThu, 27 Apr 2017 17:58:13 +0000 27. April 2017 at 17:58

        Danke für die schnelle Antwort.
        Primär nutze ich die Möglichkeit auch als Langzeittest, da ich eine Zeit lang massive Probleme zu bestimmten Zeiten hatte. Ein Techniker hat nun etwas ausgetauscht, was den fehler verursacht haben soll.
        Nun möchte ich das gerne “schwarz auf weiß” haben 🙂
        Und da der raspberry konstant 24mbit anzeigt gehe ich davon aus, dass das passt (vorher waren das teilweise 0,5mbit…)
        Auf jeden Fall noch mal danke für die tolle Anleitung

  19. Holger Freitag, 09UTCFri, 09 Jun 2017 11:40:31 +0000 9. Juni 2017 at 11:40

    Hi!

    Auch von mir erst einmal vielen Dank für das Script und die Anleitung. Ich habe alles schnell und einfach auf meinen Pi3 installiert bekommen. Musste ledglich – wie beschrieben – das ‘from SocksiPy’ aus der Zeile 8 des Phytonscriptes entfernen.
    Was mir aber auch (wie Mads) auffällt: Die Download- und Uploadwerte scheinen mir (teilweise) keine realistische Größenordnung zu haben. Ich habe VDSL100 und komme bei Vergleichsmessungen (an der gleichen Netzwerkdose!) mit anderen Rechnern i. d.R. auf 80/30mbit. Das Script auf dem Pi3 kommt derzeit jedoch immer nur auf Werte von ca. 8/12 mbit.
    Das könnte einen vermuten lassen, dass der Pi3 irgendwie nicht performant genug, um so hohe Upload/Downloadraten verarbeiten zu können. Dem ist aber nicht so! Schaue ich mir das Logfile an, sehe ich, dass der Pi in der Vergangenheit auch schon 80/30mbit Werte messen konnte. Ich konnte bisher aber nichts finden, was erklärt, dass der Pi nun nicht mehr auf diese Werte kommt. Habe es mit verschiedenen Downloadservern probiert, die ich dem speedtest.py Script als Parameter mitgebe. Keine Änderung. Egal welchen Server ich nehme, der Pi misst bei mir nun immer nur die ca. 8/12 mbit. Aber: Schließe ich am gleichen Patchkabel einen Windowsrechner an und messe damit über verschiedene Tools die Geschwindigkeit, komme ich konstant auf die 80/30mbit. Wieso aber nicht (mehr) mit dem Pi?
    Wenn es so ist, wie es sich mir aktuell darstellt, würde dies ja bedeuten, dass die Messergebnisse die der Pi über die Dauer ausgibt, gar nicht vergleichbar sind. Das kann aber irgendwie auch nicht sein…
    Eine Idee, wie ich feststellen kann, was auf dem Pi ‘klemmt’? Oder wie ich die Messergebnisse des Pi über eine andere Methode testen könnte?

    1. smarthomebau.de Freitag, 09UTCFri, 09 Jun 2017 19:12:36 +0000 9. Juni 2017 at 19:12

      Holger,
      ich bezweifle, dass der Pi3 nicht potent genug sein soll – bei uns läuft noch der ganz alte Pi1… Womöglich ist etwas anderes “ver-konfiguriert”? Eine Ferndiagnose ist auch hier schwierig – hat sonst jemand ähnliche Erfahrungen mit dem Pi3?

  20. Felix Dienstag, 15UTCTue, 15 Aug 2017 18:20:55 +0000 15. August 2017 at 18:20

    Hallo, bei mir klapp fast alles. Mein RPi 2 erstellt keine csv datei obwohl ich im cron job :0 * * * * bash ~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv
    das drin stehen habe.

    Können sie mir da weiter helfen ?

    1. smarthomebau.de Dienstag, 15UTCTue, 15 Aug 2017 18:53:41 +0000 15. August 2017 at 18:53

      Hey Felix,

      läuft denn

      bash ~/bin/speedtest.zsh 2>/dev/null >> ~/speedtest.csv

      für sich allein? Bitte prüfen ob cronjobs mit

      crontab -e

      und nicht mit ggf.

      sudo crontab -e

      editiert werden.

  21. AvV Freitag, 08UTCFri, 08 Dec 2017 20:48:17 +0000 8. Dezember 2017 at 20:48

    Vielen Dank für die schöne Anleitung. Das wird mein nächstes Projekt auf dem Pi werden.

    Vielleicht ein Hinweis an alle, wo die (automatische) Ausführung nicht funktioniert:
    Der Kommandoteil 2>/dev/null leitet die Fehlermeldung ins Nirvana, was bei der Suche natürlich nicht wirklich hilft. Probiert es einfach in diesem Fall mal mit

    bash ~/bin/speedtest.zsh >> ~/speedtest.csv 2>&1

    Da ist die Fehlermeldung dann zumindest mit in der Ausgabedatei

    1. derdelema Montag, 16UTCMon, 16 Mar 2020 19:44:01 +0000 16. März 2020 at 19:44

      Hallo,
      ich habe deinen Tipp befolgt, in der -csv Datei steht jetzt folgendes:
      Mon, 16 Mar 2020 19:00:02 +0100,
      Mon, 16 Mar 2020 19:03:33 +0100,
      usage: speedtest.py [-h] [–no-download] [–no-upload] [–single] [–bytes]
      [–share] [–simple] [–csv]
      [–csv-delimiter CSV_DELIMITER] [–csv-header] [–json]
      [–list] [–server SERVER] [–exclude EXCLUDE]
      [–mini MINI] [–source SOURCE] [–timeout TIMEOUT]
      [–secure] [–no-pre-allocate] [–version]
      speedtest.py: error: unrecognized arguments: -s
      Mon, 16 Mar 2020 19:06:53 +0100,

      Könntest du mir da weiterhelfen?

      1. smarthomebau.de Montag, 16UTCMon, 16 Mar 2020 19:52:02 +0000 16. März 2020 at 19:52

        Wie ist denn dein Aufruf genau? Vermutlich ein Tippfehler mit unbekanntem Parameter “-s“

        1. derdelema Montag, 16UTCMon, 16 Mar 2020 21:10:50 +0000 16. März 2020 at 21:10

          Mittlerweile funktioniert der cronjob in der csv speichert es aber nur das Datum.

          Wenn ich manuell folgendes ausführe: bash ~/bin/speedtest.zsh >> ~/speedtest.csv 2>&1

          dann wird oben genanntes in der .csv abgespeichert

          1. smarthomebau.de Montag, 16UTCMon, 16 Mar 2020 21:24:46 +0000 16. März 2020 at 21:24

            Und was steht im speedtest.zsh?

          2. derdelema Montag, 16UTCMon, 16 Mar 2020 23:17:56 +0000 16. März 2020 at 23:17

            im speedtest.zsh steht das hier:
            #!/bin/sh
            echo “\”$(date -R)\”,$(python ~/scripts/speedtest.py –csv -s)”
            hier gibt es auch dieses -s.

            Was ich vorher vergessen hatte zu erwähnen ist, dass es bei mir den Speedtest am Anfang immer mit einer Fehlermeldung abgebrochen hatte und ich dann wie in den Kommentaren hier auf die aktuelle Version des Skriptes speedtest.py gewechselt habe.

          3. smarthomebau.de Dienstag, 17UTCTue, 17 Mar 2020 08:41:33 +0000 17. März 2020 at 08:41

            Bei mir läuft das Python-Script an sich nicht mehr

            (python ~/scripts/speedtest.py)

            : “Start tag expected, ‘<' not found, line 1, column 1". Ich denke ich muss den gesamten Beitrag grundsätzlich überarbeiten…

  22. Andrei Freitag, 11UTCFri, 11 May 2018 09:36:35 +0000 11. Mai 2018 at 09:36

    Ich habe das auf meinem Pi so eingerichtet. Bis vor Kurzem lief das auch ausgezeichnet. Seit einiger Zeit wird allerdings nur noch das Datum in die .csv geschrieben.

    Wenn ich das Python-Skript manuell ausführe, erhalte ich folgende Meldung:

    $ python ./speedtest.py

    Loading server list…
    Traceback (most recent call last):
    File “./speedtest.py”, line 721, in
    main(args)
    File “./speedtest.py”, line 692, in main
    uploadtests=args.uploadtests,
    File “./speedtest.py”, line 157, in __init__
    self.TestSpeed()
    File “./speedtest.py”, line 633, in TestSpeed
    self.server_list=self.LoadServers()
    File “./speedtest.py”, line 412, in LoadServers
    servers_xml = etree.fromstring(response.read())
    File “src/lxml/lxml.etree.pyx”, line 3213, in lxml.etree.fromstring (src/lxml/lxml.etree.c:79003)
    File “src/lxml/parser.pxi”, line 1848, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:118334)
    File “src/lxml/parser.pxi”, line 1736, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:117014)
    File “src/lxml/parser.pxi”, line 1102, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:111258)
    File “src/lxml/parser.pxi”, line 595, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:105102)
    File “src/lxml/parser.pxi”, line 706, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:106810)
    File “src/lxml/parser.pxi”, line 635, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:105664)
    File “”, line 1
    lxml.etree.XMLSyntaxError: Start tag expected, ‘<' not found, line 1, column 1

    Ich nehme an, das legt an einem Python-Versionsupdate..

    1. smarthomebau.de Freitag, 11UTCFri, 11 May 2018 15:09:50 +0000 11. Mai 2018 at 15:09

      Das ist möglich. Derzeit scheint die Version 2.0.0 generell Probleme zu haben: https://github.com/sivel/speedtest-cli/issues/513. Version 1.0.7 funktioniert dabei (noch) einwandfrei.

    2. VMR Dienstag, 12UTCTue, 12 Jun 2018 12:00:11 +0000 12. Juni 2018 at 12:00

      Gibt es hier schon eine Lösung?

      1. smarthomebau.de Dienstag, 12UTCTue, 12 Jun 2018 13:39:11 +0000 12. Juni 2018 at 13:39

        Bitte auf neuere Version (2.0.2) updaten & testen: https://github.com/sivel/speedtest-cli/releases

        1. Viperdriver2000 Sonntag, 17UTCSun, 17 Jun 2018 01:37:26 +0000 17. Juni 2018 at 01:37

          bei mir läuft das leider auch nicht….

          speedtest an sich geht.
          pi@bastel-pi:/opt/speedtest-cli $ ./speedtest.py
          Retrieving speedtest.net configuration…
          Testing from Deutsche Telekom AG (46.90.96.162)…
          Retrieving speedtest.net server list…
          Selecting best server based on ping…
          Hosted by Cronon AG (Berlin) [12.67 km]: 30.74 ms
          Testing download speed……………………………………………………………………..
          Download: 41.21 Mbit/s
          Testing upload speed……………………………………………………………………………………
          Upload: 33.98 Mbit/s

          pi@bastel-pi:/opt/tespeed $ ll /usr/bin/python2.7
          -rwxr-xr-x 1 root root 3,1M Nov 24 2017 /usr/bin/python2.7
          pi@bastel-pi:/opt/tespeed $ ll /usr/bin/python2
          lrwxrwxrwx 1 root root 9 Jan 24 2017 /usr/bin/python2 -> python2.7

          pi@bastel-pi:/opt/tespeed $ sudo python tespeed.py
          Getting ready. Use parameter -h or –help to see available features.
          Loading speedtest configuration…
          IP: xxxx; Lat: 52.403300; Lon: 13.402100; ISP: Deutsche Telekom
          Loading server list…
          Traceback (most recent call last):
          File “tespeed.py”, line 721, in
          main(args)
          File “tespeed.py”, line 692, in main
          uploadtests=args.uploadtests,
          File “tespeed.py”, line 157, in __init__
          self.TestSpeed()
          File “tespeed.py”, line 633, in TestSpeed
          self.server_list=self.LoadServers()
          File “tespeed.py”, line 412, in LoadServers
          servers_xml = etree.fromstring(response.read())
          File “src/lxml/lxml.etree.pyx”, line 3213, in lxml.etree.fromstring (src/lxml/lxml.etree.c:79003)
          File “src/lxml/parser.pxi”, line 1848, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:118334)
          File “src/lxml/parser.pxi”, line 1736, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:117014)
          File “src/lxml/parser.pxi”, line 1102, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:111258)
          File “src/lxml/parser.pxi”, line 595, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:105102)
          File “src/lxml/parser.pxi”, line 706, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:106810)
          File “src/lxml/parser.pxi”, line 635, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:105664)
          File “”, line 1
          lxml.etree.XMLSyntaxError: Start tag expected, ‘<' not found, line 1, column 1

          was genau das Problem ist weiß ich leider nicht 🙁

          1. smarthomebau.de Sonntag, 17UTCSun, 17 Jun 2018 10:16:51 +0000 17. Juni 2018 at 10:16

            Warum rufst du “tespeed.py” direkt auf? Wie sieht dein Skript zur csv-Erstellung aus?

          2. Viperdriver2000 Freitag, 22UTCFri, 22 Jun 2018 08:14:29 +0000 22. Juni 2018 at 08:14

            Hi smarthomebau,
            naja ich bin deiner Anleitung gefolgt.
            “Skripte runterladen (Autor: Jannis Jansons):
            mkdir ~/scripts
            wget https://raw.github.com/Janhouse/tespeed/master/tespeed.py -O ~/scripts/speedtest.py
            Dieses Skript testet die Latenz zwischen den verfügbaren Mess-Servern und wählt den besten aus.
            Test-Messung durchführen:
            python ~/scripts/speedtest.py”
            Da dieser Step noch nicht sauber klappte habe ich mich mit dem csv-File erstellen noch gar nicht weiter beschäftigt.
            Und warum dieser Test nicht klappt habe ich noch nicht ganz verstanden. 🙁

          3. smarthomebau.de Freitag, 22UTCFri, 22 Jun 2018 09:23:28 +0000 22. Juni 2018 at 09:23

            Es gibt wohl zwischen verschiedenen Python-Versionen in seltenen Fällen Probleme mit HTTPS-Verbindungen. Wir hatten in letzter Zeit ganz gute Erfahrungen mit https://github.com/sivel/speedtest-cli gemacht. Wird relativ aktiv gepflegt/weiterentwickelt. Vielleicht ist das eine Alternative für dich. Die CSV-Erstellung folgt dann dem gleichen Muster.

  23. Dieter Sonntag, 15UTCSun, 15 Jul 2018 10:36:11 +0000 15. Juli 2018 at 10:36

    Speedtest hat die Serverliste mit gzip komprimiert. Das “spendetest.py” versucht das gzip als xml zu lesen und scheitert.

    Zeile 412 anpassen:
    # Load etree from XML data
    # servers_xml = etree.fromstring(response.read())
    servers_xml = etree.fromstring(self.DecompressResponse(response))

    Erste Zeile ist der Kommentar aus der speedtest.py zur Orientierung, die Originalzeile habe ich auskommentiert “#” und die angepasste Zeile hinzugefügt. Achtung: Passt auf mit der Einrückung (Blank vs. Tab)!

  24. Daniel Montag, 29UTCMon, 29 Jul 2019 20:58:56 +0000 29. Juli 2019 at 20:58

    Hallo, ich weiß leider nicht ob es hier noch Support gibt.
    Bei mir wird leider nichts ins file geschrieben.
    folgende info kommt beim Ausführen des python Scripts:
    python ~/scripts/speedtest.py
    Getting ready. Use parameter -h or –help to see available features.
    Loading speedtest configuration…
    IP: 194.96.60.242; Lat: 47.076400; Lon: 15.360500; ISP: Telekom Austria
    Loading server list…
    Traceback (most recent call last):
    File “/home/pi/scripts/speedtest.py”, line 724, in
    main(args)
    File “/home/pi/scripts/speedtest.py”, line 695, in main
    uploadtests=args.uploadtests,
    File “/home/pi/scripts/speedtest.py”, line 160, in __init__
    self.TestSpeed()
    File “/home/pi/scripts/speedtest.py”, line 636, in TestSpeed
    self.server_list=self.LoadServers()
    File “/home/pi/scripts/speedtest.py”, line 415, in LoadServers
    servers_xml = etree.fromstring(response.read())
    File “/usr/lib/python2.7/xml/etree/ElementTree.py”, line 1300, in XML
    parser.feed(text)
    File “/usr/lib/python2.7/xml/etree/ElementTree.py”, line 1642, in feed
    self._raiseerror(v)
    File “/usr/lib/python2.7/xml/etree/ElementTree.py”, line 1506, in _raiseerror
    raise err
    xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 0

    Danke!
    LG

  25. Benja Donnerstag, 01UTCThu, 01 Aug 2019 21:43:29 +0000 1. August 2019 at 21:43

    Hallo,

    ich möchte ebenfalls eine repräsentative Messung durchführen. Leider bekomme ich keine Daten angezeigt. Folgendes wir mir angezeigt wenn ich den Befehl “python ~/scripts/speedtest.py” ausführe

    Getting ready. Use parameter -h or –help to see available features.
    Loading speedtest configuration…
    IP: XXXXXXXXXX; Lat: 52.337200; Lon: 13.412100; ISP: Vodafone Kabel Deutschland
    Loading server list…
    Traceback (most recent call last):
    File “/home/pi/scripts/speedtest.py”, line 720, in
    main(args)
    File “/home/pi/scripts/speedtest.py”, line 691, in main
    uploadtests=args.uploadtests,
    File “/home/pi/scripts/speedtest.py”, line 156, in __init__
    self.TestSpeed()
    File “/home/pi/scripts/speedtest.py”, line 632, in TestSpeed
    self.server_list=self.LoadServers()
    File “/home/pi/scripts/speedtest.py”, line 411, in LoadServers
    servers_xml = etree.fromstring(response.read())
    File “src/lxml/lxml.etree.pyx”, line 3213, in lxml.etree.fromstring (src/lxml/lxml.etree.c:79003)
    File “src/lxml/parser.pxi”, line 1848, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:118334)
    File “src/lxml/parser.pxi”, line 1736, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:117014)
    File “src/lxml/parser.pxi”, line 1102, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:111258)
    File “src/lxml/parser.pxi”, line 595, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:105102)
    File “src/lxml/parser.pxi”, line 706, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:106810)
    File “src/lxml/parser.pxi”, line 635, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:105664)
    File “”, line 1
    lxml.etree.XMLSyntaxError: Start tag expected, ‘<' not found, line 1, column 1

    Wo liegt der Fehler?

    Gruß Benja

  26. UPDATE | Raspberry Pi: Internet-Geschwindigkeit-Tests automatisieren (quick & dirty) | smarthomebau.de Dienstag, 17UTCTue, 17 Mar 2020 12:07:42 +0000 17. März 2020 at 12:07

    […] Erster Beitrag zur Internet-Geschwindigkeitsmessung ist auf sehr viel Zuspruch gestoßen – die dort beschriebene Vorgehensweise ist nun etwas in […]

Die Kommentarfunktion ist für diesen Beitrag deaktiviert.

Kostengünstig & Cloud-unabhängig: Smart-Home-Sprachsteuerung mit Snips

Liebe Freunde – es wird euch kaum entgangen sein: Wir haben uns erst vor…

Die Sprachsteuerung des “Kleinen Mannes” (Respeaker Core V2 + Kalliope + Edomi)

Liebe Freunde der Sonne! Ihr habt ein Smart Home mit erlesensten Technik-Spielereien vom Feinsten,…

Taster ohne Abdeckung
Taster-Konzept: Praktischer Versuchsaufbau (Hands-On)

So, Freunde der Sonne: Wir haben ja bereits vor langer Zeit versprochen das Taster-Konzept…

Intelligenter Briefkasten: Version 2.0 – „Arduino-Edition“

Wer unseren bescheidenen Blog verfolgt, kennt unser Lieblings-Projekt: Den “Intelligenten Briefkasten”. Wir haben schon…

Berührungslos Schalten – Kapazitive Sensoren

Liebe Freunde der beeindruckenden Features, heute haben etwas Bemerkenswertes für euch, das nicht jeder…

KNX-Testaufbau (Mini-Testboard) mit Raspberry Pi und knxd

Verwandte Themen

Wie ihr vielleicht in einem früheren Beitrag schon gelesen habt, haben wir uns für…

Smarter Briefkasten
Intelligenter Briefkasten: Version 1.5 – “RED-Edition”

Liebe Freunde und verehrte Briefträger, gebt es zu: Gibt es etwas schöneres als eine…

Smart E-Mailbox
Schatz, du hast Post! Intelligenter Briefkasten 1.0 [TEIL 2/2]

Bereits im ersten Teil des Posts haben wir den ersten Prototypen des Smarten Briefkastens…

Smart Mail Box
Schatz, du hast Post! Intelligenter Briefkasten 1.0 [TEIL 1/2]

Heute gibt es eine Weltpremiere! Wir stellen heute einen vernetzten Briefkasten vor, der selbständig…