Hallo,
heute habe ich mir ein kleines Skript geschrieben, um den Status der DVB-T-Tuner meines EyeTV Netstream auszulesen.
Ausgelesen wird sowohl ob die entsprechenden Tuner gerade in Benutzung oder frei sind, als auch Signalstärke und -qualität.
<?
// hier die IP-Adresse des Netstream-Geräts eintragen, bzw. diese aus der entsprechenden Variablen auslesen:
$deviceIP = GetValue(57746 /*[Setup\Netzwerk\TV-Tuner]*/);
// wenn es ein Watchdog-Skript gibt, hier die entsprechende Variable auslesen, so dass nur versucht wird,
//das Gerät auszulesen, wenn es online ist. Falls es keinen Watchdog gibt, hier einfach true einsetzen:
$deviceStatus = GetValue(24321 /*[Setup\Netzwerk\TV-Tuner\Ping-Status]*/);
// es folgen die Variablen für die Darstellung der Tuner-Stati im Webfront:
// -Tuner-Status numerisch (Profil anlegen
// -2=Empfangsstörung
// -1=Allgemeiner Fehler
// 0=Gerät ist offline
// 1=Tuner ist bereit
// 2=Tuner wird benutzt
// -String der anzeigt womit der Tuner verbunden ist (wird ansonsten versteckt)
// -Prozentwert (Integer) für Signalstärke
// -Prozentwert (Integer) für Signalqualität
$tunerStatusIds = Array();
$tunerStatusIds[1] =
Array(
33892 /*[Gewerke\Audio / Video\TV-Tuner\DVB-T-Tuner 1]*/,
35394 /*[Gewerke\Audio / Video\TV-Tuner\DVB-T-Tuner 1\Verbunden mit]*/,
57203 /*[Gewerke\Audio / Video\TV-Tuner\DVB-T-Tuner 1\Signalstärke]*/,
25244 /*[Gewerke\Audio / Video\TV-Tuner\DVB-T-Tuner 1\Signalqualität]*/
);
$tunerStatusIds[2] =
Array(
59460 /*[Gewerke\Audio / Video\TV-Tuner\DVB-T-Tuner 2]*/,
15411 /*[Gewerke\Audio / Video\TV-Tuner\DVB-T-Tuner 2\Verbunden mit]*/,
26245 /*[Gewerke\Audio / Video\TV-Tuner\DVB-T-Tuner 2\Signalstärke]*/,
16246 /*[Gewerke\Audio / Video\TV-Tuner\DVB-T-Tuner 2\Signalqualität]*/
);
// ab hier nichts mehr ändern!
if($deviceStatus)
{
for($tunerIndex = 1; $tunerIndex <= 2; $tunerIndex++)
{
$paramsObject = Array();
$paramsObject['TunerIndex'] = $tunerIndex;
$requestObject = Array();
$requestObject['method'] = 'Toma.GetTunerInformation';
$requestObject['id'] = 1;
$requestObject['params'] = $paramsObject;
$responseString = do_post_request('http://' . $deviceIP . '/control?nocache=' .
rand(1000000, 9999999),
json_encode($requestObject)) . "\r";
if($responseString)
{
$responseObj = json_decode($responseString);
//print_r($responseObj); // diese Zeile einkommentieren um zu sehen was so alles an Daten vorhanden ist
if($responseObj->TunerIsRetained == 1)
{
if($responseObj->TunerStatus->SignalQuality > 0)
{
SetValue($tunerStatusIds[$tunerIndex][0], 2);
SetValue($tunerStatusIds[$tunerIndex][1],
$responseObj->UserInformation->MachineName . ' (' .
$responseObj->UserInformation->Application . ')');
IPS_SetHidden($tunerStatusIds[$tunerIndex][1], false);
SetValue($tunerStatusIds[$tunerIndex][2],
$responseObj->TunerStatus->SignalStrength * 100);
IPS_SetHidden($tunerStatusIds[$tunerIndex][2], false);
SetValue($tunerStatusIds[$tunerIndex][3],
$responseObj->TunerStatus->SignalQuality * 100);
IPS_SetHidden($tunerStatusIds[$tunerIndex][3], false);
}
else
{
SetValue($tunerStatusIds[$tunerIndex][0], -2);
SetValue($tunerStatusIds[$tunerIndex][1],
$responseObj->UserInformation->MachineName . ' (' .
$responseObj->UserInformation->Application . ')');
IPS_SetHidden($tunerStatusIds[$tunerIndex][1], false);
SetValue($tunerStatusIds[$tunerIndex][2],
$responseObj->TunerStatus->SignalStrength * 100);
IPS_SetHidden($tunerStatusIds[$tunerIndex][2], false);
SetValue($tunerStatusIds[$tunerIndex][3],
$responseObj->TunerStatus->SignalQuality * 100);
IPS_SetHidden($tunerStatusIds[$tunerIndex][3], false);
}
}
else
{
SetValue($tunerStatusIds[$tunerIndex][0], 1);
SetValue($tunerStatusIds[$tunerIndex][1], 'nicht verbunden');
IPS_SetHidden($tunerStatusIds[$tunerIndex][1], true);
SetValue($tunerStatusIds[$tunerIndex][2],
$responseObj->TunerStatus->SignalStrength * 100);
IPS_SetHidden($tunerStatusIds[$tunerIndex][2], true);
SetValue($tunerStatusIds[$tunerIndex][3],
$responseObj->TunerStatus->SignalQuality * 100);
IPS_SetHidden($tunerStatusIds[$tunerIndex][3], true);
}
}
else
{
SetValue($tunerStatusIds[$tunerIndex][0], -1);
SetValue($tunerStatusIds[$tunerIndex][1], 'unbekannt');
IPS_SetHidden($tunerStatusIds[$tunerIndex][1], true);
SetValue($tunerStatusIds[$tunerIndex][2],
$responseObj->TunerStatus->SignalStrength * 100);
IPS_SetHidden($tunerStatusIds[$tunerIndex][2], true);
SetValue($tunerStatusIds[$tunerIndex][3],
$responseObj->TunerStatus->SignalQuality * 100);
IPS_SetHidden($tunerStatusIds[$tunerIndex][3], true);
}
}
}
else
{
for($tunerIndex = 1; $tunerIndex <= 2; $tunerIndex++)
{
SetValue($tunerStatusIds[$tunerIndex][0], 0);
SetValue($tunerStatusIds[$tunerIndex][1], 'offline');
IPS_SetHidden($tunerStatusIds[$tunerIndex][1], true);
SetValue($tunerStatusIds[$tunerIndex][2],
$responseObj->TunerStatus->SignalStrength * 100);
IPS_SetHidden($tunerStatusIds[$tunerIndex][2], true);
SetValue($tunerStatusIds[$tunerIndex][3],
$responseObj->TunerStatus->SignalQuality * 100);
IPS_SetHidden($tunerStatusIds[$tunerIndex][3], true);
}
}
function do_post_request($url, $data)
{
$params = array('http' => array(
'method' => 'POST',
'content' => $data
));
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
$response = @stream_get_contents($fp);
return $response;
}
?>