FritzBox mit SOAP auslesen und steuern

… nice :slight_smile:

Hier jetzt das ‚Ergebnis‘
Fritz-Box Project
Michael

Hallo

Hat schon mal jemand herausgefunden, ob/wie sich die Sendeleistung des WLANs per Skript einstellen lässt?

Um Elektrosmog zu reduzieren, schalte ich das WLAN während der Nacht ab. Ergibt aber ein Problem mit Netatmo, weil ich dann keine Daten in die IPS-Datenbank bekomme.
Eleganter wäre deshalb, das WLAN nicht ganz abzuschalten, sondern lediglich die Sendeleistung zeitgesteuert zu reduzieren. Bloss wie…?

Merci,
Dieter

Hi Dieter!

Mir ist kein SOAP Befehl bekannt, mit dem man die Sendeleistung vom WLAN einstellen könnte.

Bliebe nur der Weg über das Webinterface (LUA) - aber das ist doof und übersteht meist nur wenige oder sogar kein FritzOS-Update.

Grüße,
Chris

Hi Michael,

wollte nur kurz berichten, dass ich Dein Fritzbox Projekt (Kabelbox 6490) installiert habe und es auf Anhieb läuft.

Tolle Sache.
Vielen Dank.

Schön zu hören :smiley:

Die 6490 ist auch mein Testsubject, von daher sollte es damit immer laufen :wink:

Michael

Hallo,

ich würde gerne die Device in der Fritz Box auslesen. Dafür mus ich das haben

$result = $client->X_AVM-DE_GetClient()

Problem ist das der Funktions Name nach dem ‚-‘ abgeschnitten wird !

$result = $client->X_AVM

Fehler Meldung:
Notice: Undefined property: SoapClient::$X_AVM in C:\IP-Symcon\scripts\39031.ips.php on line 234
Fatal error: Call to undefined function DE_GetClient() in C:\IP-Symcon\scripts\39031.ips.php on line 234

Wie kann ich das hin bekommen, steh momentan auf dem Schlauch.

Siehe Beitrag 3
Alles was ‚-‘ enthält kommt in {„hier die Funktion“}.
Was möchtest du denn über haupt auslesen?
Das meiste ist jetzt als fertige Sammlung im FritzBox-Project gelandet.
Michael

Ich möchte gerne die DEVICE Namen der Geräte auslesen. Bekomme es aber noch nicht hin.

Dein Projekt ist der Hammer, aber für mich leider zu groß. Ich brauche nur ein paar weniger Informationen aus der FritzBox. Ich baue mir die Anrufliste in Symcon selber zusammen und lese die nicht aus der Fritzbox aus.
Da ich das Dashboard nutze.

Welche Device ?
Voip-Geräte, Netzwerk Geräte…
Etwas mehr Infos was du bisher hast und was du genau vorhast, können uns und dir das Leben leichter machen :wink:

Du musst aus dem Project ja nicht alles nutzen.
Kannst auch z.b. alles deaktivieren, außer was auch immer du brauchst.
Michael

Mit DEVICE meine ich den Namen der Nebenstelle. Momentan steht da nur eine NR. wie 10, 11 usw.

Die kannst du nicht auslesen.
Nur die Voip-Teilnehmer kannst du aus der Box lesen.
Michael

Hallo Michael,

erst einmal vielen Dank für das wirkliche gelungene Projekt. Und die Arbeit für das Zusammenstellen und der zur Verfügung Stellung deiner Arbeit!!! Installiert und läuft auf Anhieb!

Ich habe allerdings noch eine Frage.

Wie bekomme ich es mit deinem Projekt hin, dass ich in eine Variable die Anrufe in Abwesenheit schreiben lasse? Meine Idee ist nämlich, das mir meine Sonos beim nachhause kommen gleich erzählt, ob es Anrufe in Abwesenheit gibt.

Grüße, Andy

Hi Andy!

Hast du dir mal das neue FritzBox Project von Nall chan angeschaut? Da hat man noch viiiel mehr Infos und hat auch einige Funktionen und Callbacks zur Verfügung, um mit den FritzBox Daten noch eigene Dinge zu machen.

Kann das Projekt am Handy grad nicht verlinken, aber einmal in die Suche eingeben schaffst du bestimmt :slight_smile:

