NEWS
Script für einen SpeedTest über speedtest.net
-
Hallo zuasmmen.
ich habe das Script aus der Antwort von @Negalein übernommen.
Es funktioniert, doch leider mit falschen Geschwindigkeiten. Ich habe eine 400er Leitung von Vodafon Cable. Muss ich da noch etwas konfigurieren/anpassen?
-
hey, tolles script. ich hab mir das in ein javascript im iobroker eingefügt und gestartet. dann erstellt er auch die opbjekte und führt dann auch den speedtest durch. wie startet ihr denn aber den speedtest manuell? wenn ich ein paar mal am tag einen speedtest machen möchte und dies dann in die history aufnehmen will wie kann ich das dann machen? danke euch
-
@sirmazze .. es läuft per Cron jede 29. und jede 59. Minute
Die Zeile kannst Du ändern, falls Du kürzere/längere Abstände brauchst.
-
@sirmazze sagte in Script für einen SpeedTest über speedtest.net:
und dies dann in die history aufnehmen will
Dazu wählst du die neuen Datenpunkte aus, nimmst den Schraubenschlüssel und stellt den History Adapter für die Datenpunkte auf "aktiviert". Speichern nicht vergessen.
VG
-
Ist es möglich den Speedtest-net-Server (javascript.0.Speed-Test.data.server) manuell zu definieren, anstelle von lat/lon?
Mein Problem ist, dass ich immer einen langsamen Server zugewiesen bekomme (speedtest.stadtwerke-schorndorf.de:8080) und somit die Werte hinten und vorne nicht stimmen. -
@tr1plx sagte in Script für einen SpeedTest über speedtest.net:
Ist es möglich den Speedtest-net-Server (javascript.0.Speed-Test.data.server) manuell zu definieren, anstelle von lat/lon?
Mein Problem ist, dass ich immer einen langsamen Server zugewiesen bekomme (speedtest.stadtwerke-schorndorf.de:8080) und somit die Werte hinten und vorne nicht stimmen.https://forum.iobroker.net/topic/30118/web-speedy-teste-deine-internetverbindung
-
@tr1plx sagte in Script für einen SpeedTest über speedtest.net:
Mein Problem ist, dass ich immer einen langsamen Server zugewiesen bekomme (speedtest.stadtwerke-schorndorf.de:8080) und somit die Werte hinten und vorne nicht stimmen.
schau dir mal den neuen Adapter an.
https://forum.iobroker.net/topic/30118/web-speedy-teste-deine-internetverbindung -
Moin,
ich nutze das Script schon länger, bin sehr zufrieden.
Nun habe ich vor 2 Tagen die Ausführung per Cron verändert in var cronStr = '4 7-23 * * *'; (Jede Stunde zur 4. Minute zwischen 7 und 23 Uhr)
Was mir jedoch auffällt:
Letzte Nacht wurde es minütlich ausgeführt... Was ist an dem Cron falsch? Ich kann nichts erkennen.
-
Ich benutze das Script auch schon ein paar Jahre.
Allerdings kommt seit einiger Zeit folgender Fehler im Log:javascript.0 2023-01-21 11:50:00.608 error script.js.common.Speedtest.Internet_Speedtest: Speedtest Daten konnten nicht abgefragt werden javascript.0 2023-01-21 11:50:00.607 error script.js.common.Speedtest.Internet_Speedtest: {"error":{}}
Kann man da noch was machen?
Hier das Script:
/* Speed-Test SpeedTest mit Ausgabe von Down- / Uploadgeschwindigkeit und Ping http://forum.iobroker.net/viewtopic.php?f=21&t=4170 Erstellt 10.11.2016 by Cybertron angepasst 14.03.2017 by Pix 20.03.2017 Unit ms für Datenpunkt ping (danke 0018) Installation: npm install --global speed-test Aufruf: speed-test --json --verbose Beispiel-Ausgabe: {"ping":118,"download":2.2,"upload":2.2,"data":{"speeds":{"download":2.179,"upload":2.209,"originalDownload":239941,"originalUpload":242389}, "client":{"ip":"xxx.xxx.xxx.xxx","lat":51.2993,"lon":9.491,"isp":"Deutsche Telekom","isprating":3,"rating":0,"ispdlavg":13.86,"ispulavg":3.108}, "server":{"host":"speedtest.hillcom.de","lat":50.7511,"lon":9.2711,"location":"Alsfeld","country":"Germany","cc":"DE","sponsor":"HillCom Solutions", "distance":62.87,"distanceMi":39.06,"ping":117.8,"id":"6599"}}} */ var logging = true; var instanz = 'javascript.' + instance + '.'; var pfad = 'Speed-Test.'; var cronStr = "*/5 * * * *"; function createStates() { // Allgemein createState(pfad + 'json', { name: 'JSON', desc: 'JSON Ausgabe', type: 'string', role: 'json' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'json erstellt'); }); createState(pfad + 'ping', { name: 'Ping', desc: 'Ping', type: 'number', unit: 'ms', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'ping erstellt'); }); createState(pfad + 'forceRefresh', { name: 'aktualisieren', desc: 'Werte neu einlesen', type: 'boolean', def: false, role: 'indicator' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'forceRefresh erstellt'); }); // Speed createState(pfad + 'data.speeds.download', { name: 'Download', desc: 'Downloadgeschwindigkeit (Mbit/s)', type: 'number', unit: 'Mbit/s', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.speeds.download erstellt'); }); createState(pfad + 'data.speeds.upload', { name: 'Upload', desc: 'Uploadgeschwindigkeit (Mbit/s)', type: 'number', unit: 'Mbit/s', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.speeds.upload erstellt'); }); createState(pfad + 'data.speeds.orginalDownload', { name: 'OrginalDownload', desc: 'Downloadgeschwindigkeit (bit/s)', type: 'number', unit: 'bit/s', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.speeds.original Download erstellt'); }); createState(pfad + 'data.speeds.orginalUpload', { name: 'OrginalUpload', desc: 'Uploadgeschwindigkeit (bit/s)', type: 'number', unit: 'bit/s', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.speeds.originalUpload erstellt'); }); // Client createState(pfad + 'data.client.ip', { name: 'IP', desc: 'Öffentliche IP-Adresse', type: 'string', role: 'text' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.client.ip erstellt'); }); createState(pfad + 'data.client.lat', { name: 'Latitude', desc: 'Latidude', type: 'number', // ########################## unit: '°', role: 'value.gps.latitude' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.client.lat erstellt'); }); createState(pfad + 'data.client.lon', { name: 'Longitude', desc: 'Longitude', type: 'number', // ########################## unit: '°', role: 'value.gps.longitude' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.client.lomg erstellt'); }); createState(pfad + 'data.client.isp', { name: 'ISP', desc: 'Internet-Service-provider', type: 'string', role: 'text' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.client.isp erstellt'); }); createState(pfad + 'data.client.isprating', { name: 'ISP-Rating', desc: 'ISP-Rating', type: 'number', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.client.isprating erstellt'); }); createState(pfad + 'data.client.rating', { name: 'Rating', desc: 'Rating', type: 'number', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.client.rating erstellt'); }); createState(pfad + 'data.client.ispdlavg', { name: 'ISP-DL-AVG', desc: 'ISPDLAVG', type: 'number', unit: 'Mbit/s', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.client.ispdlavg erstellt'); }); createState(pfad + 'data.client.ispulavg', { name: 'ISP-UL-AVG', desc: 'ISPULAVG', type: 'number', unit: 'Mbit/s', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.client.ispulavg erstellt'); }); // Server createState(pfad + 'data.server.host', { name: 'Host', desc: 'Hostname des Servers', type: 'string', role: 'text' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.host erstellt'); }); createState(pfad + 'data.server.lat', { name: 'Server-Latitude', desc: 'Latitude des Serverstandortes', type: 'number', // ########################## unit: '°', role: 'value.gps.latitude' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.lat erstellt'); }); createState(pfad + 'data.server.lon', { name: 'Server-Longitude', desc: 'Longitude des Serverstandortes', type: 'number', // ########################## unit: '°', role: 'value.gps.longitude' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.lon erstellt'); }); createState(pfad + 'data.server.location', { name: 'Server-Location', desc: 'Server-Standort', type: 'string', role: 'text.city' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.location erstellt'); }); createState(pfad + 'data.server.country', { name: 'Server-Country', desc: 'Land', type: 'string', role: 'text.country' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.country erstellt'); }); createState(pfad + 'data.server.cc', { name: 'Server-CC', desc: 'Länderkürzel', type: 'string', role: 'text' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.cc erstellt'); }); createState(pfad + 'data.server.sponsor', { name: 'Server-Sponsor', desc: 'Sponsor des Servers', type: 'string', role: 'text' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.sponsor erstellt'); }); createState(pfad + 'data.server.distance', { name: 'DistanzToServer', desc: 'Distanz zum Server in km', type: 'number', unit: 'km', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.distance erstellt'); }); createState(pfad + 'data.server.distanceMi', { name: 'DistanzToServerMeilen', desc: 'Distanz des Servers im Meilen', type: 'number', unit: 'Meilen', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.distanceMi erstellt'); }); createState(pfad + 'data.server.ping', { name: 'Server-Ping', desc: 'Ping zum Server', type: 'number', unit: 'ms', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.ping erstellt'); }); createState(pfad + 'data.server.id', { name: 'Server-ID', desc: 'Server ID', type: 'number', role: 'value' }, function() { if (logging) log('Objekt ' + instanz + pfad + 'data.server.id erstellt'); }); } function SpeedTest() { exec("speed-test --json --verbose", function(err, stdout, stderr) { if (err) { log(stderr, 'error'); log('Speedtest Daten konnten nicht abgefragt werden', 'error'); return; } writeDP(stdout); }); } function writeDP(jsonstring) { var objects = JSON.parse(jsonstring); var jsonStr = jsonstring; //log (jsonStr); var ping = objects.ping; var download = objects.download; var upload = objects.upload; //log ('Ping =' + ping); //log ('Download = ' + download); //log ('Upload = ' + upload); var Speed_Download = objects.data.speeds.download; var Speed_Upload = objects.data.speeds.upload; var Speed_OriginalDownload = objects.data.speeds.originalDownload; var Speed_OriginalUpload = objects.data.speeds.originalUpload; //log ('Speed_Download = ' + Speed_Download); //log ('Speed_Upload = ' + Speed_Upload); //log ('OriginalDownload = ' + Speed_OriginalDownload); //log ('OriginalUpload = ' + Speed_OriginalUpload); var Client_IP = objects.data.client.ip; var Client_lat = objects.data.client.lat; var Client_lon = objects.data.client.lon; var Client_isp = objects.data.client.isp; var Client_isprating = objects.data.client.isprating; var Client_rating = objects.data.client.rating; var Client_ispdlavg = objects.data.client.ispdlavg; var Client_ispulavg = objects.data.client.ispulavg; var Server_host = objects.data.server.host; var Server_lat = objects.data.server.lat; var Server_lon = objects.data.server.lon; var Server_location = objects.data.server.location; var Server_country = objects.data.server.country; var Server_cc = objects.data.server.cc; var Server_sponsor = objects.data.server.sponsor; var Server_distance = objects.data.server.distance; var Server_distanceMi = objects.data.server.distanceMi; var Server_ping = objects.data.server.ping; var Server_id = objects.data.server.id; setState(instanz + pfad + "json", jsonStr); setState(instanz + pfad + "ping", parseFloat(ping)); //setState(instanz + pfad + "download", parseFloat(download)); //setState(instanz + pfad + "upload", parseFloat(upload)); setState(instanz + pfad + "data.speeds.download", parseFloat(Speed_Download)); setState(instanz + pfad + "data.speeds.upload", parseFloat(Speed_Upload)); setState(instanz + pfad + "data.speeds.orginalDownload", parseFloat(Speed_OriginalDownload)); setState(instanz + pfad + "data.speeds.orginalUpload", parseFloat(Speed_OriginalUpload)); setState(instanz + pfad + "data.client.ip", Client_IP); setState(instanz + pfad + "data.client.lat", parseFloat(Client_lat)); setState(instanz + pfad + "data.client.lon", parseFloat(Client_lon)); setState(instanz + pfad + "data.client.isp", Client_isp); setState(instanz + pfad + "data.client.isprating", parseFloat(Client_isprating)); setState(instanz + pfad + "data.client.rating", parseFloat(Client_rating)); setState(instanz + pfad + "data.client.ispdlavg", parseFloat(Client_ispdlavg)); setState(instanz + pfad + "data.client.ispulavg", parseFloat(Client_ispulavg)); setState(instanz + pfad + "data.server.host", Server_host); setState(instanz + pfad + "data.server.lat", parseFloat(Server_lat)); setState(instanz + pfad + "data.server.lon", parseFloat(Server_lon)); setState(instanz + pfad + "data.server.location", Server_location); setState(instanz + pfad + "data.server.country", Server_country); setState(instanz + pfad + "data.server.cc", Server_cc); setState(instanz + pfad + "data.server.sponsor", Server_sponsor); setState(instanz + pfad + "data.server.distance", parseFloat(Server_distance)); setState(instanz + pfad + "data.server.distanceMi", parseFloat(Server_distanceMi)); setState(instanz + pfad + "data.server.ping", parseFloat(Server_ping)); setState(instanz + pfad + "data.server.id", parseFloat(Server_id)); setState(instanz + pfad + 'forceRefresh', false); log('Speedtest Daten aktualisiert'); } // regelmässige Wiederholungen schedule(cronStr, SpeedTest); // einmaliger Start bei Skriptstart createStates(); setTimeout(SpeedTest, 1500); // Start beim Setzen auf true on(instanz + pfad + 'forceRefresh', function(obj) { if (!obj.state.ack && obj.state.val) SpeedTest(); });
-
das scheint mir ein altes Skript zu sein für die neueste version von spendetest:
* Skript Name: Speedtest * Skript Version: 1.3 * Erstell-Datum: 29. November 2021
-
Ich kann an der Stelle als Alternative das Skript von @SKB empfehlen. Das läuft superrund bei mir.
-
@thomas-braun sagte in Script für einen SpeedTest über speedtest.net:
das Skript von @SKB empfehlen
hast du da einen Link? Finde nichts.
-
-
-
@segway ist es möglich das alte zu aktualisieren, damit es wieder läuft?
-
-
@thomas-braun sagte in Script für einen SpeedTest über speedtest.net:
Ich kann an der Stelle als Alternative das Skript von @SKB empfehlen. Das läuft superrund bei mir.
Was ist daran anders (besser?) als das bisherige ?
-
@segway sagte in Script für einen SpeedTest über speedtest.net:
Was ist daran anders (besser?) als das bisherige ?
Das musst du du @SKB fragen.
Bei mir läuft es einfach. Im Gegensatz zu allen anderen Versuchen zuvor mit dem vofo-speedtest und dem 'hab-den-Namen-nicht-parat'-Adapter. -
@segway sagte in Script für einen SpeedTest über speedtest.net:
Was ist daran anders (besser?) als das bisherige ?
sehr genau bei großen Tarifen.
-
@negalein
Jetzt bin ich verwirrt.
Genau das hab ich doch oben referenziert !