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

Das Beispielskript für den Gastzugang ist out of date

Ich denke mal in den neueren Versionen von FritzOS haben sich die Namen einiger Formularfelder geändert. So heißt das Feld, welches den Verschlüsselungstypen angibt nicht mehr 'wlan_security' sondern 'sec_mode'. Daraus folgt dass, wenn man das Beispielskript zum aktivieren des Gastzugangs benutzt, immer ein Unverschlüsseltes Netzwerk erzeugt wird. Das ganze ist ziemlich riskant, da einem die debug Ausgabe noch brav anzeigt mit welchem WPA Schlüssel das Netzwerk angeblich gesichert sei.

Ich denke hier wäre mal ein Update notwendig.
Grüße Jakob

Fritzbox 7390 FritzOS 06.30
 
Die neu erschienene Labor-Version für die 7490 (113.06.36-31739) rüstet (zumindest nach der "info.txt") ein Interface zur Abfrage von Rufumleitungen nach:
Verbesserung - TR64-Abfrage für RULs an Fon1/2 gezielt möglich
Noch habe ich keine Ahnung, was das am Ende genau macht (vor allem die Beschränkung auf FON1/2 ist etwas irritierend) ... aber irgendwo in dem neuen Image findet sich dann bestimmt auch eine passende SCPD-Datei.
 
Hallo zusammen,

gibt es ein Script mit dem man die Fritzbox rebooten kann ?
Am besten für eine 7270, FRITZ!OS 06.05.

Danke !

vdrpeter
 
Will man jetzt nur die erste ausschalten einfach das "on" bei rub_0 entfernen:
PHP:
  // update the setting
  $formfields = array(
    'getpage'                             => '/fon_num/rul_list.lua',
    'rub_0'                                => '',
    'rub_1'                               => 'on',
    'rub_2'                               => 'on',
    'rub_3'                               => 'on',
    'apply'                               => '',
  );
Du siehst es ist jetzt nicht so einfach, aber im Prinzip funktioniert es nach etwas experimentieren.

Hallo,

ich habe hiermit ein Problem. Das Einschalten der Umleitung funktioniert erstmal ohne Probleme, allerdings kann ich die dann nicht deaktivieren. Ich habe rub_0 testweise auf '' und auf 'off' gesetzt, aber die Umleitung wird nicht deaktiviert.
Habe ich einen Denkfehler, oder ist die Firmware inzwischen nicht mehr damit kompatible(FW: 6.30).
Danke schonmal im Vorraus.
 
Zuletzt bearbeitet:
Das sind Checkboxen in der Seite und eine nicht angehakte Checkbox taucht im Formular eines POST-Requests gar nicht erst auf, weder mit einem leeren Wert noch mit "off".

EDIT: Was man ggf. auch noch beachten muß - in der Seite sind verschiedene Arten der Rufumleitung gemixt und je nachdem, wie die intern im FRITZ!OS umgesetzt sind, heißen die Checkboxen "rul_x", "rub_x" oder "port_x" ... einfach durch "Abzählen" von oben funktioniert das nun mal nicht bei dieser Seite und das ist alles andere als neu, das war schon relativ lange so.
 
Zuletzt bearbeitet:
Das sind Checkboxen in der Seite und eine nicht angehakte Checkbox taucht im Formular eines POST-Requests gar nicht erst auf, weder mit einem leeren Wert noch mit "off".

Danke für den Tipp. Dementsprechend funktioniert es bei mir mit folgendem Code:
PHP:
// update the setting
  $formfields = array(
    'getpage'                             => '/fon_num/rul_list.lua',
    'apply'                               => '',
  );
  $fritz->doPostForm($formfields);
 
uah - hab gerade meine 7390 auf 06.36-32073 BETA gehoben - und nix geht mehr... scheinen sich haufenweise Links und ggf. auf die Authentisierung geändert zu haben...
Hat sich da schon Jemand reingegraben?
 
Guten Morgen zusammen und ein schönes (Rest)Osterfest noch,

ich habe von Unity-Media nach 1&1 gewechselt und nun statt der 6490 mit OS 6.24 eine 7490 mit 6.51 im Einsatz. Dass mein Script fritzbox_ring+hangon_phone.php nicht mehr funktioniert ist ärgerlich aber wohl nicht zu ändern.

