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.
Datenpunkt | Beschreibung |
---|---|
JSON_Output | Ausgabe der Konsole |
Ping | Ping in ms |
Jitter | Jitter in ms |
Download_MBit | Download Geschwindigkeit in MBit/s |
Upload_MBit | Upload Geschwindigkeit in MBit/s |
Download_MB | Download Geschwindigkeit in MB/s |
Upload_MB | Upload Geschwindigkeit in MB/s |
OriginalDownload | Download Geschwindigkeit in Byte/s |
OriginalUpload | Upload Geschwindigkeit in Byte/s |
ISP | Internet Service Provider |
IP | externe IP |
URL | Adresse der Ergebnisse |
ID | ID der Ergebnisse |
ServerID | ID des getesteten Servers |
ServerIP | IP des getesteten Servers |
Name | Anbieter des getesteten Servers |
Stadt | Stadt des getesteten Servers |
Land | Land des getesteten Servers |
Adresse | URL des getesteten Servers |
Download | Download Daten in MB |
Upload | Upload Daten in MB |
OriginalDownload | Download Daten in Byte |
OriginalUpload | Upload Daten in Byte |
DauerDownload | Dauer des Download Test in Sekunden |
DauerUpload | Dauer des Upload Test in Sekunden |
Letzter_Speedtest | Datum und Uhrzeit des letzten Speedtest |
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.
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
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
Hallo Marcus,
Hast Du den Pfad für das Kommando im Skript angepasst?
Gruß,
Stephan
Meinst du diesen?
“/etc/speedtest/speedtest -f json –accept-license –accept-gdpr”;
Sollte eigentlich passen. Bei der “manuellen installation” liegt er genau da.
Genau. Ist der Exec Befehl im Javascript Adapter erlaubt?
Dann müsste es klappen 🙂
Sauber, das war der Fehler. Danke dir.
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
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
Hallo Stephan !
Funktioniert astrein. War schon lange auf der Suche – Vielen Dank !!!
Viele Grüße,
Karsten
Hallo Karsten,
freut mich – danke für die Rückmeldung!
Gruß,
Stephan
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
Hallo Ingolf,
ich würde es mal hier versuchen: https://www.speedtest.net/apps/windows
Gruß,
Stephan
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.
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
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
Hallo nukleuz80,
danke für die Rückmeldung.
Ich werde den Beitrag noch anpassen, das beide Schritte (Repo und manuell) beschrieben werden.
Gruß,
Stephan
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.
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
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
Hier noch etwas ausführlicher:
https://forum.iobroker.net/topic/48700/speedtest-skript-von-kreyenborg-koeln-f%C3%BCr-kabel-gigabit?_=1640471040678
Funktioniert super, danke!
Hi Timo,
vielen Dank! Freut mich, wenn es bei Dir funktioniert!
Gruß,
Stephan
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?
Hi Stephen,
freut mich, wenn es bei Dir ohne Probleme funktioniert hat.
Viel Spaß beim Messen der Leitung 😉
Gruß,
Stephan
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”
Hallo Sascha,
Wie in der Meldung ersichtlich, ist der Speedtest nicht installiert.
Punkt 1.2 meiner Anleitung bitte nochmal anschauen:
https://www.kreyenborg.koeln/speedtest-fuer-iobroker/#Ookla_Speedtest_installieren
Gruß,
Stephan
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
Hallo Micha,
hast Du einen Fav-Server angegeben?
Oder etwas in den Zeilen 206 bis 229 verändert?
Gruß,
Stephan
Nein, ich habe alles so belassen wie es war.
Gruß Micha
Ok, kannst du mir vielleicht einen Auszug aus dem ioBroker Log per E-mail an Stephan@Kreyenborg.koeln senden?
Ruhig ein paar Zeilen, wo man vielleicht Rückschlüsse ziehen kann.
Gruß,
Stephan
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)
”’
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
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
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
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.
Hallo Stephan,
denkst du noch an den Datenpunkt für Uhrzeit und Datum.
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
Hallo Ralf,
seit eben ist das Datum des letzten Tests auch verfügbar.
Bitte nutze hierzu die neue Version.
Gruß,
Stephan
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.
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
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
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
Aus der Liste von https://www.speedtest.net/speedtest-servers.php habe ich mir einen Server gesucht und wie folgt eingetragen:
var fav_server = “speedtest.heuer-und-sack.de:8080”;
Und das Problem ist, das trotzdem ein beliebiger Server genommen wird.
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
Danke jetzt funktioniert es.
Allerdings werden mir bei aufrufen von
https://www.speedtest.net/speedtest-servers.php
Server angezeigt die nicht in der Nähe sind.
Hast du dafür eine Erklärung bzw. ein Vorschlag wie man den besten Server findet.
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
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.
Hallo Christian,
Danke für Deinen Kommentar.
Was hast Du denn in Zeile 32 eingetragen?
Was genau funktioniert nicht?
Gruß,
Stephan
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!
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
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
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
Hallo Stephan,
das wäre natürlich eine super Sache !
Vielen Dank für Deinen Einsatz.
Sebastian
Hallo Sebastian,
ich habe die Anleitung angepasst 😉
Es sollte Dir nun möglich sein, die Schritte auszuführen.
Grüß,
Stephan
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
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
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.
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
Hallo Stephan,
vielen Dank. Funktioniert alles einwandfrei!
Viele Grüße
Werner
Hallo Werner,
Vielen Dank für die Rückmeldung 😉
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
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
Hi ja habe ich werde ich aber nochmal prüfen,
Sorry für den doppelpost.
Gruß NullFear
Habe das ganze jetzt nochmal gemacht, Fehlermeldung bleibt leider.
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.
Speedtest auf dem Pi funktioniert, habe den ioBroker allerdings in einem Container am laufen, konnte es daran liegen?
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