Internetgeschwindigkeit überwachen

Begonnen von wkarl, 21 Juni 2013, 10:30:30

Vorheriges Thema - Nächstes Thema

wkarl

Hallo,

nachdem meine Mädchen sich über ein langsames Internet beschwert haben, bin ich auf die Suche gegangen wie der Durchsatz überwacht werden kann. Meine Lösung folgend kurz beschrieben.

- Basis ist das Tool speedtest-cli > http://binarynature.blogspot.de/2013/03/measure-internet-connection-speed-from-linux-command-line.html
- dazu habe ich folgendes script geschrieben
#!/usr/bin/perl
use strict;
use warnings;
use autodie;
use DateTime;

my $is = "InternetSpeedTest";

my $dt = DateTime->now(time_zone=>"local");
my $y = $dt->year;
$dt =~ s/T/_/g;

open (FILE, ">> /opt/fhem/MyFHEM/Toolz/InternetSpeedTest/InternetSpeedTest-$y.log") || die;

my $speedstr = `/opt/fhem/MyFHEM/Toolz/InternetSpeedTest/speedtest-cli --simple`;
my @speedarr = split(/\n/, $speedstr);

print FILE "$dt $is $speedarr[0]\n";
print FILE "$dt $is $speedarr[1]\n";
print FILE "$dt $is $speedarr[2]\n";

close (FILE);

- das script wird über cron stündlich ausgeführt
- die Auswertung der log-Datei übernimmt folgender fhem-code
define FileLog_CheckInternetSpeed FileLog /opt/fhem/MyFHEM/Toolz/InternetSpeedTest/InternetSpeedTest-%Y.log .*Download:.*
attr FileLog_CheckInternetSpeed group Internet
attr FileLog_CheckInternetSpeed logtype text
attr FileLog_CheckInternetSpeed room SystemLog

- der plot dazu sieht dann so aus

(siehe Anhang / see attachement)


Viel Spass dabei, falls der ein oder andere seinen Provider und dessen Vertragsdaten überprüfen möchte.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Puschel74

Hallo,

schreit das nicht förmlich nach einem Wiki-Eintrag?

Grüße

P.S.: Ich werd das heut abend mal auf unserem RasPi ausprobieren - Danke schonmal dafür.
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.

justme1968

klasse idee!

ich hab mir mal erlaubt die idee direkt zu klauen ein 'richtiges' fhem modul draus zu machen. damit kann man:
  • das ganze auch per dblog loggen (das war der eigentliche grund)
  • in einem notify auf werte reagieren die zu klein sind
  • die aktuellen werte per stateFormat direkt in der raum übersicht oder einem floorplan anzeigen
zur zeit ist der pfad zu speedtest-cli im code fest vorgegeben und muss von hand geändert werden. falls es noch mehr interessenten gibt würde ich das konfigurierbar machen.

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

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

Puschel74

Hallo,

das wird ja immer besser - danke.

Grüße

Edith:

Zitatdas ganze auch per dblog loggen (das war der eigentliche grund)

Ich hab mir die 32_speedtest.pm noch nicht durchgeschaut aber d.h. es werden auch Logfile-Events generiert die ich per FHEM2FHEM LOG:.* in mein dblog bekomme?
Sorry für die Frage aber ich bin noch meinen Rollo-Schnippsel am sunset/sunrise-tauglich machen und hab nur mal kurz im Forum vorbei geschaut was es neues gibt.

Edith2: Ich hab die 32_speedtest.pm jetzt mal auf meinen RasPi installiert und auch angepasst (die Pfadangabe hab ich gefunden). Eine Anleitung wie man Speedtest auf seinem RasPi installieren kann reiche ich nach wenn gewünscht.
Kann man den Test (kann man sicher nur wie) per at auch aufrufen und die Werte in einen Dummy schreiben lassen?
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.

wkarl

Hallo Andre,

freut mich mächtig, dass meine Lösung so gut ankommt.

Eines muss ich noch ergänzen - zuerst hatt ich die Lösung in fhem am laufen (Aufruf von speedtest-cli, etc). Dabei habe ich im fhem.log (tail ...) festgestellt, dass fhem während des Testes des Internets stillsteht. Da dies doch ein paar Sekunden sind, habe ich den Test 'ausgelagert' und werte in fhem nur die Daten aus.

Mag ein Missverständnis meinerseits sein. Ich bin noch nicht so lange dabei.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Puschel74

Hallo,

wie hast du den Aufruf aus FHEM heraus getätigt?

Dank Rudi frage ich meine I2C-Sensoren am RasPi so ab

Zitatmy ($befehl) = "sudo i2cget -y 1 ".$sensor." 0x00 w &";

Das & am Ende startet die Abfrage wohl in einem eigenen "Task" der FHEM nicht blockiert.
Bitte nicht schlagen wenn ich daneben liege.

Grüße

