Downstream/Upstream Geschwindigkeit der FritzBox auslesen

Hallo,

danke für das Script !

Auf meiner FB6360 ( Unitymedia ) läuft es mit der anpassung 2 Seiten vorher.

Hallo,

ich scheine ja nicht der Einzige mit diesem Fehler zu sein.

Gibt es da schon neue Erkenntnisse?

FB 7272 OS 6.03

Danke

Ab Fritzbox FRITZ!OS: 06.00 , geht nichts mehr

da bleibt es bei
Code:

$ret.= fgets($fp,128);

hängen.

hat das schon jemand getestet ?

grüße aus Magdeburg
Marcel 

Geändert von Fraunhofer (17.11.13 um 20:22 Uhr)

Ja hier:
http://www.ip-symcon.de/forum/showthread.php?p=230910
Michael

Danke für die schnelle Antwort.

Hatte ich so abgeändert:

//$contentRecv = 'POST /upnp/control/WANCommonIFC1 HTTP/1.1
$contentRecv = 'POST /igdupnp/control/WANCommonIFC1 HTTP/1.1
Cache-Control: no-cache
Connection: Close
Pragma: no-cache
Content-Type: text/xml; charset="utf-8"
User-Agent: Microsoft-Windows/6.1 UPnP/1.0
SOAPAction: "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1#GetTotalBytesReceived"
Content-Length: '.(302+strlen($address)).'
Host: '.$address.':49000

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:GetTotalBytesReceived xmlns:m="urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"/></SOAP-ENV:Body></SOAP-ENV:Envelope>
';

//$contentSent = 'POST /upnp/control/WANCommonIFC1 HTTP/1.1
$contentSent = 'POST /igdupnp/control/WANCommonIFC1 HTTP/1.1
Cache-Control: no-cache
Connection: Close
Pragma: no-cache
Content-Type: text/xml; charset="utf-8"
User-Agent: Microsoft-Windows/6.1 UPnP/1.0
SOAPAction: "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1#GetTotalBytesSent"
Content-Length: '.(298+strlen($address)).'
Host: '.$address.':49000

der Fehler bleibt aber unverändert.

Der Aufruf http://fritz.box:49000/igddesc.xml liefert sinvolle Ergebnisse.

Herzlichen Dank

Dumbo

Diese URL liefert nur die Beschreibung, keine Werte.
Hast du die upnp Freigabe an ?
Was gibt denn bei der URL dein Browser aus:
http://fritz.box:49000/igdupnp/control/WANCommonIFC1
Michael

upnp freigabe ist gesetzt.
aufruf von http://fritz.box:49000/igdupnp/control/WANCommonIFC1 liefert: 404 not found.

Hab mehrfach auf Tippfehler geprüft. Allerdings sei hinzugefügt, dass der Aufruf immer über IP-Adresse der Box erfolgt, da über http://fritz.box keine Verbindung zu Stande kommt.

Dumbo

Da ich vorhin von unterwegs nicht wichtig nachgeschaut habe. Sorry der Links ist natürlich für deine Box falsch und geht so auch gar nicht :stuck_out_tongue:
Wie ich weiter vorne ja aber schon geschrieben hatte, gibt es zwei verschiedene UPNP-Daemons je nach Box.
Deine ist nicht mit IGDD sondern UPNP gelistet bei http://www.wehavemorefun.de/fritzbox/UPnP.
Also gehe ich mal davon aus das deine Abfrage anders aussehen muss.

Also noch mal im Browser die URL http://fritz.box:49000/igddesc.xml aufrufen.
Den folgenden Bereich aufklappen
<root><device><deviceList><device>
und das WANCommonInterfaceConfig suchen
dort steht bei <controlURL> die für dich richtige URI drinn.
Unter <SCPDURL> steht noch die URL welche die Definitonen enthält.

Das wiederum kannst du wirklich im Browser nachprüfen: http://<IP-Fritz-Box>:49000/<SCPDURL>

Michael

Also ich hab jetzt nicht alles hier gelesen, aber bei mir funktionierts so:

FB 7490 mit OS 06.05.

Also bei einer Scriptlaufzeit von 1300-1900ms zu 30-60ms werde ich bestimmt nicht das Script nutzen :eek:
Außerdem belastet das die Box ja noch mehr (Login, Lua-Script etc.) und funktioniert wohl z.Z. nur mit DSL-Geräten.
Zumindest bei Cable hagelt es nur Fehlermeldungem ohne Werte im Array, bei LTE keine Ahnung :smiley:
EDIT: Oh auch Seite 6 kommt dann Docsis (Cable)… ist aber genauso lahm

