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
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
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
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
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
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
ich habe diesen thread eben erst zufällig gesehen.
bin gerade unentschlossen ob patch oder lieber doku zu ssh im kommando :).
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
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
mein speedtest liegt einfach im HomeDir von vom User (root)
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
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)
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
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 ;)