32_speedtest.pm - Immer wieder Fehlermeldungen

Begonnen von Gear, 18 Januar 2023, 19:18:57

Vorheriges Thema - Nächstes Thema

Gear

Hallo zusammen,

hatte das Problem früher auf meinem RPi4 auch und bin auf den Ookla Speedtest umgestiegen, hatte da nie Probleme.
Da ich nun auf Docker umgestiegen bin, nutze ich wieder den normalen Speedtest.

Ich bekomme aber immer wieder Fehlermeldungen.
Jemand eine Idee?

FHEM Log:
ERROR: Unable to connect to servers to test latency.
2023.01.18 09:00:02.470 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/32_speedtest.pm line 164.


FHEM Device:
define IT.Speedtest speedtest
attr IT.Speedtest DbLogExclude .*
attr IT.Speedtest DbLogInclude UpRate,DownRate,ping,packetLoss
attr IT.Speedtest event-on-change-reading .*
attr IT.Speedtest event-on-update-reading UpRate,DownRate,ping,packetLoss
attr IT.Speedtest group Speedtest
attr IT.Speedtest path /usr/bin
attr IT.Speedtest stateFormat state<br>\
Last Run: LastRun<br>\
Down-Rate: DownRate kbit/s (DownMBs MB/s)<br>\
Up-Rate: UpRate kbit/s (UpMBs MB/s)<br>\
Ping: ping ms<br>
attr IT.Speedtest userReadings UpRate {sprintf "%.0f", (ReadingsVal($NAME,"upload",0))*1024},\
DownRate {sprintf "%.0f", (ReadingsVal($NAME,"download",0))*1024},\
UpMBs {sprintf "%.2f", (ReadingsVal($NAME,"upload",0)/8)},\
DownMBs {sprintf "%.2f", (ReadingsVal($NAME,"download",0)/8)},\
LastRun {FmtDateTime(time())}
#   FUUID      63c3a9f0-f33f-cc91-4d22-ce07fa4b57e3fb23
#   FVERSION   32_speedtest.pm:0.238670/2021-03-01
#   INTERVAL   3600
#   LOCAL      0
#   NAME       IT.Speedtest
#   NR         70
#   STATE      running<br>
#Last Run: 2023-01-18 19:14:42<br>
#Down-Rate: 166994 kbit/s (20.39 MB/s)<br>
#Up-Rate: 39209 kbit/s (4.79 MB/s)<br>
#Ping: 19.417 ms<br>
#   TYPE       speedtest
#   eventCount 21
#   Helper:
#     DBLOG:
#       DownRate:
#         DBLogging:
#           TIME       1674065682.02128
#           VALUE      166994
#       UpRate:
#         DBLogging:
#           TIME       1674065682.02128
#           VALUE      39209
#       ping:
#         DBLogging:
#           TIME       1674065451.71444
#           VALUE      19.417
#   READINGS:
#     2023-01-18 19:14:42   DownMBs         20.39
#     2023-01-18 19:14:42   DownRate        166994
#     2023-01-18 19:14:42   LastRun         2023-01-18 19:14:42
#     2023-01-18 19:14:42   UpMBs           4.79
#     2023-01-18 19:14:42   UpRate          39209
#     2023-01-18 19:10:51   download        163.08
#     2023-01-18 19:10:51   ping            19.417
#     2023-01-18 19:14:42   state           running
#     2023-01-18 19:10:51   upload          38.29
#   helper:
#     RUNNING_PID:
#       abortFn    speedtest_SpeedtestAborted
#       arg        IT.Speedtest|
#       bc_pid     12577
#       finishFn   speedtest_SpeedtestDone
#       fn         speedtest_DoSpeedtest
#       pid        1389752
#       telnet     telnetForBlockingFn_1673991549.03572_127.0.0.1_43464
#       timeout    300
#       abortArg:
#   hmccu:
#
setstate IT.Speedtest running<br>\
Last Run: 2023-01-18 19:14:42<br>\
Down-Rate: 166994 kbit/s (20.39 MB/s)<br>\
Up-Rate: 39209 kbit/s (4.79 MB/s)<br>\
Ping: 19.417 ms<br>
setstate IT.Speedtest 2023-01-18 19:14:42 DownMBs 20.39
setstate IT.Speedtest 2023-01-18 19:14:42 DownRate 166994
setstate IT.Speedtest 2023-01-18 19:14:42 LastRun 2023-01-18 19:14:42
setstate IT.Speedtest 2023-01-18 19:14:42 UpMBs 4.79
setstate IT.Speedtest 2023-01-18 19:14:42 UpRate 39209
setstate IT.Speedtest 2023-01-18 19:10:51 download 163.08
setstate IT.Speedtest 2023-01-18 19:10:51 ping 19.417
setstate IT.Speedtest 2023-01-18 19:14:42 state running
setstate IT.Speedtest 2023-01-18 19:10:51 upload 38.29