Edith: Ich hab mir grad die 32_Speedtest.pm durchgeschaut.
Wirklich nur geschaut (wie ein Ochs vorm Tor).
Mensch muss ich noch dazu lernen (zum Glück, sonst wärs ja fad ^^).
Ein Aufruf aus FHEM per at und die Werte dann in einen Dummy schreiben wäre nice ;-)
Ich stell mal die Installation für einen RasPi zusammen wenn das ok ist (nicht jeder kann Englisch und auch ich musste mich durch die Meldungen quälen ^^)
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.

wkarl

Hallo,

das mit dem '&' stimmt, aber dann kommst Du nicht an die Ausgabe von speedtest-cli. Zumindest fällt mir auf keine passende Lösung ein.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Puschel74

Hallo,

in meinem Script (Sub in der 99_myUtils.pm) bekomme ich den Rückgabewert den Sensors dann so:
my ($result) = `$befehl`;

Gesamt sieht die Abfrage des Sensors mit Rückgabe dann so aus:

my ($befehl) = "sudo i2cget -y 1 ".$sensor." 0x00 w &";
my ($result) = `$befehl`;


wobei $sensor durch den aufrufenden Sensor ersetzt wird - bei mir 0x48 / 0x49 / 0x4c für 3 I2C-Sensoren.

Grüße

Edith: Hier mal eine erste "Anleitung" für die Installation auf einem RasPi mit wheezy
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.

justme1968

also meine version verwendet BlockingCall und ruft speedtest-cli damit im hintergrund auf. fhem steht wärden der ausfürung nicht!

warum at und dummy?

du machst einfach eindefine speedtest speedtestund hast automatisch jede stunde die werte im device. es werden ganz normale readings und events generiert die du mit dblog oder filelog loggn kannst und die du ganz normal per notify weiterverarbeiten kannst. wenn die jede stunde nicht gefällt gibst du einfach das intervall mit an.

als zusätzlichen 2. paramter kannst du beim define auch den server angeben. wenn du den server weg lässt dann verwendet speedtest-cli automatisch den nächstgelegenen.

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

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

wkarl

Hallo,

Danke für den Tipp. Hab vor 15 Jahren das letzte Mal professionell programmiert, die letzten Jahre etwas JavaScript. Es fehlt einfach die Erfahrung und Übung.

Aber dafür gibt es ja dieses Forum und Leute denen es Spaß macht sich gegenseitig zu helfen und auszutauschen.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Puschel74

Hallo,

@andre

Zitatdefine speedtest speedtest

das ist natürlich genial (hast du das vorher schonmal geschrieben??).

Das ist natürlich perfekt - gleich ins pdf aufnehm.

Grüße

Edith1:
Zitatwenn du den server weg lässt dann verwendet speedtest-cli automatisch den nächstgelegenen.
Den geografisch nächtgelegenen nehm ich mal an.

Hier das überarbeitete File
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.

justme1968

ich gebe zu ich hatte nur geschrieben das es ein 'richtiges' fhem modul ist :)

gruss
  andre

edit: die komplette dokumentation fehlt auch noch. ich hab es nur schnell in einer halben stunde pause zusammengestückelt weil ich BlockingCall ausprobieren wollte.

edit2: wenn es wirklich interessenten gibt kann ich es zumindest in contrib einchecken. falls es noch mehr werden vielleicht auch ganz offiziell.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Puschel74

Hallo,

Zitatich gebe zu ich hatte nur geschrieben das es ein 'richtiges' fhem modul ist :)

Ich bin auch nur ein 'richtiger' FHEM-User :)

Zitatund die dokumentation fehlt auch noch. ich hab es nur schnell in einer halben stunde pause zusammengestückelt weil ich BlockingCall ausprobieren wollte.

Wenn du willst kann ich dir das pdf-File gerne als Word-Dokument schicken und du baust es aus - wenn dir das als Anfang genügt.

Grüße
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.

wkarl

Hallo,

wenn ich mich richtig erinnere, werden die geographisch am nächsten liegend ermittelt und dann angepingt. Der Server mit dem besten Ping wird dann zum Testen genommen.

ciao walter
FHEM 5.7 & TabletUI 2.2 auf Fedora22 Server auf NUC5i5RYK
CUL 868 > FAST EnergyCam
HMLAN > HomeMatic TCs & VDs, Bewegungsmelder, Schalter, Taster, Steckdosen

Puschel74

Hallo,

@andre

das $interval ist vermutlich die Abfragezeit.
Du hast aber noch eine if-Abfrage drinnen wenn $interval <10*60 ist wird $interval auf 10*60 gesetzt.
Ist soweit natürlich ok - wenn man das weiß ;-)
Ich hab aber ein 15*60 eingegeben und nach einem reload des Moduls steht in fhem immer noch 3600 (also jede Stunde)
Hast du da nochmal eine Abfrage drinnen (ich hab auf die schnelle keine gefunden) oder wo liegt schon wieder mein Denkfehler.

Grüße
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.