@G4l4h4d
Das unterliegende Problem, ist nicht der Umrechnungsfaktor, sondern die Tatsache, dass sich scheinbar die Ausgabe der Fritzbox über UPNP geändert hat.
Seit einer der neueren FritzOS Versionen (im Gegensatz zu Beginn dieses Topics) wird TotalBytesReceived und TotalBytesSent bei ~4GB wieder auf 0 gesetzt.
Sehr einfach zu erkennen, wenn man das ganze mal eine Weile mitschreibt:
Ähnlich verhält es sich auch bei NewX_AVM_DE_TotalBytesSent64 und NewX_AVM_DE_TotalBytesReceive64.
Hier scheint die Grenze bei ~24GB zu liegen, es geht dann aber nicht auf 0 zurück. Offsets kann ich hier ebenfalls beobachten.
Mit dem Statistics Adapter lassen sich die Delta-Werte (Stunde, Tag, Woche, Monat, ...) grundsätzlich gut berechnen, die 4GB-Happen werden problemlos verarbeitet.
- Ich arbeite einfach mit ganzen 10er-Potenzen bei der Umrechnung zu GB --> 1E-9 --> Immer etwas mehr als in der FritzBox angezeigt
- Meine Vermutung ist, dass die 9.53674E-10 irgendeinen Overhead berücksichtigen soll --> Immer etwas weniger als in der FritzBox angezeigt
Jedoch gibt es auch hier ein Problem:
Die 4GB-Happen werden sauber berücksichtigt und die Werte passen zu 95% zu den Angaben der Fritzbox, jedoch kommt es bei der täglichen Verbindungstrennung zu Offsets. Von einen auf den anderen Datenpunkt gibt es plötzlich einen Sprung um mehrer GB (kein fester Wert).
Hier um 02:16 im Upload, der so nicht real ist.
Wie ich gerade sehe, ist diese Erkentniss nicht wirklich neu!
Möglicher Lösungsansatz:
@aleks-83 said in Internet-Traffic anzeigen lassen:
@sveni_lee sagte in Internet-Traffic anzeigen lassen:
kannst Du mal einen export von deinem script machen?
var BytesChanged; on({id: "upnp.0.WANDevice_-_FRITZ!Box_7490.WANDevice.WANCommonInterfaceConfig.TotalBytesReceived"/*TotalBytesReceived*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((new Date().getDay() === 0 ? 7 : new Date().getDay()) != parseFloat(getState("javascript.0.FritzBoxTraffic.AktuellerTag").val)) { // Wenn der Tag gewechselt hat setState("javascript.0.FritzBoxTraffic.TrafficGestern"/*TrafficGestern*/, getState("javascript.0.FritzBoxTraffic.TrafficHeute").val); setState("javascript.0.FritzBoxTraffic.TrafficAktuellerMonat"/*TrafficAktuellerMonat*/, (getState("javascript.0.FritzBoxTraffic.TrafficAktuellerMonat").val + getState("javascript.0.FritzBoxTraffic.TrafficGestern").val)); setState("javascript.0.FritzBoxTraffic.AktuellerTag"/*AktuellerTag*/, (new Date().getDay() === 0 ? 7 : new Date().getDay())); setState("javascript.0.FritzBoxTraffic.TrafficHeute"/*TrafficHeute*/, 0); setState("javascript.0.FritzBoxTraffic.BytesReceivedBisHeute"/*BytesReceivedBisHeute*/, parseFloat(getState("upnp.0.WANDevice_-_FRITZ!Box_7490.WANDevice.WANCommonInterfaceConfig.TotalBytesReceived").val)); console.warn('### Traffic aktueller Tag zurückgesetzt'); if ((new Date().getMonth() + 1) != parseFloat(getState("javascript.0.FritzBoxTraffic.AktuellerMonat").val)) { // Wenn auch der Monat gewechselt hat setState("javascript.0.FritzBoxTraffic.TrafficMonat-2"/*TrafficMonat-2*/, getState("javascript.0.FritzBoxTraffic.TrafficMonat-1").val); setState("javascript.0.FritzBoxTraffic.TrafficMonat-1"/*TrafficMonat-1*/, getState("javascript.0.FritzBoxTraffic.TrafficAktuellerMonat").val); setState("javascript.0.FritzBoxTraffic.TrafficAktuellerMonat"/*TrafficAktuellerMonat*/, 0); setState("javascript.0.FritzBoxTraffic.AktuellerMonat"/*AktuellerMonat*/, (new Date().getMonth() + 1)); console.warn('### Traffic aktueller Monat zurückgesetzt'); } } else { if (parseFloat(getState("upnp.0.WANDevice_-_FRITZ!Box_7490.WANDevice.WANCommonInterfaceConfig.TotalBytesReceived").val) < parseFloat(getState("javascript.0.FritzBoxTraffic.BytesReceivedBisHeute").val)) { setState("javascript.0.FritzBoxTraffic.nBytesChanged"/*nBytesChanged*/, 0); BytesChanged = 0; } else { setState("javascript.0.FritzBoxTraffic.nBytesChanged"/*nBytesChanged*/, (parseFloat(getState("upnp.0.WANDevice_-_FRITZ!Box_7490.WANDevice.WANCommonInterfaceConfig.TotalBytesReceived").val) - parseFloat(getState("javascript.0.FritzBoxTraffic.BytesReceivedBisHeute").val))); BytesChanged = parseFloat(getState("upnp.0.WANDevice_-_FRITZ!Box_7490.WANDevice.WANCommonInterfaceConfig.TotalBytesReceived").val) - parseFloat(getState("javascript.0.FritzBoxTraffic.BytesReceivedBisHeute").val); if (BytesChanged > 250 * 1000000) { // Wenn die Differenz größer ist als 250 Mio. // = 250 MB in einem Abfrage Intervall (3s) // Angepasst auf 600 MBit Leitung // Setze Werte gleich // Bei Reconnect kann das passieren setState("javascript.0.FritzBoxTraffic.BytesReceivedBisHeute"/*BytesReceivedBisHeute*/, parseFloat(getState("upnp.0.WANDevice_-_FRITZ!Box_7490.WANDevice.WANCommonInterfaceConfig.TotalBytesReceived").val)); BytesChanged = 0; } } setState("javascript.0.FritzBoxTraffic.TrafficHeute"/*TrafficHeute*/, (Math.round((getState("javascript.0.FritzBoxTraffic.TrafficHeute").val + getState("javascript.0.FritzBoxTraffic.nBytesChanged").val / 1000000000) * 10000) / 10000)); setState("javascript.0.FritzBoxTraffic.BytesReceivedBisHeute"/*BytesReceivedBisHeute*/, parseFloat(getState("upnp.0.WANDevice_-_FRITZ!Box_7490.WANDevice.WANCommonInterfaceConfig.TotalBytesReceived").val)); BytesChanged = 0; } });
Bitteschön.
Ich habe noch etwas hinzugefügt was ich noch testen muss.
setState("javascript.0.FritzBoxTraffic.nBytesChanged"/*nBytesChanged*/, (parseFloat(getState("upnp.0.WANDevice_-_FRITZ!Box_7490.WANDevice.WANCommonInterfaceConfig.TotalBytesReceived").val) - parseFloat(getState("javascript.0.FritzBoxTraffic.BytesReceivedBisHeute").val))); BytesChanged = parseFloat(getState("upnp.0.WANDevice_-_FRITZ!Box_7490.WANDevice.WANCommonInterfaceConfig.TotalBytesReceived").val) - parseFloat(getState("javascript.0.FritzBoxTraffic.BytesReceivedBisHeute").val); if (BytesChanged > 250 * 1000000) { // Wenn die Differenz größer ist als 250 Mio. // = 250 MB in einem Abfrage Intervall (3s) // Angepasst auf 600 MBit Leitung // Setze Werte gleich // Bei Reconnect kann das passieren setState("javascript.0.FritzBoxTraffic.BytesReceivedBisHeute"/*BytesReceivedBisHeute*/, parseFloat(getState("upnp.0.WANDevice_-_FRITZ!Box_7490.WANDevice.WANCommonInterfaceConfig.TotalBytesReceived").val)); BytesChanged = 0;
.
Heute Nacht ist (vermutlich beim Reconnect) etwas komisches passiert:
Der Wert "X_AVM_DE_TotalBytesReceived64" ist schlagartig von 31.904.061.774 auf 24.767.093.101 gefallen. (-7.136.968.673)
Gleichzeitig ist der Wert "TotalBytesReceived" von 1.839.290.702 auf 2.842.001.377 gestiegen. (+1.002.710.675)