Modul MySpeedtest fehlerhafter Upload

Begonnen von Mohmy, 07 September 2020, 19:35:00

Vorheriges Thema - Nächstes Thema

Mohmy

Hallo Gemeinde,

Ich nutze seit langem das FHEM Modul MySpeedtest um die Geschwindigkeit der Breitband-Leitung zu messen. Leider ist seit wohl ewiger Zeit ein Bug im Speedtest-cli vorhanden und der Upload wird zu gering gemessen. Diverse Beiträge im Netz sind vorhanden, aber es gibt keine Lösung seit langem.
Frage: Hat hier jemand das Problem bereits irgendwie gelöst? Hier mal was ich meine:
https://bugs.launchpad.net/ubuntu/+source/speedtest-cli/+bug/1828929
https://github.com/sivel/speedtest-cli/issues/610

Das FHEM Modul MySpeedtest basiert auf dem "speedtest-cli by Sivel". Speedtest-cli misst angeblich mit einer etwas ,,veralteten Technik" und der Bug wird einfach nicht gefunden/behoben. Hier auch Infos dazu und dort ist beschrieben warum ein anderer Speedtest von Ookla (www.speedtest.net) sauberer funktioniert:

Eine saubere Messung mit korrekten Werten der Leitungskapazität ist ja per www.speedtest.net möglich ... per Webseite, App auf Windows und auch unter Linux/Unix, siehe:
https://community.openhab.org/t/speedtest-cli-by-ookla-internet-up-downlink-measurement-integration/94447

Ich hätte sonst die Idee, dass man auf Basis des Ookla-Entwickler-Frameworks von speedtest.net ja mal ein Speedtest FHEM Modul bauen könnte ;) Nur ... wer kann's?

Weitere Infos hier:
https://www.speedtest.net/de/apps/cli

Hier wird beschrieben, wie das als "einfache Lösung ohne FHEM Modul" in FHEM zu implementieren wäre:
https://smarthomebau.de/update-raspberry-pi-internet-geschwindigkeit-tests-automatisieren-quick-dirty/

Mit der Lösung ist allerdings zwar eine CSV-Variante vorhanden, aber man kann natürlich keinen FHEM-Graphen (SVG Plot) generieren, weil kein FHEM-Logfile erzeugt wird.

Der Artikel liefert ja schon eine Menge an Infos ... und eigentlich könnte das "MySpeedtest FHEM Modul" fast die Code Basis sein.
Es müsste sich nur jemand finden, der daraus mal ein Modul bastelt :-)

Viele Grüße
Mohmy

justme1968

#1
probier mal die angehängte version.

- das ookla cli binary installieren
- im modul das ookla attribut auf 1 setzen
- speedtest wird in /usr/local/bin gesucht. wenn es nicht dort ist das path attribut setzen

edit 2020-10-05: ab morgen im normalen update
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Brause

COOL
endlich echt Werte

Funktioniert auf Anhieb
Wenn man schon auf "Focal Fossa" ist muss man zwar etwas tricksen bei der Installation der cli, aber es funktioniert.


sudo apt-get install gnupg1 apt-transport-https dirmngr
export INSTALL_KEY=379CE192D401AB61
export DEB_DISTRO=bionic
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $INSTALL_KEY
echo "deb https://ookla.bintray.com/debian ${DEB_DISTRO} main" | sudo tee  /etc/apt/sources.list.d/speedtest.list
sudo apt-get update
sudo apt-get install speedtest


der Path war dann bei mir /usr/bin/

doman75

Ich habs auch installiert, bei mir gehts nicht. Wenn ich es auf der commandline aufrufe, also speedtest. Geht es und es kommen auch richtige Werte.
Im Modul hab ich auf ookla = 1 gestellt und den Pfad auf /usr/bin angepasst.Mache ich jetzt einen StatusRequest kommt failed und im log steht folgendes:

2020.10.07 11:52:14.735 5: speedtest_SpeedtestDone: Internetspeed|
2020.10.07 11:52:14.721 5: speedtest done
  what():  basic_string::_M_construct null not valid
terminate called after throwing an instance of 'std::logic_error'
2020.10.07 11:52:14.695 5: starting speedtest

Hat jemand eine Idee was ich falsch mache?

Danke
Swen

justme1968

die meldung ist vom spendetest executable.

ich vermute du hast verschiedene versionen installiert. rufst du über die kommandozeile wirklich die gleiche version auf wie aus fhem?

oder es stimmen noch pfade nicht.

eventuell ist es einfacher das tar.gz zu installieren (weiter unten auf der ookla seite) statt über apt zu gehen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

doman75

Ich bin eigentlich schon sicher das ich diesselbe Version benutze, ich habe jetzt die speedtest mal noch ins usr/local/bin geschrieben und ausführbar gemacht,
kommt derselbe Fehler. und wenn ich ein find machen kommt auch nur eine (bzw. jetzt 2 x die speedtest)