Grüße,
Chris

Hallo Chris,

danke für die schnelle Antwort!! Habe das FritzBox Projekt 1.04 von ihm. Vom 12.10.2015. Es läuft gerade gut, deswegen habe ich das letzte Update nicht installiert. Aber das müsste es doch sein. Oder?

Grüße
Andy

Jupp, das meinte ich :slight_smile: Wenn du dazu eine Frage hast, dann solltest du auch dort im zugehörigen Thread posten und nicht hier :wink:
Sonst denkt man, wie ich grad, dass du die Skripte/den Code von hier verwendest.

Beim FritzBox Project hat man ja ganz andere und mehr Möglichkeiten :cool:

Grüße,
Chris

Oha, sry.

Dachte das wäre der. Hatte ein paar mehr Tab´s offen :smiley:

Danke.

Hallo, ich bin bisher super glücklich diese Möglichkeit gefunden zu haben über Soap die Box ein wenig zu steuern bzw. abfragen zu können. Aktuell scheitere ich noch an dem Download eines Voicefiles.

Aktuell sieht mein Versuch wie folgt aus (Beispielhaft):


$client = $this->getSoapClient('http://192.168.178.1:49000/upnp/control/x_tam', 'urn:dslforum-org:service:X_AVM-DE_TAM:1');

$result = $client->GetMessageList(new SoapParam(0, 'NewIndex'));

preg_match("/sid=(.*)&/ui", $result, $out);
$sid = $out[1];

$url = 'http://192.168.178.1/lua/photo.lua?sid=' . $sid . '&myabfile=' . $file;

Das $file ist bekannt und die URL stimmt so auch die generiert wird.
Allerdings bekommt ich da immer Not Authorized.
Wie muss ich die Anfrage denn richtig stellen? Ich dachte es würde reichen die SID zu übergeben?
Wäre für Hinweise sehr dankbar :slight_smile:

Warum ist das bei dir so kompliziert ?

Oder auch… was willst du machen ? An das AB-File kommen ?

$result enthält die URL mit SID um eine XML-Datei direkt zu laden.

Das XML mit simplexml laden und dann hast du auch schon die URL zum AB-File.

    ["Message"]=>
    array(7) {
      [0]=>
      object(SimpleXMLElement)#6 (10) {
        ["Path"]=>
        string(85) "/download.lua?path=/var/media/ftp/SanDisk-CruzerMicro-01/FRITZ/voicebox/rec/rec.0.015"
      }

Vor Path hängst du noch ‚http://fritz.box:49000‘ (der Port ist wichtig) und du kannst das File laden.
Das XML ist hier auch beschrieben:
Schnittstellen für Entwickler | AVM Deutschland

Für ‚alles‘ andere gibt es sonst einen Befehl auf der Box um sich nur anzumelden und eine SID zu bekommen.


	$service['exceptions'] = false;
	$service['connection_timeout'] = 2;
	$service['default_socket_timeout'] = 2;
	$service['login'] = FB_USER;
	$service['password'] = FB_PASS;
	$service['location'] = "http://".FB_HOST.":49000/upnp/control/deviceconfig";
	$service['uri'] = "urn:dslforum-org:service:DeviceConfig:1";
	$client = new SoapClient(null,$service);
	$sid = $client->{"X_AVM-DE_CreateUrlSID"}();

Michael

Ist nicht wirklich kompliziert. Und ja, ich will eigentlich nur an das File kommen bzw. downloaden.
Ich nutze bisher die SID, die ich beim Abfragen der Tam-Liste bekomme.
Okay, die Variante nur die Anmeldung zu triggern und somit eine SID zu erhalten ist noch besser.

Du schreibst:
Vor Path hängst du noch ‚http://fritz.box:49000‘ (der Port ist wichtig) und du kannst das File laden.

Das würde ja bedeuten:
http://192.168.178.1:49000/download.lua?path=/var/media/ftp/USB-FlashDisk-01/FRITZ/voicebox/rec/rec.0.008

Wo ist denn da die SID? Braucht man die nicht angeben?
Dies bekomme ich aber bei dem Aufruf der vorgenannten URL:


<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:dslforum-org:control-1-0">
<errorCode>606</errorCode>
<errorDescription>Action Not Authorized</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>