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

Moin

Schwierige Zeiten.
Abwarten bleibt da wohl nur.

Hab mir aber schon was gebastelt um wieder auf die Box zu kommen.
...ohne freetz und modfs, letzteres geht wegen DualBoot, sowieso nicht bei mir.

Ansonsten würd ich mir sogar radikal die 6.03i flashen.
Denn die 6.30 für die 7360SL schleppt konsequent alle Fehler der Vorgänger mit.
Die fehlerhaften Funktionen brauch ich nicht. Braucht kein Mensch.
Aber dafür soll ja OpenSSL ein Sicherheitsupdate erfahren haben.
 
Up's hatte mich wohl ein bisschen Falsch ausgedrückt,
es ging nur darum welche Scripte noch auf anderer Hardware Laufen, Rechner usw.
mit Linux / Windows / Mac usw.

;)
 
Wenn die API noch benutzt wird von Leuten, wundert es mich das hier noch keine "Beschwerden" auflaufen.
Vielleicht ist die neue Firmware einfach bei den Nutzern nicht "beliebt".
...das wäre aber nur mal wieder ein Dreh an der Acrylglaskugel.
 
Dann Aktiviere es mal in der Box, danach müsste es auch mit dem Script gehen,
denn wenn es zuvor auf unverschlüsselt steht dann bleibt es auch so.

Danke, du hast recht. Wenn das GWLAN zuvor als verschlüsselt eingestellt war, funktioniert das Ein- und Ausschalten. :D
 
Hi, nach dem Update auf die Firmware 6.30 auf meiner FB 7490 funktionieren bei mir die php Scripte auch nicht mehr.
Ich benutze die Scripte, um zum Zwecke der Heimautomation mit FHEM auf die FB zuzugreifen.
Zum Beispiel Alarmanlage -> Anruf über FB bei unauthorisierter Türöffnung, WLAN "aus/an" bei Ab/Anwesenheit, Guest WLAN "an" wenn fremde Bluetooth Gerräte erkannt werden.

Leider habe ich 'Null' Ahnung von PHP. Hat jemand eine Lösung, wie die PHP scripte umgestrickt werden müssen, damit die wieder mit der Fritz Firmware 6.30 funktionieren?

Danke!
 
Lauf mal ein bisschen zurück hier: fritzbox_tam_on_off_lua.php
fritzbox_guestwlan_on_off.php
fritzbox_led_display_on_off_lua.php
denn das läuft schon mit deiner Firmware ab Version xxx.06.25 oder ?

Und es wäre Hilfreich wenn du deine Scripte wenn es Fritz Api PHP Scripte sind
die nicht mehr gehen hier als Anhang zum reinschauen reinstellst,
mit viel Glück lässt es sich ja vielleicht noch Anpassen.

:confused: ;)

PS: Beispiel hier: Wahl per Lua ab xxx.06.25 mit PHP hier: FbDial_Lua.php/FbDialHangup_Lua.php
 
Zuletzt bearbeitet:
Hi Pikachu,
kleine Korrektur meinerseits; Ich benutze die Labor Version:113.06.35-30896 BETA , mit der neuen Benutzeroberfläche.
Sorry, mea Culpa.

Ich habe dann das fritzbox_guestwlan_on_off.php oben aus deiner Antwort probiert, es sieht so aus das der aktuelle WLAN Guest Status übermittelt wird, aber das GuestWLAN wird weder aus- noch angeschaltet. Die Meldungen sehen so aus:
Wenn das Guest WLAN "AN" ist:
pi@raspberrypi ~/php $ php fritzbox_guestwlan_on_off.php 0
2015-07-22 21:56 ERROR: WLAN guest access status change failed, should be inactive, but is still active.
pi@raspberrypi ~/php $ php fritzbox_guestwlan_on_off.php 1
2015-07-22 22:01 WLAN guest access is now active. WPA-Key is "ABCDEFGH"

Zweites Beispiel, wenn ich das das Guest WLAN "Aus" gemacht habe:
pi@raspberrypi ~/php $ php fritzbox_guestwlan_on_off.php 0
2015-07-22 22:00 WLAN guest access is now inactive.
pi@raspberrypi ~/php $ php fritzbox_guestwlan_on_off.php 1
2015-07-22 21:58 ERROR: WLAN guest access status change failed, should be active, but is still inactive.

Ich benutze die unmodifizierten scripte aus diesem Thread, Seite 1 "Angehängte Dateien
Dateityp: zip fritzbox_api_php_v0.5.0b7.zip (15,8 KB, 2203x aufgerufen)", wobei ich dein fritzbox_guestwlan_on_off.php oben aus deiner Antwort probiert habe.

Gruss Ingolf
 
