Fritz!Box UPNP
Natürlich arbeite ich auch in meinem Home-Office mit Skype for Business. Allerdings ist ein DSL-Anschluss natürlich nicht mit einem Firmenanschluss zu vergleichen. Zum einen ist die Bandbreite niedriger und damit auch die Latenzzeit höher. Aber natürlich gibt es noch andere Dienste wie. z.B. ein NAS, welches sich mit OneDrive synchronisiert und Familienmitglieder, die "mitsurfen". Da wäre es schon mal interessant zu sehen, welche Auslastung im Moment die WAN-Leitung hat.
Fritz!Box Traffic
Die Anforderung hatten wohl schon mehrere Personen und Sebastian Weber hat eine kleine Windows Applikation als auch ein Gadget für den Desktop zur Anzeige der aktuellen Auslastung.
Die Anzeige wird ca. alle 1,5 Sekunden aktualisiert und gibt einen netten Überblick über den aktuellen Durchsatz.
- "Fritz!Box Traffic" Sidebar Gadget für Vista/Windows
7/8/8.1/10.
http://www.bawe.eu/cms/Projekte/Fritz!Box%20Traffic.html
Inside
Nun will ich vielleicht nicht immer ein Tray-Programm auf meinem Desktop laufen lassen. Wie wäre eine LED oder andere Anzeige, die diese Daten ermittelt und visualisiert? Also habe ich geschaut, was die App im Hintergrund gemacht und war nicht wirklich erstaunt, dass Sie die gleichen Wege nutzt, die ich auf PRTG:Fritzbox und PS SOAP beschrieben habe. Technisch wird ein HTTP POST auf den Port 49000 der Fritz!Box gesendet, die dann die Daten preis gibt.
Das ganze erfolgt unverschlüsselt und ohne Authentifizierung, wie ein e Auswertung zeigt. (Ich habe den Request mit dem "100 Continue") zusammengefasst. Zuerst der "Post" an die Box mit der XML-Struktur:
POST /igdupnp/control/WANCommonIFC1 HTTP/1.1 SOAPACTION: urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1#GetAdd-onInfos Content-Type: text/xml; charset="utf-8" User-Agent: AVM UPnP/1.0 Client 1.0 Host: fritz.box:49000 Content-Length: 287 <?xml version="1.0"?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body><u:GetAdd-onInfos xmlns:u="urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"></u:GetAdd-onInfos> </s:Body> </s:Envelope>
Die Antwort ist dann ein 200 OK mit einer XML-Struktur, die ich zur Lesbarkeit eingerückt habe:
HTTP/1.1 200 OK DATE: Thu, 22 Dec 2016 15:45:39 GMT SERVER: FRITZ!Box Fon WLAN 7390 UPnP/1.0 AVM FRITZ!Box Fon WLAN 7390 84.06.51 CONNECTION: keep-alive CONTENT-LENGTH: 1004 CONTENT-TYPE: text/xml; charset="utf-8" EXT: <?xml version="1.0" encoding="utf-8"?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:GetAdd-onInfosResponse xmlns:u="urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"> <NewByteSendRate>54031</NewByteSendRate> <NewByteReceiveRate>2019</NewByteReceiveRate> <NewPacketSendRate>0</NewPacketSendRate> <NewPacketReceiveRate>0</NewPacketReceiveRate> <NewTotalBytesSent>4587250342</NewTotalBytesSent> <NewTotalBytesReceived>6135333710</NewTotalBytesReceived> <NewAutoDisconnectTime>0</NewAutoDisconnectTime> <NewIdleDisconnectTime>1</NewIdleDisconnectTime> <NewDNSServer1>217.237.150.115</NewDNSServer1> <NewDNSServer2>217.237.151.205</NewDNSServer2> <NewVoipDNSServer1>217.237.150.115</NewVoipDNSServer1> <NewVoipDNSServer2>217.237.151.205</NewVoipDNSServer2> <NewUpnpControlEnabled>0</NewUpnpControlEnabled> <NewRoutedBridgedModeBoth>1</NewRoutedBridgedModeBoth> </u:GetAdd-onInfosResponse> </s:Body> </s:Envelope>
- Internet Gateway Device Protocol
https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol - INTERNET GATEWAY DEVICE (IGD) V 2.0
https://openconnectivity.org/developer/specifications/upnp-resources/upnp/internet-gateway-device-igd-v-2-0/ - Home Assistant - UPnP
https://www.home-assistant.io/integrations/upnp/
Test in PowerShell
So ein einfacher HTTP-Post kann ich mit PowerShell quasi in Minuten zusammenbauen:
$requestxml = ' <?xml version="1.0"?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:GetAdd-onInfos xmlns:u="urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"></u:GetAdd-onInfos> </s:Body> </s:Envelope> ' $headers = @{} $headers.add('SOAPACTION','urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1#GetAdd-onInfos') $headers.add('User-Agent','AVM UPnP/1.0 Client 1.0') $headers.add('Content-Type','text/xml; charset=utf-8') #([System.Text.Encoding]::UTF8.GetBytes($requestxml)) Invoke-RestMethod ` -Method POST ` -Uri 'http://fritz.box:49000/igdupnp/control/WANCommonIFC1' ` -Body $requestxml ` -Headers $headers
Damit ist es natürlich sehr einfach, diese Daten auch in ein Monitoring zu übernehmen. Für die Überwachung mit PRTG habe ich it schon länger einen "besseren Sensor geschrieben, der viel mehr Daten erfasst:
Fritz-Status mit ESP8266
Interessanter finde ich aber den Status einfach mit einem IoT-Device zu lesen und anzuzeigen. Die Fritz!Box hat ja kein Display o.ä. die den aktuellen Durchsatz anzeigt. Ich habe mir daher überlegt, ob ich nicht mit einem ESP8266 im WLAN einfach die UPNP-Funktion der Fritz!Box nutze um dann die Daten abzufragen und zu visualisieren.
Das könnte eine RGB-LED sein aber viel interessanter fänd ich die Anzeige des aktuellen Durchsatzes auf einem kleinen Display. Entsprechende Displays mit I2C-Anschluss, die man direkt betreiben kann, gibt es schon für kleines Geld. Damit hätte ich dann zumindest im Bereich des WLANs eine akkurate Anzeige der aktuellen Auslastung.
Wie so oft hat man erst mal eine Idee und leistet ein paar Vorabreiten. Da sie hier noch keinen Code finden ist einfach der Tatsache geschuldet, dass ich noch nicht fertig bin
- ESP8266
- ESP8266:Boards
- M5Stack
- Mini-Mac statt Grußkarte
https://www.heise.de/make/artikel/Arduino-Projekt-Mini-Mac-statt-Grusskarte-4045740.html
Beschreibung eines anderen Projekts, welches so eine Mini-Display allerdings an einen Arduino anschließt.
ESP8266 mit Display für andere Dinge
Wenn ich nun schon mal einen ESP8266 mit Display verbaut habe, kann man damit natürlich auch viele andere Dinge tun. Der ESP könnte auch andere Webseite "abfragen" und die Latenzzeit melden. Mit einer festen IP-Adresse könnte eine Software auch Meldungen an den ESP8266 senden. Allerdings muss man hier schon genau die Kosten und das "Styling" im Blick behalten. Manchmal ist ein abgelegtes Smartphone mit Display nicht mehr viel teurer und sowohl vom Styling als auch von der Bildqualität natürlich jeder Bastellösung überlegen.
Weitere Links
- PRTG:Fritzbox
- PS SOAP
- Fritz!App WLAN App
- Fritz!Box Monitoring
- Get-FritzMACTable
- Fritz!Box Monitoring
- "Fritz!Box Traffic" Sidebar Gadget für Vista/Windows
7/8/8.1/10.
http://www.bawe.eu/cms/Projekte/Fritz!Box%20Traffic.html - FRITZBOX
https://wiki.fhem.de/wiki/FRITZBOX