Kategorien
Fhem

Fritzbox mit fhem auslesen

Online-Zähler (Traffic) der FritzBox auslesen

Das Modul FritzBox stellt neben den bekannten Readings (Anrufe, ….) auch Readings zur Verfügung die in der Standartkonfiguration von FHEM nicht direkt angezeigt werden. Zu diesen versteckten Readings zählt auch der Online-Zähler. In diesem Beitrag erkläre ich euch wie ihr diese Readings sichtbar macht und in FHEM den Tagesverbrauch und den Gesamtverbrauch plottet.SALEAVM FRITZ!Box 7580 WLAN AC + N Router…AVM – Zubehör289,00 EUR – 46,92 EUR ab 242,08 EUR SALEAVM FRITZ!Box 7490 WLAN AC + N Router (VDSL/ADSL, 1.300…AVM – Zubehör219,00 EUR – 59,01 EUR ab 159,99 EUR SALEAVM FRITZ!Box 7590 High-End WLAN AC + N Router (VDSL-/ADSL,…AVM – Zubehör249,00 EUR – 14,11 EUR ab 234,89 EUR

Letzte Aktualisierung am 8.03.2019 / Affiliate Links / Bilder von der Amazon Product Advertising API

Einrichtung in FHEM

Um in FHEM auch die versteckten Readings anzeigen zu lassen, bedarf es ein globales Attribut

1attr global showInternalValues 1

Nun werden auch die versteckten Reading angezeigt.

Traffic_reading

Wie man erkennt, gibt es vier Readings die etwas mit dem Traffic zu tun haben. Es gibt je zwei für die Empfangenen und für die Gesendeten Daten. Diese sind noch jeweils in HIGH und LOW unterteilt. Den Gesamtwert erhält man durch folgende Gleichung:

LOW + HIGH * 2^32

Die Readings geben jeweils die Werte für den aktuellen Tag wieder. Den Gesamtverbrauch muss man innerhalb von FHEM selber ermitteln. Mehr dazu weiter unten.

Um mit diesen Werten arbeiten zu können, ist es am einfachsten, diese mit Hilfe von einem at-Befehl an einen dummy zu schicken. Dazu definieren wir uns zunächst einen at-Erweiterungsmodul:

1define atTraffic at +*00:01:00 xx

Als auszuführender Befehl geben wir erstmal den Platzhalter „xx“ an. Später im Editor fügen wir dann den endgültigen Befehl ein. Als Zeitangabe habe ich 1 Minute gewählt. Man sollte jedoch darauf achten, dass es hier nichts bringt, den Befehl alle 5 Sekunden auszuführen, obwohl das Modul FritzBox nur jede Minute aktualisiert wird.

Anschließend noch je einen Dummy für Empfangen und Gesendet:

1define Empfangen dummy
1define Gesendet dummy

Nun wird es Zeit den eigentlichen Befehl von atTraffic zu definieren. Dazu öffnen wir den DEF-Editor von atTraffic und fügen folgenden Befehl ein:

1234567+*00:01:00 {my $d= ((ReadingsVal(„FritzBox“,“.box_TodayBytesReceivedLow“,0) / (1000*1000) ) / 1000 + ( ReadingsVal(„FritzBox“,“.box_TodayBytesReceivedHigh“,0) * 4294967296 / (1000*1000) ) / 1000);fhem(„setreading Empfangen Empfangen $d“); my $e= ((ReadingsVal(„FritzBox“,“.box_TodayBytesSentLow“,0) / (1000*1000) ) / 1000 + ( ReadingsVal(„FritzBox“,“.box_TodayBytesSentHigh“,0) * 4294967296 / (1000*1000) ) / 1000);fhem(„setreading Gesendet Gesendet $e“);}
FHEM Traffic Fritzbox

Da die Readings die Werte in Bytes ausgeben, nehme ich noch einige mathematische Spielereien vor um die Werte in GigaByte zu erhalten. Einmal das Umwandeln in MB (geteilt durch 1000*1000) und anschließend noch das Umrechnen in GigaByte (geteilt durch 1000).

Die eingetragene Definition erstellt die Variablen „d“ und „e“ und setzt das entsprechende dummy.

Die Dummys Gesendet und Empfangen erhalten nun jede Minute einen aktuellen Wert. Den gesamten Traffic erhalten wir nun durch ein userReading, welches wir wie folgt definieren

1attr Gesendet userReadings Gesendet_ges monotonic { ReadingsVal(„Gesendet“,“Gesendet“,0)}

Das gleiche entsprechend für den Empfangen-Dummy. Der Zusatz monotonic bewirkt, dass das Reading „Gesendet“ (der tägliche Traffic) dem userReading Gesendet_ges dazu addiert wird. Sollte sich also das Reading „Gesendet“ beim Tageswechsel wieder auf 0 setzen, fängt „Gesendet_ges“ nicht auch bei 0 an, sondern zählt weiter hoch.

FHEM_FritzBox_Traffic_Daten

Die Readings lassen sich nun in ein LogFile schreiben:

1define FileLog_Traffic_Gesendet FileLog ./log/Traffic_Gesendet-%Y-%m.log Gesendet

Wichtig ist es, darauf zu achten, Gesendet und Empfangen jeweils in ein getrenntes LogFile zu schreiben, da wir zwei getrennte Plots erstellen wollen.

Über den Plot-Editor erstellen wir uns nun den Plot:

create SVG Traffic
SVG Traffic

Wir erhalten nun eine grafische Darstellung des Online-Zählers der FritzBox. Der Vorteil gegenüber dem direkten Zugriff über die FritzBox ist der, dass man den Verbrauch auch über einen längeren Zeitraum verfolgen kann. Der Online-Zähler der FritzBox zeigt nur den Verbrauch vom aktuellen und letzten Monat an.

Zum Schluss kann man noch ein paar optischen Anpassungen vornehmen. Zu einem das stateFormat:

1attr Empfangen stateFormat {sprintf(„%.2f GB – %.2f GB“,ReadingsVal(„Empfangen“,“Empfangen“,0),ReadingsVal(„Empfangen“,“Empfangen_ges“,0))}

Für Gesendet entsprechend anpassen.

Und das Hinzufügen eines Symbols:

1attr Empfangen icon control_arrow_down@green

bzw.

1attr Gesendet icon control_arrow_up@red
Traffic FritzBox Plot

Jetzt einfach nur noch warten und sich wundern wie viel man so in 10 Jahren aus dem Internet herunterlädt 😉

Beitrags-Navigation