NEWS
Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit
-
Liegen unter javascript
@thomas-braun Ah stimmt - jetzt wo Du es sagst
-
Moin, kann es sein das seit kurzem deutlich weniger favorisierte Server verfügbar sind ?
Mein alter "fav_server" 30906 wird seit dem 31.05 8:00 Uhr nicht mehr gefunden und unter https://www.speedtest.net/speedtest-servers.php kommen fast nur welche aus Liechtenstein und der Schweiz. -
Die beiden für ioBroker verfügbaren Adapter um Speedtests zu monitoren haben die Eigenschaft an meinem Gigabit-Anschluss über Kabel sehr unbeständige Werte abzuliefern. Ein Flot-Chart sieht dann aus wie ein Kamm, dem ein paar Zinken fehlen.
Sehr viel beständigere und realistischere Werte liefert mir ein skript von https://www.kreyenborg.koeln/speedtest-fuer-iobroker/Ich dokumentiere hier mal, wie ich das etwas abweichend von Stephan Kreyenborgs Anleitung auf meinem System eingerichtet habe.
Zunächst habe ich sowohl den webspeedy wie auch den vofo-speedtest-Adapter im ioBroker deinstalliert.
Dann habe ich persudo apt remove speedtest-cli speedtestden bisherigen Kommandozeilen-Speedtest deinstalliert.
Dann per
sudo apt install curl curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash sudo apt update sudo apt install speedtestdas aktuelle Repo von ookla/speedtest.net eingespielt.
[EXKURS]
Falls das skript nicht durchläuft kann man 'zu Fuß' eine passende Datei unter /etc/apt/sources.list.d/ookla_speedtest-cli.list für Debian Bullseye mit folgendem Inhalt angelegen:# this file was generated by packagecloud.io for # the repository at https://packagecloud.io/ookla/speedtest-cli deb [signed-by=/etc/apt/trusted.gpg.d/ookla_speedtest-cli-archive-keyring.gpg] https://packagecloud.io/ookla/speedtest-cli/debian/ bullseye main deb-src [signed-by=/etc/apt/trusted.gpg.d/ookla_speedtest-cli-archive-keyring.gpg] https://packagecloud.io/ookla/speedtest-cli/debian/ bullseye mainDann noch den Schlüssel importieren:
curl -fsSL https://packagecloud.io/ookla/speedtest-cli/gpgkey | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/ookla_speedtest-cli-archive-keyring.gpgAndere Distributionen wie z. B. ubuntu dann analog (DISTRIBUTION und RELEASE entsprechend ersetzen):
# this file was generated by packagecloud.io for # the repository at https://packagecloud.io/ookla/speedtest-cli deb https://packagecloud.io/ookla/speedtest-cli/DISTRIBUTION/ RELEASE main deb-src https://packagecloud.io/ookla/speedtest-cli/DISTRIBUTION/ RELEASE mainEin
sudo apt update sudo apt install speedtestspült die gewünschte Version dann in mein System.
[EXKURS ENDE]
Erster Test in der Kommandozeile liefert:
echad@chet:/opt/iobroker $ speedtest Speedtest by Ookla Server: fiberONE - Darmstadt (id = 25942) ISP: Vodafone Germany Cable Latency: 11.86 ms (1.27 ms jitter) Download: 930.24 Mbps (data used: 1.2 GB) Upload: 51.74 Mbps (data used: 25.9 MB) Packet Loss: 0.0% Result URL: https://www.speedtest.net/result/c/Prima, funktioniert.
Dann das skript von kreyenborg.koeln in den javaskript-Adapter geladen und in Zeile 210 oder 217 die Zeile
var kommando = "/etc/speedtest/speedtest -f json --accept-license --accept-gdpr";an den anderen Pfad angepasst:
var kommando = "/usr/bin/speedtest -f json --accept-license --accept-gdpr";Danach lief das skript und ich kann per eCharts so ein Diagramm bewundern:

