Nein das wird so nicht funktionieren. Alle die einen anderen Webport nutzen müssen die Funktion umschreiben, da die gleiche Variable in den Funktionen benutzt wird, aber einmal nur die IP verlangt wird zum anpingen und einmal die IP mit Port zum Aufrufen im Webinterface. Da die Funktion ENIGMA2_GetAvailable nur ausgeführt wird wenn nur die IP angegeben wird, übergebe ich an die Funktion nur die IP Adresse ohne den Port.
Die Konstanten sehen bei mir so aus:
<?
//*************************************************************************************************************
// Definieren der Konstanten für den Enigma-Receiver
global $k_DREAMBOXIP;
global $k_SAMSUNG;
global $k_WIFPORT;
global $k_DREAMBOX;
$k_DREAMBOXIP = GetValue(58413 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\IP]*/); //IP Adresse der Dreambox
$k_SAMSUNG = GetValue(32110 /*[Erdgeschoss\Wohnzimmer\LE40C750\IP]*/);
$k_WIFPORT = GetValue(42651 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Port]*/); //Webinterface Port der Dreambox
$k_DREAMBOX = $k_DREAMBOXIP.":".$k_WIFPORT;
?>
Sender anzeigen (aus dem obigen Beispiel):
include "12370.ips.php"; // e2_function Skript
include "46750.ips.php"; // KonstantenArray Skript
$AktuellerSender = "Keine Information";
$AktuellerSender = ENIGMA2_GetCurrentServiceName($k_DREAMBOX);
list($AktuelleSenderinformation, $Fortschrittsanzeige) = ENIGMA2_GetCurrentFilm($k_DREAMBOX);;
$AktuelleSenderreferenz = ENIGMA2_GetCurrentServiceReference($k_DREAMBOX);
$URL = "<a href='http://".$k_DREAMBOX."/web/stream.m3u?ref=$AktuelleSenderreferenz'>$AktuellerSender</a>";
list($snrdb, $snr, $ber, $acg) = ENIGMA2_SignalStatus($k_DREAMBOX);
If ($AktuellerSender == "")
{
SetValueString(59613 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Dreambox Anzeige\TV Informationen\Aktueller Sender]*/ , "Keine Information");
SetValueString(19962 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Dreambox Anzeige\TV Informationen\Aktuelle Programminformationen]*/ , "");
SetValueInteger(20384 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Dreambox Anzeige\TV Informationen\Sendungsfortschritt]*/ , 0);
SetValueInteger(43413 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Dreambox Anzeige\TV Informationen\Empfangspegel (AGC)]*/ , 0);
}
else
{
SetValueString(59613 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Dreambox Anzeige\TV Informationen\Aktueller Sender]*/ , $URL);
SetValueString(19962 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Dreambox Anzeige\TV Informationen\Aktuelle Programminformationen]*/ , "$AktuelleSenderinformation");
SetValueInteger(20384 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Dreambox Anzeige\TV Informationen\Sendungsfortschritt]*/ , $Fortschrittsanzeige);
SetValueInteger(43413 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Dreambox Anzeige\TV Informationen\Empfangspegel (AGC)]*/ , $acg);
}
?>
verfügbarkeit (aus dem obigen Beispiel)
<?
include "12370.ips.php"; // e2_function Skript
include "46750.ips.php"; // KonstantenArray Skript
$dreamboxIP = ENIGMA2_GetAvailable($k_DREAMBOXIP);
$samsungIP = ENIGMA2_GetAvailable($k_SAMSUNG);
SetValueBoolean(20109 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Dreambox Anzeige\TV Informationen\Dreambox Online]*/ , $dreamboxIP);
SetValueBoolean(48381 /*[Erdgeschoss\Wohnzimmer\Dreambox 8000\Dreambox Anzeige\TV Informationen\Samsung TV Online]*/ , $samsungIP);
?>
e2_function (aus dem obigen Beispiel)
<?
/*
* Holt IPAdresse aus Variable 'IP' eines DummyModules obj
*/
function GetIpFromObj($obj)
{
$ip_obj = @IPS_GetObjectIDByName("IP", $obj); // Hole das Object aus Variable IP
$ip_adr = @GetValue($ip_obj);
return $ip_adr;
}
/**
* Prüft über Ping ob Gerät erreichbar
* Return
* true - wenn erreichbar
* false - nicht erreichbar
**/
/*
* OK
*/
function ENIGMA2_GetAvailable($ipadr)
{
$result = false;
if ($ipadr > "" )
{
$result = (Boolean) Sys_Ping($ipadr, 1000); // Ping max. 1 Sek. warten
}
return $result;
}
/**
* Setzt Dreambox in Standby/nicht StandBy
* -1 - bei Fehler
* 1 - wenn in StandBy
* 0 - wenn nicht in Standby
**/
function ENIGMA2_ToggleStandby($ipadr)
{
$powerstate = 0;
$result = -1;
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/powerstate?newstate=$powerstate"));
print_r ($xmlResult);
if ($xmlResult->e2instandby == 'true')
{
$result = 1;
}
else
{
$result = 0;
}
}
return $result;
}
/**
* true - wenn ok
*/
function ENIGMA2_DeepStandby($ipadr)
{
$powerstate = 1;
$result = false;
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/powerstate?newstate=$powerstate"));
print_r($xmlResult);
$result = (Boolean)$xmlResult->e2instandby;
}
return $result;
}
/**
* true - wenn ok
*/
function ENIGMA2_Reboot($ipadr)
{
$powerstate = 2;
$result = false;
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/powerstate?newstate=$powerstate"));
$result = (Boolean)$xmlResult->e2instandby;
}
return $result;
}
/**
* true - wenn ok
*/
function ENIGMA2_RestartEnigma($ipadr)
{
$powerstate = 3;
$result = false;
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/powerstate?newstate=$powerstate"));
$result = (Boolean)$xmlResult->e2instandby;
}
return $result;
}
/**
* liefert den Namen des aktuellen Sendernamens
*/
/*
* OK
*/
function ENIGMA2_GetCurrentServiceName($ipadr)
{
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/subservices"));
$result = $xmlResult->e2service[0]->e2servicename;
}
return $result;
}
/**
* liefert den Namen der aktuellen Servicereferenz
*/
/*
* OK
*/
function ENIGMA2_GetCurrentServiceReference($ipadr)
{
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/subservices"));
$result = $xmlResult->e2service[0]->e2servicereference;
}
return $result;
}
/**
* liefert ein Array mit den Namen der Bouquets wenn $bouquet = ""
* liefert ein Array mit den Namen der Sender eines Bouquet wenn $bouquet ungleich ""
* keys e2servicereference
* keys e2servicename
*/
function ENIGMA2_GetServiceBouquetsOrServices($ipadr,$bouquet = "")
{
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
if ($bouquet == "" )
{
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/getservices"));
}
else {
$bouquet = urlencode($bouquet);
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/getservices?sRef=$bouquet"));
}
}
else
{
$xmlResult[] = "";
}
return $xmlResult;
}
/*
* Schreibt eine Infomessage auf den Bildschirm
* return
* true wenn erfolgreich
* false wenn nicht erfolgreich
**/
function ENIGMA2_WriteInfoMessage($ipadr,$message = "",$time=5)
{
$type = 1;
$result = false;
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$message = urlencode($message);
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/message?text=$message&type=$type&timeout=$time"));
if ($xmlResult->e2state == "True")
{
$result = true;
}
}
else
{
$result = false;
}
return $result;
}
/*
* Schreibt eine Errormessage auf den Bildschirm
* return
* true wenn erfolgreich
* false wenn nicht erfolgreich
**/
function ENIGMA2_WriteErrorMessage($ipadr,$message = "",$time=5)
{
$type = 3;
$result = false;
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$message = urlencode($message);
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/message?text=$message&type=$type&timeout=$time"));
if ($xmlResult->e2state == "True")
{
$result = true;
}
}
else
{
$result = false;
}
return $result;
}
/*
* Schreibt eine Message auf den Bildschirm
* return
* true wenn erfolgreich
* false wenn nicht erfolgreich
**/
function ENIGMA2_WriteMessage($ipadr,$message = "",$time=5)
{
$type = 2;
$result = false;
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$message = urlencode($message);
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/message?text=$message&type=$type&timeout=$time"));
if ($xmlResult->e2state == "True")
{
$result = true;
}
}
else
{
$result = false;
}
return $result;
}
/*
* Schreibt eine Message auf den Bildschirm die man mit ja oder nein beantworten muss
* man sollte die Frage immer so stellen, das nein als aktive Antwort ausgewertet wird,
* da in allen anderen Fällen 0 oder -1 gemeldet wird
* return
* -1 wenn keine erfolgreiche Verbindung
* 0 wenn mit ja oder garnicht geantwortet wurde
* 1 wenn mit nein geantwortet
**/
function ENIGMA2_GetAnswerFromMessage($ipadr,$message = "",$time=5)
{
$type = 0;
$result = -1;
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$message = urlencode($message);
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/message?text=$message&type=$type&timeout=$time"));
if ($xmlResult->e2state == "True")
{
sleep($time);
$result = -1;
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/messageanswer?getanswer=now"));
if ($xmlResult->e2statetext == "Answer is NO!")
{
$result = 1;
}
else
{
$result = 0;
}
}
}
else
{
$result = -1;
}
return $result;
}
function ENIGMA2_GetCurrentFilm($ipadr)
{
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable($k_DREAMBOXIP))
{
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/subservices"));
$reference = $xmlResult->e2service->e2servicereference;
$name = utf8_decode($xmlResult->e2service->e2servicename);
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/epgservice?sRef=$reference"));
$title = utf8_decode($xmlResult->e2event->e2eventtitle);
$description = utf8_decode($xmlResult->e2event->e2eventdescriptionextended);
$startsec = $xmlResult->e2event->e2eventstart;
$duration = $xmlResult->e2event->e2eventduration;
$currenttime = time();
if ((int)$startsec >= time() - 36000)
{
$start = date("H:i",(int)$startsec) .' Uhr';
$vorbei = round(((int)$currenttime - (int)$startsec) / 60 ).' Minuten';
}
else
{
$start = "N/A";
$vorbei = "N/A";
}
if (((int)$duration > 0) and ((int)$startsec >= time() - 36000))
$ende = date("H:i",(int)$startsec + (int)$duration) .' Uhr';
else
$ende = "N/A";
if ((int)$duration > 0)
$dauer = round((int)$duration / 60).' Minuten';
else
$dauer = "N/A";
if (((int)$currenttime > time() - 1800) and ((int)$currenttime < time() + 1800) and ((int)$startsec >= time() - 36000) and ((int)$duration > 0))
$verbl = round(((int)$startsec + (int)$duration - (int)$currenttime) / 60 ).' Minuten';
else
$verbl = "N/A";
If (round((int)$duration / 60) > 0)
{
$Fortschritt = (int)(round(((int)$currenttime - (int)$startsec) / 60 ) / round((int)$duration / 60) * 100) ;
}
else
{
$Fortschritt = 0;
}
$Filminformation = "Titel : $title
Start : $start - Ende : $ende
Dauer : $dauer - Vergangen : $vorbei - Verbleiben : $verbl
Details : $description";
return array($Filminformation, $Fortschritt);
}
else
return 'Box nicht erreichbar!';
}
//*************************************************************************************************************
// Ermittelt die EPG-Daten eines definierten Senders
function ENIGMA2_EPG($ipadr,$sender = "")
{
$xmlResult[] = "";
$sender = urlencode($sender);
$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/epgservice?sRef=$sender"));
//$title = $xmlResult->e2event->e2eventtitle;
return $xmlResult;
//return "$title";
}
function GetDreamEpg($ipadr, $channel) {
$epgentry = "";
$chanlist = new SimpleXMLElement(file_get_contents("http://$ipadr/web/getservices?sRef=1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet."."dbe00.tv"."%22%20ORDER%20BY%20bouquet"));
$bouquetlist = $chanlist->e2service;
$zapname = IPS_GetObject($channel);
$zapname2 = $zapname['ObjectName'];
foreach ($bouquetlist as $entry) {
$sendername = utf8_decode($entry->e2servicename);
$sref = ("$entry->e2servicereference
");
$pos1 = strpos($sref,'"');
$pos2 = strpos($sref,'"',$pos1+1);
$sref = substr($sref,$pos1,$pos2-$pos1-1);
if($sendername == $zapname2) {
$ergebnis = $sref;
$epgservice = new SimpleXMLElement(file_get_contents("http://$ipadr/web/epgservice?sRef=".$ergebnis.""));
$epglist = $epgservice->e2event;
foreach ($epglist as $entry2) {
$heute = time();
$heute = date("dmy", $heute);
$eventstartraw = trim($entry2->e2eventstart);
$eventdate = date("dmy", $eventstartraw);
//if ($eventdate == $heute) {
$newtitel = utf8_decode($entry2->e2eventtitle);
$newsref = $entry2->e2eventservicereference;
$newtime = date("H:i",$eventstartraw);
$newdesc = utf8_decode($entry2->e2eventdescriptionextended);
$neweventid = trim($entry2->e2eventid);
$newlenght = $entry2->e2eventduration /60;
$epgentry .= "<div class=\"standardContainer\">" ."Zeit: " .$newtime ."</div>";
$epgentry .= "<div class=\"standardContainer\">" ."Länge: " .$newlenght ." Minuten"."</div>";
$epgentry .= "<div class=\"standardContainer\">" ."Titel: " .$newtitel ."</div>";
$epgentry .= "<div class=\"standardContainer\">" ."Inhalt: " .$newdesc ."</div>";
$epgentry .= '<td style="line-height: 25px;">'.'</td><td align="right"><div onclick="dojo.xhrGet({ url: \'http://192.168.0.5/web/timeraddbyeventid?sRef='.$newsref .'&eventid=' .$neweventid .'\'});" style="border:1px solid #3B3B4D; margin:0px; padding:3px; text-align:center; width: 100px;">Aufnehmen</div></td>';
$epgentry .= "<br>";
//}
}
}
}
return $epgentry;
}
//*************************************************************************************************************
// Prüft die Signalstärke des Senders
function ENIGMA2_SignalStatus($ipadr)
{
global $k_DREAMBOXIP;
if (ENIGMA2_GetAvailable( $k_DREAMBOXIP ))
{
$xml = simplexml_load_file("http://$ipadr/web/signal?.xml");
$snrdb = (int)$xml->e2snrdb;
$snr = (int)$xml->e2snr;
$ber = (int)$xml->e2ber;
$acg = (int)$xml->e2acg;
}
else
{
$snrdb = 0;
$snr = 0;
$ber = 0;
$acg = 0;
}
return array($snrdb, $snr, $ber, $acg);
}
?>