FritzBox mit SOAP auslesen und steuern

OK, Fehler gefunden.

Die SID ist schuld. Ich grübel mal an einer Lösung.
Aber jetzt erst mal, die Arbeit ruft.

Gruß
Manfred

Hallo,
funktioniert mit deinem Code bei mir leider immer noch nicht im Firefox 28.

EDIT: Achso, soeben das mit der SID gesehen…

Servus,

Kurzer Zwischenstand: Ein Ende ist in Sicht:
Frei nach dem Motto, „Wenn’s nicht über den Berg geht, dann halt drum herum“ :smiley:

Wird aber noch bis zum Wochenende dauern.
Morgen mal den ganzen Tag mit „heimfliegen“ beschäftigt.
Und dann mal sehen was in 4 Wochen zu Hause alles so liegen geblieben ist :eek:

Alles wird gut,

Gruß
Manfred

jein, das war mir auch schon aufgefallen, aber …

ich teste jetzt seit längerer Zeit mit einer sid, die ich aus einem aktiven FB Fenster manuell kopiert habe. Das Fenster ist geschlossen, den Browser habe ich neu gestartet, aber der folgende Code funktioniert immer noch :eek:.

Update: Wohl nicht lange genug gewartet, nun funzt die sid nicht mehr.

Und genau dieser Code funktioniert einzeln, wenn ich in deinem Script den Code einbaue, dann funktioniert das Abspielen nicht mehr.


<audio id="audio0" >
<source src="http://gateway/lua/photo.lua?sid=...&myabfile=%2Fvar%2Fmedia%2Fftp%2FJetFlash-TS8GJFV10-01%2FFRITZ%2Fvoicebox%2Frec%2Frec.3.000" type="audio/wav">
<p>Dieser Browser unterstützt HTML5 audio nicht</p>
</audio>
<div>
<img src="user/Fritzbox/Start.png" width="30px" height="30px" style="margin:2px 0 0; cursor:pointer" onclick="document.getElementById('audio0').play()" />
<img src="user/Fritzbox/Pause.png" width="30px" height="30px" style="margin:5px 0 0; cursor:pointer" onclick="document.getElementById('audio0').pause()" />
<img src="user/Fritzbox/Begin.png" width="30px" height="30px" style="margin:2px 0 0; cursor:pointer" onclick="document.getElementById('audio0').currentTime = 0;" />
</div>

Im onclick-JavaScript Teil sind die ’ leider notwendig, somit muss dort doch zweimal maskiert werden.

Alternativ müssten die WAVs nach dem Triggern heruntergeladen und lokal selber verwaltet werden. Dann hätten wir aber zusätzlichen Aufwand, um die SOAP Daten mit den lokalen Daten abzugleichen.

Probiert die SID browsermaessig in genug kurzen Intervallen abzufragen… Füllt die in eine Variable und fragt dann immer mit aktueller sid ab. Hab keine FB aber war bei meiner Heizung von Siemens auch so machbar. Meist wird im Browser in einem hidden Element die SID mitgeführt und diese findet man dann im Quelltext und kann den Wert auslesen… Zbsp mit dem Www Parser das emuliert ja den browserzugriff und gibt ne aktuelle sid. Oder ihr kriegt die vielleicht komfortabel über die Soap.

Jep, gibt es extra eine Funktion in der FB um eine SID über SOAP zu erhalten. Wir wollen ja gerade vermeiden die Webseite zu parsen.
Ich vermute eher das die SID schon ungültig ist wenn man im WF auf Play drückt und das Script z.B. vor 10 Minuten die letzte SID in den Links hinterlegt hat.
Michael

Das Problem ist dies, dass die SID an den Client (IP-adresse) gebunden ist.
Meine SID am IPS-Server ist seit einer Woche unverändert die gleiche, da die Sitzung ja nicht ablaufen kann, da ich mit den Abfrage immer im 10min Fenster bleibe.

Es gibt Soap-Clients in Javascript. Hab aber leider noch keinen davon zum Laufen gebracht :frowning:
Kennt sich jemand mit Javascript aus?
Davon habe ich nämlich noch weniger Ahnung als von PHP :wink:

Oder irgendwie mit einem Proxy.

Gruß
Manfred

Ich habe da eine ganz simple Idee.
Ein php-Script im user Verzeichnis, welches die Datei von der FB holt und durchreicht.
Werde das morgen mal testen.
Michael

Hab ich schon versucht. :slight_smile:
Geht leider nicht, da Ausführung auf der Serverseite.

Gruß
Manfred

Doch das wird gehen, habe ich auch schon mit den externen Graphen von PRTG gemacht.
Ich muss nur mal Zeit finden. :frowning:
Michael

Ja die Zeit ist ein anderes Thema. Davon haben wir alle zu wenig :slight_smile:

Hallo zusammen,

vielleicht hab ich das ja überlesen, aber ich habe nix zum Thema https gefunden.
Ich würde gerne wie hier beschriebenhttp://www.ip-symcon.de/forum/threads/25745-FritzBox-mit-SOAP-auslesen-und-steuern?p=235991#post235991 die Liste vom Anrufbeantworter auslesen.
Ich komme auch bis zur Ausagabe von

// Gibt die Url mit SID aus
$result = $client->GetMessageList(new SoapParam(0, 'NewIndex'));
print_r($result);