Vielen Dank
Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gear

Hey Otto,

ist tatsächlich eine gute Idee.  :o ;D ;)

Ich müsste das ja in Docker "installieren".
sudo apt-get install curl
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt-get install speedtest

Quelle: https://www.speedtest.net/apps/cli

Das im FHEMWiki ist ja für ARM gedacht, wenn ich das richtig sehe.
wget -O speedtest.tgz https://install.speedtest.net/app/cli/ookla-speedtest-1.1.1-linux-armhf.tgz
tar -xzvf speedtest.tgz
mv speedtest /usr/local/bin/

Quelle: https://wiki.fhem.de/wiki/Speedtest

Oder sehe ich das falsch?

Kann ich das einfach über die Portainer Console von FHEM installieren?
Bleibt das dann bestehen, solange der Container existiert?

Oder ein separater Container?

Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

#3
separater Container wäre konsequent. Ich weiß nicht ob es da was gibt?

Edit: sogar mit mqtt https://github.com/moafrancky/speedtest2mqtt

Andererseits ist es nur eine Datei. Ich betreibe das remote auf dem Router über ssh.
"Setup" von FHEM auf den Router
{system ('ssh root@192.168.56.1 '.q('wget -qO speedtest.tgz https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-armhf.tgz;;tar -zxvf speedtest.tgz speedtest;;./speedtest --accept-license --accept-gdpr -f json' &) ) }
Musst Du nur auf dem Dockerhost herunterladen und die Version anpassen.

attribute im speedtest:
attr MySpeedtest ookla 1
attr MySpeedtest path ssh root@192.168.56.1 ./

Und vorher für das Setup ssh auf den Dockerhost habe ich brandaktuell die Beschreibung mit Script. ;)

Vorteil: nix im Container :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gear

Du Fuchs du! =D
Man kann beim Path via SSH ausführen, hab ich da was nicht mitbekommen? =P

Ich schaue es mir am WE an.

Für mein Verständnis, das installiert mir den Speedtest oder führt ihn nur aus? (Ist für arm, ich weiß)
{system ('ssh root@192.168.56.1 '.q('wget -qO speedtest.tgz https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-armhf.tgz;;tar -zxvf speedtest.tgz speedtest;;./speedtest --accept-license --accept-gdpr -f json' &) ) }
(Wenn ich das richtig sehe, dann installiert es das)

Mit dem Key, in OMV kann ich einem Benutzer einen "SSH public key" hinterlegen, richt das für eine Autentifzierung?
(Wenn du das sagen kannst / weißt)

Dankeschön, ich teste es dann.
Schönen Abend!
Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

ich lade nur die binary und führe sie erstmalig aus, um die Bedingungen zu akzeptieren. Ich glaube aber, das Modul macht es auch.
In OMV (hab ich auch im Einsatz ;) ) brauchst Du einen Benutzer, klar. Aber OMV ist ja auch bloß debian.
Wenn Du mein ssh Script verwenden willst, müsste der Benutzer speedtest ausführen und docker benutzen können.

Das ist das Prinzip von ssh mit public key: UserB hat einen private Key und gibt den passenden public key an UserA. UserA vertraut UserB und sagt damit: wenn UserB mit seinem private Key kommt, darf der wie ich.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gear

Auf dem Testsystem hat es so weit geklappt.
Habe aber auch noch etwas anderes versucht.

In Portainer in die Konsole des Containers von FHEM, dann folgendes ausgeführt: (AMD / Intel)
(Bevor sich jemand beschwert, ich habe es nur aus Spaß getestet und ja man kann es schöner lösen...)
cd /opt/fhem
wget https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-x86_64.tgz
tar -xzvf ookla-speedtest-1.2.0-linux-x86_64.tgz


Dann im Speedtest Device:
attr IT.Speedtest ookla 1
attr IT.Speedtest path /opt/fhem/


Scheint zu funktionieren, wenn ein AT den Start auslöst.
Ich behalte das mal im Auge.

@Otto
Ich habe bei speedtest.net nur die Installationsoption gesehen und den Download-Bereich darunter irgendwie gekonnt ignoriert / übersehen...  ::) ::)

