Nachdem ich nun schon mehrfach gefragt wurde, mache ich hier nun einmal mein kurzes Tutorial für eine Fritzbox Status & Up/Downloadanzeige, wie ich sie selbst verwende:
Ich gehe hier das ganze von oben nach unten durch.
Zuerst braucht ihr den UPNP-Adapter. Ist dieser installiert und die Instanz läuft, muss in der Fritzbox UPNP aktiviert werden (Bei mir unter Heimnetz - Netzwerk - Netzwerkeinstellungen). Dann sollte nach einiger Zeit eure Fritzbox in den Objekten unter upnp.0 auftauchen (bei mir eine Fritz!Box 7560).
Der hier im Tutorial verwendete Code ist natürlich auf meine Fritzbox zugeschnitten. Sollte eure FritzBox anders heißen, müsst ihr das natürlich selbst anpassen.
Im Folgenden Screenshot seht ihr bereits einen der Unterpunkte, mit dem wir Arbeiten werden.
Als nächstes braucht Ihr den "Script Engine"-Adapter, mit dem Ihr Blockly-Scripte und JavaScripte schreiben könnt.
Ist dieser Installiert bekommt ihr in der Menüleiste einen neuen Punkt "Scripte". Dort erstellt ihr euch ein neues JavaScript im Ordner "global" mit folgendem Code:
schedule("*/10 * * * * *", function () {
setState( "upnp.0.FRITZ!Box_7560_(UI).WANDevice.WANCommonInterfaceConfig.GetAddonInfos",'send');
setState( "upnp.0.FRITZ!Box_7560_(UI).WANDevice.WANCommonInterfaceConfig.GetCommonLinkProperties",'send');
setState( "upnp.0.FRITZ!Box_7560_(UI).WANDevice.WANConnectionDevice.WANIPConnection.GetExternalIPAddress",'send');
setState( "upnp.0.FRITZ!Box_7560_(UI).WANDevice.WANConnectionDevice.WANIPConnection.GetStatusInfo",'send');
});
Dieses Script fragt alle 10 Sekunden die angegebenen UPNP-Daten von der Fritz-Box ab.
Dann erstellt Ihr euch in den Objekten (ich hab dies unter Admin.0 gemacht) einen Datenpunkt "Onlinestatus" mit dem Typ "Logikwert"
Als nächstes macht ihr euch ein Blockly-Script, das wie Folgt aussieht:
Dort wo "UP" bzw "Down" steht wählt Ihr unter ObjektID folgendes Objekt:
Dort wo "Connected" bzw "Disconnected" steht wählt Ihr unter ObjektID folgendes Objekt:
Das war es auch schon mit der Vorbereitung. Jetzt geht es ins VIS-Admininterface.
Wir Beginnen mit dem Onlinestatus. Hierfür fügt Ihr ein Bool HTML-Widget ein.
Ich habe meins Folgendermaßen konfiguriert:
Da es ein HTML-Widget ist, kann man dies natürlich Coden wie man möchte.
Zur Funktion des Onlinestatus: Das zuletzt erstellte Blockly-Script schaut auf die Variable "NewPhysicalLinkStatus" der FritzBox, in dem der UPNP-Adapter alle 10 Sekunden abfragt, ob die FritzBox eine bestehende Internetverbindung hat. Sollte dieser Wert "Down" sein, schlatet das Script den hier genutzten Datenpunkt "Onlinestatus" auf "false" und das Widget zeigt Offline an. Bei bestehender Verbindung ("Up") ist der Datenpunkt "true" und und das Widget zeigt Online.
Als nächstes die Externe IP. Diese ist sehr einfach auszulesen. Man erstellt einfach ein String Widget mit folgenden Einstellungen:
Nun kommen wir zu dem interessantesten Part. Den Geschwindigkeiten und Datenvolumen. Auch diese werden vom ersten Script über UPNP alle 10 Sekunden aktualisiert. Sie müssen also nur noch ausgelesen und umgerechnet werden, da sie in UPNP als Bit bzw. Byte stehen.
Ich erkläre hier einmal die 3 Zeilen:
Zeile 1: now - ist die aktuelle Upload/Downloadrate, die auf eurer Internetverbindung genutzt wird.
Zeile 2: max - ist die maximale Bandbreite eures Anschlusses, den die Fritzbox automatisch per Speedtest bestimmt.
Zeile 3: today - ist der heute (seit der letzten 24h-Trennung) genutzte Traffic über eure Internetleitung.
Hierfür fügt ihr einfach 6 Number-Widgets ein (für jeden Wert eins).
Hier die 6 Screenshots der Widgets mit den dazugehörigen Settings:
<size size="150">Download now</size>
<size size="150">Upload now</size>
<size size="150">Download max</size>
<size size="150">Upload max</size>
<size size="150">Download today</size>
<size size="150">Upload today</size>
Unbedingt darauf achten die "Multiplikation" und die "Zeichen nach dem Komma" richtig einzustellen, sonst stimmen die Werte nicht und sehen komisch aus.
Und das war auch schon alles. Ich hoffe alles ist verständlich und ich freue mich, wenn ich euch hiermit etwas helfen konnte.
Wenn fragen sind, gerne eine PN oder hier unters Tutorial schreiben.
MFG
Scarala
PS.: Man kann das ganze natürlich noch weiterführen, die Daten in eine Datenbank loggen und dann grafisch auswerten. Will ich demnächst noch Umsetzen, wird dann in diesem Thread erweitert.