ja, du dir mit der Suche nach „Kindersicherung“ und etwas anpassen (vielleicht). Da du eine 7390 hast bin ich mir nicht sicher, ob das Script läuft.
Bei mir läuft das folgende Script. Es wird durch den Online-Status des Rechners getriggert und dann alle 180 Sekunden aufgerufen. Außerdem einmal Nachts zum „Tagesabschluß“.
Es werden diverse Variablen verwendet, die durch den Kommentar hoffentlich selbsterklärend sind. Den HTML-Teil zeige ich im Dashboard an, die Variablen werden im (eigenen) Webfront angezeigt.
Einen Fehler habe ich noch, wenn die zulässige Zeit pro Tag unterschiedlich ist. Dabei wird die Tagesgesamtzeit nicht korrekt gefunden. Außerdem kann es bei Änderungen in der Fritz.Box (hinzufügen weiterer Rechner) zu Verschiebungen kommen und die Zeile 2147 ist dann nicht mehr die Richtige.
<?
function GetTextBetween($string, $start, $end)
{
preg_match_all("/$start(.*)$end/i", $string, $match);
return $match[1][0];
}
$debug = true;
// array_search with partial matches and optional search by key
function array_find($needle, $haystack, $search_keys = false) {
if(!is_array($haystack)) return false;
foreach($haystack as $key=>$value) {
$what = ($search_keys) ? $key : $value;
if(strpos($what, $needle)!==false) return $key;
}
return false;
}
$LAN = GetValueBoolean(37469 /*[IT\Netzwerk Monitoring\Notebook--LAN]*/);
$WLAN = GetValueBoolean(30451 /*[IT\Netzwerk Monitoring\Notebook--WLAN]*/);
if ($LAN OR $WLAN) {
// Notebook im Netz
IPS_SetScriptTimer($IPS_SELF, 180);
if ($debug)
IPS_LogMessage(IPS_GetName($IPS_SELF), "Notebook an (Kindersicherungsanzeige aktualisieren.)");
} else {
// Notebook aus
IPS_SetScriptTimer($IPS_SELF, 0);
if ($debug)
IPS_LogMessage(IPS_GetName($IPS_SELF), "Notebook aus (Kein Kindersicherungsanzeige notwendig.)");
}
//-----------------------------
$fritzbox_ip = 'fritz.box';
$fritzgui = 'http://fritz.box/cgi-bin/webcm';
$fritzseite = '../html/de/menus/menu2.html';
//$fritzseite = '../html/index_internet.html';
$filename = IPS_GetKernelDir()."\\webfront\\user\\Fritzbox\\Kindersicherung.txt";// anpassen
$password = 'xxx'; //PW eingeben
$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;
}
}
// Kindersicherung
$newlist = array('getpage' => $fritzseite, 'sid' => $SID, 'var:menu' => 'internet', 'var:pagename' => 'userlist');
$getnewlist = http_post_fields($fritzgui, $newlist);
$fileHandle = @fopen($filename, 'wb+');
fwrite($fileHandle, $getnewlist);
fclose($fileHandle);
$lines = file("../webfront/user/Fritzbox/Kindersicherung.txt");
// ===================================
$verbraucht = (int)GetTextBetween($lines[array_find('name:"NameKind",hostname:"",today_time:"', $lines)], 'name:"NameKind",hostname:"",today_time:"', '",icon:getNetIcon')/60;
//$gesamt = (int)GetTextBetween($lines[array_find('case "user1": return "', $lines)], 'case "user1": return "', '";')/60;
$gesamt = (int)GetTextBetween($lines['2147'], 'case "user1": return "', '";')/60;
$verfuegbar = $gesamt - $verbraucht;
//SetValueString(29163 /*[Kommunikation\Fritz.Box\FB Kindersicherung Onlinezeit\Dashboard Ausgabe]*/ , "<table border='1' width='990' style='text-align:left; margin: 5;'><tr><th>Gesamt [Minuten]</th><th>Verbraucht [Minuten]</th><th>Verfügbar [Minuten]</th></tr><tr><td>$ausgabe1</td><td>$time1</td><td>$verfuegbar1</td></tr></table>");
SetValueString(29163 /*[Kommunikation\Fritz.Box\FB Kindersicherung Onlinezeit\Dashboard Ausgabe]*/ , $gesamt." gesamt [Minuten]
".$verbraucht." verbraucht
".str_pad ( $verfuegbar, 3, ' ', STR_PAD_LEFT )." verfügbar");
SetValueString(57471 /*[Kommunikation\Fritz.Box\FB Kindersicherung Onlinezeit\KiSiCheckTime]*/ , date("H:i"));
SetValueString(47232 /*[Kommunikation\Fritz.Box\FB Kindersicherung Onlinezeit\Gesamt]*/,$gesamt);
SetValueString(42629 /*[Kommunikation\Fritz.Box\FB Kindersicherung Onlinezeit\Verbraucht]*/,$verbraucht);
SetValueString(20459 /*[Kommunikation\Fritz.Box\FB Kindersicherung Onlinezeit\Verfügbar]*/,$verfuegbar);
if($IPS_SENDER == "Execute") {
echo $gesamt." gesamt
".$verbraucht." verbraucht
".str_pad ( $verfuegbar, 3, ' ', STR_PAD_LEFT )." verfügbar [Minuten]
";
print_r($lines);
} else {
// Wenn Aufruf zum Tagesabschluß, dann Onlinezeit schreiben
if ($IPS_EVENT == 17254 /*[Kommunikation\Fritz.Box\FB Kindersicherung Onlinezeit\]*/ )
SetValueInteger(54136 /*[Kommunikation\Fritz.Box\FB Kindersicherung Onlinezeit\Onlinezeit]*/ , $verbraucht);
}
?>