Speedtest funktioniert nicht

Begonnen von Malmor, 04 Oktober 2015, 23:36:38

Vorheriges Thema - Nächstes Thema

Puschel74

@Hitcher
Auf meinem RasPi meldet speedtest 52.5 MBit/sec.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

eszych

Zitat von: justme1968 am 12 Januar 2016, 15:01:04
auf meinem system musste ich nach dem letzten spendetest update in speedtest-cli die zeile '(%s; U; %s; en-us)' % (platform.system(), platform.architecture()[0]),auskommentieren damit es wieder geht.

gruss
  andre

Genau so geht's  ::)

Danke!
Raspberry Pi 2 - FHEM 5.7
HM-LAN, HM-CFG-USB-2
HM-Sec-SCo, HM-Sec-SC-2, HM-TC-IT-WM-W-EU,
HM-LC-SW4-DR, HM-LC-Sw1-DR, HM-ES-PMSw1-DR,    
HM-ES-PMSw1-Pl - Rademacher Hompilot DuoFern

ahinrichs

Hi,

habe den eigentlichen Grund gefunden: in der fhem.pl wird das Signal SIGCHLD auf Ignore gesetzt. Das wird dann an speedtest-cli vererbt. Python braucht das aber, um bestimmte Subprozesse sinnvoll zu behandeln. In unserem Problem wird "uname -p" aufgerufen und ist schneller beendet, als python die drei Zeilen abarbeitet. Und dann bei f.close() geht es schief, weil das Signal "uname -p ist gestorben" nicht angekommen war.

Klar, der Workaround oben klappt. Ich würde hier aber vielleicht statt auskommentieren, es einfach fix setzen. Also z.B.:

# speedtest-cli um zeile 1035
     ua_tuple = (                                                                                                 
         'Mozilla/5.0',                                                                                           
        '(Linux; U; 64Bit; en-us)', # <- das hier passt zu meinem system
         'Python/%s' % platform.python_version(),
         '(KHTML, like Gecko)',


Etwas universeller: ganz oben in der Datei die Signalbehandlung für speedtest-cli und alle Subprozesse wieder auf normal setzen:

import threading

__version__ = '0.3.4'
signal.signal(signal.SIGCHLD, signal.SIG_DFL)

# Some global variables we use
user_agent = None


Die Lösung hat den Vorteil, dass sie auch klappt, wenn bei speedtest-cli in zukünftigen Versionen noch weitere Aufrufe dazukämen, die am gleichen Grund scheitern.

Gruß
Axel

justme1968

klasse. sehr gut.

ich würde es aber ganz anders lösen und auf FHEM seite den signal handler nach dem fork und vor dem exec wieder auf default setzen.

es könnte noch andere stellen geben bei denen das dann hilft.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

ahinrichs

Dem einen sein Python ist dem anderen sein Perl. Da ich innerhalb FHEM so noch gar nix gemacht habe, waren mir eventuelle Nebenwirkungen nicht überschaubar. Aber im Grunde hatte ich vor meinem Fix auch danach gesucht, weil das wäre natürlich noch besser.

Gruß
Axel

justme1968

es auf fhem seite zu lösen hat halt auch den vorteil das es ein für alle mal und für alle module repariert ist. ausserdem ist es nur eine zeile: https://forum.fhem.de/index.php/topic,50898.0.html.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

rudi hat den fix eingecheckt. ab morgen müsste es also auch ohne änderungen an speedtest gehen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

GrandJury

Hallo zusammen,

ich komme leider nicht weiter. Achtung: Newbie-Gefahr

Auf meinem Raspberry läuft Jessie und Python 2.7. Also habe ich in der ersten Zeile vom Skript, wie im Wiki beschrieben, "Python" durch "Python3" ersetzt. Auch die hier im Thread genannte Zeile habe ich auskommentiert. In Fhem tut sich weiterhin nichts. Über den Shell Zugriff funktioniert es ohne Probleme. In Fhem bekomme ich lediglich folgende Meldung im Logfile, nachdem ich Verbose auf 5 gesetzt habe:

016.08.07 01:50:03 5: starting speedtest
2016.08.07 01:50:05 5: speedtest done
2016.08.07 01:50:05 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/32_speedtest.pm line 140.
2016.08.07 01:50:05 5: speedtest_SpeedtestDone: Speedtest|Invalid server ID||


Ich habe keine Ahnung, was ich damit nun anfangen soll bzw. wo es nun noch hakt. Ich hoffe ihr könnte mir helfen. Vielen Dank.

DeeSPe

Zitat von: GrandJury am 07 August 2016, 02:08:01
Hallo zusammen,

ich komme leider nicht weiter. Achtung: Newbie-Gefahr

Auf meinem Raspberry läuft Jessie und Python 2.7. Also habe ich in der ersten Zeile vom Skript, wie im Wiki beschrieben, "Python" durch "Python3" ersetzt. Auch die hier im Thread genannte Zeile habe ich auskommentiert. In Fhem tut sich weiterhin nichts. Über den Shell Zugriff funktioniert es ohne Probleme. In Fhem bekomme ich lediglich folgende Meldung im Logfile, nachdem ich Verbose auf 5 gesetzt habe:

016.08.07 01:50:03 5: starting speedtest
2016.08.07 01:50:05 5: speedtest done
2016.08.07 01:50:05 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/32_speedtest.pm line 140.
2016.08.07 01:50:05 5: speedtest_SpeedtestDone: Speedtest|Invalid server ID||


Ich habe keine Ahnung, was ich damit nun anfangen soll bzw. wo es nun noch hakt. Ich hoffe ihr könnte mir helfen. Vielen Dank.

Hast du denn eine valide Server ID mit definiert? Sieht nämlich nicht so aus.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

GrandJury

Zitat von: DeeSPe am 07 August 2016, 04:08:29
Hast du denn eine valide Server ID mit definiert? Sieht nämlich nicht so aus.

Gruß
Dan

Hi Dan,

wie und wo muss ich denn das durchführen? Sorry wenn ich da jetzt vielleicht blöd argumentiere, aber via Shell läuft ja scheinbar alles ohne Probleme. Muss ich beim Modul noch was anpassen?

DeeSPe

Zitat von: GrandJury am 07 August 2016, 15:18:25
Hi Dan,

wie und wo muss ich denn das durchführen? Sorry wenn ich da jetzt vielleicht blöd argumentiere, aber via Shell läuft ja scheinbar alles ohne Probleme. Muss ich beim Modul noch was anpassen?

Ich benutze das Modul nicht und kenne es auch nicht. Schaue ich aber kurz in die commandref, so denke ich ist dort alles wunderbar beschrieben. Hast Du den Server auf der Shell ermittelt und dann beim define mit angegeben (so habe ich es verstanden)?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

GrandJury

Zitat von: DeeSPe am 07 August 2016, 15:21:54
Schaue ich aber kurz in die commandref, so denke ich ist dort alles wunderbar beschrieben. Hast Du den Server auf der Shell ermittelt und dann beim define mit angegeben (so habe ich es verstanden)?

Gruß
Dan

Danke dir. Ich hatte gedacht, ich hänge an einer komplizierten Geschichte fest. Habe nun den richtigen Server gesetzt und es funktioniert sowohl mit als auch ohne den optionalen Werten. Das Problem saß also mal wieder vor dem PC  ;)

