Funktionierende Scripts für FRITZ!OS 05.50 7390

Auch mal was von mir:

<?

$fritzbox 		= GetValue(49286 /*[EDV\Fritzbox\Fritzbox 7390\Fritzbox - IP]*/);
$fritzpasswort	= GetValue(48902 /*[EDV\Fritzbox\Fritzbox 7390\Fritzbox - Passwort]*/);

// -----------------------------------------------------------------------------
// Login in die Fritzbox

$ch = curl_init('http://' . $fritzbox . '/login_sid.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$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 . '-' . $fritzpasswort, "UCS-2LE", "UTF-8"));

   curl_setopt($ch, CURLOPT_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;
    }
}
// Ende - Login in die Fritzbox
// -----------------------------------------------------------------------------


// Daten lesen
$devicelist = file_get_contents("http://{$fritzbox}/net/network_user_devices.lua?sid=".$SID);
//print_r ($devicelist);

//  Filter definieren (IP-Adresse im Format 192.168.2.xx)
preg_match_all('([a-z0-9-]*192.168.2\.\d{2}[0-9A-F:]*)i', strip_tags($devicelist), $devices);
//print_r ($devices[0]);

// Anzahl der Objekte im Ergebnis feststellen
$anzahl = count($devices[0]);

// Tabellenkopf erstellen
$html = "<table width='50%' align='left'>";
$html .= "<tr><td><b>IP-Adresse</b></td><td><b>MAC-Adresse</b></td><td><b>Geräte-Name</b></td></tr>";

for ($i=0; $i<$anzahl; $i++)
	{
	$laenge = strlen($devices[0][$i]);
	// alle Ergebnisse, in denen mehr als nur die IP-Adresse im Format 192.168.2.xx vorkommt, weiterverarbeiten
	if ($laenge > 12)
		{
		$mac = substr($devices[0][$i], -17);
		$name = substr($devices[0][$i], 0, -29);
      $ipadd = substr($devices[0][$i], strlen($name), 12);
		//echo "IP: " . $ipadd . " MAC: " . $mac . " Name: ". $name ."
";
		
		// Tabellenzellen befüllen
		$html .= "<td>". $ipadd . "</td>";  // IP
		$html .= "<td>". $mac . "</td>";  // IP
		$html .= "<td>". $name . "</td>";  // IP
		$html .= "</tr>";
		}
	}

// Tabelle schließen
$html .= "</table>";

// html-Code in Variable speichern
SetValue(16592 /*[EDV\Fritzbox\Netzwerkgeräte\Content]*/ ,$html);

?>

Moin…

… hab nun auch meine Fritzbox 7390 auf das Update 5.50 gebracht.

Hat jemand ein laufendes Skript zum

  1. Löschen der Anruferliste

  2. Ein / Ausschalten des Anrufbeantworters

Danke,

Peter

Moin …

@Peter

zu 1. Da suche ich zur Zeit auch noch dringend nach einer Lösung. Anscheinend hängt es aber an der
Löschbestätigung der Liste in der Fritzbox …

zu 2. Hier der Code Schnipsel. Der Funktioniert bei mir Prima.


	$wert= 0; //0 = AUS; 1 = AN

	//Anrufbeantworter 1 ein/ausschalten
	$ch = curl_init("http://$fritzbox_ip/fon_devices/tam_list.lua");
	curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&tam:settings/TAM0/Active={$wert}");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_exec($ch);
	curl_Close($ch);

Ich benutze die Login Funktion die hier auch schon gepostet wurde und habe die Auswertung der Variable weggelassen …
Funktioniert übrigens auch bei Wlan 2,4GHz und Wlan 5GHz.

Gruß

Tobias

Hallo Zusammen,
hat jemand vielleicht ein Script mit dem ich die FB mit FW 05.50 rebooten kann?

Ich versuche es derzeit mit folgendem Code und der bekannten Anmeldung.


$ch = curl_init('http://fritz.box/reboot.lua');
curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}");
curl_exec($ch);

Login klappt aber ich erhalte immer wieder die Meldung:

Der Neustart Fritz!Box wird nicht durchgeführt.
Der Neustart der Fritz!Box wurde verhindert da Sie keine Berechtigungen für diese Aktion besitzen.

Jemand eine Idee? Ich bin leider noch ganz neu im Geschäft und stehe auf dem Schlauch.
Hintergrund ist, dass ich mal wieder ständig Sync und CRC Probleme habe und die FW sich nach einem Disconnect mit PPPoE Fehlern verabschiedet und die Verbindung erst nach einerm Neustart wieder aufbaut. Diesen Neustart möchte ich mit IPS automatisch durchführen.

Danke euch.
Steffen

Hat jemand vielleicht ein Script zum Ein-/Ausschalten der Klingelsperre für die Telefone. Meine Frau arbeitet im Schichtdienst und es ist nervig jedes mal wenn sie Nachtschicht hat mit dem Browser auf der Fritzbox die Klingelsperre zu aktivieren. Das kann ich dann in mein Script zum abstellend er Haustürklingel integrieren.

Mein Versuch ist dieser:

// Klingelsperre ein/ausschalten
$ks = 0; // 1 für ein; 0 für aus
$ch = curl_init("http://$fritzbox/system/ring_block.lua");
curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&box:settings/night_time_control_enabled={$ks}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
curl_close($ch);

$an = '22:41'; // Sperre an
$ch = curl_init("http://$fritzbox/system/ring_block.lua");
curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&box:settings/night_time_control_off_time={$an}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
curl_close($ch);

$aus = '05:51'; // Sperre aus
$ch = curl_init("http://$fritzbox/system/ring_block.lua");
curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&box:settings/night_time_control_on_time={$aus}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
curl_close($ch);

Der Versuch, alles in einem Rutsch zu machen (die CURLOPT_POSTFIELDS hintereinander zu setzen), scheitert immer. So geht es aber bei mir.

… ich habe dieses kleine Skript im Einsatz …

<?
/*
Beispiele: Fritzbox 7390

-immer klingeln täglich mit Ausnahme von 12:00 bis 13:30

telcfg:settings/MSN/Port0/NoRingWithNightSetting=0
telcfg:settings/MSN/Port0/RingAllowed=1
telcfg:settings/MSN/Port0/NoRingTime="12301300"

- immer klingeln mit Ausnahme am Samsatags + Sonntags von 12:00 bis 13:30

telcfg:settings/MSN/Port0/NoRingWithNightSetting=0
telcfg:settings/MSN/Port0/RingAllowed=4
telcfg:settings/MSN/Port0/NoRingTime="12301330"

- immer klingeln mit Ausnahme von Montag bis Freitag von 12:00 bis 13:30

telcfg:settings/MSN/Port0/NoRingWithNightSetting=0
telcfg:settings/MSN/Port0/RingAllowed=5
telcfg:settings/MSN/Port0/NoRingTime="12301330"


- immer gesperrt mit Ausnahme am Samstag und Sonntag von 12:00 bis 13:00

telcfg:settings/MSN/Port0/NoRingWithNightSetting=0
telcfg:settings/MSN/Port0/RingAllowed=2
telcfg:settings/MSN/Port0/NoRingTime="13001200"

- immer gesperrt mit Ausnahme von Montag bis Freitag von 12:00 bis 13:00

telcfg:settings/MSN/Port0/NoRingWithNightSetting=0
telcfg:settings/MSN/Port0/RingAllowed=3
telcfg:settings/MSN/Port0/NoRingTime="13001200"


*/
$fritzbox_Adresse = 'fritz.box';
$fritzbox_Username = 'xxxxxxx';
$fritzbox_Password = 'xxxxxxxxx';

$ch = curl_init('http://' . $fritzbox_Adresse . '/login_sid.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$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($ch, CURLOPT_POSTFIELDS, "response={$response}&page=/login_sid.lua&username={$fritzbox_Username}");
   $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);

if($_IPS['SENDER'] == "WebFront")

	{
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

 	 IF ($_IPS['VARIABLE'] ==15539 /*[Hardware\Infos - Services\FritzBox\Status\Fritzbox-Klingelsperre - Telefon 1 Fritz OS 5.50\Klingelsperre]*/ )
	   {
	    if($_IPS['VALUE'])  // Einschalten
   		 {
			 Klingelsperre_einschalten($SID);
		    }
    		else
    		 {
	       Klingelsperre_ausschalten($SID);
 		    }
   	}
		
	 IF ($_IPS['VARIABLE'] ==17851 /*[Hardware\Infos - Services\FritzBox\Status\Fritzbox-Klingelsperre - Telefon 1 Fritz OS 5.50\Klingelsperre_Dauer]*/ )
	   {
		If (GetValue (15539 /*[Hardware\Infos - Services\FritzBox\Status\Fritzbox-Klingelsperre - Telefon 1 Fritz OS 5.50\Klingelsperre]*/  ))
			{
			Klingelsperre_einschalten($SID);
			}
		 }
		
	}


if($_IPS['SENDER'] == "TimerEvent")
	{
	IPS_SetScriptTimer($_IPS['SELF'], 0);
	Klingelsperre_ausschalten($ch,$SID);
	}



/*********************************************************
**********************************************************/
function Klingelsperre_einschalten($SID)

	{

	$ch = curl_init('http://fritz.box/fon_devices/fondevices_list.lua');
 	$Dauer= GetValue (17851 /*[Hardware\Infos - Services\FritzBox\Status\Fritzbox-Klingelsperre - Telefon 1 Fritz OS 5.50\Klingelsperre_Dauer]*/ );
	$Time= date("Hi", time()).date("Hi", time()+60*$Dauer);

	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&telcfg:settings/MSN/Port0/NoRingWithNightSetting=0".
   												 "&telcfg:settings/MSN/Port0/RingAllowed=1".
													 "&telcfg:settings/MSN/Port0/NoRingTime=".$Time);

//		curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&telcfg:settings/MSN/Port0/NoRingWithNightSetting=0");


   $temp=curl_exec($ch);
	curl_close($ch);

	IPS_SetScriptTimer($_IPS['SELF'], 60*$Dauer);

	SetValue (27275 /*[Hardware\Infos - Services\FritzBox\Status\Fritzbox-Klingelsperre - Telefon 1 Fritz OS 5.50\Klingelsperre bis]*/ , date("H:i", time()+60*$Dauer));
   IPS_SetHidden(17913 /*[Visualization\WebFront\Fritzbox\Klingelsperre bis]*/ , false);
   }


function Klingelsperre_ausschalten($SID)
	{
	$ch = curl_init('http://fritz.box/fon_devices/fondevices_list.lua');
	curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&&telcfg:settings/MSN/Port0/NoRingWithNightSetting=1");
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   
   $temp=curl_exec($ch);
   curl_close($ch);
   
 	IPS_SetScriptTimer($_IPS['SELF'], 0);

   SetValue (27275 /*[Hardware\Infos - Services\FritzBox\Status\Fritzbox-Klingelsperre - Telefon 1 Fritz OS 5.50\Klingelsperre bis]*/ , "");
	SetValue (15539 /*[Hardware\Infos - Services\FritzBox\Status\Fritzbox-Klingelsperre - Telefon 1 Fritz OS 5.50\Klingelsperre]*/, false);
	IPS_SetHidden(17913 /*[Visualization\WebFront\Fritzbox\Klingelsperre bis]*/ , true);
	}





?>

Den Variablen „Klingelsperre“ und „Klingelsperre_Dauer“ (siehe Bild 3) habe ich das obige Script als Aktion zugewiesen.

Bild 01.jpg

Bild04.jpg

Gruß

Swifty

Habe auch dieses Problem. bekomme auch die Meldung „Der Neustart FRITZ!Box wird nicht durchgeführt.
Der Neustart der FRITZ!Box wurde verhindert da Sie keine Berechtigung für diese Aktion besitzen.“.Kennt jmd. eine Lösung?

Gruss, hcp

Hallo,

mir ist noch aufgefallen, dass beim Script für die Anruferliste ein Fehler auftritt, wenn eine Nummer anruft, die bereits im Fehler-Array ist und davor eine Nummer angerufen hat, die im Telefonbuch gefunden wurde. In dem Fall ist die Variable $result wohl noch auf true und er zeigt in der Liste den zuletzt gefundenen Namen an. Das Problem tritt nicht mehr auf, wenn man die Variable $result vor der Fail-Abfrage grundsätzlich auf false stellt.

lg chrissiboy

Hallo,

Ich versuche dein Script zum laufen zu bekommen um die Netzwerkgeräte auszulesen, bekomme aber nichts angezeigt und auch keinen Fehler.

Frage - auch in die Runde - läuft das Script bei jemanden und kann mir jemand seine Version zur Verfügung stellen.

Hier mal meine Version - bis auf kleine Anpassugn der Variablen - identisch mit der obigen Verion


 <?

$fritzbox_Adresse = GetValue(38029 /*[Configuration\Hardware\FritzBox\FB_IP-Adresse]*/);
$fritzbox_Password = GetValue(33504 /*[Configuration\Hardware\FritzBox\FB_Password]*/);

// -----------------------------------------------------------------------------
// Login in die Fritzbox

$ch = curl_init('http://'.$fritzbox_Adresse.'/login_sid.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$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($ch, CURLOPT_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;
    }
}

// Ende - Login in die Fritzbox
// -----------------------------------------------------------------------------


// Daten lesen
$devicelist = file_get_contents("http://{$fritzbox_Adresse}/net/network_user_devices.lua?sid=".$SID);
//print_r ($devicelist);

//  Filter definieren (IP-Adresse im Format 192.168.2.xx)
preg_match_all('([a-z0-9-]*192.168.2\.\d{2}[0-9A-F:]*)i', strip_tags($devicelist), $devices);
//print_r ($devices[0]);

// Anzahl der Objekte im Ergebnis feststellen
$anzahl = count($devices[0]);

// Tabellenkopf erstellen
$html = "<table width='50%' align='left'>";
$html .= "<tr><td><b>IP-Adresse</b></td><td><b>MAC-Adresse</b></td><td><b>Geräte-Name</b></td></tr>";

for ($i=0; $i<$anzahl; $i++)
    {
    $laenge = strlen($devices[0][$i]);
    // alle Ergebnisse, in denen mehr als nur die IP-Adresse im Format 192.168.50.xx vorkommt, weiterverarbeiten
    if ($laenge > 12)
        {
        $mac = substr($devices[0][$i], -17);
        $name = substr($devices[0][$i], 0, -29);
      $ipadd = substr($devices[0][$i], strlen($name), 12);
        //echo "IP: " . $ipadd . " MAC: " . $mac . " Name: ". $name ."
";

        // Tabellenzellen befüllen
        $html .= "<td>". $ipadd . "</td>";  // IP
        $html .= "<td>". $mac . "</td>";  // IP
        $html .= "<td>". $name . "</td>";  // IP
        $html .= "</tr>";
        }
    }

// Tabelle schließen
$html .= "</table>";

// html-Code in Variable speichern
SetValue(14260 /*[Configuration\Hardware\FritzBox\Netzwerkgeräte\Netzwerkgeraete]*/ ,$html);

?>

Danke und Grüsse

Hallo,

da ich Kabelkunde bin, habe ich eine 6360 im Betrieb. Diese hat ebenfalls Fritz-OS 05.50.

Nun dachte ich, das ich „einfach“ eure Scripts übernehmen könnte (insbesondere von Paresy das Anruflistenscript) - jedoch bekomme ich bei dem Script die folgende Ausgabe:

Array ( [0] => Typ [1] => Datum [2] => Name [3] => Rufnummer [4] => Nebenstelle [5] => Eigene Rufnummer [6] => Dauer ) 403

Die Zugangsdaten der Box sind richtig.

Was kann hier das Problem sein? Oder sind die Scripte nicht ohne weiteres auf andere Modelle übertragbar?

Danke für eure Hilfe.

Wo bekommst Du denn diese Info? Unter Meldungen in der Console?

Lösch mal in Zeile 390 „print_r …“
Das sieht wie Debug-Informationen aus.

Die Zahl 403 sollte die Anzahl der Datensätze in der Anrufliste sein, wenn ich das grob überblicke. Die kommt aus Zeile 411 „echo count(…)“

schon wirds stiller :wink:

Cool, nun hat es funktioniert. Die Variablen / Scripte sind angelegt und die Werte kommen schon rein :).

Sehr schick - wieder vielen Dank an die Unterstützer und vor allem an die Ersteller :).

Hallo,

ich habe Problemen mit dem Klingelsperre Script von Swifty.

Es läuft zwar ohne Fehler durch, allerdings wird in der FB keine Klingelsperre gesetzt.
Ich vermute das ich evtl. bei der grundsätzlichen Konfiguration einen Fehler gemacht habe. Läuft denn bei jemandem das Script und was habt ihr für Einstellungen in der FB bei Klingelsperre?

Hallo,

gibt es denn für die aktuelle Firmware ein funktionierendes Skript, welches aus der gerade eingehenden Nummer aus der Fritzbox den Namen bezieht, so daß der Name des Anrufer vorgelesen werden kann.

Die bisher veröffentlichten Skripte:

scheinen mit der aktuelle Firmware nicht zu funktionieren.

Schönen Gruß, Andreas

hallo,

ich kämpfe hier immer noch mit dem kopieren / runterladen der Anrufbeantworter Datei (rec0.0xx) von der FB. :frowning:

Hat irgendwer das schon am laufen und kann mir da was zur Verfügung stellen?
Wenn das nicht bald läuft ist der WAF im Eimer. :o

Version der FB:
FRITZ!Box Fon WLAN 7390

FRITZ!OS 05.52
Firmware-Version: 84.05.52

ich kämpfe hier immer noch mit dem kopieren / runterladen der Anrufbeantworter Datei (rec0.0xx) von der FB.

Ich lasse mir die immer per email zuschicken…

Hallo mr_command,

und wie verarbeitest Du die dann?

Ich habe jetzt mal die FB als Netzlaufwerk eingebunden.

Aber jetzt hackt es beim File-Namen. Ich müsste jetzt noch die Namen der Aufnahmen ermitteln, damit ich diese dann kopieren kann und unter neuen Namen abspeichern (laufende Nummer.wav) und dann noch an dec.exe übergeben.

Also so zu sagen kopiere alle Dateien beginnend mit rec unter neuem namen in Verzeichnis x.

Hallo Horst,
folgendes Script läuft bei mir problemlos:

<?
	include_once (IPS_GetScriptFile(37226 /*[01 Zentralfuktionen\Scripte\Includes\logonFritzbox]*/));
	$nachruhe=getValue(30553 /*[01 Zentralfuktionen\Nachtruhe\Schlafen]*/);
	$abwesend=getValue(54043 /*[01 Zentralfuktionen\AnAbwesenheit\V_Abwesend]*/);
	$startHH="23";
	$startMM="00";
	$endHH="11";
	$endMM="00";
	if ($nachruhe or $abwesend) {
		$einAus=$ein;
		if ($abwesend) {
	   	$endHH="22";
			$endMM="59";
		}
	} else {
      $einAus=$aus;
   }
   print_r("Klingelsperre einAus=".$einAus."
");

	$ch = curl_init("http://{$fritzbox_ip}/system/ring_block.lua?sid={$SID}");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $rc1=curl_setopt($ch, CURLOPT_POSTFIELDS, ($einAus == "on" ? "active=on&start_hour=".$startHH."&start_minute=".$startMM."&end_hour=".$endHH."&end_minute=".$endMM : "") .
															"&sid=" . $SID. "&apply=");
   $rc2=curl_exec($ch);
   curl_close($ch);
?>

Das Script wird durch die Variablen $nachtruhe und $abwesend getriggert.
Die Variable $einAus muss den Wert „on“ haben, wenn die Klingelsperre aktiviert werden soll, sonst anders.
Die Zeiten bilden das maximale Fenster für die Klingelsperre (für Langschläfer :eek:).
Die VariablenIds sind entsprechend anzupassen.

Viel Erfolg
BONOX