Michael

Hallo,

bei funktioniert zwar alles, aber rein aus Interesse habe ich das oben mal Probiert, die igddesc.xml sehe ich noch bei den anderen kommen Serverfehler 404.

Schöne Grüße
Thomas

Hallo,

hier ist mal ein minimal Script mit dem man mal testen ob die Verbindung zur Fritzbox funktioniert:


<?
$address = "Fritz.box";
$contentRecv = 'POST /igdupnp/control/WANCommonIFC1 HTTP/1.1
Cache-Control: no-cache
Connection: Close
Pragma: no-cache
Content-Type: text/xml; charset="utf-8"
User-Agent: Microsoft-Windows/6.1 UPnP/1.0
SOAPAction: "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1#GetTotalBytesReceived"
Content-Length: '.(302+strlen($address)).'
Host: '.$address.':49000

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:GetTotalBytesReceived xmlns:m="urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"/></SOAP-ENV:Body></SOAP-ENV:Envelope>
';

echo SendPacket($contentRecv);


function SendPacket($content) {
    global $address;
    $port = 49000 /*[Objekt #49000 existiert nicht]*/;

    $fp = fsockopen ($address, $port, $errno, $errstr, 10);
    if (!$fp) {
        //echo "$errstr ($errno)<br />
";
    } else {
        fputs ($fp, $content);
        $ret = "";
        while (!feof($fp)) {
            $ret.= fgets($fp,128);
        }
        fclose($fp);
    }
    if(!(strpos($ret, "200 OK") === false)) {
       return $ret;
    } else {
       die("Invalid Response: ".$ret);
    }
}
?>

Schöne Grüße
Thomas

Sorry für die späte Antwort, war einen Tag offline.

Auch wenn mittlerweile viele Anregungen rein gekommen sind, bei mir funzt es immer noch nicht.

Kurze Zusammenfassung:


<serviceList><service><serviceType>urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1</serviceType><serviceId>urn:upnp-org:serviceId:WANCommonIFC1</serviceId><controlURL>/upnp/control/WANCommonIFC1</controlURL><eventSubURL>/upnp/control/WANCommonIFC1</eventSubURL><SCPDURL>/igdicfgSCPD.xml</SCPDURL></service></serviceList>

 POST /igdupnp/control/WANCommonIFC1 HTTP/1.1 . . . . . 

wie auch

 POST /upnp/control/WANCommonIFC1 HTTP/1.1  . . . . .     

die bekannten Timeouts

Hab ich was vergessen zu testen, hat noch jemand Ideen?

Herzlichen Dank

Dumbo

Eine Antwort: Die upnp URL ist deine, vergiss die igd.
Aber eher noch mehr Fragen:
Irgendwas besonderes am Netzwerk / Aufbau?
Du sagst das die Adresse fritz.box nicht geht, warum ist das so ? Hast du einen anderen DNS-Server als die Fritz Box ? Hast du die Tests mit dem Browser auf der IPS-Maschine durchgeführt ?
Zeigt irgendein Windows in deinem Netzwerk die FritzBox in der Netzwerkansicht, am besten sogar als Internet-Gateway an ? (würde heißen das upnp grundsätzlich geht)
Hast du die Vorschläge von ThomasD getestet ?
Kannst auch gerne das ganze script Posten (naja ohne PW)
Michael

Hallo,

ist vielleicht etwas abwegig, aber beim AVM Support steht etwas von Anbieter EWE und man muss bei Anfragen unten auf den Aufkleber nachschauen ob man die EWE Fritzbox hat, den diese hat eine Angepasste OS Version.

@dumbo hast du mal mein Script schnipsel probiert, funktioniert dieser?

Schöne Grüße
Thomas

Hallo zuammen und herzlichen Dank für die Anregungen,

komme leider übers WE nicht nach Hause, deshalb wird es eine kleine Stagnation geben. Hier eine kurze Antwort zu den offenen Fragen:

  • Die Fritzbox ist NICHT Standard-Gateway aus dem internen Netz. Gleichwohl denke ich dass die Verbindung ok ist, da ich z.B. eingehende Telefonate zeitnah über die Dreambox (Internes Netz) auf dem Fernseher anzeigen lasse (das funzt)

  • Der Code Schnipsel von Thomas hat NICHT funktioniert. (Error 500 Internal Server Error ERR_NO_MEMORY)

  • Dieser hier schon