Danke Dan.  :)

DeeSPe

MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Elektrolurch

 Hallo,

seit dem gestrigen update von speedtest bekomme ich folgende Fehlermeldung im Log:
Traceback (most recent call last):
  File "/usr/local/speedtest-cli/speedtest-cli", line 5, in <module>
    from pkg_resources import load_entry_point
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
  File "/usr/local/lib/python3.4/dist-packages/setuptools-19.1.1-py3.4.egg/pkg_resources/__init__.py", line 3138, in <module>
  File "/usr/local/lib/python3.4/dist-packages/setuptools-19.1.1-py3.4.egg/pkg_resources/__init__.py", line 3124, in _call_aside
  File "/usr/local/lib/python3.4/dist-packages/setuptools-19.1.1-py3.4.egg/pkg_resources/__init__.py", line 3151, in _initialize_master_working_set
  File "/usr/local/lib/python3.4/dist-packages/setuptools-19.1.1-py3.4.egg/pkg_resources/__init__.py", line 661, in _build_master
  File "/usr/local/lib/python3.4/dist-packages/setuptools-19.1.1-py3.4.egg/pkg_resources/__init__.py", line 962, in require
  File "/usr/local/lib/python3.4/dist-packages/setuptools-19.1.1-py3.4.egg/pkg_resources/__init__.py", line 849, in resolve
pkg_resources.DistributionNotFound: The 'speedtest-cli==0.3.1' distribution was not found and is required by the application
2016.08.23 15:17:51 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/32_speedtest.pm line 140.

Offensichtlich wird da wohl eine lib gesucht, die es nicht mehr gibt.
sudo apt-get install speedtest-cli
sagt aber, dass speedtest-cli uptodate ist.

Was muss da und wie aktualisiert werden, damit speedtest wieder funktioniert?
Habe jetzt erst mal die Vorgängerversion wieder zurückgespielt, die funktioniert wieder.

Elektrolurch
configDB und Windows befreite Zone!

hopgeq

(Ergänzung ein halbes Jahr später)
Ich hatte auch Probleme mit dem Speedtest. Log Eintrag war:
PERL WARNING: Can't exec "/usr/local/speedtest-cli/speedtest-cli": Datei oder Verzeichnis nicht gefunden at ./FHEM/32_speedtest.pm line 131
Ich habe einfach eine Verknüpfung erstellt, von /usr/local/speedtest-cli auf /usr/local/bin
danach lief es einwandfrei.