NEWS
Script für einen SpeedTest über speedtest.net
-
@cybertron
Ich habe das gleiche Problem wie @Nashra , wie kann man das beseitigen?
Von Hand die Typen der betroffenen Datenpunkte ändern? -
OK, habe ich erledigt. Danke.
Es gibt nur noch die Fehlermeldung zumWrong type of javascript.0.Status.Speed-Test.data.client.ispulavg: "undefined".Obwohl dieser Punkt auf number steht.
Und, kleiner Tipp: im Skript hast du 1x anstatt distanceMi, distanceMI verwendet.
Wenn ich alle Fehlermeldungen weg bekommen habe, stelle ich das Skript nochmal ein, wenn das für dich OK ist!?
-
OK, habe ich erledigt. Danke.
Es gibt nur noch die Fehlermeldung zumWrong type of javascript.0.Status.Speed-Test.data.client.ispulavg: "undefined".Obwohl dieser Punkt auf number steht.
Und, kleiner Tipp: im Skript hast du 1x anstatt distanceMi, distanceMI verwendet.
Wenn ich alle Fehlermeldungen weg bekommen habe, stelle ich das Skript nochmal ein, wenn das für dich OK ist!?
@aleks-83 sagte:
wenn das für dich OK ist!?
Das Skript ist nicht von mir.
Wrong type of javascript.0.Status.Speed-Test.data.client.ispulavg: "undefined"."undefined" bedeutet, dass kein Wert vorhanden ist. Ist das immer so oder hat der Datenpunkt einen sinnvollen Wert (Zahl) ?
-
OK,
habe mal das .varvalue entfernt, wie bei dem ispdlavg darüber auch.
Jetzt läuft es fehlerfrei.@cybertron
Wenn ich dein Skript hier "korrigiert" einstellen darf, sag bitte Bescheid.
Ansonsten gebe ich es gerne als PN raus. -
OK,
habe mal das .varvalue entfernt, wie bei dem ispdlavg darüber auch.
Jetzt läuft es fehlerfrei.@cybertron
Wenn ich dein Skript hier "korrigiert" einstellen darf, sag bitte Bescheid.
Ansonsten gebe ich es gerne als PN raus. -
OK,
habe mal das .varvalue entfernt, wie bei dem ispdlavg darüber auch.
Jetzt läuft es fehlerfrei.@cybertron
Wenn ich dein Skript hier "korrigiert" einstellen darf, sag bitte Bescheid.
Ansonsten gebe ich es gerne als PN raus.@aleks-83 sagte in Script für einen SpeedTest über speedtest.net:
Ansonsten gebe ich es gerne als PN raus.
würde mich freuen :)
-
@aleks-83 sagte:
Wenn ich dein Skript hier "korrigiert" einstellen darf, sag bitte Bescheid.
Das ist nicht mein Skript ! Von mir kommen lediglich Vorschläge zur Korrektur.
-
OK,
habe mal das .varvalue entfernt, wie bei dem ispdlavg darüber auch.
Jetzt läuft es fehlerfrei.@cybertron
Wenn ich dein Skript hier "korrigiert" einstellen darf, sag bitte Bescheid.
Ansonsten gebe ich es gerne als PN raus.@aleks-83 sagte in Script für einen SpeedTest über speedtest.net:
Ansonsten gebe ich es gerne als PN raus.
Mich auch...........:relaxed:
-
OK,
habe mal das .varvalue entfernt, wie bei dem ispdlavg darüber auch.
Jetzt läuft es fehlerfrei.@cybertron
Wenn ich dein Skript hier "korrigiert" einstellen darf, sag bitte Bescheid.
Ansonsten gebe ich es gerne als PN raus. -
Sorry, etwas verspätet...
Hier mein korrigiertes Skript: (Original von @cybertron)
var logging = false; var instanz = 'javascript.0'; instanz = instanz + '.'; var pfad = 'Status.Speed-Test.'; var cronStr = "0 * * * *"; var forceCreation = false; createState('Status.Speed-Test.json'); createState('Status.Speed-Test.ping',{name: 'Ping',desc: 'Ping',type: 'number'}); // 118 createState('Status.Speed-Test.download',{name: 'Download',desc: 'Downloadgeschwindigkeit (Mbit/s)',type: 'number',unit:'Mbit/s'}); // 2.2 createState('Status.Speed-Test.upload',{name: 'Upload',desc: 'Uploadgeschwindigkeit (Mbit/s)',type: 'number',unit:'Mbit/s'}); // 2.2 createState('Status.Speed-Test.data.speeds.download',{name: 'Download',desc: 'Downloadgeschwindigkeit (Mbit/s)',type: 'number',unit:'Mbit/s'}); // 2.179 createState('Status.Speed-Test.data.speeds.upload',{name: 'Upload',desc: 'Uploadgeschwindigkeit (Mbit/s)',type: 'number',unit: 'Mbit/s'}); // 2.209 createState('Status.Speed-Test.data.speeds.orginalDownload',{name: 'OrginalDownload',desc: 'Downloadgeschwindigkeit (bit/s)',type: 'number',unit:'bit/s'}); // 239941 createState('Status.Speed-Test.data.speeds.orginalUpload',{name: 'OrginalUpload',desc: 'Uploadgeschwindigkeit (bit/s)',type: 'number',unit:'bit/s'}); // 242389 createState('Status.Speed-Test.data.client.ip',{name: 'IP',desc: 'Öffentliche IP-Adresse',type: 'string'}); // xxx.xxx.xxx.xxx createState('Status.Speed-Test.data.client.lat',{name: 'Latitude',desc: 'Latidude',type: 'number'}); // 51.2993 createState('Status.Speed-Test.data.client.lon',{name: 'Longitude',desc: 'Longitude',type: 'number'}); // 9.491 createState('Status.Speed-Test.data.client.isp',{name: 'ISP',desc: 'Internet-Service-provide',type: 'string'}); // Deutsche Telekom createState('Status.Speed-Test.data.client.isprating',{name: 'ISP-Rating',desc: 'ISP-Rating',type: 'number'}); // 3 createState('Status.Speed-Test.data.client.rating',{name: 'Rating',desc: 'Rating',type: 'number'}); // 0 createState('Status.Speed-Test.data.client.ispdlavg',{name: 'ISP-DL-AVG',desc: 'ISPDLAVG',type: 'number',unit:'Mbit/s'}); // 13.86 createState('Status.Speed-Test.data.client.ispulavg',{name: 'ISP-UL-AVG',desc: 'ISPULAVG',type: 'number',unit:'Mbit/s'}); // 3.108 createState('Status.Speed-Test.data.server.host',{name: 'Host',desc: 'Hostname des Servers',type: 'string'}); // speedtest.hillcom.de createState('Status.Speed-Test.data.server.lat',{name: 'Server-Latitude',desc: 'Latitude des Serverstandortes',type: 'number'}); // 50.7511 createState('Status.Speed-Test.data.server.lon',{name: 'Server-Longitude',desc: 'Longitude des Serverstandortes',type: 'number'}); // 9.2711 createState('Status.Speed-Test.data.server.location',{name: 'Server-Location',desc: 'Server-Standort',type: 'string'}); // Alsfeld createState('Status.Speed-Test.data.server.country',{name: 'Server-Country',desc: 'Land',type: 'string'}); // Germany createState('Status.Speed-Test.data.server.cc',{name: 'Server-CC',desc: 'Länderkürzel',type: 'string'}); // DE createState('Status.Speed-Test.data.server.sponsor',{name: 'Server-Sponsor',desc: 'Sponsor des Servers',type: 'string'}); // HillCom Solutions createState('Status.Speed-Test.data.server.distance',{name: 'DistanzToServer',desc: 'Distanz zum Server in km',type: 'number',unit:'km'}); // 62.87 createState('Status.Speed-Test.data.server.distanceMi',{name: 'DistanzToServerMeilen',desc: 'Distanz des Servers im Meilen',type: 'number',unit:'Meilen'}); // 39.06 createState('Status.Speed-Test.data.server.ping',{name: 'Server-Ping',desc: 'Ping zum Server',type: 'number'}); // 117.8 createState('Status.Speed-Test.data.server.id',{name: 'Server-ID',desc: 'Server ID',type: 'string'}); // 65599 function SpeedTest() { exec("speed-test --json --verbose", function(err, stdout, stderr) { if (err) { log(stderr,'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",ping); setState(instanz + pfad + "download",download); setState(instanz + pfad + "upload",upload); setState(instanz + pfad + "data.speeds.download",Speed_Download); setState(instanz + pfad + "data.speeds.upload",Speed_Upload); setState(instanz + pfad + "data.speeds.orginalDownload",Speed_OriginalDownload); setState(instanz + pfad + "data.speeds.orginalUpload",Speed_OriginalUpload); setState(instanz + pfad + "data.client.ip",Client_IP); setState(instanz + pfad + "data.client.lat",Client_lat); setState(instanz + pfad + "data.client.lon",Client_lon); setState(instanz + pfad + "data.client.isp",Client_isp); setState(instanz + pfad + "data.client.isprating",Client_isprating); setState(instanz + pfad + "data.client.rating",Client_rating); setState(instanz + pfad + "data.client.ispdlavg",Client_ispdlavg); setState(instanz + pfad + "data.client.ispulavg",Client_ispulavg); setState(instanz + pfad + "data.server.host",Server_host); setState(instanz + pfad + "data.server.lat",Server_lat); setState(instanz + pfad + "data.server.lon",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",Server_distance); setState(instanz + pfad + "data.server.distanceMi",Server_distanceMi); setState(instanz + pfad + "data.server.ping",Server_ping); setState(instanz + pfad + "data.server.id",Server_id); } // regelmässige Wiederholungen // ----------------------------------------------------------------------------- schedule(cronStr, SpeedTest); -
Hallo Silvio,
ich habe das Skript für mich angepasst und dabei einige Kleinigkeiten ausgebessert. Ausserdem sind jetzt Roles vergeben und ein Schalter zum Aktualisieren für VIS eingebaut.
! ````
/* 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 = "29,59 * * * *";
! 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();
});
! ````
EDIT:Skript geändert am 14.03.2016 16:58 Uhr
20.03.2017 Einheit ms für Datenpunkt Ping eingepflegt (danke http://forum.iobroker.net/viewtopic.php?f=21&t=4170#p59581)
Danke für die Idee und Vorlage.
Gruß
Pix
EDIT 27.05.2019: Hier ist die reparierte Variante des Skripts (Fehler nach Forumumstellung 2019) https://forum.iobroker.net/post/264927
@pix sagte in Script für einen SpeedTest über speedtest.net:
/* 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","lHuhu PIX,
das Skript ist im neuen Forum leider total kaputt gegangen. Das Skript von aleks-83 startet bei mir leider nicht. Wollte daher nochmal deines ausprobieren um sicher zu gehen, dass es nicht an meinem JS liegt...danke. -
Hallo,
es nervt mittlerweile, dass man die alten Skripte nicht mehr einfach verwenden/kopieren kann.
Das neue Forum hat mich bisher mehr Zeit gekostet, als es gespart hat.@Kueppert Du kannst natürlich nix dafür. Hier der Code vom genannten Post nochmal zusammenkopiert, falsche Zeichen entfernt und durch den Beautifier gejagt:
/* 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 = "29,59 * * * *"; 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(); });Gruß
Pix -
Hallo,
es nervt mittlerweile, dass man die alten Skripte nicht mehr einfach verwenden/kopieren kann.
Das neue Forum hat mich bisher mehr Zeit gekostet, als es gespart hat.@Kueppert Du kannst natürlich nix dafür. Hier der Code vom genannten Post nochmal zusammenkopiert, falsche Zeichen entfernt und durch den Beautifier gejagt:
/* 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 = "29,59 * * * *"; 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(); });Gruß
Pix@pix sagte in Script für einen SpeedTest über speedtest.net:
Hallo,
es nervt mittlerweile, dass man die alten Skripte nicht mehr einfach verwenden/kopieren kann.
Das neue Forum hat mich bisher mehr Zeit gekostet, als es gespart hat. -
Hallo,
es nervt mittlerweile, dass man die alten Skripte nicht mehr einfach verwenden/kopieren kann.
Das neue Forum hat mich bisher mehr Zeit gekostet, als es gespart hat.@Kueppert Du kannst natürlich nix dafür. Hier der Code vom genannten Post nochmal zusammenkopiert, falsche Zeichen entfernt und durch den Beautifier gejagt:
/* 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 = "29,59 * * * *"; 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(); });Gruß
Pix -
Hallo,
habe speedtest installiert bekomme auf der cmd das Ergebniss angezeigt aber beim skript kommt folgender fehler:

iobroker läuft auf windwos 10
bitte um Hilfe!
LG
Jürgen
-
Hallo,
habe speedtest installiert bekomme auf der cmd das Ergebniss angezeigt aber beim skript kommt folgender fehler:

iobroker läuft auf windwos 10
bitte um Hilfe!
LG
Jürgen
-
Hallo dos1973,
ja natürlich, wenn ich dem befehl im cmd ausführe bekomme ich ein Ausgabe, nur im Skript findet er den Pfad nicht:
in der Ausgabe steht schön alles drinnen:

-
ich bekomme noch immer folgendes:
javascript.0 script.js.common.System.Internet: /usr/lib/node_modules/speed-test/cli.js:93 server.host = new URL(server.url).host; ^ TypeError: URL is not a constructor at map (/usr/lib/node_modules/speed-test/cli.js:93:16) at EventEmitter.st.once.server (/usr/lib/node_modules/speed-test/cli.js:108:12) at EventEmitter.g (events.js:292:16) at emitOne (events.js:96:13) at EventEmitter.emit (events.js:188:7) at startDownload (/usr/lib/node_modules/speed-test/node_modules/speedtest-net/index.js:683:10) at /usr/lib/node_modules/speed-test/node_modules/speedtest-net/index.js:660:7 at /usr/lib/node_modules/speed-test/node_modules/speedtest-net/index.js:364:11 at /usr/lib/node_modules/speed-test/node_modules/speedtest-net/index.js:97:16 at /usr/lib/node_modules/speed-test/node_modules/speedtest-net/index.js:329:16 21:20:15.464 [error] javascript.0 script.js.common.System.Internet: Speedtest Daten konnten nicht abgefragt werdenWas kann / muss ich tun?