Ich habe verstanden, dass so etwas über TR-064 gelöst werden soll. In der c't 6/2015 S.122-141 wird viel über die FritBox geschrieben. Auch ein paar Beispiele sind dort neben einem Hinweis, dass man bei AVM die möglichen Befehle finden könne, abgedruckt. Leider habe aber nichts von dem bei AVM gefunden. Warscheinlich habe ich nach den falschen Stichworten gesucht.

Hat jemand einen Tipp, wo ich weitere Infos finden kann? Oder hat sich evtl. schon jemand daran versucht mittels TR-068 die Telefone der FB (über **9) klingeln zu lassen?

Ich würde mich freuen, wenn mir jemand weiter helfen würde, damit beim Betätigen der Hausklingel der Besucher durch die klingelnden Telefone im Garten gemeldet würde.

Viele Grüße, herzlichen Dank im Voraus und schönen Feiertag noch

Harald
 
Zuletzt bearbeitet:
Ich habe keines der Scripte mit Fritz!OS 6.5 ausprobiert und habe mangels Zeit und eigenem Bedarf auch nicht vor, das zu tun. Falls das also jemand schon mal ausprobiert hat uns ggf. angepasste Rezepte hat, wäre es sicher von Interesse, die hier auszutauschen.

Grundsätzlich sieht die neue Oberfläche von Fritz!OS 6.5 so aus, als wäre das bisherige Vorgehen auch damit machbar, auch wenn mir die erwähnte TR-064-Variante mittelfristig aussichtsreicher vorkommt. Allerdings ohne, dass ich das auch nur ansatzweise ausprobiert habe. Also auch hier kann ich DK9JH nur beipflichten: Wenn da schon jemand Erfahrungen gemacht hat, wäre es nett, die mit uns zu teilen.

Liebe Grüße,
Gregor
 
Ich habe das mit 6.51 im Einsatz.
Vorhaben war, auf den Mobilteilen zu sehen, wenn Anrufe laufen (auf anderen Geräten).

Das überhaupt ein Anruf läuft (oder endet), bekommt man mit dem Callmonitor raus.
Dazu PHP-Script als Endlosschleife die sich stündlich beendet, je Durchgang ne Sekunde sleep.
Cronjob minütlich und das Script touched in jedem xten Durchgang ne Datei wodurch man merkt, ob es noch läuft.
Dazu wird bei erneutem Scriptstart geprüft: Datei älter 30 Sekunden, dann laufen, sonst beenden.

Wird nun ein Anruf-Anfang oder Ende festgestellt:
Script auf Basis dieser PHP-API. Login-Session klappt direkt.
Per Json erfährt man den aktuellen Boxzustand (URL per Live-HTTP-Headers oder Firebug rausfinden).
Läuft (mindestens) ein Anruf, stehen die Infos dazu im Json. (Inkl Namensauflösung aus Telefonbuch). Nur die Richtung (eingehend/ausgehend) fehlt.
Auf den AVM-Farbmobilteilen wird (je nach eingestelltem Startbildschirm) ein Radiosender dargestellt.
Dann wird bei Anruf einfach der Radiosender entsprechend umbenannt. Das ist im Normalzustand eine Leerstelle, bei laufendem Anruf Gerätename, Richtungspfeil, Externer Name/Nummer. Die Anrufrichtung muss man aus dem Callmonitor-Script mitübergeben.
Wie man den Radiosender umbenennt, bekommt man auch mit Live-HTTP-Headers raus.

Wahlweise kann in $_GET['text'] auf ein Text übergeben werden (aus ner Haussteuerung o.ä.), der dann unabhängig vom Telefonzustand angezeigt wird und bis zur nächsten Telefonänderung erhalten bleibt.

<?php
/**
* Fritz!Box PHP tools CLI script to download the calllist from the Box
*
* Must be called via a command line, shows a help message if called without any or an invalid argument
* v0.3: Changed to download the new csv-file instead of the old xml, which is empty on newer firmwares
* on older firmwares use fritzbox_get_foncallslist_xml.php instead
*
* Check the config file fritzbox.conf.php!
*
* @author Gregor Nathanael Meyer <Gregor [at] der-meyer.de>
* @license http://creativecommons.org/licenses/by-sa/3.0/de/ Creative Commons cc-by-sa
* @version 0.4 2013-01-02
* @package Fritz!Box PHP tools
*/

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').' ';

if(!$_GET['text'])
{
$params = array(
'getpage' => '/data.lua?xhr=1&lang=de&page=overview&type=all&no_sidrenew=&',
);
$calls = $fritz->doGetRequest($params);
$calls = json_decode($calls);
$callcount = count($calls->data->foncalls->activecalls);
print_r($calls->data->foncalls->activecalls);
$calls = $calls->data->foncalls->activecalls[0];

$calldir = '>';
if($_GET['dir'] == 'in') $calldir = '<';

if($callcount == 1 && $calls->display != '')$callstring1 = urlencode(''.trim(preg_replace('/[^0-9]/','',$calls->fonname)).''.$calldir.' '.$calls->display);
elseif($callcount > 1 && $calls->display != '')$callstring1 = urlencode($callcount.' '.trim(preg_replace('/[^0-9]/','',$calls->fonname)).''.$calldir.' '.$calls->display);
else $callstring1 = '';

if($callcount == 1 && $calls->display != '')$callstring2 = urlencode(''.$calldir.''.$calls->display);
elseif($callcount > 1 && $calls->display != '')$callstring2 = urlencode($callcount.''.$calldir.''.$calls->display);
else $callstring2 = '';

file_put_contents('callstring1',$callstring1);

$sendername = ' ';
if($callcount > 0 && $callstring1 != '')$sendername = $callstring1;
//$sendername = 'Antenne'.urlencode(date('H:i:s'));

$params = array(
'getpage' => '/data.lua?xhr=1&lang=de&no_sidrenew=&src_name='.$sendername.'&src_url=http%3A%2F%2Fmp3.webradio.antenne.de%3A80&src_fon_cnt=1&src_fon_cnt_all=6&src_fon_1=on&SrcId=0&newSrc=0&SrcType=ir&btn_save=&oldpage=%2Fdect%2Fsource_edit.lua&',
);
$output = $fritz->doGetRequest($params);
print_r($output);
}
else
{
$sendername = urlencode($_GET['text']);

$params = array(
'getpage' => '/data.lua?xhr=1&lang=de&no_sidrenew=&src_name='.$sendername.'&src_url=http%3A%2F%2Fmp3.webradio.antenne.de%3A80&src_fon_cnt=1&src_fon_cnt_all=6&src_fon_1=on&SrcId=0&newSrc=0&SrcType=ir&btn_save=&oldpage=%2Fdect%2Fsource_edit.lua&',
);
$output = $fritz->doGetRequest($params);
print_r($output);
}

// set a log message
$message .= 'Durch';
}
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
?>

In der firtzapi class muss noch geändert werden:
181 - 189 gegen:
/* if ( strpos($params['getpage'], '.lua') > 0 )
{
$getpage = $params['getpage'] . '?';
unset($params['getpage']);
}
else*/
{
$getpage = ''.$params['getpage'];
unset($params['getpage']);
}
echo $this->config->getItem('fritzbox_url') . $getpage . http_build_query($params)."\n";
 
Zuletzt bearbeitet:
Hallo zusammen,

im fhem-forum hat tupol ein Modul 72_FRITZBOX.pm erstellt und weiter entwickelt, was ich hier erfolgreich genutzt habe, um bei Aktivierung der Haustürklingel meine internen Telefone klingeln zu lassen. Funktioniert hervorragend! Nun kann ich wieder im Garten hören, wenn jemand Einlass begehrt.:dance:

Da bei mir auf der 7490 OS 6.51 die fritzbox_api nicht mehr funktionierte, ist das eine tolle Lösung.

Viele Grüße

Harald
 
FritzBox PHP Api

Hallo, wie aktuell ist das Projekt noch?

Bräuchte eingr Sonderanpassungen und würde die natürlich auch bezahlen.

Wäre super wenn ich eine Info bekommen könnte, dannach würde ich erläutern worum es genau geht.
 
Hallo,
ist das noch Aktuell für eine FB 7490 mit der 6.5x ( Aktuellste Je nach Datum wann gelesen )
ich möchte meine Anrufliste auslesen ...
hat da jemand ein Aktuelles Beispiel ??

lg
 
FB 7490 mit der 6.5x ( Aktuellste Je nach Datum wann gelesen )
Die ist zumindest zum Datum "Heute" (08.07.2016) schon bereits veraltet, denn bereits seit vorgestern (06.07.2016) aktuell ist die: 113.06.60!
 
Zuletzt bearbeitet:
siehe #1 - oder hab ich deine Frage nicht verstanden
 
Hallo und Grüße in die Gemeinde,

die Stadtschwestern möchten auch etwas beitragen:

Für die Fritz!Box 7362 mit FRITZ!OS 06.50 einzelne Rufumleitungen aktivieren/ deaktivieren,
hier der Callee:

Code:
;(require_once(__DIR__ . '/fritzbox_api.class.php'))&(new fritzbox_api())->doPostForm(array_merge(
    array_flip(explode(";",";rul_".implode(";rul_",preg_split('//', $umleitungen,-1,PREG_SPLIT_NO_EMPTY)))),
    array(    'getpage'=>"/fon_num/rul_list.lua",
        'lang'=>"de",
        'xhr'=>"1",
        'no_sidrenew'=>"",
        'apply'=>""
    )))

Einfach in $umleitungen die zu aktivierenden Rufumleitungen aufzählen, alle anderen werden
deaktiviert. Beispiel $umleitungen="012" aktiviert Umleitungen 0, 1 und 2 und deaktiviert
alle anderen. Alle Umleitungen löschen per $umleitungen="".

Damit die Klasse bei uns funktioniert mit lua+remote, haben wir eine hierzu fehlende Anweisung:
Code:
curl_setopt($ch, CURLOPT_PORT, 44122);
hinzugefügt hinter jedem Aufruf von:
Code:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

Jedenfalls lassen sich die Rufumleitungen per externem Webserver so leicht steuern.

Wir realisieren damit beispielsweise eine dynamische Uhrzeiten- und Ereignisbasierte
Rufumleitungsvergabe und bleiben (wie vorgegeben) innerhalb der eigenen
Unternehmenslösung.
 
Zuletzt bearbeitet:
Moin,
ich habe vor, mithilfe eines selbst erstellten Webinterface auf einem Webspace Daten aus der Fritzbox aus zu lesen und wieder zu geben.
Beim aufrufen des beispielhaften Schript fritzbox_tam_on_off.php erhalte ich jedoch folgende Fehlermeldung:
Response of initialization call /login_sid.lua in initSID was not xml-formatted.

Das ganze befindet sich auf meiner Webseite. Also nicht im Lokalen netz mit der Fritzbox.
Der Fernzugriff in der Fritzbox ist aktiviert und die users_conf.php wie folgt bearbeitet:

PHP:
# set to your Fritz!Box IP address or DNS name (defaults to fritz.box), for remote config mode, use the dyndns-name like example.dyndns.org$this->config->setItem('fritzbox_ip', '89.182.194....');
# if needed, enable remote config here$this->config->setItem('enable_remote_config', true);$this->config->setItem('remote_config_user', '[email protected]');$this->config->setItem('remote_config_password', 'meinPasswort');
# set to your Fritz!Box username, if login with username is enabled (will be ignored, when remote config is enabled)$this->config->setItem('username', false);
# set to your Fritz!Box password (defaults to no password, will be ignored, when remote config is enabled)$this->config->setItem('password', false);

Bei der IP Adresse habe ich zu den Zeiten immer meine aktuelle IP-Adresse eingetragen.
Ich probierte es mit mit und ohne Port 49195 dahinter.

Ich hoffe jemand kann mir mit meinem Problem helfen.
:rolleyes:

 
Hi!

Schau mal, ob Dir das in unserem Beitrag vor Deinem Beitrag hilft:

Hallo und Grüße in die Gemeinde,

...

Damit die Klasse bei uns funktioniert mit lua+remote, haben wir eine hierzu fehlende Anweisung:
Code:
curl_setopt($ch, CURLOPT_PORT, 44122);
hinzugefügt hinter jedem Aufruf von:
Code:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


...

Ggf. auf Deinen Port anpassen.
 
Hi,
danke für deine schnelle Antwort. (y)
Leider bringt diese Veränderung am Script nichts :(
Ich bekomme immer noch die selbe Fehlermeldung.

- - - Aktualisiert - - -

Gerade einmal ausprobiert...
Wenn ich das ganze nur auf dem PC mit xampp ausführe,
(Gleiche Datein, nur IP auf 'fritz.box' geändert) scheint es wohl zu funktionieren.

Unbenannt.jpg

- - - Aktualisiert - - -

Von meinem Handy via Mobilem Internet kann ich über die IP auch wunderbar auf das Fritz Webinterface zugreifen. Also kann es nicht an nicht freigegeben Ports etc. liege.
 
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.