Tip am Rande:
Per
https://c.speedtest.net/speedtest-servers-static.php
sollte man eine ID (hier z. B. 12345) eines zuverlässigen Servers identifizieren und im skript in Zeile 32 fix eintragen.var fav_server = 12345;Besteht die Möglichkeit, das Script bzw den Speedtest auch manuell anzustoßen? Aktuell läuft es stündlich. Ich könnte mir aber auch beispielsweise einen Button in der vis vorstellen, der den Speedtest außerhalb der Reihe manuell auslöst.
-
Besteht die Möglichkeit, das Script bzw den Speedtest auch manuell anzustoßen? Aktuell läuft es stündlich. Ich könnte mir aber auch beispielsweise einen Button in der vis vorstellen, der den Speedtest außerhalb der Reihe manuell auslöst.
Klar.
-
Klar.
Super!
Verrätst du mir auch, wie das geht? ;)
Einfach das Script beenden und neu starten? Oder gibt es eine andere Möglichkeit, die du mir vorschlagen könntest?Danke schonmal :blush:
-
Super!
Verrätst du mir auch, wie das geht? ;)
Einfach das Script beenden und neu starten? Oder gibt es eine andere Möglichkeit, die du mir vorschlagen könntest?Danke schonmal :blush:
Ich betreibe keine vis. Keine Ahnung von Knöppen und wie man darüber ein skript auslöst.
-
Ich betreibe keine vis. Keine Ahnung von Knöppen und wie man darüber ein skript auslöst.
Die Einbindung in die Vis kriege ich schon hin. Ich frage mich nur, wie es script-seitig laufen würde. Wenn ich den Speedtest beispielsweise in putty starte kriegt der iobroker bzw. das Script nix davon mit.
Wäre eine Kopie des Scripts, die ich manuell (in der vis) starte und nach durchlaufen des Scripts wieder beende, eine Lösung?
-
Die Einbindung in die Vis kriege ich schon hin. Ich frage mich nur, wie es script-seitig laufen würde. Wenn ich den Speedtest beispielsweise in putty starte kriegt der iobroker bzw. das Script nix davon mit.
Wäre eine Kopie des Scripts, die ich manuell (in der vis) starte und nach durchlaufen des Scripts wieder beende, eine Lösung?
-
@loemic Du kannst auch einen Hilfsdatenpunkt erstellen und diesen mit "on" abonnieren, dann auf true/false prüfen und die Funktion des Skriptes aufrufen.
-
Wie kann ich denn die Funktion des Scripts aufrufen? Kannst du mir ein Beispiel zeigen?
@loemic die Funktion heißt:
speedtest ();Mit:
on({ id: "Hilfsdatenpunkt", change: "any" }, function (obj) { if (obj.val===true) { speedtest (); } }Im gleichen Skript am Ende kannst Du dann Hilfsdatenpunkt abonnieren und darauf reagieren.
-
@loemic die Funktion heißt:
speedtest ();Mit:
on({ id: "Hilfsdatenpunkt", change: "any" }, function (obj) { if (obj.val===true) { speedtest (); } }Im gleichen Skript am Ende kannst Du dann Hilfsdatenpunkt abonnieren und darauf reagieren.
@skb sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
Danke für deinen Lösungsvorschlag. Leider bekomme ich da einen Error. Das Ende des Scripts sieht jetzt wie folgt aus:
// Alle 60 Minuten einen Speedtest ausführen schedule('*/60 * * * *', speedtest); // Script ausführen wenn Datenpunkt "Speedtest-Trigger" = true (Danke an @SKB im iobroker-Forum) on({ id: "0_userdata.0.Speedtest.Speedtest-Trigger", change: "any" }, function (obj) { if (obj.val===true) { speedtest (); } }Ideen, wie das doch klappen könnte?
-
@skb sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
Danke für deinen Lösungsvorschlag. Leider bekomme ich da einen Error. Das Ende des Scripts sieht jetzt wie folgt aus:
// Alle 60 Minuten einen Speedtest ausführen schedule('*/60 * * * *', speedtest); // Script ausführen wenn Datenpunkt "Speedtest-Trigger" = true (Danke an @SKB im iobroker-Forum) on({ id: "0_userdata.0.Speedtest.Speedtest-Trigger", change: "any" }, function (obj) { if (obj.val===true) { speedtest (); } }Ideen, wie das doch klappen könnte?
-
@skb
Leider geht es immer noch nicht. Script läuft zwar, aber die Änderung des Datenpunkts von False zu True bewirkt nichts... -
@loemic Ah, sorry, Fehler gefunden.
on({ id: "javascript.0.Speedtest.trigger", change: "any" }, function (obj) { if (obj.state.val===true) { /* state fehlte */ speedtest (); } });es funktioniert jetzt, vielen vielen Dank :)
Der DP war korrekt, es fehlte tatsächlich das "state", wie von @SKB gesagt.
Ich habe noch eine Zeile für einen Log-Eintrag hinzugefügt.
Hier der Code-Schnipsel, falls das jemand "nachbauen" möchte, der bei mir funktioniert:// Script ausführen wenn Datenpunkt "Speedtest-Trigger" = true (Danke an @SKB im iobroker-Forum) on({ id: "boolean-Datenpunkt", change: "any" }, function (obj) { if (obj.state.val===true) { speedtest (); log("Speedtest: Trigger löst Speedtest aus!"); } } ); -
es funktioniert jetzt, vielen vielen Dank :)
Der DP war korrekt, es fehlte tatsächlich das "state", wie von @SKB gesagt.
Ich habe noch eine Zeile für einen Log-Eintrag hinzugefügt.
Hier der Code-Schnipsel, falls das jemand "nachbauen" möchte, der bei mir funktioniert:// Script ausführen wenn Datenpunkt "Speedtest-Trigger" = true (Danke an @SKB im iobroker-Forum) on({ id: "boolean-Datenpunkt", change: "any" }, function (obj) { if (obj.state.val===true) { speedtest (); log("Speedtest: Trigger löst Speedtest aus!"); } } ); -
@thomas-braun sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
Für buanet-Docker-Container funktioniert sudo nicht, daher habe ich folgendes gemacht:
cd~ wget https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh chmod 744 script.deb.sh ./script.deb.shDanach kann der Speedtest installiert werden mit
apt install speedtest