Ich versuche unter Ubuntu 14.04 und dem dem Api Skript in der Version 0.5.0b7 auf eine KabelBW FB 6340 mit OS 6.04 zuzugreifen um das GuestWLAN zu aktivieren.

Bei im ging es hier: http://www.ip-phone-forum.de/showthread.php?t=196309&p=2104343&viewfull=1#post2104343

Bei mir ging es auch nur mit der FB 7390 05.58, aber nicht mit der FB 7490 06.25.30758
und auch nicht mit der FB 7490 06.35.30804/80896

Was mir bei der FB 7490 06.35.30804/80896 aufgefallen ist dass die Seite nur abgerufen
werden kann wenn WLAN Eingeschaltet ist, ansonsten ist sie nicht vorhanden.

Der Gastzugang taucht bei mir auch nicht im WLan Menü auf wenn Wlan an ist bei der
FB 7490 06.35.30804/80896 somit könnte es ein BUG sein.

Vielleicht kann es mal einer mit der xxx.06.30 Testen wenn es da auch nicht geht dann ist wohl ein Bug oder?

;)
 
Hallo,

ich benutzte meine FB7362SL als Türklingel in dem ich über mein EIB Bussystem einfach eine PHP-skript aufgerufen hatte (fritzbox_api-class + deal einer nummer)
Nun funst es nicht mehr - aktuell ist die FW 6.30 auf der Box.

Was hat sich geändert ?
Gibt es mittlerweile eine andere - einfachere Möglichkeit einen Deal auszulösen (ohne die FB zu modifizieren) ?

Gruß Frank
 
I'd assume, you've used a binary (webcm) so far, which is absent now ... you've to try another opportunity to trigger a dial from your script or you could use a supported intercom system (the list has grown yet).
 
... ich möchte einen deal über den aufruf einer webseite auslösen oder über einen http request.
 
Zieh mal von #329 drei ab da steht ein Test dazu W*** p** L** ;)
 
@dl3ad:
Habe ich ja verstanden ... es ist aber vermutlich trotzdem ein "dial"-Vorgang (englisch: wählen) und kein "deal" (englisch: Handel), was da ausgeführt/abgeschlossen werden soll.

Das bisher dafür verwendbare "webcm" ist nicht mehr Bestandteil der Firmware, es gibt aber noch über eine von AVM veröffentlichte TR-064-Schnittstelle die Möglichkeit, einen automatischen Wählvorgang auszulösen. Das PHP-API hier unterstützt das m.W. aber nur in Ansätzen (ist aber auch "nicht mein Tisch").

Der Unterschied zwischen
dl3ad schrieb:
über den aufruf einer webseite [auslösen] oder über einen http request.
ist mir aber auch nicht so richtig klar und am Ende wäre es sogar sinnvoll, wenn Du hier angeben würdest, welchen HTTP-Request Du bisher dafür verwendet hast.
 
... mit der Fritzbox_api-class mache ich es so:


<?php
$dial = '**614#613'; // set to the number to dial
// init the output message
$message = date('Y-m-d H:i') . ' ';
try
{
// load the fritzbox_api class
require_once(__DIR__ . '/fritzbox_api.class.php');
$fritz = new fritzbox_api();

// update the setting
$formfields = array(
'telcfg:command/Dial' => $dial,
);
$fritz->doPostForm($formfields);
$message .= 'Phone ' . $dial . ' ringed.';
}
catch (Exception $e)
{
$message .= $e->getMessage();
}

// log the result
if ( isset($fritz) && is_object($fritz) && get_class($fritz) == 'fritzbox_api' )
{
$fritz->logMessage($message);
}
else
{
echo($message);
}
$fritz = null; // destroy the object to log out
?>

<audio controls autoplay>
<source src="haustuer.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>


Die webseite wird in meinem EIBPORT aufgerufen spielt einen sound ab und läßt dann zwei telefone klingeln.
 
'telcfg:command/Dial' => $dial
Das dürfte in der PHP-Klasse in einen Aufruf des bereits erwähnten "webcm" münden ... und genau dieser Aufruf ist ab 06.30 eben nicht mehr möglich. Also entweder auf Wählen per Lua-Seite (als GUI-Mimese) umstellen oder "gleich richtig" auf die offiziell dokumentierte Schnittstelle per TR-064 zugreifen. Letzteres hat (vermutlich zwar nur, aber mit höherer Wahrscheinlichkeit als die Lua-Lösung) eine deutlich höhere "HWZ".
 
... was ist "HWZ" ?

gibt es irgendwo ein Beispiel mit der TR-064 zum auslösen eines dial ?

Gruß Frank
 
... was ist "HWZ" ?
Sollte als "Halbwertszeit" verstanden werden ... ein solches Interface genießt bei seiner Veröffentlichung am Beginn auch hohes Interesse, das dann schnell nachläßt und trotzdem nie vollkommen erlahmt. Seine Bedeutung nimmt immer mehr ab, geht aber nie ganz gegen Null. Irgendwann wird so ein "Blinddarm" dann aus Sicherheitsgründen oder wegen nicht mehr zu erbringendem Pflegeaufwand (dafür taugt die gleichnamige Versicherung auch nicht) auf's Altenteil geschoben oder sogar in einer Art "Schnittstellen-Euthanasie" komplett vernichtet - dann ist das Geschrei bei dem verbleibenden Häuflein der Nutzer dieser Relikte trotzdem noch groß ... daher erscheint mir die Analogie zu einer HWZ passend.

gibt es irgendwo ein Beispiel mit der TR-064 zum auslösen eines dial
Keine Ahnung - vermutlich aber eher nicht, weil bisher die wenigsten die offiziell dokumentierten TR-064-Schnittstellen ernst genommen haben, denn "es ging ja bisher auch anders".

Such mal nach jemandem namens "kruemelino", der wollte mal eine allgemeine Klasse dafür schreiben, wenn ich das richtig verstanden habe (und hat das m.W. irgendwo bei GitHub gehostet und veröffentlicht).

Das wäre zwar vermutlich VB.NET, aber dank Mono ist das auch auf *nix-Systemen ja kein Ding der Unmöglichkeit. Vielleicht erbarmt sich ja auch jemand und schreibt eine passende PHP-Klasse ...

Unter .NET-Bedingungen ist jedenfalls der Aufruf von SOAP-Requests eine Sache weniger Zeilen, vermutlich geht das bei PHP/Python/Perl ähnlich, wenn man die passenden Libraries zur SOAP-Unterstützung verwendet - bzw. bei Python und Perl weiß ich das, aber PHP ist nicht meine erste Wahl (nur Notlösung, wenn nichts anderes vorhanden ist) und da müßte ich auch erst suchen.
 
Zuletzt bearbeitet:
Hilfe!
Seit dem Update auf die 06.30 gehen die Scripte zum Ein- und Ausschalten einer Rufumleitung nicht mehr. :-(
Habe mir jetzt den ganzen Abend schon die neuen LUA-Beispiele von Pikachu angeschaut. Kann die Änderungen auch am Beispiel für den Anrufbeantworter nachvollziehen. Aber ich habe noch nicht geblickt wie ich an die neuen "Parameternamen" für die Rufumleitung komme.

Und scheinbar gibt es über die TR-064-Schnittstelle auch keine Möglichkeit Rufumleitungen ein und aus zu schalten.

Könnt ihr mir da irgendwie weiterhelfen?
 
Nach einigen WireShark-Sitzungen, Basteln und Herumprobieren habe ich zumindest eine halbwegs brauchbare Lösung gefunden:
Code:
#!/usr/bin/php -q
<?php
$diversity = 0; // set to the internal ID of the call diversion, the first one has ID 0;

try
{
    // load the fritzbox_api class
    require_once('fritzbox_api.class.php');
    $fritz = new fritzbox_api();

    // init the output message
    $message = date('Y-m-d H:i') . ' ';

    // update the setting
    $formfields = array(
        'getpage' => '/fon_num/rul_list.lua',
        'rul_' . $diversity => 'on',
        'apply' => ''
    );
    $dummy = $fritz->doPostForm($formfields);
}
catch (Exception $e)
{
  $message .= $e->getMessage();
}

// log the results
if ( isset($fritz) && is_object($fritz) && get_class($fritz) == 'fritzbox_api' )
{
  $fritz->logMessage($message);
}
else
{
  echo($message);
}
$fritz = null; // destroy the object to log out
?>
Damit wird die erste Rufumleitung in der Liste (rul_0) eingeschaltet. ABER alle anderen Rufumleitungen werden ausgeschaltet!
Ist zumindest besser als nix ;-)
Perfekt wäre es wenn man erst den Ist-Zustand der Rufumleitungen ermitteln könnte. Beim Beispiel für den Anrufbeantworter und der LED wird das irgendwie mit query.lua gemacht. Aber wo um Himmels willen erfahre ich welche Parameter ich da übergeben muss?:confused:
 
Hi Leute,
LCR läuft jetzt auch wieder auf meiner 7390, mit freetz-trunk hat es nicht geklappt aber mit der stable 2.0 schon.
Ist schon komisch erst funktionierte es immer nur mit der aktuellsten trunk-version und jetzt ab 6.30 mit der stable.
Egal läuft.

Gruß Benne007
 
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.