Dank dir für deine Hilfe, werde das auf jeden Fall für andere Vorhaben nutzen und den Speedtest mal auf beide Möglichkeiten testen.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

Ach so ja, daran habe ich nicht gedacht: das geht auch so, in der FHEM Kommandozeile!
"wget -qO speedtest.tgz https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-linux-x86_64.tgz;;tar -xzf speedtest.tgz"
Das ist auch nicht schlimm, das landet ja im gemappten Pfad und nicht im container layer.
defmod MySpeedtest speedtest 1800
attr MySpeedtest ookla 1
attr MySpeedtest path ./
attr MySpeedtest room Status

Habs probiert das funktioniert. Ich hatte das in den Router ausgelagert, weil mein Raspberry ja nur mit 100 Mbit angebunden ist.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gear

Ja gut, mit 100 Mbit ^^
Ok, an die FHEM Kommandozeile habe ich nicht gedacht.  :o

Ich habe den Speedtest als Disable True angelegt.
attr IT.Speedtest disable 1

Lasse das über ein AT laufen, hier soll ein DOIF mit rein, was prüft, ob der PC läuft oder nicht.
Beim Zocken böse, wenn der Ping dann mal abhebt. =D

Dann haben wir ja hier zwei super Lösungen.  8)
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Gear

Ok, nach dem Restart von OMV oder dem Container kommt das:
LOG:
PERL WARNING: Can't exec ".//speedtest": Permission denied at ./FHEM/32_speedtest.pm line 150.
PERL WARNING: Use of uninitialized value $speedstr in substitution (s///) at ./FHEM/32_speedtest.pm line 154.
PERL WARNING: Use of uninitialized value $speedstr in concatenation (.) or string at ./FHEM/32_speedtest.pm line 155.


Ich habe als Workaround mal das erneute Ausführen des Downloads in ein Notify gepackt.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Wernieman

Kann es sein, das Dein FHEM-Dir nicht persistent, also ausgelagert, ist? Wäre ein "böses Problem" ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Gear

Hey Werner, sollte eig., hinten mal der FHEM Teil des Stack.

  fhem:
    container_name: FHEM
    image: fhem/fhem:latest
    hostname: fhem
    restart: always
    networks:
      internal:
        ipv4_address: 172.18.0.2
    ports:
      - "8083:8083"
      - "7072:7072"
      - "6767:6767/udp"
    environment:
      PIP_PKGS: "fhem beautifulsoup4"
      PAN_PKGS: "Crypt::Cipher::AES or Crypt::Rijndael_PP"
    volumes:
      - /MyDocker/MySmartHome/FHEM:/opt/fhem
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Wernieman

Also die Config (bezüglich /opt/fhem) stimmt .. dann sollte eigentlich auch speedtest funktionieren ... das ist doch auch "normales System", sprich keine NAS o.Ä.? (Sorry falls Du diese Angabe schon gegeben hast, ich es aber übersehen habe)

was wir aber noch aufgefallen ist, in Deiner Logausgabe:
Zitat".//speedtest"
Steht bei Deiner Definition wirklich 2 / hintereinander? Sollte zwar eher ein Schönheitsfehler sein, der Dich aber längerfristig "sehr ärgern kann".
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Gear

Zitat von: Wernieman am 21 Januar 2023, 15:51:35
das ist doch auch "normales System", sprich keine NAS o.Ä.?

Das ist Debian 11 auf einem ODroid H3 (Intel 64bit), darauf ist OpenMediaVault installiert und darüber Docker + Portainer.
Habe eine 500 GB SSD via SATA angeschlossen, darauf befindet sich der FHEM Ordner.

Per Konsole in Portainer hat der Speedtest die gleichen Rechte wie die anderen Dateien / Ordner.

Zitat von: Wernieman am 21 Januar 2023, 15:51:35
in Deiner Logausgabe:Steht bei Deiner Definition wirklich 2 / hintereinander?

Das kommt, da ich als Pfad ./ habe, das Device scheint automatisch an den Pfad folgendes anzuhängen /speedtest.
Hatte den Pfad aber nach meinem Post geändert zu /opt/fhem.

Mein Device sieht so aus:
define IT.Speedtest speedtest
attr IT.Speedtest DbLogExclude .*
attr IT.Speedtest DbLogInclude UpRate,DownRate,ping,packetLoss
attr IT.Speedtest disable 1
attr IT.Speedtest event-on-change-reading .*
attr IT.Speedtest event-on-update-reading UpRate,DownRate,ping,packetLoss
attr IT.Speedtest group Speedtest
attr IT.Speedtest ookla 1
attr IT.Speedtest path /opt/fhem
attr IT.Speedtest stateFormat state<br>\
Last Run: LastRun<br>\
Down-Rate: DownRate kbit/s (DownMBs MB/s)<br>\
Up-Rate: UpRate kbit/s (UpMBs MB/s)<br>\
Ping: ping ms<br>
attr IT.Speedtest userReadings UpRate {sprintf "%.0f", (ReadingsVal($NAME,"upload",0))*1024},\
DownRate {sprintf "%.0f", (ReadingsVal($NAME,"download",0))*1024},\
UpMBs {sprintf "%.2f", (ReadingsVal($NAME,"upload",0)/8)},\
DownMBs {sprintf "%.2f", (ReadingsVal($NAME,"download",0)/8)},\
LastRun {FmtDateTime(time())}
#   FUUID      63c3a9f0-f33f-cc91-4d22-ce07fa4b57e3fb23
#   FVERSION   32_speedtest.pm:0.238670/2021-03-01
#   INTERVAL   3600
#   LOCAL      0
#   NAME       IT.Speedtest
#   NR         70
#   STATE      ok<br>
#Last Run: 2023-01-21 16:02:12<br>
#Down-Rate: 160461 kbit/s (19.59 MB/s)<br>
#Up-Rate: 35533 kbit/s (4.34 MB/s)<br>
#Ping: 5.888 ms<br>
#   TYPE       speedtest
#   eventCount 10
#   Helper:
#     DBLOG:
#       DownRate:
#         DBLogging:
#           TIME       1674313332.65336
#           VALUE      160461
#       UpRate:
#         DBLogging:
#           TIME       1674313332.65336
#           VALUE      35533
#       packetLoss:
#         DBLogging:
#           TIME       1674313332.65336
#           VALUE      0
#       ping:
#         DBLogging:
#           TIME       1674313332.65336
#           VALUE      5.888
#   READINGS:
#     2023-01-21 16:02:12   DownMBs         19.59
#     2023-01-21 16:02:12   DownRate        160461
#     2023-01-21 16:02:12   LastRun         2023-01-21 16:02:12
#     2023-01-21 16:02:12   UpMBs           4.34
#     2023-01-21 16:02:12   UpRate          35533
#     2023-01-21 16:02:12   download        156.7
#     2023-01-21 16:02:12   id              31470
#     2023-01-21 16:02:12   location        Munich
#     2023-01-21 16:02:12   name            Deutsche Telekom
#     2023-01-21 16:02:12   packetLoss      0
#     2023-01-21 16:02:12   ping            5.888
#     2023-01-21 16:02:12   state           ok
#     2023-01-21 16:02:12   upload          34.7
#   helper:
#
setstate IT.Speedtest ok<br>\
Last Run: 2023-01-21 16:02:12<br>\
Down-Rate: 160461 kbit/s (19.59 MB/s)<br>\
Up-Rate: 35533 kbit/s (4.34 MB/s)<br>\
Ping: 5.888 ms<br>
setstate IT.Speedtest 2023-01-21 16:02:12 DownMBs 19.59
setstate IT.Speedtest 2023-01-21 16:02:12 DownRate 160461
setstate IT.Speedtest 2023-01-21 16:02:12 LastRun 2023-01-21 16:02:12
setstate IT.Speedtest 2023-01-21 16:02:12 UpMBs 4.34
setstate IT.Speedtest 2023-01-21 16:02:12 UpRate 35533
setstate IT.Speedtest 2023-01-21 16:02:12 download 156.7
setstate IT.Speedtest 2023-01-21 16:02:12 id 31470
setstate IT.Speedtest 2023-01-21 16:02:12 location Munich
setstate IT.Speedtest 2023-01-21 16:02:12 name Deutsche Telekom
setstate IT.Speedtest 2023-01-21 16:02:12 packetLoss 0
setstate IT.Speedtest 2023-01-21 16:02:12 ping 5.888
setstate IT.Speedtest 2023-01-21 16:02:12 state ok
setstate IT.Speedtest 2023-01-21 16:02:12 upload 34.7

> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Otto123

schau Dir mal die Rechte an - bei mir waren im '"offiziellen" Docker FHEM die Rechte auf speedtest entzogen :(
In meinem "eigenen" Container läuft das auch nach einem reboot einwandfrei.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz