Fritzbox 7270/Wlan Repeater Scripts

da komm ich mit deinen variablen nicht zurecht, welche typen zb

Gleich am Anfang der foreach Schleife werden alle Anrufe vom Typ 3 (abgehend) ausgefiltert.

foreach($table as $row)#Rest der Tabelle auswerten
      {
      if ($row[0]<> 3)  #Abgehende Anrufe ausblenden

Hallo,

habe nun die Anrufliste, nach dem Skript von Sabbelsau, mal überarbeitet und an meine Bedürfnisse angepasst. Da ich das Telefonbuch aus der Fritzbox nutze, konnte ich einige Teile weglassen und vereinfachen. Des weiteren habe ich die Liste auf 20 Einträge beschränkt und die Felder etwas verändert. Gerne stelle ich natürlich das Skript und einen Screenshot der Allgemeinheit zur Verfügung.

Ausgeführt wird das 1. Skript durch die RegVar (Anrufliste aktualisieren)

<?
   RegVar_SetBuffer(45759 /*[.Geräte\Register Variable für Fritz!Box]*/, "");  #ANPASSEN!

   $anrufliste="";
   $fritzbox_ip = 'fritz.box';
   $fritzgui    = 'http://fritz.box/cgi-bin/webcm';
   $fritzseite  = '../html/de/menus/menu2.html';
   $filename   = IPS_GetKernelDir()."\\webfront\\user\\Fritzbox\\Anrufliste.csv";  #ANPASSEN!
   $password    = 'xxxxxx';  #ANPASSEN!
   $ein         = '1';
   $aus         = '0';

   $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;
       }
      }

     //Anrufliste aktualisieren
    $gotopage = array('getpage' => $fritzseite,'sid' => $SID, 'var:menu' => 'home', 'var:pagename' => 'foncalls');
    $getnewlist = http_post_fields($fritzgui, $gotopage);

    //Anrufliste abholen
    $anrufliste = http_post_fields($fritzgui, array('getpage' => '../html/de/FRITZ!Box_Anrufliste.csv', 'sid' => $SID));
    $anrufliste = explode(';', $anrufliste, 4);
    $anrufliste = $anrufliste[3];
    $fileHandle = @fopen($filename, 'wb+');
    @fwrite($fileHandle, $anrufliste);
    @fclose($fileHandle);

    //Anrufliste einlesen
    $filename = "../webfront/user/Fritzbox/Anrufliste.csv";
    $id = @fopen($filename, "r");
    while ($data = fgetcsv($id, filesize($filename),";"))
      $table[] = $data;
    @fclose($id);
    //Anrufliste auswerten
    setlocale (LC_ALL, 'German_Germany.1252');
    $s1 = strftime("Aktualisiert am %A, den %d.%m.%y, um %H:%M Uhr");
    $anruferliste="<center><H3><U>".$s1."</U></H3></center></div>
"."<table width=\'100%\' border=\'0\' cellspacing=\'0\' cellpadding=\'4\' ><tr><td width=\'35%\'><b>Anrufer</b></td><td width=\'18%\'><b>Nummer</b></td><td width=\'22%\'><b>Datum</b></td>  <td width=\'10%\'><b>Dauer</b></td><td width=\'5%\'><div align=\'center\'><b>Angen.</b></div></td><td width=\'20%\'><b>Nebenst.</b></td></tr>";
    array_shift($table); #die ersten drei Zeilen aus dem Array löschen
    array_shift($table);#die ersten drei Zeilen aus dem Array löschen
    array_shift($table);#die ersten drei Zeilen aus dem Array löschen
    $max_row = 0;
    foreach($table as $row)#Rest der Tabelle auswerten
   { 
      if ($row[0]<> 3)  #Abgehende Anrufe ausblenden
        {
				if (($max_row++) >= 20) {break;}
				$Rufnummer = $row[3];  #Rufnummer aus Array holen
				$word_count = str_word_count($row[2]);
				if ($word_count == 0)
          {
          
           $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;
           $searchTag0 = 'namelink';
           $searchTag1 = '<strong>';
           $searchTag2 = '</strong>';
           $gefunden   = 0;
           while(!$gefunden && !feof($Ausgabe))
               {
              $lineNb++;
              $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
          }
         }
       echo "<tr>";
       if ($row[0] == 1) $row[0]="Ja";  #Angenommen JA
       else $row[0]="Nein";             #Angenommen Nein
       #Jetzt Zeile in String speichern
       $pos = (strpos($row[5], ':')+1);
		 $an_nummer = substr($row[5], $pos);
		 if($row[3] == "")
		 {$row[3] = "Keine Nummer";}
		 $row[2] = substr($row[2], 0, 25);
       $anruferliste= $anruferliste.'<tr><td width="auto">'.$row[2].'</td><td width="auto">'.$row[3].'</td><td width="auto">'.$row[1].'</td><td width="auto">'.$row[6].'</td><td width="auto"><div align="center">'.$row[0].'</div></td><td width="auto">'.$an_nummer.'</td></tr>';
	}
}

$anruferliste =$anruferliste."</table>
";
setvalue(42619 /*[.Variablen\Anrufliste]*/, $anruferliste);  #ANPASSEN!  IPS Variable für speichern der Liste

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

?>

Das 2. Skript zeigt die Liste im WebFront an:

<?
$anruferliste=getvalue(42619 /*[.Variablen\Anrufliste]*/); #ANPASSEN!
echo $anruferliste;
?>

Das 3. Skript löscht die Anrufliste (im WebFront)

<?
$fritzbox_ip = 'fritz.box';
$fritzgui    = 'http://fritz.box/cgi-bin/webcm';
$fritzseite  = '../html/de/menus/menu2.html';
$password    = 'xxxxxxx';
$aus         = '0';

$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;
    }
}
$clearjournal = http_post_fields($fritzgui, array('getpage' => $fritzseite, 'sid' => $SID, 'var:pagename' => 'foncalls', 'telcfg:settings/ClearJournal' => $aus));

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

Mit Hilfe von Rainer ist es mir nun auch gelungen, das Telefonbuch der Fritzbox auszulesen. Ich habe mich dann mal dran gemacht, den Inhalt so aufzulösen, das es in gleicher Form wie die Anrufliste angezeigt werden kann. Es ist zwar (noch) nicht besonders elegant gelöst, erfüllt aber seinen Zweck. Beide Skripte werden von mir über das WebFront ausgelöst.

Das 1. Skript ließt das Telefonuch aus der FB aus und schreibt es in eine Datei:

<?
$fritzbox_ip = 'fritz.box';
$fritzgui    = 'http://fritz.box/cgi-bin/webcm';
$fritzseite  = '../html/de/menus/menu2.html';
$password    = 'xxxxxxx';

$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;
    }
}

$telefonbuch = array('getpage' => $fritzseite, 'sid' => $SID, 'var:menu' => 'home', 'var:pagename' => 'fonbuch');
$save = http_post_fields($fritzgui, $telefonbuch);

$dateiname = "C:/Programme/IPSYMCON_V2/webfront/user/Fritzbox/fonbuch.txt"; // Name der Datei

// Datei öffnen, wenn nicht vorhanden dann wird die Datei erstellt.
$handler = fOpen($dateiname , "w+");
fWrite($handler , $save); // Dateiinhalt in die Datei schreiben
fclose($handler);
?>

Das 2. Skript zeigt das Telefonbuch im WebFront an:

