[HowTo] Fritzbox 7412 - Datenvolumen ermitteln/anzeigen

Allgemein Infos und Fragen zu Funktionen wie z.B. Onlinezähler, Fax, Pushmail, Ersteinrichtung mit oder ohne Startcode
Antworten
Nachricht
Autor
Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

[HowTo] Fritzbox 7412 - Datenvolumen ermitteln/anzeigen

#1 Beitrag von eisbaerin » 22. Okt 2017 20:13

Als ich sah, daß die "inetstat_counter.lua" in dieser FW (137.06.80) um einige KB größer war, hatte ich ja schon die Hoffnung, daß mit dieser FW im Online-Zähler die Datenvolumen endlich angezeigt werden.
Aber Pustekuchen. Wie ich später bei der Analyse feststellte, wurde nur die Anzeige der Online-Zeit auf dem Smartphone verändert (verbessert?).

IMO ist das die erste und einzige FB seit der 7170/7112/7113, wo diese Anzeige wegprogrammiert wurde.

Es wird sogar noch manpower investiert um ein paar vergessene Feinheiten in der Formulierung zu verändern:
So hieß es z.B. in der 137.06.50 noch:

Code: Alles auswählen

Wenn Sie einen Zeit- oder Volumentarif haben, ...
und wurde jetzt in der 137.06.80 geändert auf:

Code: Alles auswählen

Wenn Sie einen Zeittarif haben, ...
Wo gibt es den heute noch einen Zeittarif in D?
Schon gar nicht bei 1&1, wo diese FB ausschließlich verkauft/verschenkt wird.
Aber es gibt bei 1&1 sehr wohl einen Volumentarif mit 300GB!

Was mir jetzt noch nicht klar ist:
Will uns AVM damit ärgern oder ist das eine Forderung von 1&1?
Hofft 1&1 damit Kunden des 300GB Tarifes in eine Falle zu locken, weil sie nicht wissen wie viel sie gerade verbraucht haben?
Und damit zu locken/nötigen eine teurere FB oder einen höheren Tarif zu bestellen?

Na ja, jedenfalls sehr fadenscheinig das Ganze!
Noch dazu, wenn man weiß, daß die FB intern alles mitzählt, es aber nur in der Anzeige wegprogrmmiert wurde!

Aber Hilfe naht! Ich habe mich mal dem Problem intensiver gewidmet.
Es gibt 2 Möglichkeiten an die Daten zu kommen:

1. mit z.B. modfs die Anzeige der Daten wieder herstellen: >>>klick<<<
Das geht natürlich auch anders, z.B. freetz.

Wem das zu kompliziert ist:
2. aus der Supportdatei auslesen

Das hatte ich schon mal bei der FW 137.06.50 kurz erklärt, aber hier noch mal ausführlicher und genauer:

- Supportdatei erstellen (einfache Version reicht)
- in der Supportdatei nach "LastMonth" suchen (bei mir ca. Zeile 11500)
das sollte dann z.B. so aussehen:
[ CODE]
LastMonth {
PhyConnTimeOutgoing = 2676023; :60:60=743,339h=743:20h Online-Zeit (da fehlen bei mir für den Januar mit 744h ganze 40 Minuten!)
OutgoingCalls = 33; =Anzahl der Verbindungen
BytesSentLow = 3023432582; :1000:1000=3023MB
BytesSentHigh = 2; +2*4295MB=11613MB Daten gesendet
BytesReceivedLow = 4267198364; :1000:1000=4267MB
BytesReceivedHigh = 8; +8*4295MB=38627MB Daten empfangen
}
daraus folgt: Daten gesamt: 11613MB + 38627MB = 50240MB
[/CODE]

Das grüne sind Ergänzungen von mir. Ich hoffe, das reicht als Erklärung für die Berechnung.

Wie kommt man auf die 4295MB=4096MB*1024*1024:1000:1000
Ich weiß auch nicht was AVM da so rechnet, aber jetzt stimmt es mit der Anzeige in der GUI genau überein.
Wollen sie damit den overhead kompensieren?

Gewarnt war ich übrigens schon in meiner lieblings FB7170: /usr/www/avm/html/de/internet/inetstat.js:

Code: Alles auswählen

//var g_Kilo = 1024;
var g_Kilo = 1000;
//var g_Mega = 1048576; //1024*1024;
var g_Mega = 1000000; //1000*1000;
Wieso wird dort schon die 1024 auskommentiert?

Es war nicht einfach heraus zu finden, daß der Low Zähler immer nach 4295MB genullt wird und dann der High Zähler um 1 erhöht wird.
Das ganze geht natürlich genau so auch bei: Today, Yesterday, ThisWeek, LastWeek, ThisMonth und Total.

Was ich mich auch schon längere Zeit frage, warum wird "LastWeek" und "Total" bei keiner FB in der GUI angezeigt?

[OT]
Mich interessiert aber immer "LastMonth", da ich diese Werte schon seit Jahren für meine eigene Statistik sammle.
Da sieht man dann z.B. ob sich der Datenverbrauch über die Jahre erhöht oder ob sich die DSL/PPPoE Ausfallzeiten erhöhen
oder an der Zahl der Verbindungen, ob es häufig Ausfälle gibt.
Rekord war z.B. bei einer Bekannten: 210 Verbindungen in einem Monat, wo sonst 30 bis 33 durch die vorgez. Zwangstrennung normal sind.
Damit lassen sich evt. komplizierte Fehler analysieren. Deshalb sollte das IMO jeder machen.
Jahreswerte gibt es leider nicht, aber wenn man alle Monatswerte gesammelt hat, dann kann man die ja zusammenzählen.
Das ist noch ein Wunsch von mir: ThisYear und LastYear bei den Zählern ergänzen.
Ich finde es dabei am erschreckendsten wie viele Stunden Ausfallzeit man so pro Jahr hat.
Bei mir waren es letztes Jahr ca. 38h.
[/OT]
Beste Grüße vom Eisbär(in)

Router: AVM : FB7362SL-131.06.83 + FB7170-29.04.88 UMTS-Stick: Huawei: K3765-HV-11.126.03.09.00
Internet: 1&1 Doppel-Flat 50.000 für 26,99€
+ 4x Handy-Flat-Internet100 + Surfstick W21v

Umbranden hier | Eisbär's Spezialliste | ***NEU*** Qwertzy's HW-Liste | ***NEU *** Qwertzy's DSL-Modem/Router/IADs-Liste

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

[HowTo] Fritzbox 7412 - Datenvolumen ermitteln/anzeigen

#2 Beitrag von eisbaerin » 29. Okt 2017 20:54

Hier noch das modscript dazu:

mod_show_data_on_counter_7412.06.8x:

Code: Alles auswählen

