Probleme mit Scripts Fritzbox 7270

Nee, leider nicht. Hatte auch an ein Refresh-Problem gedacht, dann erst refresh -> keine Änderung, außer dass Umleitung aktiv. Dann alle Browser geschlossen (manchmal hilft es ja), aber auch dann nicht. Es wird jedes Mal lediglich der Toggle raus- bzw. reingenommen.

Bild von der Umleitung der Box.

Diese Ansicht?

Das ist die falsche Seite. Klick doch in der Box auf der Übersichtsseite einfach auf Rufumleitung.

und zeig dein geändertes Script noch mal.

Übersicht anbei.

Im Webfront getogglet „Handy Biene“ mit Nummer 016… hinterlegt.

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

    $ch = curl_init('http://' . $fritzbox_ip . '/cgi-bin/webcm?getpage=../html/login_sid.xml');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $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\Details\Rufumleitung\Anrufe umleiten zu]*/,10);
          $heiko = http_post_fields($fritzgui, array('getpage' => $fritzseite, 'sid' => $SID, 'var:menu' => 'fon', 'var:pagename' => 'rulall1', 'telcfg:settings/Diversity0/Active' => $handy_heiko));
       break;
       case 11: // Wert der Integervariable
          SetValue(11463 /*[Netzwerk\Telefonanlage\Details\Rufumleitung\Anrufe umleiten zu]*/,11);
          $biene = http_post_fields($fritzgui, array('getpage' => $fritzseite, 'sid' => $SID, 'var:menu' => 'fon', 'var:pagename' => 'rulall1', 'telcfg:settings/Diversity0/Active' => $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\Details\Rufumleitung\Status]*/ , 1);
    }
    else
    {
        SetValue(10111 /*[Netzwerk\Telefonanlage\Details\Rufumleitung\Status]*/ , 0);
    }

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

?>

passt alles, sollte auch funktionieren. Ansonsten mach mal eine Datei von der Fritzseite. Du hast aber auch die 7270.

Das ist ja mein Problem. Tut es nicht.

Habe aus lauter Verzweiflung mal die vorhandene Umleitung rausgenommen und dann über das Webfront aktiviert. Auch dann passiert nichts. Hatte ich auch erwartet, das Script setzt ja nur aktiv oder inaktiv oder soll die Nummer einer bestehenden Umleitung ändern.

Aber wenn ich wieder eine neue Umleitung in der Box anlege, bleibt immer die in der Box initial angelegte Handynummer (ich muss ja eine Nummer hinterlegen) angezeigt. Die Nummer will sich einfach nicht ändern.

Ein zweites Script anzulegen, bringt ja auch nichts. Es erwartet ja eine angelegte Rufumleitung.

Quelltext? Von welcher Seite der Fritzbox?

Si.

bearbeiten Rufumleitung von dieser Seite rullall1

Hab den Fehler.

'var:pagename' => 'rulall1', 'telcfg:settings/Diversity0/Destination'

sorry, 2 mal ersetzen im Script

Jo, nun passt es. Klappt wunderbar.

Danke für deine Ausdauer. Das war ne schwere Geburt. :smiley:

Guts Nächtle.

Gruß

Jimmy

Hallo Jimmy,

jetzt wo es läuft, kannst du mal ein paar Informationen zum eigentlichen Ablauf geben? Was triggert bei Dir das Skript und worüber kommen die Werte =0,1,10 und 11? Würde gerne mal schauen, ob es bei mir auch funktioniert, aber dafür müsste ich obige Punkte erst mal verstehen.

0 und 1 kommen von Ein und Ausschalten, 10 und 11 vom umschalten der IntegerVariable umleiten zu.

Hallo Rainer,

danke für die Antwort … hatte es gerade auch selber herausgekommen …

habe das Dummy Modul angelegt, eine Boolean und eine Integer Var angelegt.
Das zu ein passendes VAR Profil erzeugt (mit den Namen zu den Rufnummer) und bei beiden Vars das Skript als Akrtionsskript eingetragen.

Überlege gerade noch, ob man hier nicht schön das neue OSK anwenden könnte, um eine individuelle Rufnummer für die Umleitung einzutragen.

Jetzt kann ich ja erst mal etwas damit rumspielen. Melde mich, falls ich noch was sinnvolles um- bzw. einbauen konnte.

Hallo Rainer,

sag wäre es Dir vielleicht mal möglich eine Step-by-Step Anleitung zu schreiben, wie man einen Status ausließt und ggfs. verändert.

Du hast es zwar in diesem thread schon mal an Hand der WLAN An/Aus Funktion versucht, aber ich blicke da einfach nicht durch, muss aber auch sagen, das ich in HTML und so kein Spezi bin.