<?
$dateiname = "C:/Programme/IPSYMCON_V2/webfront/user/Fritzbox/fonbuch.txt"; // Name der Datei = "C:/Programme/IPSYMCON_V2/webfront/user/Fritzbox/fonbuch.txt"; // Name der Datei
$handler = fopen($dateiname, "r") or die ("Kann Datei nicht lesen.");
$string = "";
$zeile = "";
$ausgabe_string = "";
echo "<center><H3><U>Telefonbuch der Fritz.Box</U></H3></center>"."
";
echo "<table width=\'100%\' border=\'0\' cellspacing=\'0\' cellpadding=\'4\' ><tr><td width=\'40%\'><b>Name</b></td><td width=\'20%\'><b>Privat</b></td><td width=\'20%\'><b>Arbeit</b></td><td width=\'20%\'><b>Mobil</b></td></tr>";
while (!feof($handler))
     {

      $zeile = fgets($handler,1024);
      $string = rtrim($zeile)."
";
      //echo $string."
\r";
      $string = str_replace("Ä","Ä",$string) ;
		$string = str_replace("ä","ä",$string) ;
		$string = str_replace("Ö","Ö",$string) ;
		$string = str_replace("ö","ö",$string) ;
		$string = str_replace("%F6","ö",$string) ;
		$string = str_replace("%FC","ü",$string) ;
		$string = str_replace("Ãœ","Ü",$string) ;
		$string = str_replace("ü","ü",$string) ;
		$string = str_replace("ß","ß",$string) ;
		$string = str_replace("&","&",$string) ;
      $pos1 = strpos($string, '<script type="text/javascript">TrFonName("');

		if($pos1 !== False)
 		{
 		$pos2 = strpos($string, '", "', $pos1);
		$pos3 = strpos($string, '", "', $pos2+4);
		echo "
".'<tr><td width="auto">'.substr($string,($pos2+4),(($pos3-4)-$pos2)).'</td>';

		}
		$pos4 = strpos($string, '<script type="text/javascript">TrFonNr("');
		if($pos4 !== False)
  		{//echo "
".$pos4."
";
  			$pos5 = strpos($string, '", "', $pos4);
  			//echo $pos5."
";
			$pos6 = strpos($string, '", "', $pos5+5);
			//echo $pos6."
";
			if(substr($string,($pos5-4),4) == "home")
			{
			if(substr($string,($pos5+4),(($pos6-4)-$pos5)) != '", "')
			{$Nummer = substr($string,($pos5+4),(($pos6-4)-$pos5));
			echo '<td width="auto">'.$Nummer.'</td>';}
			else{echo '<td width="auto">Unbekannt</td>';}
			}
			if(substr($string,($pos5-4),4) == "work")
			{
			if(substr($string,($pos5+4),(($pos6-4)-$pos5)) != '", "')
			{$Nummer = substr($string,($pos5+4),(($pos6-4)-$pos5));
			echo '<td width="auto">'.$Nummer.'</td>';}
			else{echo '<td width="auto">Unbekannt</td>';}
			}
			if(substr($string,($pos5-6),6) == "mobile")
			{
			if(substr($string,($pos5+4),(($pos6-4)-$pos5)) != '", "')
			{$Nummer = substr($string,($pos5+4),(($pos6-4)-$pos5));
			echo '<td width="auto">'.$Nummer.'</td></tr>';}
			else{echo '<td width="auto">Unbekannt</td></tr>';}
			}

		}

     }

//DATEI WIEDER SCHLIESSEN:

fclose($handler);
//echo "
".'Datei wieder erfolgreich geschlossen!';
?>

@obi
könnte man beim löschen der anruferliste noch eine sicherheitsabfrage einbauen ?

könnte man im telefonbuch noch kurzwahl mit anzeigen?
z.b. telefon arbeit **705?
ansonsten finde ich es echt klasse.

cu.
uriel20006

@Axel37
Ich denke, das geht nicht so einfach im WebFront. Es ginge nur über einen Umweg. Z.B. könntest du das Skript einfach in einen anderen „Raum“ ablegen, oder es mit einer 2. Variabel verknüpfen, die auf „True“ stehen muss, damit die Liste gelöscht werden kann.

@uriel2006
Theoretisch ist das natürlich möglich. In der abgelegten Textdatei steht die Kurzwahl (0-99) zu jeder Nummer mit drin. Du kannst dir das ja im Skript dem entsprechend anpassen. Dazu wäre die Stelle mit aufzulösen und 700 dazu zu addieren. Ich wüsste bei meinem Layout nur nicht, so ich das noch mit anzeigen soll, ohne einen zeilenumbruch zu provozieren, was IMHO blöd aussieht.

wie kann ich jetzt die wahlhilfen anzeigen lassen?
habe zwar schon etwas hinbekommen aber weiter geht es nicht mehr.
mal nen bild als anhang wie es jetzt ausschaut.

cu.
uriel2006

Meinst du mit Wahlhilfe die Kurzwahlnummer?
Ich habe das Skript nun nach deinen Wünschen angepasst.
Die auskommentierten echo Zeilen (// echo …) kannst du alle löschen.
Die benötige ich nur zum „debugen“ … wenn etwas nicht so funktioniert, wie ich es mir vorstelle.

<?
$dateiname = "C:/Programme/IPSYMCON_V2/webfront/user/Fritzbox/fonbuch.txt"; // Name der Datei = "C:/Programme/IPSYMCON_V2/webfront/user/Fritzbox/fonbuch.txt"; // Name der Datei
$handler = fopen($dateiname, "r") or die ("Kann Datei nicht lesen.");
$string = "";
$zeile = "";
$ausgabe_string = "";
$kurz = "";
$tr = "";
echo "<center><H3><U>Telefonbuch der Fritz.Box</U></H3></center>"."
";
echo "<table width=\'100%\' border=\'0\' cellspacing=\'0\' cellpadding=\'4\' ><tr><td width=\'40%\'><b>Name</b></td><td width=\'20%\'><b>Rufnummer</b></td><td width=\'15%\'><b>Typ</b></td><td width=\'20%\'><b>Kurzwahl</b></td><td width='auto'></td></tr>";
while (!feof($handler))
     {
      $zeile = fgets($handler,1024);
      $string = rtrim($zeile)."
";
      //echo $string."
\r";
      $string = str_replace("Ä","Ä",$string) ;
		$string = str_replace("ä","ä",$string) ;
		$string = str_replace("Ö","Ö",$string) ;
		$string = str_replace("ö","ö",$string) ;
		$string = str_replace("%F6","ö",$string) ;
		$string = str_replace("%FC","ü",$string) ;
		$string = str_replace("Ãœ","Ü",$string) ;
		$string = str_replace("ü","ü",$string) ;
		$string = str_replace("ß","ß",$string) ;
		$string = str_replace("&","&",$string) ;
      $pos1 = strpos($string, '<script type="text/javascript">TrFonName("');

		if($pos1 !== False)
 		{
 		$pos2 = strpos($string, '", "', $pos1);
		$pos3 = strpos($string, '", "', $pos2+4);
		echo "
"."<tr><td width=\'40%\'>".substr($string,($pos2+4),(($pos3-4)-$pos2)).'</td>';

		}
		$pos4 = strpos($string, '<script type="text/javascript">TrFonNr("');
		if($pos4 !== False)
  		{//echo "
".$pos4."
";
  			$pos5 = strpos($string, '", "', $pos4);
  			//echo $pos5."
";
			$pos6 = strpos($string, '", "', $pos5+5);
			//echo $pos6."
";
			$pos7 = strpos($string, '", "', $pos6+5);
			//echo $pos7."
";
			if(substr($string,($pos5-4),4) == "home")
			{
			if(substr($string,($pos5+4),(($pos6-4)-$pos5)) != '", "')
			{$tr = True;
			$Nummer = substr($string,($pos5+4),(($pos6-4)-$pos5));
			echo "<td width=\'10%\'>".$Nummer.'</td><td>Privat</td>';
			$kurz = (substr($string,($pos6+4),(($pos7-4)-$pos6))+700);
			if ($kurz != "700"){echo "<td>**".$kurz."</td></tr>";}}
			else {$tr = False;}
			}
			if(substr($string,($pos5-4),4) == "work")
			{
			if(substr($string,($pos5+4),(($pos6-4)-$pos5)) != '", "')
			{$Nummer = substr($string,($pos5+4),(($pos6-4)-$pos5));
			if ($tr){
			echo "<tr><td></td><td width=\'10%\'>".$Nummer.'</td><td>Arbeit</td>';}
			else {echo "<td width=\'10%\'>".$Nummer.'</td><td>Arbeit</td>';}
			$kurz = (substr($string,($pos6+4),(($pos7-4)-$pos6))+700);
			if ($kurz != "700"){echo "<td>**".$kurz."</td></tr><td></td>";}}
			//else{echo "<tr><td></td><td width=\'20%\'>Unbekannt</td><td>Arbeit</td></tr>";}
			}
			if(substr($string,($pos5-6),6) == "mobile")
			{
			if(substr($string,($pos5+4),(($pos6-4)-$pos5)) != '", "')
			{$Nummer = substr($string,($pos5+4),(($pos6-4)-$pos5));
			if ($tr){
			echo "<tr><td></td><td width=\'10%\'>".$Nummer.'</td><td>Mobile</td>';}
			else {echo "<td width=\'10%\'>".$Nummer.'</td><td>Mobile</td>';}
			$kurz = (substr($string,($pos6+4),(($pos7-4)-$pos6))+700);
			if ($kurz != "700"){echo "<td>**".$kurz."</td></tr>";}}
			}

		}

     }

//DATEI WIEDER SCHLIESSEN:

fclose($handler);
//echo "
".'Datei wieder erfolgreich geschlossen!';
?>

super funktioniert jetzt bestens. :loveips:

cu.
uriel2006

ES GEHT!!!
Dank Rainers Analyse des Quellcodes und seinem darauf basierten Script habe ich es gestern - nach ein paar kleinen Modifikationen - zum Laufen bekommen. Unfassbar, einfach mit ein paar Zeilen PHP Code. Für Repeater-Besitzer, die das ausprobieren möchten:

[ol]
[li]Curl installieren, d.h. Archiv herunterladen, die drei DLLs entpacken, in den Ordner /ext kopieren und IPS Dienst beenden und neu starten.[/li][li]PHP Script im Objektbaum anlegen. Ich habe es zum Testen durch die Temperatur-Variable des KS300 Wettersensors triggern lassen, d.h. sobald sich die Temperatur ändert, läuft das Script und aktualisiert den Lauftext des Repeaters. Es können bis zu 240 Zeichen angezeigt werden; der gesamte Text wird vom Repeater automatisch in Großbuchstaben umgewandelt:[/li][/ol]

   <?
$fritzrepeatergui    = 'http://XXX.XXX.XXX.XXX/cgi-bin/webcm'; // X durch IP des Repeaters ersetzen
$fritzseite  = '../html/de/menus/menu2.html';
$password = "XXXXXXXXX"; // X durch Passwort ersetzen
$text = (GetValueFloat(44520) . " Grad"); // Beispiel Temperaturanzeige - anzuzeigende Variablen und Texte (bis max. 240 Zeichen) einfügen
$ch = curl_init($fritzrepeatergui . '?getpage=../html/index_inhalt.html');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
curl_close($ch);
$response = http_post_fields($fritzrepeatergui, array('login:command/password' => $password));
$settext = http_post_fields($fritzrepeatergui, array('getpage' => $fritzseite, 'var:pagename' => 'infoled', 'nlr:settings/TDS_ScrollText' => $text));
?> 

Ich habe ein Video davon gemacht, damit sich diejenigen, die den Repeater und seine Anzeige nicht kennen, eine Vorstellung davon machen können, wovon wir hier reden. Leider ist es deutlich zu groß zum Posten, aber es finden sich welche im Netz, z.B. YouTube - AVM Fritz WLAN-N Repeater Display-Info in 68.04.66 oder YouTube - AVM FRITZ!WLAN REPEATER N/G

Vielen Dank nochmal an Rainer!
Grüße
Martin

jetzt habe ich aber noch ne frage:
und zwar habe ich bei meiner fritzbox die info leuchte die blinkt wenn jemand angerufen hatt.
wenn ich die nummer zurückrufe hört es sofort auf mit blinken.
nun gibt es aber leute die mann nicht wirklich anrufen möchte (vertreter usw.)
nach ca. 24 stunden hört dann auch die fb auf zublinken was mir aber garnicht gefällt.
könnte man da ein script schreiben was die info led ausschaltet sobald man im webfrot die anrufliste abruft?

cu.
uriel2006

Hallo Rainer,

dankeschön, ein prima Script, ich kann mir nur so schlecht den Typ merken, deshalb 3 zusätzliche Zeilen …

$id = @fopen($filename, "r");
while ($data = fgetcsv($id, filesize($filename),";"))
{
 if ($data[0] == "1") $data[0] = "<img src=\"../img/Callin.gif\" title=\"eingehender Anruf\">";
 if ($data[0] == "2") $data[0] = "<img src=\"../img/Callinfailed.gif\" title=\"Anruf in Abwesenheit\">";
 if ($data[0] == "3") $data[0] = "<img src=\"../img/Callout.gif\" title=\"ausgehender Anruf\">"; 
 $table[] = $data;
}
@fclose($id);

Die Gif’s hat ja jeder in seiner Fritzbox :wink:

Hallo zusammen,

erst mal Danke für diese tollen Skripte an alle beteiligten, ich bin begeistert.:slight_smile:

Eine Frage hätte ich noch, ist es möglich nur einen Teil der Anrufliste aus der Box abzuholen (z.B. nur die ersten 20 Einträge)?
Nur eine bestimmte Anzahl darstellen, dass geht ja aber ich möchte eben die restlichen erst gar nicht aus der Box abholen, weil das ziemlich lange dauert.

Natürlich könnte man die Anrufliste von Zeit zu Zeit löschen aber ich würde die gern komplett in der Box belassen.

Also gibt es für den http_post_fields eine Möglichkeit nach einer bestimmten Menge abzubrechen?

//Anrufliste abholen
    $anrufliste = http_post_fields($fritzgui, array('getpage' => '../html/de/FRITZ!Box_Anrufliste.csv', 'sid' => $SID));
    $anrufliste = explode(';', $anrufliste, 4);
    $anrufliste = $anrufliste[3];
    $fileHandle = @fopen($filename, 'wb+');
    @fwrite($fileHandle, $anrufliste);
    @fclose($fileHandle);

Gruß
m-f-a

seit 2 Tagen im Einsatz… herzlichen Dank

Hallo m-f-a,

wenn Du dieses ersetzt, zeigt es dir die letzten 20 Anrufe an.

$filename = "../webfront/user/Fritzbox/Anrufliste.csv";
$id = @fopen($filename, "r");
$i = 0;
while (($data = fgetcsv($id, filesize($filename), ";")) && $i < 23)
{
    $i++;
    if ($data[0] == 1) $data[0] = "<img src=\"../img/icons/png/Callin.png\" title=\"eingehender Anruf\">";
    if ($data[0] == 2) $data[0] = "<img src=\"../img/icons/png/Callinfailed.png\" title=\"Anruf in Abwesenheit\">";
    if ($data[0] == 3) $data[0] = "<img src=\"../img/icons/png//Callout.png\" title=\"ausgehender Anruf\">";
    $table[] = $data;
}
@fclose($id);

Das mit der Dauer, funktioniert allerdings nur dann, wenn 2 getrennte Scripts vorhanden sind. Bei mir ist das Script für die Abholung mit der Box auf Disconnect verknüpft. Im Webfront wird dann nur lokal von der Platte geholt. Dauer 3ms.

Hallo Rainer,

ja das begrenzen funktioniert, hat obicom auch so ähnlich gelöst.
Ich habe auch zwei Skripte, somit geht die Darstellung bei mir auch sehr schnell.

Allerdings aktualisiere ich manuell über einen Button und das Dauert (ca. 10s) um das zu verkürzen wollte ich eben nur einen Teil der Einträge aus der FritzBox holen und nicht alle 400.
Ist das auch irgendwie möglich?

Kann ich mit Include einfach das Anruflisten-Skript unter „Disconnect“ aufrufen?

m-f-a

Kannst Du, ich rufe es mit IPS_RunScript auf.

Ausschnitt:

case "DISCONNECT":
   IPS_RunScript(41681 /*[Fritzbox\Anruferliste abholen]*/);
   RegVar_SetBuffer(35544 /*[Fritzbox\FritzPort1012]*/, "");
   SetValue(30996 /*[Fritzbox\Anrufe\Eingehender Anruf]*/, "");
   SetValue(25006 /*[Fritzbox\Anrufe\Ausgehender Anruf]*/, "");
   return;
   break;

Hallo Rainer,

danke, werde das auch so machen.

Da du meine Frage zu " http_post_fields " schon zwei mal überlesen hast muss ich nochmal nachbohren.

Da ich das selber leider nicht beurteilen kann, würde ich mich über eine Aussage deinerseits freuen.:slight_smile:

Gruß
m-f-a

Da du meine Frage zu " http_post_fields " schon zwei mal überlesen hast muss ich nochmal nachbohren.

Ohne jetzt darüber nachgedacht zuhaben, sag ich mal, so ohne weiteres geht das nicht.