Fritz!Box API für PHP (inkl. Login-Sessions)

Hey @tube2002
Das sollte mit urn:dslforum-org:service:Hosts:1#X_AVM-DE_GetMeshListPath möglich sein.
Die Url aufrufen und dann über die JSON-Nodes nach der korrekten uid bzw. node_interface_(#)_uid suchen.
 
Hallo @tube2002,

den Hinweis von @Chronosone habe ich aufgegriffen und hier in meiner Sandbox für solche Herausforderungen ein Beispiel-Coding erstellt.
Nur über die API (per klassischem HTTP-Request) geht das sicher auch, aber statt mit der SOAP-Abfrage ein definiertes JSON zu bekommen müsste man dann das HTML parsen (was bei jeder Änderung von AVM an der Website auf die Bretter gehen wird).
In dem Beispiel konvertiere ich das JSON in XML, um dann darin nach 'LAN:2' zu suchen und die MAC-Adresse zurückzugeben.

Have fun

Black Senator
 
Halloooo,
ich bin gerade am tüffteln eines php-Skripts für WoL anhand der MAC-Adresse (FritzOs 7.01).
Ich habe entdeckt, dass mir eine Abfrage an /data.lua?sid=x&page=netDev in Python mit request.post einen Datensatz mit aktiven und passiven Geräten liefert. Anhand dessen können auch die DeviceIDs mittels der MacAdresse ermittelt werden und das jeweilige Gerät gestartet werden.
In PHP wiederum liefert mir die gleiche Abfrage nur einen beschränkten Datensatz ohne passive Geräte und ohne MAC-Adressen bzw. DeviceIDs. Gibts hierfür Abhilfe?

Grüße
 
@ActionBunny,

probier doch einfach einmal folgendes:
  • binde diese library in dein PHP-script ein (User muss TR064-Rechte haben!)
  • mit folgendem Coding bekommst Du eine sehr umfangreiche XML (meshlist.xml):
    PHP:
    use blacksenator\fritzsoap\hosts;
    
    $fritzbox = new hosts($url, $user, $password);
    $fritzbox->getClient();
    $meshList = $fritzbox->x_AVM_DE_GetMeshListPath();
    $meshList->asXML('meshlist.xml');
Schau einmal in der meshlist.xml, ob Du darin nicht (leichter) findest was Du suchst.

Grüße

Black Senator
 
Hallo ,
Kann mal jemand den Login umschreiben bitte , seit dem update auf 7.25 geht das nicht mehr mit dem Login

Diesen hatte ich hier gefundnen

PHP:
## Auswertung Fritzbox Vorbereitung

$fritz_Username = "ftpuser"; # <--- Dises ist neu und ein muss

$fritz_url = '192.168.0.1';
$fritz_pwd = 'UltraGeheim007';
// Get Challenge-String
$l = simplexml_load_string(file_get_contents(sprintf('http://%s/login_sid.lua', $fritz_url)));
$c = $l->Challenge;
// Get SID
$c_str  = sprintf("%s-%s", $c, $fritz_pwd);
$md_str = md5(iconv("UTF-8", "UTF-16LE",  $c_str));
$fburl = sprintf('http://%s/login_sid.lua?user=&response=%s', $fritz_url, $c.'-'.$md_str);
$fbcontent_a = file_get_contents($fburl);
$l = simplexml_load_string($fbcontent_a);
$sid = $l->SID;
// Get Calllist
$fbcontent_b = file_get_contents(sprintf('http://%s:49000/calllist.lua?sid=%s', $fritz_url, $sid));
echo $fbcontent_b."<br>";
$cl = simplexml_load_string($fbcontent_b);

## Auswertung Fritzbox
## Start der Auswertung
foreach($cl->Call as $call) {
  switch($call->Type) {
    case 11:
    ...


lg


Edit:
Hat sich gerade erledigt .... :)
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.