[patch] Erweiterung von speedtest um ssh/remote

Begonnen von MadMax-FHEM, 08 Januar 2022, 15:26:45

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Hallo André (justme1968),

seit ich mit meinem fhem auf Bullseye umgestiegen bin sind die Werte nicht mehr wirklich glaubwürdig.

Liegt aber nat. NICHT am Modul, auch ookla meldet auf der Console schon diese Werte (klar ;)  ).

Ob es nun an Bullseye liegt oder daran, dass es doch "nur" ein PI3B+ ist: keine Ahnung.
(es gibt aber neuerdings einige "Worker", die doch immer wieder mal in top gut auftauchen / hab im Internet auch schon so einiges gefunden, muss ich analysieren ABER: andere Baustelle)

Parallel habe ich einen PI4 4GB für diverse Dienste, wenn ich dort speedtest laufen lasse (selbes "Binary"), dann sind die Werte "plausibel" (also vergleichbar mit denen in einem Browser).

"Dummerweise" läuft auf dem PI4 kein fhem :-\

Ich würde aber gerne den Speedtest von fhem aus starten und das Modul nutzen :)

Dazu habe ich mal folgendes bei mir eingebaut:

in speedtest_Define die Attrliste erweitert

  $hash->{AttrList} = "checks-till-disable ".
                      "disable:0,1 ".
                      "ookla:1,0 ".
                      "path ".
                      "sshHost ".
                       $readingFnAttributes;



in speedtest_DoSpeedtest folgendes:

  my $ookla = AttrVal($name, "ookla", undef);
  my $sshHost = AttrVal($name, "sshHost", undef);

  my $cmd;
  if( $ookla ) {
    $cmd = AttrVal($name, "path", "/usr/local/bin" );
    $cmd .= "/speedtest --accept-license --accept-gdpr -f json";
    $cmd .= " -s $server" if( $server );

  } else {
    $cmd = AttrVal($name, "path", "/usr/local/speedtest-cli" );
    $cmd .= "/speedtest-cli --simple";
    $cmd .= " --server $server" if( $server );

  }
  if( $sshHost ) {
    $cmd = "ssh $sshHost \"$cmd\"";
}


Voraussetzung ist nat. ein passwortloser Zugang zum "remote Server" (wie halt bei anderen Modulen z.B. XiaomiBTLESens auch).

Ich habe dann das Attribut wie folgt gesetzt:


   sshHost    pi@192.168.1.125

(es sollte aber auch nur der Host mit entspr. ssh-conf gehen / wie eben bei XiaomiBTLESens auch / nutze ich aber nicht)

Wäre schön, wenn du das (oder abgewandelt) übernehmen würdest :)

Danke, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

#1
Hallo Joachim,

ich habe es bei mir OOTB ohne patch so gelöst:
speedtest.tgz heruntergeladen und in /root auf meinem openwrt Router ausgepackt.
ssh Zugang mit public key eingerichtet.
Dann in der definition
attr MySpeedtest ookla 1
attr MySpeedtest path ssh root@wrt1900 ./


Das Beispiel könnte man in die Doku mitaufnehmen - habe ich irgendwie irgendwo gefunden.

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

MadMax-FHEM

Zitat von: Otto123 am 08 Januar 2022, 16:09:13
Hallo Joachim,

ich habe es bei mir OOTB ohne patch so gelöst:
speedtest.tgz heruntergeladen und in /root auf meinem openwrt Router ausgepackt.
ssh Zugang mit public key eingerichtet.
Dann in der definition
attr MySpeedtest ookla 1
attr MySpeedtest path ssh root@wrt1900 ./


Das Beispiel könnte man in die Doku mitaufnehmen - habe ich irgendwie irgendwo gefunden.

Gruß Otto

Hallo Otto,

ja, hatte ich auch kurz überlegt aber mir dann doch den Code angeschaut und gesehen, dass nicht viel zu ändern ist ;)

Falls es nicht eingebaut wird, weiß ich ja jetzt, dass es so auch geht, danke!

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

und wo ich nochmal lese was ich so geschrieben habe, fällt mir auf: habs natürlich schnell und dreckig eingerichtet.
Muss ich noch ordentlich machen: fhem kann mit 'root'  :o  :'( auf den Router
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

MadMax-FHEM

#4
So nach einem update ist nat. meine Änderung (leider) wieder weg... :-\

@Otto: irgendwie krieg ich deinen "hack" nicht zum Fliegen...