<?
 //Fügen Sie hier Ihren Skriptquellcode ein
$fp = fsockopen("172.31.xx.yy", 49000 /*[Objekt #49000 existiert nicht]*/, $errno, $errstr, 20); // IP Adresse anpassen
if(!$fp)
{
    echo "ERROR: $errno - $errstr<br />
";
}
else
{
    echo "OK";
}
?>

Alles in allem glaube ich aber nach euren Beiträgen jetzt zu wissen wo ich suchen muß.

Nochmals herzlichen Dank

Dumbo

Hallo zusammen,

ich habe auch das gleiche Problem und ich komme keine Rückmeldung von meiner Fritzbox 7490 FRITZ!OS 6.20.

Das Beispielscript von ThomasD bringt mir die Rückmeldung. Nur leider im Script laufe ich auf den 30 sec Timeout.

Die XML meldet mir auch den anderen Daemon (igdupnp) zurück welchen ich dann im Script an den zwei Stellen eingestellt habe:

<serviceType>urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1</serviceType>

<serviceId>urn:upnp-org:serviceId:WANCommonIFC1</serviceId>

<controlURL>/igdupnp/control/WANCommonIFC1</controlURL>

<eventSubURL>/igdupnp/control/WANCommonIFC1</eventSubURL>

<SCPDURL>/igdicfgSCPD.xml</SCPDURL>

Dies sind die zwei angepassten Zeilen:

$contentRecv = 'POST /igdupnp/control/WANCommonIFC1 HTTP/1.1
$contentSent = 'POST /igdupnp/control/WANCommonIFC1 HTTP/1.1

In meiner Fritzbox steht aber auch explizit drin, das man sich per User jetzt authentifizieren muss:

Für den Zugriff muss die Anwendung sich an der FRITZ!Box anmelden. Unter „System / FRITZ!Box-Benutzer“ verwalten Sie die zugehörigen Anmeldedaten. Um eine Anwendung über das Internet anzumelden, muss ein FRITZ!Box-Benutzer mit Erlaubnis für den Zugang aus dem Internet genutzt werden.

Liegt es wirklich an der Authentifizierung oder ist es noch ein anderes Problem?

VG

Thorsten

Hallo,

wenn der Codeschnippsel funktioniert, ist aber mit der Fritzbox alles ok.
Mehr braucht man nicht, der Rest ist Rechnen in IPS.
Was kommt den als Rückgabe?

Schöne Grüße
Thomas

Hallo ThomasD,

als Rückgabe bekomme ich folgendes:

HTTP/1.1 200 OK
DATE: Sun, 21 Sep 2014 08:28:25 GMT
SERVER: FRITZ!Box 7490 UPnP/1.0 AVM FRITZ!Box 7490 113.06.20
CONNECTION: close
CONTENT-LENGTH: 388
CONTENT-TYPE: text/xml; charset="utf-8"
EXT:





403617321



Jetzt bin ich einen Schritt weiter.

Beim „Testscript“ hatte ich „fritz.box“ benutzt und beim "Auslesescript die IP Adresse. Ja die IP hatte ich an die richtige IP angepasst. :wink:

Nun bekomme ich die Werte zurück und bekomme eine Anzeige. Jetzt habe ich noch zwei Fragen:

[ul]
[li]Die Anzeige scheint um den Faktor 10 zu klein zu sein, kann man das anpassen?
[/li][li]Wie kann man die Variablen loggen, sodass man hier eine Langzeitauswertung erhält?
[/li][/ul]

Vielen Dank schon mal für das tolle Script!

VG

Thorsten

Hallo,

dann ist alles bestens, das sind deine erhaltenen Bytes.
Das Script macht jetzt nur folgendes.
403617321 Bytes um 12:23:10 // Merken
403627321 Bytes um 12:24:15 // Daten ein weiteres mal aus der Fritzbox holen.

Erhaltene Bytes = 10000 Bytes.
In Zeitraum = 65 sec.
Macht in der Sec. = 153,8 B/sec oder 0,15 KB/sec.

Wenn du jetzt etwas mit Faktor 10 solltest du schauen wo etwas in der Berechnung nicht stimmt.

Schöne Grüße
Thomas