/*
http://192.168.178.1:49000/tamcalllist.lua?sid=71120ab0f78ba64d&tamindex=0
*/

nur ist das Ergebnis

https://192. ... :49443/tamcalllist.lua?sid=e0c668dbb66a6231&tamindex=0

. Alles danach bleibt leer. Wenn ich das @ im nachfolgenden Befehl weg nehme, dann kommt als Ausgabe:

Warning:  simplexml_load_file(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in D:\IP-Symcon\scripts\30575.ips.php on line 21

Warning:  simplexml_load_file(): I/O warning : failed to load external entity "https://192.16 ....

Was mach ich nun? :confused:
Wie und wo muss ich irgendetwas aktivieren oder deaktivieren?

edit
Nach ein wenig ausprobieren bekomme ich ein Ergebnis, wenn ich das s von HTTPS weg nehme und die Portnummer wie im Beispiel angegeben anpasse.

Gruß
Jens

Ja du hast wohl viel zu SSL überlesen. :wink: Ist regelmäßig Thema im Forum http://www.ip-symcon.de/forum/showthread.php?t=25662
Michael

Öh … ja ne … und weiter? :confused:

Ich möchte doch einfach nur wie im Beispiel angegeben mit

$xml = @simplexml_load_file($result);

die Datei laden. Wenn ich Sys_GetURLConten() nehme, dann funktioniert simplexml ja nicht mehr … und andere nutzen die Scripte doch auch so wie abgebildet!?

Natürlich könnte ich das Ergebnis auswerten und mit str_replace() den Teil austauschen, aber wieso bekomme ich denn überhaupt die Ausgabe mit HTTPS und dem Port 49443 zurück, wenn es augenscheinlich ja auch ohne ssl klappt !?

Gruß
Jens

Frag AVM :slight_smile:
Ich z.B. bekomme Port 49000 also http zurück, dafür aber mit IPv6-Adresse. Eine Logik habe ich da noch nicht gefunden.
Aber das https/SSL über PHP mit der ausgelieferten OpenSSL Version nicht geht ist schon lange bekannt.
Kannst aber auch mit GetUrlContent (ist eine IPS Funktion, darum geht hier SSL) die Datei laden und dann das SimpleXml damit füttern (habe den Befehl jetzt nicht im Kopf).
Michael

Hallo,
ich habe das mit dem Anrufbeantworter anhören mal „abgepinselt“, aber leider kann ich nur sehen, dass die URL richtig ist und dass der Browser (Seamonkey 2.26.1) einen Request an die Fritzbox stellt, aber leider nix zurückkommt.
Wenn ich diese Url direkt im Browser eingebe (auf der Anrufbeantworterseite) springt er auf die Login-Seite und nach PW-Eingabe tut sich nichts mehr. Wenn ich aber auf den Abspielpfeil mit der rechten Maustaste klicke und den Ziel-Link in einem neuen Tab aufmache, bietet er mir an, die WAV abzuspielen und zu speichern. Das mit der Login-Seite sieht schon so aus, als ob er die alten Session cancelt und einen neue aufmacht und das PW verlangt.
Ich bin jetzt nicht der Spezialist für diese Ecke, aber vlt. hilft es dem einen oder anderen, dem Problem auf die Spur zu kommen. Wäre es super, wenn man das zum Laufen bekäme.

Das Problem hatte Manfred oben schon genannt.

Das ist leider nicht ganz so einfach zu regeln. Meine Versuche mit dem direkten Download und lokaler Verwaltung klappen auch nicht, da der Download auch nur die Login-Seite liefert und nicht die WAV. Und das obwohl ich direkt davor einen Login mit SID Erzeugung gemacht habe.

Eventuell wäre der Ansatz über FTP und kopieren vom Stick, dort liegen ja die rec.0.000, ein Ansatz. Dann müsste aber auf DOS-CMD-Ebene die WAV erstellt werden.

Bei mir geht es :slight_smile:
Script kommt heute Nacht, wenn ich das löschen integriert habe.
Michael
PS: Ich habe ein Script im WF-User Verzeichnis welches die Datei (mit aktueller SID) von der FB holt und an den Browser weiterreicht.

Das klingt sehr gut :), ich bin gespannt und kann ab 23:00 testen ;).

Die Idee mit Original-IPS-Buttons und Actionscript in dem die SID erzeugt wird, hatte ich noch nicht probiert.

Hallo Chrissboy,

das hört sich genau so an wie bei mir … schau dir die URL mal genau an. Kommt da evtl. auch eine URL mit vorangestelltem HTTPS an statt HTTP zurück ? Der Port dürfte dann auch kein 49000 sein, sondern 49443 !?

Manni Script mit Abhör und Löschfunktion läuft auch, ich habe dann nur eine Zeile eingefügt.

Nach Zeile:

$anrufliste = $client->GetMessageList(new SoapParam($fritzbox_AB, 'NewIndex'));

folgende Zeile einfügen und die IP an die der Fritzbox anpassen.

$anrufliste = str_replace("https://192.168.....:49443","http://192.168.....:49000",$anrufliste);

edit
Also abhören funzt doch nicht … keine Ahnung warum. Löschen und als gelesen markieren geht aber. :frowning:
Gruß
Jens