Fritz!Box per UPnP monitoren

Die Fritz!Box bietet von Haus aus eine UPnP Schnittstelle, dierüber können Status-Informationen und einige technische Werte abgefragt werden.

Prinzipiell funktioniert das ganze als Webservice per SOAP.

Abfragbare Werte

Welche Werte abfragbar sind, findet man in den WDSL-Files. Diese XML-Dateien beschreiben, welche Werte und Methoden der Webservice zur Verfügung stellt. Für die Fritz!Box gibt es einige dieser Dateien, diese sind:

Abfragemöglichkeiten

Um nun diese Werte abfragen zu können, gibt es diverse Möglichkeiten:

  1. Die Fritz!DSL Software
  2. Intel Tools for UPnP Technologies
  3. Eigener Request gegen die Fritz!Box

Wir wollen uns nun hier die Möglichkeit, die Werte per eigenem Request zuzugreifen genauer anschauen.

Werte per Script abfragen

Das Prinzip, Werte von der Fritz!Box per UPnP abzufragen, beruht auf einem Script von http://www.anetzb.de/upnp2mrtg/ hier wird per Shell-Script und dem Programm netcat auf den Web-Service der Fritz!Box zugegriffen.

Die Anpassung ist, das die Werte nicht an MRTG übergeben, sondern in ein File gespeichert werden. Dabei könnte das File-Fomat z.B. CSV sein.

Beispiel Shell-Script (1:1 aus upnp2mrtg, bis auf die letzten Zeilen)

#!/bin/sh

. . .

# get data in/out

b1=„TotalBytesReceived:`ws_operation GetAddonInfos NewTotalBytesReceived`“

b2=„TotalBytesSent:`ws_operation GetAddonInfos NewTotalBytesSent`“

b3=„DownstreamMaxBitRate:`ws_operation GetCommonLinkProperties NewLayer1DownstreamMaxBitRate`“

b4=„UpstreamMaxBitRate:`ws_operation GetCommonLinkProperties NewLayer1UpstreamMaxBitRate`“

b5=„ByteSendRate:`ws_operation GetAddonInfos NewByteSendRate`“

b6=„ByteReceiveRate:`ws_operation GetAddonInfos NewByteReceiveRate`“

# output

printf “%s\n%s\n%s\n%s\n%s\n%s\nUpTime:%.2d Tagen %.2d Stunden %.2d Minuten %.2d Sekunden\n“ \

„${b1:-UNKNOWN}“ „${b2:-UNKNOWN}“ „${b3:-UNKNOWN}“ „${b4:-UNKNOWN}“ „${b5:-UNKNOWN}“ „${b6:-UNKNOWN}“ „${h% *}“ „${h#* }“ „${m#* }“ „${s#* }“ ;;

Dieses Script kann dann z.B. alle 10 Minuten durch einen Cron-Job aufgerufen werden.

Beispiel Cron-Job:

*/10 * * * root /pfad/zum/script.sh > /pfad/zu/fritzbox.csv

Visualisierungsmöglichkeiten

Aktuellen Wert ausgeben

Das erzeugte File kann z.B. mit PHP, Perl oder ASP ausgelesen und die Werte in Variablen gespeichert werden. Die Ausgabe der Variablen kann dann in einer beliebigen Web-Seite erfolgen.

Beispiel PHP-Fuktion:

function getFritzBoxValue($id) {

$value = NULL;

$handle = fopen(“/pfad/zum/fritzbox.cvs“, „r“) or die(„Datei fritzbox.cvs konnte nicht gefunden werden!“);

while ( ($data = fgetcsv ($handle, 1000, “,“)) !== FALSE ) {

$num = count ($data);

$row++;

if ($data[0] == $id) {

$value = $data[1];

}

}

fclose($handle);

return $value;

}

Werte in Datenbank speichern

Die erstellte Date mit den Werten, kann z.B. über ein Script geparst werden und in eine Datenbank (z.B. mySQL) mit Time-Stamp gespeichert werden. Dadurch hätte man dann die Möglichkeit, die Werte im zeitlichen Verlauf z.B. in einem Diagramm darzustellen.

Verlaufs-Diagramme erstellen

Hierzu eignet sich z.B. JpGrapheine PHP Biliothek, die sehr schöne Diagramme generieren kann.

Ein Beispiel, wie so etwas aussehen kann, gibt es z.B. beim Forum-User cni auf seiner Homepage

Eine andere Möglichkeit wäre auch RRDTool. Diese Möglichkeit verwendet z.B. auch MRTG, siehe hier: http://www.wehavemorefun.de/fritzbox/MRTG

 
gateways/avm/howtos/mods/upnp.txt · Zuletzt geändert: 2008/12/11 21:23 von cni
 
Impressum
Recent changes RSS feed Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki