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
| 1 | attr global showInternalValues 1 |
Nun werden auch die versteckten Reading angezeigt.

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:
| 1 | define 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:
| 1 | define Empfangen dummy |
| 1 | define 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“);} |

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
| 1 | attr 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.

Die Readings lassen sich nun in ein LogFile schreiben:
| 1 | define 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:


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:
| 1 | attr 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:
| 1 | attr Empfangen icon control_arrow_down@green |
bzw.
| 1 | attr Gesendet icon control_arrow_up@red |

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