find . |grep speedtest
./opt/fhem/restoreDir/update/2020-10-07/FHEM/32_speedtest.pm
./opt/fhem/FHEM/.svn/text-base/32_speedtest.pm.svn-base
./opt/fhem/FHEM/.svn/prop-base/32_speedtest.pm.svn-base
./opt/fhem/FHEM/32_speedtest.pm
./opt/fhem/node_modules/npm/node_modules/lockfile/speedtest.js
./opt/fhem/www/SVGcache/wl_speedtest-2019-12-27_00-00-00-2019-12-27_23-59-59.svg
./opt/fhem/www/SVGcache/wl_speedtest-2018-12-01_00-00-00-2018-12-01_23-59-59.svg
./opt/fhem/www/SVGcache/wl_speedtest-2018-12-02_00-00-00-2018-12-02_23-59-59.svg
./opt/fhem/www/SVGcache/wl_speedtest-2018-12-03_00-00-00-2018-12-03_23-59-59.svg
./opt/fhem/www/gplot/.svn/text-base/speedtest.gplot.svn-base
./opt/fhem/www/gplot/wl_speedtest.gplot
./opt/fhem/www/gplot/speedtest.gplot
./etc/apt/sources.list.d/speedtest.list
./var/lib/dpkg/info/speedtest.list
./var/lib/dpkg/info/speedtest.md5sums
./var/cache/apt/archives/speedtest_1.0.0.2-1.5ae238b_amd64.deb
./usr/bin/speedtest
./usr/share/man/man5/speedtest.5
./usr/share/doc/speedtest
./usr/share/doc/speedtest/changelog.gz
./usr/local/lib/node_modules/npm/node_modules/lockfile/speedtest.js
./usr/local/n/versions/node/13.5.0/lib/node_modules/npm/node_modules/lockfile/speedtest.js
./usr/local/bin/speedtest-clialt
./usr/local/bin/speedtest
./usr/local/bin/speedtest-clialt2
./root/.config/ookla/speedtest-cli.json

justme1968

was sagt which speedtest auf der kommandozeile?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

doman75

#7
/usr/local/bin/speedtest

hier dazu mal das aktuelle list:

Internals:
   DEF        3600
   FUUID      5c42db50-f33f-5c7c-563b-e45ecc6cd6b36663
   INTERVAL   3600
   LOCAL      0
   NAME       Internetspeed
   NR         506
   STATE      failed
   TYPE       speedtest
   .attraggr:
   .attrminint:
   Helper:
     DBLOG:
       download:
         logdb:
           TIME       1602067286.8071
           VALUE      586.88
       ping:
         logdb:
           TIME       1602067286.8071
           VALUE      36.843
       upload:
         logdb:
           TIME       1602067286.8071
           VALUE      52.87
   READINGS:
     2020-10-07 12:41:26   download        586.88
     2020-10-07 12:41:26   ping            36.843
     2020-10-07 12:46:43   state           failed
     2020-10-07 12:41:26   upload          52.87
   helper:
Attributes:
   disable    0
   ookla      1
   path       /usr/local/bin
   room       Fritzbox
   verbose    5


Nehme ich das ookla attribut wieder weg, nimmt er auch gleich wieder das speedtest-cli von früher

doman75

fhem@FHEM:~/FHEM$ /usr/local/bin/speedtest --accept-license --accept-gdpr -f json

{"type":"log","timestamp":"2020-10-07T10:53:55Z","message":"Error: [11] Cannot read from socket: Resource temporarily unavailable","level":"error"}
{"type":"result","timestamp":"2020-10-07T10:54:09Z","ping":{"jitter":1.377,"latency":19.978000000000002},"download":{"bandwidth":116144826,"bytes":1099098608,"elapsed":9606},"upload":{"bandwidth":6663540,"bytes":25447152,"elapsed":3814},"packetLoss":0,"isp":"Vodafone DSL","interface":{"internalIp":"192.168.0.3","name":"eth0","macAddr":"34:E6:D7:30:37:34","isVpn":false,"externalIp":"XXXX"},"server":{"id":3313,"name":"suec//dacor GmbH","location":"Coburg","country":"Germany","host":"speedtest1.dacor.de","port":8080,"ip":"217.24.56.27"},"result":{"id":"a7080016-5251-4ee8-bcee-113c25c42172","url":"https://www.speedtest.net/result/c/a7080016-5251-4ee8-bcee-x"}}

Wenn ich den Befehl aus der pm mal eingebe geht es auch

justme1968

und wenn du das gleiche auf der fhem kommandozeile machst?

"/usr/local/bin/speedtest --accept-license --accept-gdpr -f json"

und dann im log schauen
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

doman75

in welchen log soll ich dann schauen? also ich habe es wie oben geschrieben, ja schon mal an der kommandozeile probiert,siehe oben.

Was mir auffällt das immer erstmal kommt

Error: [11] Cannot read from socket: Resource temporarily unavailable","level":"error"}


aber dann gehts normal weiter

justme1968

im fhem log.

das "..." kommando aus fhem startet einfach den speedtest über die shell und protokolliert das Ergebnis im log. du solltest also einen laufenden speedtest per ps sehen und nach einer weile das ergebnis.

solange im json ergebnis kommen zeigt fhem diese auch an. bei dir geht vorher schon der start schief und der fehler kommt direkt aus dem speedtest binary.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

doman75

Wenn ich an der Kommandozeile den befehl ausführe sehe ich das json ergebnis an der kommandozeile aber im fhem.log steht diesbezüglich gar nichts.

justme1968

auf der fhem kommandozeile per telnet. oder der commandbox oben auf der fhemweb seite. die anführungsfeigen nicht vergessen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

doman75

im log erscheint immer das :

what():  basic_string::_M_construct null not valid
terminate called after throwing an instance of 'std::logic_error'