Ich habe mir mal Firebug installiert und den Quellcode der WLAN Seite anzeigen lassen, aber die von Dir verwendeten Parameter finde ich dort nicht. Ich habe dazu mal einen Screenshot angehangen.

Wenn Du die Zeit findest, wäre es wirklich super wenn du das vielleicht noch einmal DAU tauglich versuchen könntest zu erklären. Da wäre ich vielleicht auch bei einer FW Änderung in der Lage, mir veränderte Parameter selber herauszusuchen.

Du lässt dir einfach den Quelltext der gewünschten Seite anzeigen und ganz nach unten scrollen. Mehr ist es nicht.

Ok, gefunden … aber woher bekommst du folgende Infos ?

'var:menu' => 'fon', 'var:pagename' => 'rulall1'

das steht im Quelltext drinnen.

und woher weiß man welche der Zeilen man aus dem ganzen Block benötigt?

<!-- Refresh Form -->
<input type="hidden" name="sid" value="398316fb30c64e78" id="uiPostSid">
<input type="hidden" name="getpage" value="../html/de/menus/menu2.html" id="uiPostGetPage">
<input type="hidden" name="errorpage" value="../html/de/menus/menu2.html" id="uiPostErrPage">
<input type="hidden" name="var:pagename" value="rulall" id="uiPostPageName">
<input type="hidden" name="var:errorpagename" value="rulall" id="uiPostErrorPageName">
<input type="hidden" name="var:menu" value="fon" id="uiPostMenu">
<input type="hidden" name="var:pagemaster" value="" id="uiPostPageMaster">
<input type="hidden" name="time:settings/time" value="" id="uiPostDateTime">
<input type="hidden" name="box:settings/webui_cookie" value="" disabled>
<!-- END Refresh Form -->

Das weis man oder nicht. :slight_smile:

Hallo

Ich nutze dieses Script aus dem Forum welches eine Rückwärtssuche bei Klicktel durchführt und den Namen ermittelt.

 $url_orig="http://www.klicktel.de/inverssuche/index/search?method=searchSimple&_dvform_posted=1&phoneNumber=#TEL#";
           $url = str_replace("#TEL#","$Rufnummer",$url_orig);
           $Ausgabe = fopen($url, "r");

           if (!$Ausgabe)
             {
             echo("ERROR : Kann URL nicht öffnen : '$url'
");
             }
           $lineNb     = 0;
           $gefunden   = 0;
           $searchTag0 = 'namelink';
           $searchTag1 = '<strong>';
           $searchTag2 = '</strong>';
           while(!$gefunden && !feof($Ausgabe))
               {
              $buffer = fgets($Ausgabe);
                  if (strpos($buffer, $searchTag0) != false)
                {
                $gefunden = 1;
                $startLN = strpos($buffer, $searchTag1) + strlen($searchTag1);
                $endeFN = strpos($buffer, $searchTag2);
                $Name = substr($buffer, $startLN, $endeFN - $startLN);
					 $Name = html_entity_decode($Name);
					 $row[2]=$Name;
                }
              else $row[2]="unbekannt";  #Keine Nummer gefunden
					}

Klappt auch wunderbar, Danke dafür :slight_smile:

Nun könnte ich damit meine Anrufmonitorsoftware ersetzen wenn es mir noch gelingen würde die Adresse auszulesen…und genau da sitz ich nun einige Stunden dran weil ich in PHP nicht sonderlich fit bin.

Hier mal der Quellcodeauszug von Klicktel wo der Name rausgefiltert wird. Da steht alles in einer Zeile, dadurch kann man einfach nach den Tags suchen und den Namen ausschneiden…kein Problem.

<a class="namelink" href="/inverssuche/detail?id=QKVJQSOLQ3E57E2"><strong>Grube Clair</strong></a>

Bei der Adresse sieht es aber im Klicktelquelltext so aus:

	<div class="data">
		<p class="data track">
		Waldstr. 1<br />
		12345 Adorf, Thür
		</p>
		<p class="numericdata track">

Wie setze ich da den Cursor richtig um die Adresse auszuschneiden? Sehe ich das richtig, das der Seitenquelltext Zeilenweise in den Puffer geladen wird und nach dem Keyword durchsucht wird? Wäre dann ja doch etwas schwieriger, weil der gesuchte Datensatz ja „alleine“ in einer Zeile steht und ich somit keine Schlüsselwörter habe. Naja ich hoffe ich hab es irgendwie verständlich erklärt, vielleicht hat jemand eine Idee.

Danke im Voraus für die Mühe :o