# MODFS_MODSCRIPT
# SUPPORTS precheck postcheck install language(en,de)
# NAME add Data on online-couter page on FB7412 FW 06.8x
# DESCRIPTION en
# show Data counts on the online-couter page and e-mail
# DESCRIPTION de
# Anzeige der Datenvolumen auf der Online-Zähler Seite und E-Mail der FB7412 FW 06.8x
# EOH
#
# process parameters
#
language=$1
rootdir=$2
mode=$3
step=$4
[ ${#4} -eq 0 ] && exit 59 # invalid call
#
# variables
#
rc=0
check_filename="$rootdir/usr/www/$TARGET_BRANDING/internet/inetstat_counter.lua"
check_trigger="colspan"
#
# apply
#
patch_file()
{
    local home=$(pwd)
    cd $rootdir
    $home/bin/$HWRevision/busybox patch -p0 2>/dev/null <<EOT
--- usr/www/$TARGET_BRANDING/internet/inetstat_counter.lua
+++ usr/www/$TARGET_BRANDING/internet/inetstat_counter.lua
@@ -20,10 +20,19 @@
 function get_data_table_header()
 local str = [[
 <tr class="first_row">
-<th class="first_col">&nbsp;</th>
-<th>{?815:715?}</th>
+<th class="first_col"></th>
+<th>Online-Zeit</th>
+<th style="text-align:center;" colspan="3">Datenvolumen (MByte)</th>
 <th>{?815:765?}</th>
 </tr>
+<tr class="first_row">
+<th class="first_col"></th>
+<th>(Std:Min)</th>
+<th>gesamt</th>
+<th>gesendet</th>
+<th>empfangen</th>
+<th></th>
+</tr>
 ]]
 return str
 end
@@ -50,6 +59,15 @@
 local outgoingcalls = box.query("inetstat:status/"..request.."/OutgoingCalls")
 local time = box.query("inetstat:status/"..request.."/PhyConnTimeOutgoing")
 str = [[<td datalabel="{?815:922?}" class="time">]] .. general.convert_to_str(time) .. [[</td>]]
+local inh, inl, outh, outl = query_send_receive(request)
+str = str .. core.sprintf([[
+<td datalabel="Datenvolumen gesamt(MB)" class="vol">%1</td>
+<td datalabel="Datenvolumen gesendet(MB)" class="vol">%2</td>
+<td datalabel="Datenvolumen empfangen(MB)" class="vol">%3</td>]],
+box.tohtml(get_vol_str(inh, inl, outh, outl)),
+box.tohtml(get_vol_str(outh, outl)),
+box.tohtml(get_vol_str(inh, inl))
+)
 str = str .. [[<td datalabel="{?815:560?}" class="conn">]] .. outgoingcalls .. [[</td>]]
 return str
 end
@@ -403,7 +421,10 @@
 <form method="POST" action="<?lua box.html(box.glob.script) ?>" name="main_form">
 <div class="formular small_indent">
 <p>
-{?815:459?}
+Die FRITZ!Box erfasst die Online-Zeit und das verbrauchte Datenvolumen.
+In der Z&auml;hlung wird jedoch nur das Datenvolumen der Internetverbindung ber&uuml;cksichtigt.
+Wenn Sie weitere Verbindungen nutzen, beispielsweise f&uuml;r Internettelefonie oder IPTV, wird deren Datenvolumen im Online-Z&auml;hler nicht mitgez&auml;hlt.
+Beachten Sie, dass der Online-Z&auml;hler von der exakten Abrechnung Ihres Internetanbieters abweichen kann.
 </p>
 <div id="uiNoTime" <?lua hideif(g_timeknown) ?>>
 <p>
@@ -417,7 +438,7 @@
 </div>
 <div>
 <p>
-{?815:95?}
+Nach dem Wechsel des Internetanbieters oder der Verbindungsart (z.B. DSL zu Mobilfunk) sollten Sie den Online-Z&auml;hler zur&uuml;cksetzen, um sp&auml;ter das Datenvolumen und die Online-Zeit eindeutig zuordnen zu k&ouml;nnen.
 </p>
 <div class="btn_form">
 <button type="button" onclick="onResetCounter();" name="reset">
@@ -452,7 +473,7 @@
 </div>
 <div <?lua hideif(g_budget_enabled) ?>>
 <p>
-{?815:65?}
+Wenn Sie einen Zeit- oder Volumentarif haben, k&ouml;nnen Sie sich hier den Verbrauch im aktuellen Abrechnungszeitraum anzeigen lassen.
 </p>
 <div class="btn_form">
 <button type="submit" name="editbudget">
--- usr/www/$TARGET_BRANDING/internet/inetstat_budget.lua
+++ usr/www/$TARGET_BRANDING/internet/inetstat_budget.lua
@@ -280,17 +280,44 @@
 </h4>
 <div>
 <p>
-{?141:619?}
+Geben Sie hier das enthaltene Datenvolumen oder die Freistunden Ihres Tarifs an.
 </p>
 <input type="checkbox" name="budget_enabled" id="uiBudgetEnabled"
 onclick="OnToggleBudget(this.checked)" <?lua write_budget_enabled()?>><label for="uiBudgetEnabled">
 {?141:990?}
 </label>
 <div id="uiBudgetBlock" class="formular reverse">
+<input type="radio" name="budget_type" id="uiVolBudget" value="vol"
+onclick="OnToggleBudgetType('vol')" <?lua write_budget_checked('vol')?>><label for="uiVolBudget">
+Volumentarif
+</label>
+<div id="uiVolBlock" class="formular">
+<input type="text" size="7" maxlength="6" id="uiVolValue" name="budget_vol" value="<?lua write_budget_value('vol')?>"><label for="uiVolValue">
+MB Datenvolumen pro Monat inklusive
+</label>
+<p>Beispiel: 5000 MB (entsprechen 5 Gigabyte)</p>
+<input type="checkbox" id="uiViewRoundUpOn" name="budget_roundup" onclick="OnToggleRoundUp(this.checked)" <?lua write_roundup()?>><label for="uiViewRoundUpOn">
+Runden des &Uuml;bertragungsvolumens pro Verbindung auf
+</label>
+<select id="uiViewRoundUpBytes" name="budget_roundup_bytes">
+<option value="1000" <?lua write_roundup_sel("1000")?>>
+volle KB
+</option>
+<option value="1000000" <?lua write_roundup_sel("1000000")?>>
+volle MB
+</option>
+</select>
+</div>
+<input type="radio" name="budget_type" id="uiTimeBudget" value="time"
+onclick="OnToggleBudgetType('time')" <?lua write_budget_checked('time')?>><label for="uiTimeBudget">
+Zeittarif
+</label>
+<div id="uiTimeBlock" class="formular">
 <input type="text" size="6" maxlength="3" name="budget_time" id="uiTimeValue"
 value="<?lua write_budget_value('time')?>">
 <label for="uiTimeValue">{?141:904?}</label>
 <p>{?141:179?}</p>
+</div>
 <div class="noBreakGroup">
 <label for="uiViewStartOfMonth" style="width:auto">
 {?141:313?}
EOT
    cd $home
}
patch_file2()
{
    local home=$(pwd)
    cd $rootdir
    $home/bin/$HWRevision/busybox patch -p0 2>/dev/null <<'EOT'
--- etc/fritzbox_info.html
+++ etc/fritzbox_info.html
@@ -617,22 +617,13 @@
 <tr>
 <td>
 <table style="width: 940px; background-color: #FFFFFF;">
-<IfShowVolCounter>
 <tr>
 <td style="width: 940px; background-color: #FFFFFF; font-size: 11pt; font-family: Arial, Helvetica, sans-serif; text-align: left;">
 {?715:111?}
 </td>
 </tr>
-</IfShowVolCounter>
-<IfNotShowVolCounter>
 <tr>
 <td style="width: 940px; background-color: #FFFFFF; font-size: 11pt; font-family: Arial, Helvetica, sans-serif; text-align: left;">
-{?715:886?}
-</td>
-</tr>
-</IfNotShowVolCounter>
-<tr>
-<td style="width: 940px; background-color: #FFFFFF; font-size: 11pt; font-family: Arial, Helvetica, sans-serif; text-align: left;">
 {?715:95?}
 </td>
 </tr>
@@ -655,11 +646,9 @@
 <th style="width: 100px; font-size: 11pt; font-family: Arial, Helvetica, sans-serif; text-align: right;">
 {?715:766?}
 </th>
-<IfShowVolCounter>
 <th style="width: 4000px; font-size: 11pt; font-family: Arial, Helvetica, sans-serif; text-align: center;" colspan="3">
 {?715:784?}
 </th>
-</IfShowVolCounter>
 <th style="width: 140px; font-size: 11pt; font-family: Arial, Helvetica, sans-serif; text-align: right;">
 {?715:431?}
 </th>
@@ -671,7 +660,6 @@
 <td style="font-size: 11pt; font-family: Arial, Helvetica, sans-serif; font-style: italic; text-align: right;">
 {?715:926?}
 </td>
-<IfShowVolCounter>
 <td style="font-size: 11pt; font-family: Arial, Helvetica, sans-serif; font-style: italic; text-align: right;">
 {?715:922?}
 </td>
@@ -681,7 +669,6 @@
 <td style="font-size: 11pt; font-family: Arial, Helvetica, sans-serif; font-style: italic; text-align: right;">
 {?715:700?}
 </td>
-</IfShowVolCounter>
 <td style="font-size: 11pt; font-family: Arial, Helvetica, sans-serif; font-style: italic; text-align: right;">
 {?715:717?}
 </td>
@@ -698,7 +685,6 @@
 <td style="font-size: 11pt; font-family: Arial, Helvetica, sans-serif; text-align: right; height: 20px;">
 ${ONLINE_TIME}
 </td>
-<IfShowVolCounter>
 <td style="font-size: 11pt; font-family: Arial, Helvetica, sans-serif; text-align: right; height: 20px;">
 ${ONLINE_SUM_VOL}
 </td>
@@ -708,7 +694,6 @@
 <td style="font-size: 11pt; font-family: Arial, Helvetica, sans-serif; text-align: right; height: 20px;">
 ${ONLINE_VOL_RECV}
 </td>
-</IfShowVolCounter>
 <td style="font-size: 11pt; font-family: Arial, Helvetica, sans-serif; text-align: right; height: 20px;">
 ${ONLINE_COUNT}
 </td>
EOT
    cd $home
}
#
# execute steps
#
case $step in
    precheck)
    if [ "${TARGET_SYSTEM_VERSION%%.*}" = "137" ]; then
        grep -q "$check_trigger" $check_filename 2>/dev/null 1>&2
        rc=$?
        if [ $rc -eq 0 ]; then
            case "$language" in
                de)
                    echo "Die Modifikation wurde bereits angewendet oder ist nicht erforderlich." 1>&2
                    ;;
                *)
                    echo "The modification is already present or modification isn't necessary." 1>&2
                    ;;
            esac
            rc=1
        else
            rc=0
        fi
    else
            case "$language" in
                de)
                    echo "Die Modifikation ist nur für die FB7412." 1>&2
                    ;;
                *)
                    echo "The modification is only for the FB7412." 1>&2
                    ;;
            esac
            rc=1
    fi
        ;;
    postcheck)
        grep -q "$check_trigger" $check_filename 2>/dev/null 1>&2
        rc=$?
        if [ $rc -eq 1 ]; then
            case "$language" in
                de)
                    echo "Die Modifikation war nicht erfolgreich." 1>&2
                    ;;
                *)
                    echo "The menu file seems to be unmodified." 1>&2
                    ;;
            esac
            rc=1
        else
            rc=0
        fi
        ;;
    install)
        for TARGET_BRANDING in $TARGET_BRANDINGS; do
            patch_file
        done
        patch_file2
        rc=0
        ;;
    *)
        rc=59
        ;;
esac
exit $rc
Beste Grüße vom Eisbär(in)

Router: AVM : FB7362SL-131.06.83 + FB7170-29.04.88 UMTS-Stick: Huawei: K3765-HV-11.126.03.09.00
Internet: 1&1 Doppel-Flat 50.000 für 26,99€
+ 4x Handy-Flat-Internet100 + Surfstick W21v

Umbranden hier | Eisbär's Spezialliste | ***NEU*** Qwertzy's HW-Liste | ***NEU *** Qwertzy's DSL-Modem/Router/IADs-Liste

Antworten

Zurück zu „FRITZ!Box: Allgemeine Infos & Fragen“