+ Antworten
Seite 1 von 15 1 2 3 11 ... LetzteLetzte
Ergebnis 1 bis 10 von 150
  1. #1
    Registriert seit
    Sep 2010
    Ort
    Hessen
    Beiträge
    116

    Standard Funktionierende Scripts für FRITZ!OS 05.50 7390

    Hallo,
    wie es aus den zahlreichen Thread's hervorgeht. Hat AVM einige Änderungen bei der FRITZ!OS 05.50 durchgeführt. Auch ich muss die Abfragen jetzt entsprechend anpassen. Ich habe die Version 2.5 und eine FritzBox 7390 in Betrieb. Ich stelle mal meine angepassten Scripte zur Verfügung um die Suche etwas zu vereinfachen. Über Anregungen/Verbesserungen und eigene funktionierende Scripte würde ich mich und vielleicht noch andere freuen.

    Andere Scripte folgen nach Änderungen. Wen ich dieses Jahr noch dazu komme.

    Abfrage Zeit Zwangstrennung

    PHP-Code:
    <?
    $fritzbox_ip 
    '192.168.178.1';
    $password    'xxxxx';

    $ch curl_init('http://192.168.178.1/login_sid.lua');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    $login curl_exec($ch);
    $session_status_simplexml simplexml_load_string($login);
    if (
    $session_status_simplexml->SID != '0000000000000000')
    {
       
    $SID $session_status_simplexml->SID;
    }
    else
    {
       
    $challenge $session_status_simplexml->Challenge;
       
    $response $challenge '-' md5(mb_convert_encoding($challenge '-' $password"UCS-2LE""UTF-8"));

       
    curl_setopt($chCURLOPT_POSTFIELDS"response={$response}&page=/login_sid.lua");
       
    $sendlogin curl_exec($ch);
       
    $session_status_simplexml simplexml_load_string($sendlogin);

       if (
    $session_status_simplexml->SID != '0000000000000000')
       {
       
    $SID $session_status_simplexml->SID;
       }
       else
       {
          echo 
    "Fehler: Login fehlgeschlagen";
          return;
        }
    }

    curl_close($ch);
    $home file("http://fritz.box/home/home.lua?sid=".$SID);
    print_r($home);


    $tag substr(trim($home[315]), 1079,21); // String ausschneiden 
    echo "Verbunden seit ".$tag;


    SetValue(33223 /*[FritzBox!\Übersichtsseite verbunden seit\Status]*/ "Verbunden seit " $tag);

    ?>




    Abfrage Downstream/Upstream

    PHP-Code:
    <?
    $fritzbox_ip 
    '192.168.178.1';
    $password    'xxxxx';

    $ch curl_init('http://192.168.178.1/login_sid.lua');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    $login curl_exec($ch);
    $session_status_simplexml simplexml_load_string($login);
    if (
    $session_status_simplexml->SID != '0000000000000000')
    {
       
    $SID $session_status_simplexml->SID;
    }
    else
    {
       
    $challenge $session_status_simplexml->Challenge;
       
    $response $challenge '-' md5(mb_convert_encoding($challenge '-' $password"UCS-2LE""UTF-8"));

       
    curl_setopt($chCURLOPT_POSTFIELDS"response={$response}&page=/login_sid.lua");
       
    $sendlogin curl_exec($ch);
       
    $session_status_simplexml simplexml_load_string($sendlogin);

       if (
    $session_status_simplexml->SID != '0000000000000000')
       {
       
    $SID $session_status_simplexml->SID;
       }
       else
       {
          echo 
    "Fehler: Login fehlgeschlagen";
          return;
        }
    }

    curl_close($ch);


    $home file("http://fritz.box/internet/dsl_overview.lua?sid=".$SID);// Seite Auslesen
    print_r($home);




    $Downstream substr(trim($home[288]), 0,12); // String ausschneiden
    //echo $Downstream;
    SetValue(58567 /*[FritzBox!\DSL Anschluss\Datenrate Downstream]*/ $Downstream);



    $Upstream substr(trim($home[291]), 0,12); // String ausschneiden
    //echo $Upstream;
    SetValue(37012 /*[FritzBox!\DSL Anschluss\Datenrate Upstream]*/ ,$Upstream);




    ?>

    Abfrage Anrufliste von hier

    PHP-Code:
    <?
    /*************************************************************************************************/
     /* Konfiguration                                                                                 */
     /*************************************************************************************************/
     // FritzBox / Adresse:
    // Tragen Sie hier den Hostnamen (z.B. Fritz.Box) oder die IP-Adresse (z.B. 192.168.1.1) der
     // Fritzbox ein:
    $fritzbox_Adresse 'fritz.box';

    // FritzBox / Password:
    // Zum auslesen der Anruferliste ein evtl. gesetztes Fritzbox-Kennwort benötigt. Wenn Sie die
     // Fritzbox-GUI mit einem Kennwort gesichert haben (empfohlende Einstellung) dann tragen Sie hier
     // das entsprechende Kennwort ein. Haben Sie kein Kennwort für die GUI tragen Sie bitte einen
     // Leerstring ("") ein:
    $fritzbox_Password 'xxxxx';

    // FritzBox / Filter:
    // Die Fritzbox erfasst alle ein- und ausgehenden Verbindungen. Das können sein:
     // 1 = ankommende Verbindung, die entgegengenommen wurde
    // 2 = ankommende Verbindung, die niemand entgegengenommen hat (sog. verpasster Anruf)
     // 3 = abgehende Verbindung
    // Tragen Sie in das Array die Kennnummern der Verbindungstypen ein, die im WebFront angezeigt
     // werden sollen:
    $liste_Filter = array(4,2,1);

    // Liste / Anzahl:
    // Je nach Platzverhältniss im WebFront passen mehr oder weniger Zeilen in die Anzeige. Sind mehr
     // Zeilen in der Tabelle als Platz im Anzeigebereich vorhanden ist, wird automatisch ein Scroll-
     // balken eingeblendet. Um das zu vermeiden kann die Anzahl der anzuzeigenden Verbindungen limi-
     // tiert werden. Tragen Sie hier einen Wert zwischen 1 und 300 ein (die Fritzbox liefert maximal
     // 300 Einträge zurück):
    $liste_Anzahl 20;

    // Liste / Limit Namen:
    // Sind die Einträge im Feld Namen zu lang für ihre Anzeige, so können Sie diese kürzen lassen.
     // Die Funktion schneidet an der letzten möglichen Wortgrenze. Sie können hier Werte zwischen
     // 0 und n eintragen, wobei 0 für NICHT kürzen steht, jeder andere Wert für kürzen auf n Zeichen:
    $liste_LimitNamen 30;

    // Liste / Filter Nebenstellen:
    // Mit diesem Parameter legen Sie fest, welche Nebenstellen nicht in der Anzeige dargestellt werden
     // sollen (sie werden durch die eigene Rufnummer ersetzt). Dies ist z.B. dann sinnvoll, wenn hinter
     // der Fritzbox eine ISDN-Anlage sitzt und diese in der Fritzbox als solche ohne spezielle MSN
     // eingetragen ist. Dadurch erscheint in der Fritzbox-Anruferliste unter Nebenstelle immer nur der
     // Name, mit dem die Telefonanlage eingetragen ist. Und durch Eintragen dieses Namens in den Konfi-
     // gurationsparameter wird dieser nichtssagende Eintrag die die angerufene MSN ersetzt:
    $liste_FilterNebenstelle = array('ISN Gerät');

    // Suche / Modus:
    // Mit dieser Einstellung legen Sie fest, ob das Skript bei fehlendem Namen evtl. ein öffent-
     // liches Telefonverzeichnis per Invers-Suche befragen soll. Derzeit stehen 3 Telefonverzeichnisse
     // zur Verfügung. Sie können hier folgende Werte eintragen:
    // 0                    Invers-Suche abgeschaltet
    // 1                    Invers-Suche bei DasOertliche.de
    // 2                    Invers-Suche bei KlickTel.de
    // 3                    Invers-Suche bei TelSearch.ch
    $suche_Modus 2;

    // Suche / TelNummerWennNichtGefunden
    // Mit dieser Einstellung legen Sie fest, ob bei nicht erfolgreicher Suche die Telefonnummer
     // im Namensfeld eingetragen oder ob ein vorgegebener, statischer Text dort erscheinen soll.
     // 1                    Es wird die Telefonnummer des Anrufers im Feld Name eingetragen,
     //                      wenn die Inverssuche nicht erfolgreich war.
    // 0                    Es wird der stat. Text Suche/TextTelNummerNichtGefunden eingetragen.
    $suche_TelNummerWennNichtGefunden 0;

    // Suche / TextTelNummerNichtGefunden
    // Mit dieser Einstellung legen Sie den Text fest, der angezeigt werden soll, wenn eine
     // durchgeführte Inverssuche kein Ergebnis geliefert hat. Siehe auch Einstellung des
     // Parametes Suche/TelNummerWennNichtGefunden
    $suche_TextTelNummerNichtGefunden "-Unbekannt-";

    // Suche / Ergebnis Felder:
    // Zu verwendene Ergebnisfelder bei Invers-Suche:
    // Die Inverssuche liefert einen Datensatz mit den folgenden Feldern:
    // Name                 Name des Anrufers
    // Strasse              Strasse des Anrufers, ohne Hausnummer
    // Hausnummer           Hausnummer des Anrufers
    // PLZ                  Postleitzahl des Anrufers
    // Ort                  Ort des Anrufers
    // StrasseHausnummer    Kombifeld, besteht aus Strasse, einem Leerzeichen und Hausnummer
     // PLZOrt               Kombifeld, besteht aus PLZ, einem Leerzeichen und Ort
    // Mit diesem Parameter legen Sie fest, welche/s Feld/er Sie in der Anzeige haben möchten
     // (Achtung: auch hierfür ist die Längenbegrenzung $liste_LimitNamen wirksam):
    $suche_ErgebnisFelder = array('Name');

    // Suche / Feldseparator:
    // Mit dieser Einstellung legen Sie fest, welche/s Zeichen zwischen den Feldern eingefügt werden
     // soll. Voreingestellt ist ein Leerzeichen. Um z.B. eine mehrzeilige Anzeige zu erreichen können
     // Sie den Feldseparator auf CRLF ändern:
    $suche_FeldSeparator ', ';

    // Suche / Treffer Markieren:
    // Mit diesem Parameter legen Sie fest, ob per Invers-Suche gefundene Einträge markiert werden
     // sollen oder nicht. Die folgenden Optionen stehen zur verfügung:
    // 0                    Keine Markierung
    // 1                    Markierung per Klammerstern "(*)" am ANFANG des Eintrags.
     // 2                    Markierung per Klammerstern "(*)" am ENDE des Eintrags.
     // 3                    Markierung per Symbol am ANFANG des Eintrags (Symbol = SEARCHHIT)
     // 4                    Markierung per Symbol am ENDE des Eintrags (Symbol = SEARCHHIT)
     
    $suche_TrefferMarkieren 3;

    // Suche / CacheExpireTime
    // Zur Beschleunigung der Listenerstellung und zur Entlastung der Suchseiten ist in die Such-
     // funktionen ein Caching der Ergebnisse eingebaut. Für jeden erfolgreich ermittelten Eintrag
     // wird eine Datensatz in diesem Suchcache angelegt, der zukünftig sofort das Ergebnis liefert.
     // Damit dieser Cache nicht unendlich groß wird, hat jeder Datensatz eine Ablaufzeit. Danach
     // wird er aus dem Cache wieder entfernt.
    // Dieser Parameter steuert, wie lange gefundene Einträge zu Rufnummern im Cache verbleiben.
     // Die Angabe erfolg in Sekunden, für 24 Stunden ist also 86400 (=24*60*60) einzutragen:
    $suche_cacheExpireTime 86400 /*[Objekt #20864 existiert nicht]*/;

    // Suche / CacheVarID
    // Mit diesem Parameter kann der Cache für mehrere Skripte gemeinsam genutzt werden.
     // Ist dieser Parameter ungleich 0 ist, so wird er als VariablenID aufgefasst und der Cache in
     // der entsprechenden Variable gespeichert. Damit einhergehend wird eine Verriegellung gegen
     // gleichzeitige Zugriffe auf den Cache aktiviert, die mehrere Instanzen des Skripts
     // untereinander im Zugriff synchronisiert. Defaultmäßig ist diese Funktion deaktiviert (d.h.
     // der Parameter ist auf 0 gesetzt:
    $suche_cacheVarID 0;

    // Anzeige / Felder:
    // Zur Anzeige im Webfront wird eine HTML-Tabelle erzeugt. Mit dieser Einstellung legen Sie fest,
     // welche Felder in welcher Reihenfolge in der Tabelle angezeigt werden sollen. Die folgenden
     // Felder stehen ihnen dafür zur Verfügung:
    // 0: Typ               Anzeige des Verbindungstyps. Je nach Typ wird ein entsprechendes Symbol
     //                        angezeigt (1 = CALLIN, 2 = CALLFAIL, 3 = CALLOUT, siehe Anzeige/Symbole)
     // 1: Datum             Datum und Uhrzeit des Anruft
    // 2: Name              Name des Anrufers
    // 3: Rufnummer         Rufnummer des Anrufers
    // 4: Nebenstelle       Die eigene Nebenstelle. Ist dieses Feld leer oder trifft eine der Werte
     //                        aus $keineNebenstelle zu, so wird das Feld "Eigene Rufnummer" verwendet
     // 5: Eigene Rufnummer  Hier erscheint die Multiple Subscriber Number (MSN), welche der Anrufer
     //                        erreichen wollte.
    // 6: Dauer             Hier wird die Dauer des Gesprächs ausgegeben. Die Dauer wird minutengenau
     //                        erfasst und als Stunden:Minuten darstestellt.
    // Tragen Sie in den Parameter die Indexnummern der Felder in der gewünschten Reihenfolge ein, die
     // in der Ergebnistabelle erscheinen sollen:
    $anzeige_Felder = array(012346);

    // Anzeige / Datum Maskieren:
    // Diese Option aktivert eine Ersetzung das Datums, wenn der Eintrag von Heute oder Gestern ist.
     // Somit sind die aktuellen Einträge leicher von älteren Einträgen zu unterscheiden.
     // Folgende Optionen stehen zur verfügung:
    // True                 Einträge mit aktuellem Datum durch "Heute", mit Datum von gestern durch
     //                      "Gestern" ersetzen. Die Uhrzeitanzeige bleibt davon unberühert.
    $anzeige_DatumMaskieren true;

    // Anzeige / Spaltenbreite
    // Mit dieser Option legen Sie die Spaltenbreite der anzuzeigenden Spalten fest. Die Option definiert
     // für jede Spalte die Breite individuell, adressiert über den Feldindex gemäß Option Anzeige/Felder.
    $anzeige_SpaltenBreite = array(
        
    => '50em',
        
    => '410em',
        
    => '450em',
        
    => '225em',
        
    => '225em',
        
    => '75em',
        
    => '100em'
    );

    // Anzeige / Tabellenstyle
    // Mit dieser Option können CSS-Styleangaben für die verschiedenen Tabellenelemente machen.
     // Die Tabelle hat folgenden Aufbau, die Feldkennzeichner stehen in {}-Klammern:
     //    <table style="{T}">
    //     <thead style="{H}">
    //            <tr style="{HR}"><th style="{HFn}">text</th><th style="{HFn}">text</th>...<th style="{HFn}">text</th></tr>
     //     </thead>
    //     <tbody style="{B}">
    //         <tr style="{BRG}"><td style="{DFGn}">daten</td><td style="{DFGn}">daten</td>...<td style="{DFGn}">daten</td></tr>
     //         <tr style="{BRU}"><td style="{DFUn}">daten</td><td style="{DFUn}">daten</td>...<td style="{DFUn}">daten</td></tr>
     //       ...
    //    </tbody>
    // </table>
    // Die gewünschten Styleangaben werden als String im Array hinterlegt, jeweils mit dem
     // entsprechenden Feldkennzeichner. Das (n) im Feldkennzeichner steht für den Feldindex, wie er im
     // Parameter Anzeige/Felder festgelegt ist, d.h. sie legen im Style-Array für jedes Feld ein Style fest,
     // unabhängig davon, wo Sie das entsprechende Feld letztlich anzeigen lassen.
    $anzeige_Styles = array(
        
    // <table>-Tag:
        
    'T'    => 'margin:0 auto; font-size:0.8em;',
        
    // <thead>-Tag:
        
    'H'    => '',
        
    // <tr>-Tag im thead-Bereich:
        
    'HR'   => '',
        
    // <th>-Tag Feld Typ:
        
    'HF0'  => 'width:35px; align:left;',
        
    // <th>-Tag Feld Datum:
        
    'HF1'  => 'width:35px; align:left;',
        
    // <th>-Tag Feld Name:
        
    'HF2'  => 'width:35px; align:left;',
        
    // <th>-Tag Feld Rufnummer:
        
    'HF3'  => 'width:35px; align:left;',
        
    // <th>-Tag Feld Nebenstelle:
        
    'HF4'  => 'width:35px; align:left;',
        
    // <th>-Tag Feld Eigene Rufnummer:
        
    'HF5'  => 'width:35px; align:left;',
        
    // <th>-Tag Feld Dauer:
        
    'HF6'  => 'width:35px; align:left;',
        
    // <tbody>-Tag:
        
    'B'    => '',
        
    // <tr>-Tag:
        
    'BRG'  => 'background-color:#000000; color:ffff00;',
        
    'BRU'  => 'background-color:#000000; color:ffff00;',
        
    // <td>-Tag Feld Typ:
        
    'DFG0' => 'text-align:center;',
        
    'DFU0' => 'text-align:center;',
        
    // <td>-Tag Feld Datum:
        
    'DFG1' => 'text-align:center;',
        
    'DFU1' => 'text-align:center;',
        
    // <td>-Tag Feld Name:
        
    'DFG2' => '',
        
    'DFU2' => '',
        
    // <td>-Tag Feld Rufnummer:
        
    'DFG3' => 'text-align:center;',
        
    'DFU3' => 'text-align:center;',
        
    // <td>-Tag Feld Nebenstelle:
        
    'DFG4' => 'text-align:center;',
        
    'DFU4' => 'text-align:center;',
        
    // <td>-Tag Feld Eigene Rufnummer:
        
    'DFG5' => 'text-align:center;',
        
    'DFU5' => 'text-align:center;',
        
    // <td>-Tag Feld Dauer:
        
    'DFG6' => 'text-align:center;',
        
    'DFU6' => 'text-align:center;'
        
    // ^- Der Buchstabe "G" steht für gerade, "U" für ungerade. Die Zählung mit 0, d.h. mit gerade.
     
    );

    // Anzeige / Symbole:
    // Bei der Anzeige im WebFront kommen 4 verschiedene Symbole zum Einsatz. Mit diesem Parameter
     // legen Sie fest, welches Symbol für welchen Zweck verwendung finden soll. Sie können alle
     // Bilddateien angeben die der Browser anzeigen kann. Achten Sie darauf, das die Symbole eine
     // angemessene Größe haben, da der Browser die Symbole mit Originalabmessung anzeigt.
     // Die Symbole und ihre Bedeutung sind:
    // CALLIN               Dieses Symbol wird in der Spalte Typ angezeigt, wenn ein eingehender Anruf
     //                        angenommen wurde (d.h. ein Gespräch ist zustande gekommen)
     // CALLFAIL             Dieses Symbol wird in der Spalte Typ angezeigt, wenn ein eingehender oder
     //                        ausgehender Anruf NICHT angenommen wurde (d.h. es hat geklingelt und
     //                        NIEMAND hat abgehoben)
    // CALLOUT              Dieses Symbol wird in der SPalte Typ angezeigt für alle Verbindungen, die
     //                        ausgehend sind (d.h. es wurde jemand angerufen und der jenige hat
     //                        abgehoben)
    // SEARCHHIT            Dieses Symbol wird am Anfang oder am Ende der Spalte Name angezeigt, wenn
     //                       der Eintrag per Invers-Suche ermittelt wurde und Markierung aktiviert ist
     
    $anzeige_Symbole = array(
        
    'CALLIN'    => '/user/fritz/Callin.png',
        
    'CALLFAIL'  => '/user/fritz/Callinfailed.png',
        
    'CALLOUT'   => '/user/fritz/Callout.png',
        
    'SEARCHHIT' => 'suche.png'
    );

    // Anzeige / Symbolgrösse
    // Dieser Parameter legt die Anzeigegröße für alle Symbole einheitlich fest. Geben Sie einen
     // beliebigen Pixel-Wert an, welcher für die Attribute Width und Height eingetragen wird:
    $anzeige_Symbolgroesse 26;

    // Anzeige / Symbolstyle
    // Mit diesem Parameter können Sie für jedes der Symbole weitere CSS-Styles festlegen, die in
     // die Tabelle übernommen werden sollen. Sie können je Symboltyp (siehe Anzeige/Symbole)
     // individuelle Angaben machen.
    $anzeige_SymbolStyle = array(
        
    'CALLIN'    => 'margin:1px 0 0;',
        
    'CALLFAIL'  => 'margin:1px 0 0;',
        
    'CALLOUT'   => 'margin:1px 0 0;',
        
    'SEARCHHIT' => 'margin:1px 0 0;'
    );

    // Sonstiges / LogMode:
    // Mit dieser Option stellt am ein, aus welche Art und Weise Logging-Meldungen vom Skript
     // erzeugt werden. Es werden derzeit 2 Varianten unterstützt:
    // 0                    Keine Logmeldungen erzeugen
    // 1                    Logmeldungen via IPS_LogMessage (default)
    // 2                    Logmeldungen via IPSLogger (ACHTUNG: IPS-Library mit IPSLogger muss
     //                      installiert sein um diese Funktion nutzen zu können).
    $sonstige_LogMode 1;

    /*************************************************************************************************/
     /* Ab hier nichts mehr ändern                                                                    */
     /*************************************************************************************************/

    if ($sonstige_LogMode == 2) {
        
    IPSUtils_Include ("IPSLogger.inc.php""IPSLibrary::app::core::IPSLogger");
    }

    define('CRLF'"\r\n"true);
    define('CR',   "\r"true);
    define('LF',   "\n"true);
    define('TAB',  "\t"true);

    // Loglevel für Meldungen
    define('FATAL'0true);
    define('ERROR'1true);
    define('WARNING'2true);
    define('NOTIFICATION'3true);
    define('INFORMATION'4true);
    define('DEBUG'5true);
    define('COMMUNICATION'6true);
    define('TRACE'7true);
    define('TEST'8true);

    $object IPS_GetObject($IPS_SELF);
    $parentID $object['ParentID'];

    //Installer
    if ($IPS_SENDER == 'Execute') {
        
    IPS_SetHidden($IPS_SELFtrue);
        
    IPS_SetName($IPS_SELF'Auslese-Skript');

        
    $parentObject IPS_GetObject($parentID);
        if (
    $parentObject['ObjectType'] !== 1) {
        
    $instanceID IPS_CreateInstance('{485D0419-BE97-4548-AA9C-C083EB82E61E}');
            
    IPS_SetParent($instanceID$parentID);
            
    $parentID $instanceID;
            
    IPS_SetParent($IPS_SELF$parentID);
            
    IPS_SetName($instanceID'Anruferliste');
        }
        
    IPS_SetScriptTimer($IPS_SELF300);
    }

    // Adresse der Fritzbox-GUI in Variable ablegen (wird später öfters verwendet)
    $fritzgui 'http://' $fritzbox_Adresse '/cgi-bin/webcm';

    // Step 1 - Login in die Fritzbox

    $ch curl_init('http://'.$fritzbox_Adresse.'/login_sid.lua');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    $login curl_exec($ch);

    $session_status_simplexml simplexml_load_string($login);


    if (
    $session_status_simplexml->SID != '0000000000000000')
    {
       
    $SID $session_status_simplexml->SID;
    }
    else
    {
       
    $challenge $session_status_simplexml->Challenge;
       
    $response $challenge '-' md5(mb_convert_encoding($challenge '-' $fritzbox_Password"UCS-2LE""UTF-8"));

       
    curl_setopt($chCURLOPT_POSTFIELDS"response={$response}&page=/login_sid.lua");
       
    $sendlogin curl_exec($ch);
       
    curl_close($ch);
       
    $session_status_simplexml simplexml_load_string($sendlogin);

       if (
    $session_status_simplexml->SID != '0000000000000000')
       {
       
    $SID $session_status_simplexml->SID;
       }
       else
       {
          echo 
    "Fehler: Login fehlgeschlagen";
          return;
        }
    }

    //Anrufliste aktualisieren
    $postdata http_build_query(array(
        
    'getpage' => '../html/de/menus/menu2.html','sid' => $SID,
       
    'var:menu' => 'home''var:pagename' => 'foncalls'
    ));
    $opts = array('http' => array(
        
    'method'  => 'POST',
        
    'header'  => 'Content-Length: '.strlen($postdata).CRLF.'Content-Type: application/x-www-form-urlencoded',
         
    'content' => $postdata
    ));

    $context    stream_context_create($opts);
    $getnewlist file_get_contents($fritzguifalse$context);

    //Anrufliste abholen

    $postdata http_build_query(array(
        
    'getpage' => '../FRITZ!Box_Anrufliste.csv',
        
    'sid' => $SID
    ));
    $opts = array('http' => array(
        
    'method'  => 'POST',
        
    'header'  => 'Content-Length: '.strlen($postdata).CRLF.'Content-Type: application/x-www-form-urlencoded',
         
    'content' => $postdata
    ));

    $context    stream_context_create($opts);
    $URL "http://".$fritzbox_Adresse."/fon_num/foncalls_list.lua?sid=".$SID."&csv=";
    $anrufliste utf8_decode(file_get_contents($URLfalse$context));
    $anrufliste explode(LF$anrufliste);
    $felder = array('Typ''Datum''Name''Rufnummer''Nebenstelle''Eigene Rufnummer''Dauer');
    print_r($felder);
    // Kopf der Tabelle erzeugen
    $str  "<table bgcolor='#000000'><body scroll=no><body bgcolor='#000000'><table style=".$anzeige_Styles['T'].'">'.CRLF;
    $str .= '<colgroup>'.CRLF;
    foreach(
    $anzeige_Felder as $feldIndex) {
        
    $str .= '<col width="'.$anzeige_SpaltenBreite[$feldIndex].'" />'.CRLF;
    }
    $str .= '</colgroup>'.CRLF;
    $str .= '<thead style="'.$anzeige_Styles['H'].'">'.CRLF;
    $str .= '<tr style="'.$anzeige_Styles['HR'].'">';
    foreach(
    $anzeige_Felder as $feldIndex) {
        
    $str .= '<th style="color:ffff00; '.$anzeige_Styles['HF'.$feldIndex].'">'.$felder[$feldIndex].'</th>';
     }
    $str .= '</tr>'.CRLF;
    $str .= '</thead>'.CRLF;
    $str .= '<tbody style="'.$anzeige_Styles['B'].'">'.CRLF;
    $pos 0;
    $search_marker false;
    $searchFailed = array();
                            
    // Liste aller in diesem Lauf bereits erfolglos gesuchter Nummern

    Echo count($anrufliste);
     for(
    $i 2$i <= count($anrufliste) - 2$i++) {
        
    set_time_limit(30);
        
    $eintrag explode(';'$anrufliste[$i]);

        
    // Daten des aktuellen Eintrags überarbeiten und anschließend Datenzeile erstellen.

        // 1.) Unbekannte Anrufer im Internet suchen und Anzeigenamen kürzen
        
    if($eintrag[2] == '') {
           if (
    $suche_Modus == 0) {
              
    $eintrag[2] = '-Unbekannt-';
            } else {
               if (
    in_array($eintrag[3], $searchFailed)) {
                } else {
                    
    $result TelSuche($eintrag[3], $suche_Modus);
                }
                if (
    $result == false) {
                   
    $searchFailed[] = $eintrag[3];
                   
    $eintrag[2] = ($suche_TelNummerWennNichtGefunden == ?
                                        
    $eintrag[3] : $suche_TextTelNummerNichtGefunden);
                 } else {
                   
    $search_marker true;
                   
    $ersterEintrag true;        // Kennung für ggf. erforderliches Symbolkennzeichen
                    
    foreach($suche_ErgebnisFelder as $feldName) {
                        
    $eintrag[2] .= ($ersterEintrag '' $suche_FeldSeparator) . $result[$feldName];
                         
    $ersterEintrag false;
                    }
                }
            }
        }
        
    // Abschließend wird JEDER Eintrag noch auf Länge geschnitten
        
    $eintrag[2] = TextAbschneiden($eintrag[2], $liste_LimitNamen);

        
    // 2.) Nebenstelle mit Eigene Rufnummer ersetzen wenn leer oder Treffer in liste_FilterNebenstelle
         
    if(strlen($eintrag[4]) == or in_array($eintrag[4], $liste_FilterNebenstelle) ==  true) {
             
    $eintrag[4] = $eintrag[5];
        }

        
    // 3.) "Keine Nummer" für leere Einträge bei Anrufernummer
        
    if(strlen($eintrag[3]) == 0) {
            
    $eintrag[3] = 'Keine Nummer';
        }

        
    // 4.) Heute und Gestern ersetzen falls Funktion aktiviert
        
    if ($anzeige_DatumMaskieren) {
           
    $parts   preg_split('/[ .:]/'$eintrag[1]);
            
    $datum   mktime(001, (int)$parts[1], (int)$parts[0], (int)$parts[2]);
            
    $heute   mktime(000);
           
    $gestern $heute 86400;
            if (
    $datum $heute) {
                
    $eintrag[1] = 'Heute -  ';
            } elseif (
    $datum $gestern) {
               
    $eintrag[1] = 'Gestern - ';
            } else {
                
    $eintrag[1] = date('d.m.y '$datum);
            }
            
    $eintrag[1] .= $parts[3].':'.$parts[4];
        }

        
    $caller $eintrag[0];
        switch(
    $caller) {
             case 
    4:  $eintrag[0] = '<img src="'.$anzeige_Symbole['CALLOUT'].'" width="'.$anzeige_Symbolgroesse.'px" height="'.$anzeige_Symbolgroesse.'px" style="'.$anzeige_SymbolStyle['CALLIN'].'">'; break;
             case 
    2:  $eintrag[0] = '<img src="'.$anzeige_Symbole['CALLFAIL'].'" width="'.$anzeige_Symbolgroesse.'px" height="'.$anzeige_Symbolgroesse.'px" style="'.$anzeige_SymbolStyle['CALLFAIL'].'">'; break;
             case 
    1:  $eintrag[0] = '<img src="'.$anzeige_Symbole['CALLIN'].'" width="'.$anzeige_Symbolgroesse.'px" height="'.$anzeige_Symbolgroesse.'px" style="'.$anzeige_SymbolStyle['CALLOUT'].'">'; break;
             default: 
    $eintrag[0] = '';
        }
        
    // Falls ein Suchsymbol benötigt wird
        
    if ($search_marker) {
           
    $logo '<img src="'.$anzeige_Symbole['SEARCHHIT'].'" width="'.$anzeige_Symbolgroesse.'px" height="'.$anzeige_Symbolgroesse.'px" style="'.$anzeige_SymbolStyle['SEARCHHIT'].'">';
             switch(
    $suche_TrefferMarkieren) {
                case 
    0: break;
                case 
    1$eintrag[2] = '(*)'.$eintrag[2]; break;
                case 
    2$eintrag[2] = $eintrag[2].'(*)'; break;
                case 
    3$eintrag[2] = $logo.' '.$eintrag[2]; break;
                case 
    4$eintrag[2] = $eintrag[2].' '.$logo; break;
            }
            
    $search_marker false;    // Die Markierung zurücksetzen
        
    }

        
    // Die Datenzeile zum aktuellen Eintrag erstellen, WENN der Eintragtyp auch angezeigt werden soll
         
    if(in_array($caller$liste_Filter)) {
            
    $str .= '<tr style="'.$anzeige_Styles['BR'.($pos 'U':'G')].'">';
            foreach(
    $anzeige_Felder as $feldIndex) {
                
    $str .= '<td style="'.$anzeige_Styles['DF'.($pos 'U':'G').$feldIndex].'">'.$eintrag[$feldIndex].'</td>';
             }
            
    $str .= '</tr>'.CRLF;
            
    $pos++;
        }

        if(
    $pos >= $liste_Anzahl) {
            break;
        }
    }
    $str .= '</tbody>'.CRLF;
    $str .= '</table>'.CRLF;

    // ErgebnisListe in Content-Variable speichern
    $vid CreateVariableByName($parentID'Content'3);
    IPS_SetIcon($vid'speaker');
    IPS_SetVariableCustomProfile($vid'~HTMLBox');
    SetValue($vid$str);



    // Von der FritzBox-GUI abmelden
    $postdata http_build_query(array(
        
    'getpage' => '../html/de/menus/menu2.html''sid' => $SID,
        
    'security:command/logout' => 'logout'
    ));
    $opts = array('http' => array(
        
    'method'  => 'POST',
        
    'header'  => 'Content-Length: '.strlen($postdata).CRLF.'Content-Type: application/x-www-form-urlencoded',
         
    'content' => $postdata
    ));

    $context  stream_context_create($opts);
    $logout file_get_contents($fritzguifalse$context);


    function 
    CreateVariableByName($id$name$type) {
        global 
    $IPS_SELF;
        
    $vid = @IPS_GetVariableIDByName($name$id);
        if(
    $vid === false) {
            
    $vid IPS_CreateVariable($type);
            
    IPS_SetParent($vid$id);
            
    IPS_SetName($vid$name);
            
    IPS_SetInfo($vid"This variable was created by script #$IPS_SELF");
        }
        return 
    $vid;
    }

    function 
    TextAbschneiden($Text$Laenge) {
        if (
    $Laenge == 0) {
            return 
    $Text;
        } else {

            
    $GekuerzterText substr($Text0strpos(wordwrap($Text$Laenge-1'*!U-M-B-R-U-C-H*'),
                 
    '*!U-M-B-R-U-C-H*'));

            if(
    $GekuerzterText) {
                return 
    $GekuerzterText;
            } else {
                return 
    $Text;
            }
        }
    }

    // Führt eine Cache-unterstützte Suche nach der Rufnummer durch
    function TelSuche($Rufnummer$modus) {
        global 
    $parentID$suche_cacheExpireTime$suche_cacheVarID;

        
    // Daten aus dem Suchcache laden
        
    $cacheData GetCacheData();

        
    // Ergebnisrecord mit false vorbelegen
        
    $record false;

        
    // Suchcache checken, ob ein Eintrag passend zur Rufnummer vorhanden ist
        
    if (isset($cacheData[$Rufnummer])) {
            
    // Treffer im Cache, Daten holen und rück zum Aufrufer springen
            
    $record $cacheData[$Rufnummer]['Data'];
        }

        
    // Wenn im Cache kein Treffer gefunden wurde, eine Websuchmaschine befragen
        
    if ($record === false) {
            switch (
    $modus) {
                case 
    1$record QueryKlickTelDe($Rufnummer); break;
                case 
    2$record QueryDasOertlicheDe($Rufnummer); break;
                case 
    3$record QueryTelSearchCh($Rufnummer); break;
            }

            
    // Wenn wir jetzt einen Treffer haben, muss der noch in den Cache...
            
    if ($record !== false) {
               
    AddRecordToCache($Rufnummer$record);
            }
        }

        
    // So, jetzt sind wird fertig, zurück zum Aufrufer...
        
    return $record;
    }

    // Liefert die aktuellen Daten aus dem Cache als Array an den Aufrufer
    function GetCacheData() {
        global 
    $suche_cacheVarID$parentID;

        
    $globalCache false;
        
    // ID der Cachevariable ermitteln
        
    if ($suche_cacheVarID == 0) {
           
    // Wir arbeiten mit einem eigenen Cache
           
    $varID CreateVariableByName($parentID'search_cache'3);
        } else {
            
    $globalCache true;
           
    $varID $suche_cacheVarID;
        }

        
    // Wenn wir mit globalem Cache arbeiten müssen wir jetzt ein Lock holen
        
    if ($globalCache) {
            if (!
    IPS_SemaphoreEnter('FB_cache_lock'2000)) {
               return 
    false;  // Und ende... beim nächsten mal mehr Glück...
            
    }
        }

        
    // Die Cache-Daten aus der Variable holen und deserialisieren
        
    $data GetValue($varID);

        if (
    $globalCache) {
            
    // Jetzt noch die Semaphore zurückgeben
            
    IPS_SemaphoreLeave('FB_cache_lock');
        }

        
    // und deserialisieren
        
    if (($result = @unserialize($data)) === FALSE) {
           
    $result = array();
        }

        
    // fertig, das Array mit den cache-daten an den Aufrufer zurückliefern
        
    return $result;
    }

    function 
    AddRecordToCache($Rufnummer$record) {
        global 
    $suche_cacheVarID$suche_cacheExpireTime$parentID;

        
    $globalCache false;

        
    // ID der Cachevariable ermitteln
        
    if ($suche_cacheVarID == 0) {
            
    // Wir arbeiten mit einem eigenen Cache
            
    $varID CreateVariableByName($parentID'search_cache'3);
        } else {
            
    $globalCache true;
            
    $varID $suche_cacheVarID;
        }

        
    // Wenn wir mit globalem Cache arbeiten müssen wir jetzt ein Lock holen
        
    if ($globalCache) {
            if (!
    IPS_SemaphoreEnter('FB_cache_lock'2000)) {
               return 
    false;  // Und ende... beim nächsten mal mehr Glück...
            
    }
        }

        
    // Die Cache-Daten aus der Variable holen und deserialisieren
        
    $data GetValue($varID);
        if ((
    $cache = @unserialize($data)) === FALSE) {
           
    $cache = array();
        }

        
    // Jetzt den neuen Eintrag in $data vornehmen
        
    $cache[$Rufnummer] = array('Expire' => (time() + $suche_cacheExpireTime), 'Data' => $record);

        
    // Das ganze wieder serialisieren und in die Variable zurückschreiben
        
    $data serialize($cache);
        
    SetValue($varID$data);

        if (
    $globalCache) {
            
    // Jetzt noch die Semaphore zurückgeben
            
    IPS_SemaphoreLeave('FB_cache_lock');
        }
        return 
    true;
    }

    function 
    QueryDasOertlicheDe($Rufnummer) {
        
    $record false;
        
    $pageurl "http://www.dasoertliche.de/Controller?form_name=search_inv&ph=$Rufnummer";
         
    $wsdata = @Sys_GetURLContent($pageurl);
        if (
    $wsdata === false) {
            
    WriteLogMessage(WARNING'Datei: '.__file__.' Zeile: '.__line__'Timeout bei Abruf der Webseite '.$pageurl);
         } else {
            
    $data str_replace(array(CRLFLF), ' '$wsdata);
            if(
    preg_match('/getItemData(.*)/'$data$result)) {
                
    $result explode("', '",$result[1]);
                
    $record = array(
                    
    'Name'              => html_entity_decode(trim($result[5])),
                    
    'Strasse'           => html_entity_decode(trim($result[6])),
                    
    'Hausnummer'        => html_entity_decode(trim($result[7])),
                    
    'PLZ'               => html_entity_decode(trim($result[3])),
                    
    'Ort'               => html_entity_decode(trim($result[4])),
                    
    'StrasseHausnummer' => html_entity_decode(trim($result[6]).' '.trim($result[7])),
                     
    'PLZOrt'            => html_entity_decode(trim($result[3]).' '.trim($result[4]))
                 );
            }
        }
        return 
    $record;
    }

    function 
    QueryKlickTelDe($Rufnummer) {
        
    $record false;
        
    $pageurl "http://www.klicktel.de/inverssuche/index/search?".
                      
    "method=searchSimple&_dvform_posted=1&phoneNumber=$Rufnummer";
         
    $wsdata = @Sys_GetURLContent($pageurl);
        if (
    $wsdata === false) {
           
    WriteLogMessage(WARNING'Datei: '.__file__.' Zeile: '.__line__'Timeout bei Abruf der Webseite '.$pageurl);
         } else {
            
    $data str_replace(array(CRLFLF), ' '$wsdata);
            if (
    preg_match('/<strong>(.*)<\/strong>.*<p class="data track">(.*?)([0-9][0-9A-Za-z].*?)'.
                 
    '<br \/>\s*?([0-9]{5})\s*?(.*?)<\/p>/'$data$result)) {
                
    $record = array(
                    
    'Name'              => html_entity_decode(trim($result[1])),
                    
    'Strasse'           => html_entity_decode(trim($result[2])),
                    
    'Hausnummer'        => html_entity_decode(trim($result[3])),
                    
    'PLZ'               => html_entity_decode(trim($result[4])),
                    
    'Ort'               => html_entity_decode(trim($result[5])),
                    
    'StrasseHausnummer' => html_entity_decode(trim($result[2]).' '.trim($result[3])),
                     
    'PLZOrt'            => html_entity_decode(trim($result[4]).' '.trim($result[5]))
                 );
            }
        }
        return 
    $record;
    }

    function 
    QueryTelSearchCh($Rufnummer) {
        
    $record false;
        
    $pageurl "http://tel.search.ch/?tel=$Rufnummer";
        
    $wsdata = @Sys_GetURLContent($pageurl);
        if (
    $wsdata === false) {
           
    WriteLogMessage(WARNING'Datei: '.__file__.' Zeile: '.__line__'Timeout bei Abruf der Webseite '.$pageurl);
         } else {
            
    $data str_replace(array(CRLFLF), ' '$wsdata);
            if (
    preg_match('/class="fn">(.*?)<\/a>.*class="adrgroup street-address">(.*) ([0-9]+[0-9a-zA-Z]*)'.
                            
    '<\/span>.*class="postal-code">(.*?)<\/span>.*class="locality">(.*?)<\/span>/'$data$result)) {
                 
    $record = array(
                    
    'Name'              => html_entity_decode(trim($result[1])),
                    
    'Strasse'           => html_entity_decode(trim($result[2])),
                    
    'Hausnummer'        => html_entity_decode(trim($result[3])),
                    
    'PLZ'               => html_entity_decode(trim($result[4])),
                    
    'Ort'               => html_entity_decode(trim($result[5])),
                    
    'StrasseHausnummer' => html_entity_decode(trim($result[2]).' '.trim($result[3])),
                     
    'PLZOrt'            => html_entity_decode(trim($result[4]).' '.trim($result[5]))
                 );
            }
        }
        return 
    $record;
    }





    // Erzeugt je nach Einstellung eine Meldung im IPS Logbuch oder via IPSLogger (sonstige/LogMode)
     
    function WriteLogMessage($level$location$information) {
        global 
    $sonstige_LogMode;

        
    $logLevel = array(
            
    'Fatal:',            // LogLevel=0: Schwerwiegende Fehler, führt normalerweise zu einem kompletten
                                     //   Programmabbruch
            
    'Error:',            // LogLevel=1: 'Normale' Fehler
            
    'Warning:',            // LogLevel=2: Warnungen
            
    'Notification:',    // LogLevel=3: Notifizierung, wird benutzt um sich über bestimmte Ereignisse im
                                     //   System informieren zu lassen (Beschattung wurde aktiviert, oder Rasenbewässerung
                                     //   gestartet)
            
    'Information:',    // LogLevel=4: Informationsmeldungen, zur Protokollierung von Schaltvorgängen usw.
             
    'Debug:',            // LogLevel=5: Debug Meldungen
            
    'Communication:',    // LogLevel=6: Protokollierung von Kommunikations Instanzen (Senden/Empfangen über
                                     //   RS232, Sockets, ...)
            
    'Trace:',            // LogLevel=7: Sehr detailierte Meldungen, um diverse Ablauffehler zu finden
             
    'Test:'                // LogLevel=8: Test Meldungen, verwende ich nur temporär um Fehler zu finden, man kann
                                     //   nach diesen Meldungen suchen und sie nach finden des Fehlerers wieder entfernen
         
    );

        switch (
    $sonstige_LogMode) {
           case 
    1// Logging via IPS_LogMessage
              
    IPS_LogMessage($location$logLevel[$level].' '.$information);
          break;
            case 
    2// Logging via IPSLogger
               
    switch ($level) {
                  case 
    0IPSLogger_Fat($location$information); break;
                  case 
    1IPSLogger_Err($location$information); break;
                  case 
    2IPSLogger_Wrn($location$information); break;
                  case 
    3IPSLogger_Not($location$information); break;
                  case 
    4IPSLogger_Inf($location$information); break;
                  case 
    5IPSLogger_Dbg($location$information); break;
                  case 
    6IPSLogger_Com($location$information); break;
                  case 
    7IPSLogger_Trc($location$information); break;
                  case 
    8IPSLogger_Tst($location$information); break;
                }
            break;
        }
    }
    ?>
    Gruß Eddi
    -------------------------
    Zotac ZBOX HD-ID11 OCZ SSD 32GB 2GB RAM - LG L1730SF Touch - Win7 Ultimate - LAN Adapter - V 2.5 #2237

  2. #2
    Registriert seit
    Jun 2010
    Ort
    Nähe Trier
    Beiträge
    379

    Standard WLAN ein/ausschalten

    Aus dem selben Thread habe ich auch das Script zum schalten des Wlan 2.4 Ghz.
    Wenn Zeile 44 dann folgendermassen abgeändert wird, kann auch Wlan 5 Ghz geschaltet werden.
    PHP-Code:
    curl_setopt($chCURLOPT_POSTFIELDS"sid={$SID}&wlan:settings/ap_enabled_scnd={$wert}"); 
    Grüße, Jürgen
    IPS V5.3 (Docker)
    Homematic piVCCU, versch. Sensoren mit Arduino
    Davis Vantage Pro LAN

  3. #3
    Registriert seit
    Jan 2012
    Ort
    Limburgerhof (RLP)
    Beiträge
    306

    Standard Gastzugang Ein/Aus

    Zitat Zitat von immergut Beitrag anzeigen
    Aus dem selben Thread habe ich auch das Script zum schalten des Wlan 2.4 Ghz.
    Grüße, Jürgen
    Hier auch mal die passende änderung um den Wlan Gastzugang zu schalten.
    PHP-Code:
    curl_setopt($chCURLOPT_POSTFIELDS"sid={$SID}&wlan:settings/guest_ap_enabled={$wert}"); 
    Grüße Daniel
    Server: IPS 5.n | IPSView | Ubuntu 18.04LTS | ESXI 6.7 | Xeon E3-1245V2 | 16GB ECC Ram
    Hardware: CCU2 | WAGO 889 | KNX | 1wire | Unifi
    Media: PLEX | Denon-AVR | ChromeCast | Squeezebox

  4. #4
    Registriert seit
    Jan 2011
    Beiträge
    22

    Standard Problem

    Hi,
    ich habe das Script zum Auslesen der Anruferliste ausprobieren wollen, bekomme aber immer bei Zeile 339:
    Code:
    $response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $password, "UCS-2LE", "UTF-8"));
    eine Fehlermeldung:
    Code:
    Fatal error:  Call to undefined function mb_convert_encoding() in [Informelles\Anruferliste\Auslese-Skript] on line 339
    Ich bin jetzt nicht so der Experte, aber hat jemand einen Tipp, woran das liegen kann?
    VG

  5. #5
    Registriert seit
    Dec 2009
    Ort
    Berlin
    Beiträge
    966

    Hallo Ullricho.

    Suchen hilft

    Aber schau mal hier:
    http://www.ip-symcon.de/forum/thread...204#post184204
    Beitrag #187

    Gruß
    Lutz
    Geändert von lueralba (23.12.12 um 17:50 Uhr) Grund: Link angepasst
    __________________
    IPS 5.3 Ninja auf Raspi3 ; Mobile5.x ; AEON Stick/1x Razberry Gen5 ; ca. 90 ZWave Geräte ; 10x FHT80B ; CCU1 (Funk/Wired);Fritzbox 7590 ; Viessmann ; 1x ChuWi13 ; 2x Sensus HRI und 1xEltako DSZ12DM an PiiGAB M-Bus; Instar 4011; AXIS 207W; RG-11

  6. #6
    Registriert seit
    Nov 2005
    Ort
    Region Hannover
    Beiträge
    68

    Standard Anruflistenskript

    Hallo,
    eine Sache ist mir noch zum Anruflistenskript aufgefallen, da ich die abgehenden Anrufe bei mir nicht sah:
    Abfrage Anrufliste von hier
    PHP-Code:
    <?

    // FritzBox / Filter:
    // Die Fritzbox erfasst alle ein- und ausgehenden Verbindungen. Das können sein:
     // 1 = ankommende Verbindung, die entgegengenommen wurde
    // 2 = ankommende Verbindung, die niemand entgegengenommen hat (sog. verpasster Anruf)
    // 3 = abgehende Verbindung
    Sollte da in der Erläuterung nicht besser stehen:
    // 4 = abgehende Verbindung
    sonst funktioniert es nicht.

    PHP-Code:
    // Tragen Sie in das Array die Kennnummern der Verbindungstypen ein, die im WebFront angezeigt
     // werden sollen:
    $liste_Filter = array(4,2,1);
    ?> 
    Da steht die 4 schon...

    Ansonsten: Danke!!! für die Anpassung an das neue Fritz!OS

    Gruß
    Olaf
    PC Intel NUC D34010WYK Core i3-4010U, Windows HomeServer 2011
    IPS, FHZ1x00 (USB / LAN Silex SX-1000 / 3000), FHTs, TFK, FHT8W, FS20, KS300
    Homematic 2 CCU, HM Funktast Display, HM Rollladen, HM Temp.sens., HM<->Velux, Oregon WMRS 200, ...

  7. #7
    Registriert seit
    Apr 2012
    Ort
    Hannover
    Beiträge
    79

    Standard Rufumleitung ein- und ausschalten

    Anbei das Script-Snipped zur Ein- und Ausschaltung einer in der Fritzbox angelegten Rufumleitung. In diesem Beispiel sind es zwei Rufumleitungen.
    Die Variable $einAus hat die Inhalte: "on" = einschalten, ""=ausschalten.

    PHP-Code:
        $ch curl_init("http://{$fritzbox_ip}/fon_num/rul_list.lua?sid={$SID}");
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
       
    $rc1=curl_setopt($chCURLOPT_POSTFIELDS, ($einAus == "on" "rul_0=on&rul_1=on&" "") . "apply=");
       
    $rc2=curl_exec($ch); 
    Gruß BONOX

  8. #8
    Registriert seit
    Jan 2006
    Ort
    Schönkirchen, S.-H.
    Beiträge
    658

    Standard Anrufweiterleitung und Anrufbeantworter ein/aus

    Hi,

    bräuchte mal eure Hilfe, was muss ich in meinem Script zur Anrufweiterleitung unter FRITZ!OS 05.50 anpassen?

    PHP-Code:
    <?
    if ($IPS_SENDER == "WebFront")
    {
        
    $fritzbox_ip 'fritz.box';
        
    $fritzgui    'http://fritz.box/cgi-bin/webcm';
        
    $fritzseite  '../html/de/menus/menu2.html';
        
    $password    '*****';
        
    $ein         '1';
        
    $aus         '0';
        
    $handy_heiko '015********';
        
    $handy_biene '017********';

        
    $ch curl_init('http://' $fritzbox_ip '/cgi-bin/webcm?getpage=../html/login_sid.xml');
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    $login curl_exec($ch);
        
    curl_close($ch);
        
    $session_status_simplexml simplexml_load_string($login);

        if (
    $session_status_simplexml->iswriteaccess == 1)
        {
           
    $SID $session_status_simplexml->SID;
        }
        else
        {
           
    $challenge $session_status_simplexml->Challenge;
           
    $response $challenge '-' md5(mb_convert_encoding($challenge '-' $password"UCS-2LE""UTF-8"));
           
    $login = array('getpage' => $fritzseite'login:command/response' => $response);
           
    $sendlogin http_post_fields($fritzgui$login);
           
    preg_match('@<input type="hidden" name="sid" value="([A-Fa-f0-9]{16})" id="uiPostSid">@i'$sendlogin$matches);
           if (isset(
    $matches[1]) && $matches[1] != '0000000000000000')
           {
              
    $SID $matches[1];
           }
           else
           {
              echo 
    "Fehler: Login fehlgeschlagen";
              return;
            }
        }

        switch(
    $IPS_VALUE)
        {
           case 
    0:
                
    $umleitung http_post_fields($fritzgui, array('getpage' => $fritzseite'sid' => $SID'telcfg:settings/Diversity0/Active' => $aus));
           break;
           case 
    1:
                
    $umleitung http_post_fields($fritzgui, array('getpage' => $fritzseite'sid' => $SID'telcfg:settings/Diversity0/Active' => $ein));
           break;
           case 
    10// Wert der Integervariable
              
    SetValue(11463 /*[Netzwerk\Telefonanlage\Rufumleitung (erst Ziel w‰hlen, dann einschalten)\Anrufe umleiten zu]*/,10);
              
    $heiko http_post_fields($fritzgui, array('getpage' => $fritzseite'sid' => $SID'var:menu' => 'fon''var:pagename' => 'rulall1''telcfg:settings/Diversity0/Destination' => $handy_heiko));
           break;
           case 
    11// Wert der Integervariable
              
    SetValue(11463 /*[Netzwerk\Telefonanlage\Rufumleitung (erst Ziel w‰hlen, dann einschalten)\Anrufe umleiten zu]*/,11);
              
    $biene http_post_fields($fritzgui, array('getpage' => $fritzseite'sid' => $SID'var:menu' => 'fon''var:pagename' => 'rulall1''telcfg:settings/Diversity0/Destination' => $handy_biene));
           break;
        }

        
    $checksetting = array('getpage' => $fritzseite'var:menu' => 'fon''var:pagename' => 'rulall');
        
    $sendcheck http_post_fields($fritzgui$checksetting);
        
    preg_match('@name="telcfg:settings/Diversity0/Active" value="([10])"@i'$sendcheck$matches);
        if (isset(
    $matches[1]) && $matches[1] == 1)
        {
            
    SetValue(10111 /*[Netzwerk\Telefonanlage\Rufumleitung (erst Ziel w‰hlen, dann einschalten)\Ein-/ Ausschalten]*/ 1);
        }
        else
        {
            
    SetValue(10111 /*[Netzwerk\Telefonanlage\Rufumleitung (erst Ziel w‰hlen, dann einschalten)\Ein-/ Ausschalten]*/ 0);
        }

        
    $logout = array('getpage' => $fritzseite'sid' => $SID'security:command/logout' => 'logout');
        
    $sendlogout http_post_fields($fritzgui$logout);
    }

    ?>
    Und in dem Script für den Anrufbeantworter an/aus?

    PHP-Code:
    <?
    if ($IPS_SENDER == "WebFront")
    {
        
    $fritzbox_ip 'fritz.box';
        
    $fritzgui    'http://fritz.box/cgi-bin/webcm';
        
    $fritzseite  '../html/de/menus/menu2.html';
        
    $password    '*****';
        
    $ein         '1';
        
    $aus         '0';

        
    $ch curl_init('http://' $fritzbox_ip '/cgi-bin/webcm?getpage=../html/login_sid.xml');
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    $login curl_exec($ch);
        
    curl_close($ch);
        
    $session_status_simplexml simplexml_load_string($login);


        if (
    $session_status_simplexml->iswriteaccess == 1)
        {
           
    $SID $session_status_simplexml->SID;
        }
        else
        {
           
    $challenge $session_status_simplexml->Challenge;
           
    $response $challenge '-' md5(mb_convert_encoding($challenge '-' $password"UCS-2LE""UTF-8"));
           
    $login = array('getpage' => $fritzseite'login:command/response' => $response);
           
    $sendlogin http_post_fields($fritzgui$login);
           
    preg_match('@<input type="hidden" name="sid" value="([A-Fa-f0-9]{16})" id="uiPostSid">@i'$sendlogin$matches);
           if (isset(
    $matches[1]) && $matches[1] != '0000000000000000')
           {
              
    $SID $matches[1];
           }
           else
           {
              echo 
    "Fehler: Login fehlgeschlagen";
              return;
           }
        }

        if (
    $IPS_VALUE)
        {
            
    $settam http_post_fields($fritzgui, array('getpage' => $fritzseite'sid' => $SID'tam:settings/TAM0/Active' => $ein));
        }
        else
        {
           
    $settam http_post_fields($fritzgui, array('getpage' => $fritzseite'sid' => $SID'tam:settings/TAM0/Active' => $aus));
        }

        
    $checksetting = array('getpage' => $fritzseite'var:menu' => 'home''var:pagemaster' => 'fondevices''var:pagename' => 'fondevices');
        
    $sendcheck http_post_fields($fritzgui$checksetting);
        
    preg_match('@name="tam:settings/TAM0/Active" value="([10])"@i'$sendcheck$matches);
        if (isset(
    $matches[1]) && $matches[1] == 1)
        {
            
    SetValue(35734 /*[Netzwerk\Telefonanlage\Anrufbeantworter]*/1);
        }
        else
        {
           
    SetValue(35734 /*[Netzwerk\Telefonanlage\Anrufbeantworter]*/0);
        }

        
    $logout = array('getpage' => $fritzseite'sid' => $SID'security:command/logout' => 'logout');
        
    $sendlogout http_post_fields($fritzgui$logout);
    }

    ?>
    Dankeschön im Voraus.

    Gruß

    Heiko

  9. #9
    Registriert seit
    Oct 2010
    Beiträge
    156

    Standard Wählhilfe

    Hallo,

    über die Wählhilfe der Fritz!Box kann über folgendes Skript eine bestimmte Nummer angerufen werden.

    Nach dem Standard Login wird der cURL-Handle geschlossen und ein neuer geöffnet, der dann die neue Wählhilfefunktion auslößt und die Nummer (vom Parameter "dial") Wählt... die Nummer im Skript "0123456" kann dann z.B. per Variable eingefügt werden!

    PHP-Code:
    $fritzbox_ip '192.168.xxx.xxx;
    $password    = '
    xxxxxxx';

    $ch = curl_init('
    http://' .$fritzbox_ip. '/login_sid.lua');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    $login curl_exec($ch);
    $session_status_simplexml simplexml_load_string($login);
    if (
    $session_status_simplexml->SID != '0000000000000000')
    {
       
    $SID $session_status_simplexml->SID;
    }
    else
    {
       
    $challenge $session_status_simplexml->Challenge;
       
    $response $challenge '-' md5(mb_convert_encoding($challenge '-' $password"UCS-2LE""UTF-8"));

       
    curl_setopt($chCURLOPT_POSTFIELDS"response={$response}&page=/login_sid.lua");
        
    $sendlogin curl_exec($ch);
       
    $session_status_simplexml simplexml_load_string($sendlogin);

       if (
    $session_status_simplexml->SID != '0000000000000000')
       {
       
    $SID $session_status_simplexml->SID;
       }
       else
       {
          echo 
    "Fehler: Login fehlgeschlagen";
          return;
        }
    }

    curl_close($ch);
    //Der Login ist abgeschlossen

    //Aufruf der entsprechenden Fritz Box Funktion: hier die Wählhilfe

    $ch curl_init();
    curl_setopt($chCURLOPT_URL"http://$fritzbox_ip/fon_num/dial_foncalls.lua?sid={$SID}&dial=0123456&xhr=1&t1359124076683=nocache");
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_exec($ch);
    curl_close($ch); 

  10. #10
    Registriert seit
    Oct 2010
    Beiträge
    156

    Standard Telefonbucheintrag ändern

    Hallo,

    die Änderung eines Telefonbucheintrages habe ich wie folgt gelößt.

    Bei mir ist das ganz nützlich, weil meine am Analog (FON1) Anschluß, ansgeschlossene Siedle Doorcom Sprechanlage immer nur die gleiche Nummer beim klingeln an der Haustüre wählen kann. Somit wählt die Sprechanlage die Kurzwahl **712 an. Der hinterlegte Telefonbucheintrag wir dann per Skript auf Handy-Nummer bei Abwesenheit oder auf interne Nummer z.B. **9 (alle Telefone) bei Anwesenheit geändert.

    Der Teil des Skriptes der die Fritz Box betrifft lautet wie folgt:

    PHP-Code:
    $fritzbox_ip '192.168.xxx.xxx';
    $password    'xxxxxxxx';

    $ch curl_init('http://' .$fritzbox_ip'/login_sid.lua');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    $login curl_exec($ch);
    $session_status_simplexml simplexml_load_string($login);
    if (
    $session_status_simplexml->SID != '0000000000000000')
    {
       
    $SID $session_status_simplexml->SID;
    }
    else
    {
       
    $challenge $session_status_simplexml->Challenge;
       
    $response $challenge '-' md5(mb_convert_encoding($challenge '-' $password"UCS-2LE""UTF-8"));

       
    curl_setopt($chCURLOPT_POSTFIELDS"response={$response}&page=/login_sid.lua");
        
    $sendlogin curl_exec($ch);
       
    $session_status_simplexml simplexml_load_string($sendlogin);

       if (
    $session_status_simplexml->SID != '0000000000000000')
       {
       
    $SID $session_status_simplexml->SID;
       }
       else
       {
          echo 
    "Fehler: Login fehlgeschlagen";
          return;
        }
    }

    curl_close($ch);
    //Der Login ist abgeschlossen

    //Aufruf der entsprechenden Fritz Box Funktion: hier ändern des Tel. Eintrages
    $ch curl_init('http://' .$fritzbox_ip'/fon_num/fonbook_entry.lua');
    curl_setopt($chCURLOPT_POSTFIELDS"idx=&uid=1101&entryname=AAA+AAA-Klingel&numbertype0=home&number0=0123456&prionumber=number0&code=12&vanity=12&emailnew1=&apply=&sid={$SID}");
    curl_exec($ch);
    curl_close($ch); 
    ihr legt zuerst einen Telefonbucheintrag an, der Parameter "uid" dürfte immer unterschiedlich sein. Diesen findet ihr wenn ihr das Telefonbuch exportiert in der XML Datei oder in dem Quelltext der FritzBox Seite wo der entsprechende Eintrag geändert wird. Der Parameter "number0=0123456" gibt dann die Nummer der Telefonbucheintrags an. Die Parameter Code und vanity in meinem Fall 12 geben dann die Nummer für die Kurzwahl an.

    Vielleicht kanns ja mal jemand brauchen, viel Spaß beim tüfteln.

Ähnliche Themen

  1. Rufumleitung mit Fritz!Fon 7390
    Von pitty im Forum Skripte, PHP, SQL
    Antworten: 12
    Letzter Beitrag: 21.03.13, 10:12
  2. Scripts für Fritzbox/Repeater/Fritzfon ab V2.5 und PHP 5.4.x
    Von RWN im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 14
    Letzter Beitrag: 16.01.12, 21:10
  3. Vorlage für neue Scripts
    Von monte001 im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 4
    Letzter Beitrag: 28.12.11, 23:03
  4. FRITZ!Box Fon WLAN 7390 || Release: 4.Quartal 2009
    Von oneitis im Forum Schaufenster
    Antworten: 0
    Letzter Beitrag: 10.11.09, 21:58
  5. Frage zu (J)Fritz Anrufmonitor für MCE
    Von Tetrapack im Forum Skripte, PHP, SQL
    Antworten: 5
    Letzter Beitrag: 28.05.08, 07:20