Gut evtl. schaue ich mal (wieder) in den Code (muss/müsste ich ja eh, wenn ich wieder meinen "patch" einbaue)...
EDIT: hab's wieder eingebaut, sind ja nicht viele Zeilen ;) / Jetzt halt exclude from update :-\ 8)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Vorraussetzung ssh mit public key geht - Test in der FHEM Kommandozeile:
{qx(ssh root\@192.168.x.x echo Hello from the other side)}
Meine Definition, im Kommentar die "Setup" Routine für die andere Seite
defmod MySpeedtest speedtest 1800
attr MySpeedtest comment {system ('ssh root@192.168.x.x '.q('wget -qO speedtest.tgz https://install.speedtest.net/app/cli/ookla-speedtest-1.1.1-linux-armhf.tgz;;;;tar -zxvf speedtest.tgz speedtest;;;;./speedtest --accept-license --accept-gdpr -f json' &) ) }
attr MySpeedtest ookla 1
attr MySpeedtest path ssh root@192.168.x.x ./
attr MySpeedtest room Status
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

justme1968

ich habe diesen thread eben erst zufällig gesehen.

bin gerade unentschlossen ob patch oder lieber doku zu ssh im kommando :).
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

MadMax-FHEM

#7
Naja ssh ohne PW ist klar, das brauche ich ja auch mit meinem Patch ;)

ookla ist ja eingereichtet, mit meinem Patch funktioniert das ja auch :)

Aber nur mit dem Setzen eines/deines Attributes mit ssh... kommt eben ein Fehler im Log:


bash: .//speedtest: No such file or directory
bash: ./usr/local/bin/speedtest: No such file or directory


Hier mal mit verschiedenen Versuchen/Attributinhalten...

Aber nicht (mehr) so wichtig, habe ja zurückgepatcht und exclude_from_update...

Evtl. probiere ich später noch mal rum...

EDIT: allerdings wundert mich ein wenig, dass das mit einem solchen Attribut überhaupt geht/gehen soll. Weil im Code wird ja path-Attribut abgefragt und durch speedtest oder speedtest-cli ergänzt (je nachdem). Der ssh-Aufruf muss aber doch so lauten: ssh user@Rechner "/usr/bin/speedtest" / also nach ssh muss doch in Anführungszeichen? Das klappt doch mit folgendem Code nicht, oder?

    $cmd .= "/speedtest --accept-license --accept-gdpr -f json";

wenn in cmd bis dahin eben "nur" ssh user@Rechner steht...
Daher habe ich bei mir ja "um" $cmd die Anführungszeichen angefügt/anfügen müssen?

DANKE, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Zitat von: justme1968 am 27 Februar 2022, 19:41:19
ich habe diesen thread eben erst zufällig gesehen.

bin gerade unentschlossen ob patch oder lieber doku zu ssh im kommando :).

Wenn es tatsächlich tut ist es mir egal ;)

Danke, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

mein speedtest liegt einfach im HomeDir von vom User (root)
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

MadMax-FHEM

Zitat von: Otto123 am 27 Februar 2022, 19:54:54
mein speedtest liegt einfach im HomeDir von vom User (root)

Ja dachte ich mir schon, Pfad habe ich schon angepasst... ;)

Aber ich verstehe noch nicht wo denn die Anführungszeichen um den Befehl nach dem ssh kommen (sollen)? 8)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

tut es das?
{qx(ssh root\@192.168.x.x echo Hello from the other side)}
Siehst Du da Anführungszeichen? Bei mir klappt ssh meistens ohne (hängt vom code ab)
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

MadMax-FHEM

Hmm, ok.

Ich habe halt immer bei Suche nach ssh die Variante mit Anführungszeichen gefunden...

Allerdings: wie soll ich denn deinen Code "überprüfen"? Es wird doch einfach auf der anderen Seite (oder auch nicht ;)  ) etwas auf eine Shell (die ssh öffnet?) rausgeschrieben? Das sieht doch außer dem ssh-Aufruf/User niemand oder?

Aber wie ja geschrieben: ich hab jetzt meinen Code wieder eingebaut (sind ja nur wenige Zeilen) und exclude gesetzt... Aktuell habe ich wichtigere Baustellen...

Aber nat.: VIELEN DANK!! :)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Naja wenn der ssh Aufruf nicht geht: sieht man nichst im Browser und es gibt eine Fehlermeldung im Log.
Du kannst ja anstatt Echo .. einfach ls -lha nehmen ;)
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