Speedtest für ioBroker

Lesedauer: 5 Minuten

Für ioBroker gibt es aktuell 2 Speedtest Adapter, die bei vielen funktionieren – jedoch bei vielen eben auch nicht. Das ist besonders der Fall, wenn man einen Vodafone Cable Max 1000 (ehemals Unitymedia) Tarif hat. Ich habe noch nicht herausgefunden, wieso diese Speedtests nicht richtig laufen – jedoch habe ich mir selbst Abhilfe geschaffen, um hier auch selbst vernünftige Werte zu erhalten.

Vorbereitung

Damit der Speedtest richtig funktioniert, muss das Paket von Ookla (Speedtest.net) installiert werden. Dazu loggen wir uns auf dem Pi ein und führen folgende Befehle aus. Solltest Du bereits einen Speedtest installiert haben, der bspw. mit “speedtest-cli” aufgerufen wird, so ist dieser vorher zu entfernen.

Speedtest-CLI entfernen:

sudo apt-get remove speedtest-cli

Ookla Speedtest installieren – Automatischer Weg

curl -s https://install.speedtest.net/app/cli/install.deb.sh | sudo bash

Wichtig: Hier muss im Skript in Zeile 210 der Pfad geändert werden.

Von: var kommando = "/etc/speedtest/speedtest -f json --accept-license --accept-gdpr";

In: var kommando = "/usr/bin/speedtest -f json --accept-license --accept-gdpr";

Ookla Speedtest installieren – Manueller Weg

cd /etc/
mkdir speedtest
cd /etc/speedtest
wget https://install.speedtest.net/app/cli/ookla-speedtest-1.0.0-arm-linux.tgz

(Diese Version ggf. an Dein System anpassen -> https://www.speedtest.net/de/apps/cli – Diese Version hier ist für einen Raspberry Pi mit ARM System. Andere Systeme- gerade Virtualisierungen verwenden i386 oder ähnliche Dateien)

sudo tar -xvzf ookla-speedtest-1.0.0-arm-linux.tgz
rm ookla-speedtest-1.0.0-arm-linux.tgz

Datenpunkte

Das Skript füllt die eigenen Datenpunkte mit allen verfügbaren Rückgabewerten, die dieser Test zur Verfügung stellt. Des Weiteren sind die Datenpunkte strukturiert aufgebaut. Das heißt, der Datenpunkt Ergebnisse enthält alle Daten eines Test, wohingegen der Datenpunkt Test (mit Unterpunkten: Server und Daten) Informationen zu dem eigentlichen Test enthält. Auch gibt es einen Datenpunkt Server, welcher die Informationen zur Gegenstelle vorhält.

DatenpunktBeschreibung
JSON_OutputAusgabe der Konsole
PingPing in ms
JitterJitter in ms
Download_MBitDownload Geschwindigkeit in MBit/s
Upload_MBitUpload Geschwindigkeit in MBit/s
Download_MBDownload Geschwindigkeit in MB/s
Upload_MBUpload Geschwindigkeit in MB/s
OriginalDownloadDownload Geschwindigkeit in Byte/s
OriginalUploadUpload Geschwindigkeit in Byte/s
ISPInternet Service Provider
IPexterne IP
URLAdresse der Ergebnisse
IDID der Ergebnisse
ServerIDID des getesteten Servers
ServerIPIP des getesteten Servers
NameAnbieter des getesteten Servers
StadtStadt des getesteten Servers
LandLand des getesteten Servers
AdresseURL des getesteten Servers
DownloadDownload Daten in MB
UploadUpload Daten in MB
OriginalDownloadDownload Daten in Byte
OriginalUploadUpload Daten in Byte
DauerDownloadDauer des Download Test in Sekunden
DauerUploadDauer des Upload Test in Sekunden
Letzter_SpeedtestDatum und Uhrzeit des letzten Speedtest
Verfügbare Datenpunkte des Skripts

Skript

Nun erstellen wir in ioBroker ein neues Skript im common Bereich. Es bekommt den Namen “Speedtest”.

Der Aufruf erfolgt alle 60 Minuten und kann in der letzten Zeile angepasst werden. Auch lässt sich zur besseren Diagnose der eigenen Leitung ein fester Server in Zeile 32 eintragen. Eine Liste mit Servern in Deiner Umgebung gibt es hier:
https://www.speedtest.net/speedtest-servers.php

Hier schaust du am Ende nach der ID. Diese ID kommt dann in Zeile 32.

ID des Servers herausfinden
ID des Servers herausfinden

Soll das Skript immer den besten Server nehmen und automatisch entscheiden, so lasse diesen bei 0.

/*
 * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
 *
 * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
 *
 * Dieses Skript dient zur freien Verwendung in ioBroker zur Überprüfung Deiner Internetgeschwindkeit mit Hilfe von Speedtest.
 * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung
 * und Performance entwickelt.
 * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind.
 *
 * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf
 * https://www.kreyenborg.koeln
 * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der,
 * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht!
 * 
 * Ansprüche gegenüber Dritten bestehen nicht. 
 * 
 * Skript Name:		Speedtest
 * Skript Version:	1.3
 * Erstell-Datum:	29. November 2021
 * 
 */

// Datenpunkte neu erstellen
var ueberschreiben = false;

// Hauptdatenpunkt unterhalb javascript
var datenpunkt = "Speedtest.";

// Favorisierter Server
// Liste: https://www.speedtest.net/speedtest-servers.php
var fav_server = 28602;

// Speedtest Objekte
var objekt = ["JSON_Output",
    "Ergebnisse.Ping",
    "Ergebnisse.Jitter",
    "Ergebnisse.Download_MBit",
    "Ergebnisse.Upload_MBit",
    "Ergebnisse.Download_MB",
    "Ergebnisse.Upload_MB",
    "Ergebnisse.OriginalDownload",
    "Ergebnisse.OriginalUpload",
    "ISP",
    "IP",
    "Ergebnisse.URL",
    "Ergebnisse.ID",
    "Test.Server.ServerID",
    "Test.Server.ServerIP",
    "Test.Server.Name",
    "Test.Server.Stadt",
    "Test.Server.Land",
    "Test.Server.Adresse",
    "Test.Daten.Download",
    "Test.Daten.Upload",
    "Test.Daten.OriginalDownload",
    "Test.Daten.OriginalUpload",
    "Test.Daten.DauerDownload",
    "Test.Daten.DauerUpload",
    "Test.Daten.Letzter_Speedtest"
];

// Beschreibung der Objekte
var beschreibung = ["JSON Ausgabe der Konsole",
    "Ping in ms",
    "Jitter in ms",
    "Download Geschwindigkeit in MBit/s",
    "Upload Geschwindigkeit in MBit/s",
    "Download Geschwindigkeit in MB/s",
    "Upload Geschwindigkeit in MB/s",
    "Download Geschwindigkeit in Byte/s",
    "Upload Geschwindigkeit in Byte/s",
    "Internet Service Provider",
    "externe IP",
    "Adresse der Ergebnisse",
    "ID der Ergebnisse",
    "ID des getesteten Servers",
    "IP des getesteten Servers",
    "Anbieter des getesteten Servers",
    "Stadt des getesteten Servers",
    "Land des getesteten Servers",
    "URL des getesteten Servers",
    "Download Daten in MB",
    "Upload Daten in MB",
    "Download Daten in Byte",
    "Upload Daten in Byte",
    "Dauer des Download Test",
    "Dauer des Upload Test",
    "Letzter Speedtest"
];

// Einheiten der Objekte
var einheiten = ["",
    "ms",
    "ms",
    "MBit/s",
    "MBit/s",
    "MB/s",
    "MB/s",
    "Byte/s",
    "Byte/s",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "MB",
    "MB",
    "Byte",
    "Byte",
    "s",
    "s",
    ""
];

// Typen der Objekte
var typen = ["string",
    "number",
    "number",
    "number",
    "number",
    "number",
    "number",
    "number",
    "number",
    "string",
    "string",
    "string",
    "string",
    "number",
    "string",
    "string",
    "string",
    "string",
    "string",
    "number",
    "number",
    "number",
    "number",
    "number",
    "number",
    "string"
];

// Rollen der Objekte
var rolle = ["json",
    "value",
    "value",
    "value",
    "value",
    "value",
    "value",
    "value",
    "value",
    "text",
    "text",
    "text",
    "text",
    "value",
    "text",
    "text",
    "text",
    "text",
    "text",
    "value",
    "value",
    "value",
    "value",
    "value",
    "value",
    "text"
];

// Schreibe Werte des JSON String in ein Array
function generiere_array(json_array) {
    var j = JSON.parse(json_array);
    var array_werte = [json_array,
        j.ping.latency,
        j.ping.jitter,
        parseFloat((j.download.bandwidth / 125000).toFixed(2)),
        parseFloat((j.upload.bandwidth / 125000).toFixed(2)),
        parseFloat((j.download.bandwidth / (1024 * 1024)).toFixed(2)),
        parseFloat((j.upload.bandwidth / (1024 * 1024)).toFixed(2)),
        j.download.bandwidth,
        j.upload.bandwidth,
        j.isp,
        j.interface.externalIp,
        j.result.url,
        j.result.id,
        j.server.id,
        j.server.ip,
        j.server.name,
        j.server.location,
        j.server.country,
        j.server.host,
        parseFloat((j.download.bytes / (1024 * 1024)).toFixed(2)),
        parseFloat((j.upload.bytes / (1024 * 1024)).toFixed(2)),
        j.download.bytes,
        j.upload.bytes,
        parseFloat((j.download.elapsed / 1000).toFixed(2)),
        parseFloat((j.upload.elapsed / 1000).toFixed(2)),
        hole_datum()
    ];
    return array_werte;
}

function speedtest() {
    // temporäre Variable für das Array
    var tmp_json;
    // Kommando für den Speedtest
    var kommando = "/etc/speedtest/speedtest -f json --accept-license --accept-gdpr";
    if (fav_server > 0) {
        kommando = kommando + " -s " + fav_server;
        log("Speedtest mit Server " + fav_server + " gestartet! Der Test dauert zwischen 10 - 20 Sekunden!");
    } else {
        log("Speedtest gestartet! Der Test dauert zwischen 10 - 20 Sekunden!");
    }
    exec(kommando,
        function (error, stdout) {
            if (error) {
                log('Speedtest konnte nicht ausgeführt werden! ' + error, 'error');
                return;
            } else {
                tmp_json = generiere_array(stdout);
                aktualisiere_datenpunkt(tmp_json);
                log('Speedtest durchgeführt. Ergebnisse: Download: ' + tmp_json[5] + ' MB/s | Upload: ' + tmp_json[6] + ' MB/s | Ping: ' + tmp_json[1] + 'ms');
            }
        });
}

function aktualisiere_datenpunkt(werte) {
    for (let i = 0; i < objekt.length; i++) {
        setState(datenpunkt + objekt[i], werte[i], true);
    }
}

// Erstelle die benötigten Datenpunkte
function datenpunkte_erstellen() {
    for (var i = 0; i < objekt.length; i++) {
        createState(datenpunkt + objekt[i], "", ueberschreiben, {
            name: beschreibung[i],
            desc: beschreibung[i],
            type: typen[i],
            role: rolle[i],
            unit: einheiten[i]
        });
    }

    // Alle Datenpunkte erstellt. Führe ersten Speedtest aus!
    log('Speedtest: Datenpunkte erstellt! Erster Speedtest wird in 30 Sekunden ausgeführt!');
    setTimeout(speedtest, 30000);
}

// Datum 
function hole_datum() {
    let datum = new Date();
    let tag = '0' + datum.getDate();
    let monat = '0' + (datum.getMonth() + 1);
    let jahr = datum.getFullYear();
    let stunde = '0' + datum.getHours();
    let minute = '0' + datum.getMinutes();
    let sekunde = '0' + datum.getSeconds();
    return tag.substr(-2) + '.' + monat.substr(-2) + '.' + jahr + ' ' + stunde.substr(-2) + ':' + minute.substr(-2) + ':' + sekunde.substr(-2);
}

function speedtest_erster_start() {
    log("Speedtest: Erster Start des Skriptes! Datenpunkte werden erstellt!");
    // Datenpunkte werden erstellt
    datenpunkte_erstellen();
}

// Erster Start und Initialisierung
speedtest_erster_start();

// Alle 60 Minuten einen Speedtest ausführen
schedule('*/60 * * * *', speedtest);

Um nun vielleicht Deine Speedtest-Verläufe in Grafana zu speichern, kann ich Dir folgende Vorlage empfehlen:

https://github.com/Seqway/Grafana-Dashboards/tree/main/dashboards/Speedtest

Wie hat Dir der Beitrag gefallen?
Bewertung: 5/5 - abgegebene Bewertungen: 4

92 Gedanken zu „Speedtest für ioBroker

  1. Marcus Antworten

    Hallo Stephan

    Erst einmal Danke für deine Arbeit. Bin schon seit 3 Tagen am basteln und versuche krampfhaft die Ergebnisse von Speedtest in die influxdb zu schreiben. Dann bin ich bei meiner Suche nach einer Lösung auf dein script gestoßen. Ich bin die Anleitung für die manuelle Installation durchgegangen, komme abber nicht zum Erfolg. Es werden bei den Objekten keine Werte angezeigt. Wenn ich den Speedtest manuell ausführe, dann zeigt er was an. Was mache ich falsch?

    https://i.imgur.com/aVkVLPJ.jpg

      • Marcus Antworten

        Meinst du diesen?

        “/etc/speedtest/speedtest -f json –accept-license –accept-gdpr”;

        Sollte eigentlich passen. Bei der “manuellen installation” liegt er genau da.

  2. Tobias Antworten

    Hi,
    vielen Dank für die super Anleitung und das Script. Hat bei mir auf Anhieb auf dem rPi funktioniert.
    Ich bin drauf gestoßen, weil ich manchmal Abbrüche in Videokonferenzen habe und wollte auf diese Weise mal checken, ob es ggf. an meiner Internetleitung liegt.
    Hier würde mich primär der Ping und Jitter interessieren. Gibt es eine Möglichkeit den Speedtest zu deaktivieren? Wenn ich das richtig sehe wird immer mit einem 1GB File getestet und wenn ich das einmal pro Minute ausführe… naja ich denke da kommen im Monat ein paar TB an unnötigem Traffic zusammen 🙂

    Wäre für Ideen dankbar.

    LG
    Tobias

    • Stephan Autor des BeitragsAntworten

      Hallo Tobias,
      das ist leider mit diesem Speedtest nicht möglich. Dieser läuft immer so ab, wie er abläuft.

      Für “Pings” würde ich einfach den “Ping” Befehl nehmen und diesen dann auswerten lassen.

      Gruß,
      Stephan

  3. Ingolf Antworten

    Hallo Stephan,

    finde deine Lösung zum Speedtest super.
    Bin auf Windows unterwegs. Hast du Hinweise für den Install unter Windows?

    Danke, gute Arbeit bisher.

    Grüße Ingolf

  4. Chris Antworten

    Habe die Schritte als Anfänger durchlaufen – jetzt macht ioBroker jede halbe Stunde einen Speedtest und schreibt die Messwerte ins Log-Protokoll. Kann man die Werte auch direkt in ein separates Dokument schreiben lassen, um so die gewünschten Speedtest-Daten besser zu archivieren und jederzeit auf sie zugreifen kann? Danke.

    • Stephan Autor des BeitragsAntworten

      Hallo Chris,
      ich würde, statt sie in einer Datei zu speichern, in influxDB oder per History Adapter archivieren. Wer nutzt heute noch Dateien? 😉

      Gruß,
      Stephan

  5. nukleuz80 Antworten

    Hey,

    ich habe Speedtest über das Repo installiert unter Debian.
    Dadurch hat sich der Befehl geämdert – nur noch “speedtest” und nicht /etc/speedtest/speedtest…

    Ebenfalls habe ich die Datenpunkte unter: 0_userdata.0 angelegt.

    Scheint bei den ersten Tests zu funktionieren!!!

    THX

    • Stephan Autor des BeitragsAntworten

      Hallo nukleuz80,
      danke für die Rückmeldung.

      Ich werde den Beitrag noch anpassen, das beide Schritte (Repo und manuell) beschrieben werden.

      Gruß,
      Stephan

  6. Micha Antworten

    Super, vielen Dank, hat auf Anhieb funktioniert. Allerdings musste ich das Anlegen des Speedtest-Verzeichnisses und den wget als sudo ausführen, was aus der Anleitung nicht hervorging. Zwei Fragen, die mich bei Gelegenheit interessieren würden:
    1) Die Liste der Server scheint nur ein Auszug zu sein, wo gibt es die vollständige?
    2) Wenn das 1.0.0.tgz mal ein Update bekommt, wie bekommt man das mit?
    Ansonsten vielen Dank für Deine Mühe.

    • Stephan Autor des BeitragsAntworten

      Hallo Micha,
      freut mich, wenn der Speedtest funktioniert.

      Zu Deinen Fragen:
      1. Die Liste wird via Geo-Location geladen. Eine komplette Liste ist mir bisher nicht bekannt.
      2. Dazu könntest Du ab und zu mal auf: https://www.speedtest.net/de/apps/cli schauen, ob es eine neue Version gibt.

      Angenehme Weihnachten!

      Gruß,
      Stephan

    • Thomas Braun Antworten

      Ich ziehe eine neue Version über apt rein. Hab ich weiter oben beschrieben.

      Last login: Sat Dec 25 22:21:02 2021 from 100.75.198.95
      pi@chet:~ $ apt policy speedtest
      speedtest:
      Installed: 1.1.1.28-1.c732eb82cf
      Candidate: 1.1.1.28-1.c732eb82cf
      Version table:
      *** 1.1.1.28-1.c732eb82cf 500
      500 https://packagecloud.io/ookla/speedtest-cli/debian bullseye/main arm64 Packages
      100 /var/lib/dpkg/status
      1.1.0.75-1.810304edbd 500
      500 https://packagecloud.io/ookla/speedtest-cli/debian bullseye/main arm64 Packages
      1.0.0.2-1.5ae238b 500
      500 https://packagecloud.io/ookla/speedtest-cli/debian bullseye/main arm64 Packages
      pi@chet:~ $

      Im Moment ist also 1.1.1 akut

  7. Stephen Antworten

    Hallo Stephan, bin gerade durch zufall auf Dein Script gestoßen.
    Habe wie in Deiner Anleitung beschrieben den Speedtest von Ookla installiert – klappte alles super!
    Dann das Script imioBroker erstellt, Server ID eingetrag, Script gestartet – Alles klappt
    Vielen Dank für das Script und Deine Mühe 🙂

    Eine Sache ist mir aufgefallen, die Werte die der Test zurückliefert sind MB/s und keine Mbit/s richtig?

    • Stephan Autor des BeitragsAntworten

      Hi Stephen,
      freut mich, wenn es bei Dir ohne Probleme funktioniert hat.

      Viel Spaß beim Messen der Leitung 😉

      Gruß,
      Stephan

  8. Sascha Antworten

    Guten Abend,

    bin gerade hier über diese Seite hier aufmerksam geworden. Habe mir das mal auf meinem ioBroker installiert, leider bekomme ich eine Fehlermeldung.

    Weis leider nicht woran dies liegen kann, bin nicht ganz so fit mit dem Thema Linux.

    Dies ist die Fehlermeldung “javascript.0 (1546) script.js.common.Speedtest: Speedtest konnte nicht ausgeführt werden! Error: Command failed: /etc/speedtest/speedtest -f json –accept-license –accept-gdpr /bin/sh: 1: /etc/speedtest/speedtest: not found”

  9. Micha Antworten

    Hallo Stephan,

    Bei mir läuft der Iobroker unter Proxmox. Hab alles installiert und spendetest funktioniert auch in der Console.
    Wenn ich das Skript ausführe kommt allerdings folgende Fehlermeldung:

    javascript.0 (16782) script.js.common.Speedtest: Speedtest konnte nicht ausgeführt werden! Error: Command failed: /etc/speedtest/speedtest -f json –accept-license –accept-gdpr /bin/sh: 1: /etc/speedtest/speedtest: Exec format error

    Exec ist in Javascript adapter freigegeben.

    Was kann ich tun? Vor ein paar Wochen lief noch alles ohne Probleme.

    P.S. hab die oben genannte Schritte mehrfach durchlaufen, leider ohne Erfolg
    Gruß Micha

    • Stephan Autor des BeitragsAntworten

      Hallo Micha,
      hast Du einen Fav-Server angegeben?
      Oder etwas in den Zeilen 206 bis 229 verändert?

      Gruß,
      Stephan

          • Thomas Braun

            Ich habe seit der neuen Version von speedtest auch Probleme. Offenbar kann man nicht mehr alle Server als Favoriten angeben.
            Hängt irgendwie mit der -s Option zusammen:

            ”’
            echad@chet:~ $ /usr/bin/speedtest -s 44688
            [error] Configuration – No servers defined (NoServersException)
            echad@chet:~ $ /usr/bin/speedtest -s 14617

            Speedtest by Ookla

            Server: Shentel Sp. z o. o. – Szczecin (id = 14617)
            ISP: Vodafone Germany Cable
            Latency: 37.48 ms (5.70 ms jitter)
            Download: 424.01 Mbps (data used: 625.1 MB )
            Upload: 50.31 Mbps (data used: 51.2 MB )
            Packet Loss: Not available.
            Result URL: https://www.speedtest.net/result/c/fcfb814f-d75a-459c-8c4d-2a308b7fe8c8
            echad@chet:~ $ /usr/bin/speedtest -s 44688
            [error] Configuration – No servers defined (NoServersException)
            ”’

          • Stephan Autor des Beitrags

            Hallo Thomas,
            das wird wohl ein Fehler bei Speedtest selbst sein.
            Ich verwende bei mir immer den Server “28602” – da kommt anscheinend keine Fehlermeldung.
            Vielleicht probierst Du diesen auch.

            Gruß,
            Stephan

  10. Ralf Schneider Antworten

    Hallo Stephan,
    vielen Dank für das Tutorial und das Skript.
    Installation ohne Probleme und endlich vernünftige Werte die man in VIS anzeigen lassen kann.
    Alles installiert in einem Proxmox lxc 🙂

    Wäre es möglich noch einen Datenpunkt hinzuzufügen mit der aktuellen Uhrzeit und Datum
    wann der Test ausgeführt wurde?

    Gruß Ralf

    • Stephan Autor des BeitragsAntworten

      Hallo Ralf,
      freut mich, wenn alles läuft.
      Den Datenpunkt kann ich nächste Woche hinzufügen, wenn ich aus dem Urlaub zurück bin.

      Gruß,
      Stephan

      • Ralf Schneider Antworten

        Hallo Stephan,
        das wäre Klasse da ich das Skript auf alle 4 Std. gesetzt habe und so sehen
        kann wann er den letzten Test gemacht hat. Vielen Dank.
        Dann noch einen schönen Urlaub.

          • Stephan Autor des Beitrags

            Hallo Ralf,
            Ich kann die Skripte gerne erweitern – da ich dies in meiner privaten Zeit mache, bitte ich um Nachsicht, wenn es manchmal ein wenig dauert.

            Angenehmes Wochenende!

            Gruß,
            Stephan

          • Stephan Autor des Beitrags

            Hallo Ralf,
            seit eben ist das Datum des letzten Tests auch verfügbar.
            Bitte nutze hierzu die neue Version.

            Gruß,
            Stephan

          • Ralf Schneider

            Hallo Stephan,
            danke für die Änderung aber das neue Skript schreibt leider keine Daten. Es kommt

            12:26:20.866 info javascript.0 (12849) Start javascript script.js.common.Speedtest
            12:26:20.880 info javascript.0 (12849) script.js.common.Speedtest: Speedtest: Erster Start des Skriptes! Datenpunkte werden erstellt!
            12:26:20.881 info javascript.0 (12849) script.js.common.Speedtest: Speedtest: Datenpunkte erstellt! Erster Speedtest wird in 30 Sekunden ausgeführt!
            12:26:20.882 info javascript.0 (12849) script.js.common.Speedtest: registered 0 subscriptions and 1 schedule
            12:26:50.882 info javascript.0 (12849) script.js.common.Speedtest: Speedtest mit Server 28624 gestartet! Der Test dauert zwischen 10 – 20 Sekunden!

            und dann tut sich nichts mehr. Neuer Datenpunkt wurde aber angelegt.
            Und keine Eile, wollte dich letztens nicht bedrängen. Wenn es etwas dauert dann ist das so, Privat/Freizeit geht vor.

          • Stephan Autor des Beitrags

            Hallo Ralf,
            Der Datenpunkt wird also angelegt?
            Dann wird er später auch geschrieben.

            Vielleicht die Ansicht vom ioBroker mal anschauen und aktualisieren. Sie wird manchmal nicht ad-hoc aktualisiert.

            Gruß,
            Stephan

          • Ralf Schneider

            Habe mal zum Test alle DP gelöscht. Skript gestartet, DP’s werden angelegt aber mit

            javascript.0
            26574 2021-12-04 13:37:00.496 warn You are assigning a string to the state “javascript.0.Speedtest.Test.Daten.DauerDownload” which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions.

            aber es werden keine Daten geschrieben.

            Gruß
            Ralf

          • Stephan Autor des Beitrags

            Hallo Ralf,
            habe das Skript selbst bei mir im Einsatz und kann sagen, das die Daten definitiv geschrieben werden.
            Wie schaust Du denn, ob die Daten geschrieben wurden?
            Bitte mal einen Screenshot vom Log, sobald ein Speedtest durchgeführt wurde und von den aufgeklappten Objekten des Speedtest per Mail an Stephan@Kreyenborg.koeln

            Gruß,
            Stephan

    • Stephan Autor des BeitragsAntworten

      Hallo Christian,
      danke für Deine Rückmeldung.

      Ich habe den Punkt noch einmal angepasst.

      Nun sollte es klarer werden, das hier die ID zu nehmen ist 😉

      Gruß,
      Stephan

        • Stephan Autor des BeitragsAntworten

          Hallo Christian,
          freut mich, wenn es nun klappt.

          Die Liste basiert auf dem ungefähren Einwahlknoten.
          Ich bin aktuell über das Netz meiner Firma drin und bekomme nur “NL” Server angezeigt.
          Mein Smartphone im Telekom Netz zeigt Server aus Niedersachsen, obwohl ich in NRW bin.

          Mein Vodafone Anschluss zu Hause zeigt mir Server aus NRW und Rheinland Pfalz an, was so korrekt ist.

          Vielleicht schaust Du hier noch einmal.

          Fruß,
          Stephan

  11. Christian Antworten

    Was genau muss in Zeile 32 eingetragen werden, damit ein fester Server genommen wird bzw. wie muss die Zeile aussehen?
    Bei mir funktioniert es nicht.

    • Stephan Autor des BeitragsAntworten

      Hallo Christian,
      Danke für Deinen Kommentar.

      Was hast Du denn in Zeile 32 eingetragen?
      Was genau funktioniert nicht?

      Gruß,
      Stephan

  12. Thomas Braun Antworten

    Hi!
    Die komischen Werte bei meinem Gigabit-Anschluss haben mich auch extrem genervt, daher vielen Dank für das skript, funktioniert wunderbar.

    Ich habe es allerdings etwas anders aufgesetzt/anpassen müssen.
    Ich ziehe das bin-file über apt rein, nicht händisch.

    Meine /etc/apt/sources.list.d/ookla_speedtest-cli.list sieht so aus:

    # this file was generated by packagecloud.io for
    # the repository at https://packagecloud.io/ookla/speedtest-cli

    deb https://packagecloud.io/ookla/speedtest-cli/debian/ bullseye main
    deb-src https://packagecloud.io/ookla/speedtest-cli/debian/ bullseye main

    Daher landet das Ganze dann in /usr/bin und muss im Skript noch angepasst werden.

    Viele Grüße aus Bayenthal!

    • Stephan Autor des BeitragsAntworten

      Hallo Thomas,
      Danke für den Hinweis. Zum Zeitpunkt des Beitrags gab es den Speedtest leider noch nicht im offiziellen Repository.
      Daher ist der manuelle Weg noch beschrieben.

      Grüße,
      Stephan

  13. Sebastian Antworten

    Hallo, würde das Script gerne nutzen, allerdings bekomme ich eine Fehlermeldung beim installieren der zuvor genannten Schritte. Exakt bei “Ookla Speedtest installieren Schritt 5”, hier ist der Fehler, dass das Paket Archiv den Zugriff verweigert.
    —-
    Fehl:4 https://ookla.bintray.com/debian generic InRelease
    403 Forbidden [IP: 34.216.248.36 443]
    N: Eine Aktualisierung von solch einem Depot kann nicht auf eine sichere Art durchgeführt werden, daher ist es standardmäßig deaktiviert.
    N: Weitere Details zur Erzeugung von Paketdepots sowie zu deren Benutzerkonfiguration finden Sie in der Handbuchseite apt-secure(8).
    —-
    Habe Rpi4 und Buster installiert. Leider reichen meine Kenntnisse nicht aus, um zu verstehen wie der Update möglich ist.
    Kann hier jemand helfen.
    Vielen Dank vorab
    Sebastian

    • Stephan Autor des BeitragsAntworten

      Hallo Sebastian,
      tut mir Leid, das Du mit einem meiner Beiträge Probleme hast.
      Ich hatte gelesen, das Ookla (Speedtest) eine neue Version herausbringt und somit mein Skript vielleicht nicht mehr funktioniert – das scheint hier der Fall zu sein.
      Wenn Du mir 1-2 Tage Zeit gibst, würde ich dies korrigieren.

      Vielen Dank!

      Gruß,
      Stephan

      • Sebastian Antworten

        Hallo Stephan,
        das wäre natürlich eine super Sache !
        Vielen Dank für Deinen Einsatz.

        Sebastian

        • Stephan Autor des BeitragsAntworten

          Hallo Sebastian,
          ich habe die Anleitung angepasst 😉
          Es sollte Dir nun möglich sein, die Schritte auszuführen.

          Grüß,
          Stephan

  14. daNick Antworten

    Hallo,

    Hallo

    das Script läuft soweit (DANKE!)

    javascript.0 2021-04-22 21:11:53.845 info (10107) script.js.common.Speedtest: Speedtest durchgeführt. Ergebisse: Download: 34.58 MB/s | Upload: 1.35 MB/s | Ping: 9.047ms
    javascript.0 2021-04-22 21:11:34.306 info (10107) script.js.common.Speedtest: Speedtest gestartet! Der Test dauert zwischen 10 – 20 Sekunden!

    aber es werden nur die zwei Datenpunkte (DL und Upload?gefüllt.

    Woran kann das liegen?

    Gruß Nico

    Ergebnisse#10
    delete
    Download_MB
    state
    Download Geschwindigkeit in MB/s
    state value 34.58 MB/s edit
    delete
    build
    Download_MBit
    state
    Download Geschwindigkeit in MBit/s
    state value edit
    delete
    build
    ID
    state
    ID der Ergebnisse
    state text edit
    delete
    build
    Jitter
    state
    Jitter in ms
    state value edit
    delete
    build
    OriginalDownload
    state
    Download Geschwindigkeit in Byte/s
    state value edit
    delete
    build
    OriginalUpload
    state
    Upload Geschwindigkeit in Byte/s
    state value edit
    delete
    build
    Ping
    state
    Ping in ms
    state value edit
    delete
    build
    URL
    state
    Adresse der Ergebnisse
    state text edit
    delete
    build
    Upload_MB
    state
    Upload Geschwindigkeit in MB/s
    state value 1.35 MB/s edit
    delete
    build
    Upload_MBit
    state
    Upload Geschwindigkeit in MBit/s
    state value edit
    delete
    build
    IP
    state
    externe IP
    state text edit
    delete
    build
    ISP
    state
    Internet Service Provider
    state text edit
    delete
    build
    JSON_Output
    state
    JSON Ausgabe der Konsole
    state json

    • Stephan Autor des BeitragsAntworten

      Hallo Nico,
      der Datenbaum von iobroker wird im Browser manchmal nicht direkt aktualisiert.
      Bitte einmal oben links das Pfeil-Rad drücken oder in der Objekte Ansicht die Seite aktualisieren.
      Dann solltest Du Werte sehen können.
      Oder erscheinen Fehler im Log?

      Gruß,
      Stephan

  15. frank Antworten

    Hallo Stephan,
    Danke fuer die tolle Skript-Idee. Sehr nuetzlich. Vielen Dank. Mir ist allerdings aufgefallen, dass bei mir die Ergebisse stark variieren zwischen “speedtest -s ” und dem von Dir verwendeten Kommando “speedtest -f json –accept-license –accept-gdpr -s . Beides aus iobroker heraus ausgefuerht. Hast Du dafuer eine Erklaerung? Vielen Dank.

    • Stephan Autor des BeitragsAntworten

      Hi Frank,
      dies kommt wahrscheinlich dadurch, wenn du den “fav_server” nicht angegeben hast und das Skript einen zufälligen Server auswählt.
      Dadurch variieren die Messungen des Öfteren.

      Gruß,
      Stephan

  16. Werner Antworten

    Hallo Stephan,

    vielen Dank. Funktioniert alles einwandfrei!

    Viele Grüße
    Werner

  17. Nullfear Antworten

    Hi,

    habe grade dein Skript getestet, leider bekomme ich eine Fehlermeldung.

    /bin/sh: 1: speedtest: not found

    script.js.common.Speedtest: Speedtest konnte nicht ausgeführt werden! Error: Command failed: speedtest -f json –accept-license –accept-gdpr

    Vielleicht kannst du mir ja dabei helfen

    Gruß Andy

    • Stephan Autor des BeitragsAntworten

      Hallo Nullfear,
      die o.g. Schritte:
      sudo apt-get install gnupg1 apt-transport-https dirmngr
      export INSTALL_KEY=379CE192D401AB61
      sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $INSTALL_KEY
      echo "deb https://ookla.bintray.com/debian generic main" | sudo tee /etc/apt/sources.list.d/speedtest.list
      sudo apt-get update
      sudo apt-get install speedtest

      hast Du aber ausgeführt?

      Gruß,
      Stephan

      • NullFear Antworten

        Hi ja habe ich werde ich aber nochmal prüfen,

        Sorry für den doppelpost.

        Gruß NullFear

          • Stephan Autor des Beitrags

            Das kann ja nicht sein 😉

            Kannst Du mir bitte von den Schritten, die Du auf der Konsole ausgeführt hast, einen Screenshot an Stephan@Kreyenborg.koeln mailen?
            Dann schau ich mir das an.

          • NullFear

            Speedtest auf dem Pi funktioniert, habe den ioBroker allerdings in einem Container am laufen, konnte es daran liegen?

  18. NullFear Antworten

    Hi

    habe deinen Skript gerade getestet. Leider erhalte ich immer einen Fehler im Log

    (10871) script.js.common.Speedtest2: Speedtest konnte nicht ausgeführt werden! Error: Command failed: speedtest -f json –accept-license –accept-gdpr /bin/sh: 1: speedtest: not found

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert