NEWS
Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit
-
Super!
Verrätst du mir auch, wie das geht?
Einfach das Script beenden und neu starten? Oder gibt es eine andere Möglichkeit, die du mir vorschlagen könntest?Danke schonmal
-
Ich betreibe keine vis. Keine Ahnung von Knöppen und wie man darüber ein skript auslöst.
-
Die Einbindung in die Vis kriege ich schon hin. Ich frage mich nur, wie es script-seitig laufen würde. Wenn ich den Speedtest beispielsweise in putty starte kriegt der iobroker bzw. das Script nix davon mit.
Wäre eine Kopie des Scripts, die ich manuell (in der vis) starte und nach durchlaufen des Scripts wieder beende, eine Lösung?
-
@loemic Du kannst auch einen Hilfsdatenpunkt erstellen und diesen mit "on" abonnieren, dann auf true/false prüfen und die Funktion des Skriptes aufrufen.
-
Wie kann ich denn die Funktion des Scripts aufrufen? Kannst du mir ein Beispiel zeigen?
-
@loemic die Funktion heißt:
speedtest ();
Mit:
on({ id: "Hilfsdatenpunkt", change: "any" }, function (obj) { if (obj.val===true) { speedtest (); } }
Im gleichen Skript am Ende kannst Du dann Hilfsdatenpunkt abonnieren und darauf reagieren.
-
@skb sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
Danke für deinen Lösungsvorschlag. Leider bekomme ich da einen Error. Das Ende des Scripts sieht jetzt wie folgt aus:
// Alle 60 Minuten einen Speedtest ausführen schedule('*/60 * * * *', speedtest); // Script ausführen wenn Datenpunkt "Speedtest-Trigger" = true (Danke an @SKB im iobroker-Forum) on({ id: "0_userdata.0.Speedtest.Speedtest-Trigger", change: "any" }, function (obj) { if (obj.val===true) { speedtest (); } }
Ideen, wie das doch klappen könnte?
-
-
@skb
Leider geht es immer noch nicht. Script läuft zwar, aber die Änderung des Datenpunkts von False zu True bewirkt nichts... -
@loemic Hast Du denn einen boolean Datenpunkt erstellt?
-
Ja. Der 0_userdata.0.Speedtest.Speedtest-Trigger ist ein boolean-dp
-
@loemic sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
Ja. Der 0_userdata.0.Speedtest.Speedtest-Trigger ist ein boolean-dp
Na dann zeig mal die Objektdaten bitte, damit wir das auch bestätigen können
-
@loemic Ah, sorry, Fehler gefunden.
on({ id: "javascript.0.Speedtest.trigger", change: "any" }, function (obj) { if (obj.state.val===true) { /* state fehlte */ speedtest (); } });
-
es funktioniert jetzt, vielen vielen Dank
Der DP war korrekt, es fehlte tatsächlich das "state", wie von @SKB gesagt.
Ich habe noch eine Zeile für einen Log-Eintrag hinzugefügt.
Hier der Code-Schnipsel, falls das jemand "nachbauen" möchte, der bei mir funktioniert:// Script ausführen wenn Datenpunkt "Speedtest-Trigger" = true (Danke an @SKB im iobroker-Forum) on({ id: "boolean-Datenpunkt", change: "any" }, function (obj) { if (obj.state.val===true) { speedtest (); log("Speedtest: Trigger löst Speedtest aus!"); } } );
-
@loemic ich weiss
Ist ja mein Speedtest-Skript
-
@thomas-braun sagte in Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit:
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
Für buanet-Docker-Container funktioniert sudo nicht, daher habe ich folgendes gemacht:
cd~ wget https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh chmod 744 script.deb.sh ./script.deb.sh
Danach kann der Speedtest installiert werden mit
apt install speedtest
-
Hallo,
was mache ich falsch? In der Console funktioniert der Speedtest ohne Probleme. Das js Skript gibt mir Fehler aus. Ich nutze Docker von Bauanet. Mich wundert der Post von manuxi wo er beschreibt, dass buanet mit sudo nicht funktioniert. Bei mir ist es ja anscheinend mit sudo installiert.
(Das Skript ist unbearbeitet)
script.js.common.Speedtest:182:18:
// 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; }
-
@mephisto090 Dazu kann ich leider nichts sagen - ich habe kein Docker im Einsatz.
Ich denke, du musst via:
type -p speedtest
Schauen, wie der Pfad lautet. Diesen dann im Skript anpassen.
-
Das passt
-
@mephisto090 Und, wenn du das komplette Kommando via SSH eingibst, was passiert?