home
erste Version am 01.12.2013
letzte Änderung am 31.10.2014

Bandbreitenmonitor v2.01


Ein kleines Programm zur Anzeige der Bandbreiten-Nutzung von eth0 und FritzBox sowie [optional] der Erreichbarkeit von Hosts und DLAN-Adaptern.




Lange haben ein paar liebgewonnene Tools meinen Wechsel von Windows nach Linux verhindert - weil es für Linux nix entsprechendes gab.
Eins dieser unverzichtbaren Tools war das "Fritz!DSL Startcenter", wurde von der Firma AVM nur für Windows angeboten und hat die Auslastung meiner damals kümmerlichen 1-MBit-DSL-Leitung angezeigt.
Der Leidensdruck mit Windows wurde aber immer größer und so habe ich mir zunächst ein paar Script-Sprachen angesehen, mich bald für Python entschieden und als erstes Projekt den Bandbreitenmonitor v1.0 in wenigen Stunden zusammengebastelt. Diese Version hat genau das für Linux nachgebildet, was ich unter Windows [genutzt] hatte. Es hat noch tkinter als GUI-Toolkit genutzt. Mittlerweile habe ich wxWidgets schätzen gelernt und den Bandbreitenmonitor v2.0 mit zusätzlichen Funktionen damit komplett neu erstellt.
Siehe dazu: http://www.ip-phone-forum.de/showthread.php?t=246673

Die Version 2.0 zeigt neben der Auslastung des Fritzbox-WANs optional auch die Auslastung von eth0, die Erreichbarkeit von Hosts und von Devolo- oder AVM-Powerline-Adaptern.

Bei der Version 2.01 ist für übereinander angezeigte Kurven hinzugekommen, dass die kleinere Kurve in einer dritten Farbe dargestellt wird, wenn bzw. wo sie von der höheren Kurve überdeckt wird.


Sofern die Fritzbox mit den Default-Werten betrieben wird und wxWidgets (bzw. wxPython) in der Version 2.8 bereits installiert ist, kann das Programm direkt gestartet werden und sieht dann etwa folgendermaßen aus:

Default-Einstellungen


Bei Bedarf kann die IP der Fritzbox im Script angepasst werden.
    FRITZBOX_IP="192.168.178.1"
    FRITZBOX_PORT=49000

Meine Fritzbox läuft derzeit noch mit FRITZ!OS 06.03.
In FRITZ!OS 06.20 wurden offenbar Änderungen am upnp-API vorgenommen.
Gemäß diesem Post ist dazu die Zeichenfolge "upnp/control/" durch "igdupnp/control/" zu ersetzen.
In bwm2.py sind also in der Zeile 199 die drei Zeichen "igd" vor dem "upnp/control/" einzufügen, wenn die Fritzbox-Firmware >=6.20 ist.
Sobald ich meine Fritzbox auf diese Version aktualisiert habe, wird das Script automatisch auch mit Firmware-Versionen >=6.20 umgehen können.


Soll auch der Ping-Monitor genutzt werden, sind die zu pingenden Hosts an die eigene Umgebung anzupassen.
    IPS_TO_PING=["fb", "switch", "c2q", "t430", "i5", "rp1", "rp2", "bb",
                 "buffalo", "tobi", "t22", "mutti", "Wii", "tablet"]

Für den DLAN-Monitor wird ein Tool von Devolo benötigt (das übrigens auch problemlos für die Adapter von AVM funktioniert).
Siehe: http://www.devolo.com/downloads/software/software-dlan-linux-v6-1.tar.gz
Nach dem make gemäß README ist dlanlist noch mit
    setcap cap_net_raw+epi
aufzumachen und der Pfad zum Programm im Script einzustellen
    DLANLIST="/home/dede/bin/dlanlist"
Weiterhin sind die MAC-Adressen der DLAN-Adapter im Script einzustellen
    self.macs=[ ["C0:25:06:D0:36:18", 1],   # (B) Buero
              ["BC:05:43:0B:31:59", 2],   # (M) Ferkelchen
              ["C0:25:06:D0:36:17", 4],   # (T) Tobi
              ["24:65:11:C4:01:CB", 8],   # (W) Wohnzimmer WLAN
              ["BC:05:43:0B:31:5A",16]]   # (i) Einspeisung
und den Adaptern ein Kurzname aus einem Buchstaben zuzuweisen.
    self.kurznamen=["B", "M", "T", "W", "i"]
Die Anzahl und Position der Kurznamen muß zu den MAC-Adressen passen.

Um einen Sound abspielen lassen zu können, wenn die Download-Bandbreite gegen Null geht (also üblicherweise ein Download fertig ist), ist in der Zeile
    ALARM_CMD="env AUDIODRIVER=alsa play /home/dede/daten/ding.wav"
der Aufruf zum Abspielen eines Audio-Files anzugeben.

Wird in der Zeile
    FRAME_NO_TASKBAR=False
statt False ein True eingestellt, erscheint der Bandbreitenmonitor nicht mehr in der Taskbar und kann dann mit dem Programmaufruf
    wmctrl -a "Bandbreitenmonitor v2.0"
in den Vordergrund geholt werden.


Mittlerweile habe ich meinen DSL-Anschluß durch Glasfaser ersetzt.
Aus der Fritzbox 7270 wurde eine Fritzbox 7390, die jetzt als Router statt als DSL-Modem läuft.
Somit meldet sie keine maximalen Übertragungsraten mehr, was in dieser Version des Scripts aber abgefangen und korrekt verarbeitet wird.


Der Bandbreitenmonitor mit Ping-Monitor und DLAN-Adapter-Monitor:
variante 1


Der Bandbreitenmonitor mit getrennter Anzeige für Up und Down:
variante 2


Der Bandbreitenmonitor kann auch eth0 anzeigen:
variante 3


Der Einstellungs-Dialog:
der Einstellungs-Dialog


Das Python-Script: bwm2.py