Dreamboxen mit IPS steuern

Danke für die schnelle Antwort. Ich versuch mich nun mal an einer Zusammenfassung für Anfänger in dem Bereich.

1.0 Ordner anlegen.

  • Ich lege mir im normalen Objektbaum ein paar Ordner an (Bild1) die ich im „Webfront Configurator“ verlinke.
  • Im „Webfront Configurator“ erstelle ich eine SplitPane und zwei Kategorien darunter. (Bild2)

2.0 Grundstruktur erstellen für Variablen und Scripte.

  • Am Ende soll es aussehen wie auf Bild4.
  • Nun einen Arbeitsordner anlegen und darin zwei Dummy Module erstellen. (Bild5)
  • Die Dummy Module verlinke ich zum Ordner „Rechts“ und „Links“ wie auf Bild3.

2.1 Das Herzstück ist das Funktionsskript namens „e2_function“.

  • Es beinhaltet alle wichtigen Funktionen für die weiteren Skripte.
  • Wir haben eine Datei namens „KonstantenArray“. Diese beinhaltet unsere Geräte/IPs. In meinem Fall einen Fernseher und eine Dreambox.
  • Diese zwei Dateien sind bei fast allen Skripten inkludiert am Anfang.
  • Beim ersten Beispiel1 müssen wir nun auch schon unsere Variablen anpassen.

[u]3.0 Das Dummy Module „TV Informationen“:/u

  • Als erstes kommt das „verfügbarkeit“ Skript. (2 Variablen erstellen & IP Adresse(n) ändern)
  • Das „verfügbarkeit“ Skript zeigt ob die in „KonstantenArray“ vorhandenen IPs Online oder Offline sind und schreibt dies in zwei Variablen.
  • Bei mir Variable 37801 & 43383 (Bild5). Profil & Assoziationen & Aktion (Bild6)

3.1 Das Dummy Module „TV Informationen“:

  • Das Skript „Sender anzeigen“ einbauen.
  • (wieder die include Variablen anpassen! & 4 Variablen erstellen)
  • Die 4 Variablen sind wieder unter Bild5 sichtbar und müssen im „Sender anzeigen“ Skript angepasst werden.
  • Das „Sender anzeigen“ Skript löse ich derzeit aus, in dem ich im Webfront auf „Online“ klicke.(siehe Tabelle unten)
    (zum testen ganz ok so.)

4.0 Das Dummy Module „TV Programm“:

  • Das Skript „tv-movie“ einbauen. (Bild5)
  • Eine Variable erstellen. (String mit HTMLBox)
  • Das Skript „tv-movie“ kann zb alle 5 Minuten ausgeführt werden.

— Download der Skripte:


----TV Informationen
--Dreambox 800HD........Boolean......Profil=(siehe Bild6)...........Aktion=sender anzeigen
--Samsung TV...............Boolean......Profil=(siehe Bild6)...........Aktion=sender anzeigen
--Aktueller Sender.........String.........Profil=~HTMLBox.............Aktion=Keine
--Aktuelle Proginfos.......String.........Profil=~Textbox.............Aktion=Keine
--Empfangspegel..........Integer.........Profil=~Intensity.100.....Aktion=Keine
--Sendungsfortschritt....Integer.........Profil=~Intensity.100.....Aktion=Keine
----TV Programm
--(rss-Feed TV-Movie)....String.........~HTMLBox.............Aktion=Keine

Nun sollte wir Bild4 erreicht haben. Ein paar Skripte noch verstecken… Ein bisschen sortieren.

Ich hoffe ich hab nun den ersten Block geschafft zu erklären. Falls noch was Fehlt bitte melden.
(Die Timer Sache ist in den Funktionen nicht enthalten.)

i7bvnlv3.png
i18bxpnaq.png

Vielen Dank für die Anleitung.Installation passt soweit.
Leider bekomme ich einen Fehler beim Abfruf der Infos:

Notice: Undefined variable: result in C:\IP-Symcon\scripts\46002.ips.php on line 119

Notice: Undefined variable: result in C:\IP-Symcon\scripts\46002.ips.php on line 134

Script 46002 ist die e2_function.php
Irgendwas stimmt da bei ir beim abholen das Sendernamens nicht.

Woran könnte es liegen?Ich habe eine Dreambox mit e2. Denke aber das ist egal oder?

Gruß
Robert

Hallo Robert.

Vielleicht hilft dir das noch ein bisschen weiter.

In Zeile 119 und 134 wird ja das hier aufgerufen:

http://192.168.x23.x32/web/subservices

Versuch das mal im Browser einzugeben. Hier ein Bild von meiner Ausgabe.

Sollte ja bei dir auch so sein. Vielleicht stimmt der Pfad nicht ganz.

Grüße,
Die t33kanne

Hi,

das hab ich schon getestet. Sieht bei mir auch so aus. Habe rausgefunden woran es liegt.

Ich benutze nicht Port 80 sondern einen anderen.
Wenn man das im Konstantenscript mit DreamboxIP:6666 hinterlegt,kann er die Boolean nicht mehr schreiben.„Invalid argument“
Dadurch passt die Verfügbarkeitsprüfung der E2_function nicht mehr.
Jetzt schau ich mal was ich mache.

hmm na dann. :wink:

… https getestet? Vielleicht kannst du ja 443 verwenden statt 6666

Hi,

das hab ich schon getestet. Sieht bei mir auch so aus. Habe rausgefunden woran es liegt.

Ich benutze nicht Port 80 sondern einen anderen.
Wenn man das im Konstantenscript mit DreamboxIP:6666 hinterlegt,kann er die Boolean nicht mehr schreiben.„Invalid argument“
Dadurch passt die Verfügbarkeitsprüfung der E2_function nicht mehr.
Jetzt schau ich mal was ich mache.

Hi ist da schon jemand weiter gekommen? habe exakt das gleiche problem, meine Box lauft auf dem port 8059 :mad:

LG

Hallo reblade,

es müsste funktionieren wenn Du DreamboxIP:6666 als „DreamboxIP:6666“ an die Funkion(en) übergibst…

Joachim

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



?>

Danke @ Fonzo, jetzt läufts:D

Ich lasse mir die aktuellen Sendungen mit dem TV Movie Rss Feed im Webfront anzeigen. Ich möchte gerne mit einem druck auf die Sendung auf den Sender umschalten können. Dazu habe ich einfach die Zeile


$titel = '<a href=http://'.$ipadr.'/web/zap?sRef='.$sref.'><img src=picon/'.$pref.'.png alt="not Found"><b style=color:#C00000;>'.$item['title'].'</b></a>';

ergänzt. Das Umschalten der Dreambox funktioniert damit auch wunderbar, nur werde ich dann weitergeleitet auf die Webseite der Dreambox mit der Bestätigung und verlasse damit den Webfront von IPS. Kann man das irgendwie verhindern, bzw. wie habt ihr das gelöst von einem Webseiten Element umschalten zu können.

hallo zusammen,
so nun kann ich per IPS meine Dreambox steuern, super arbeit danke an alle!

kann man sich auch meldungen aus dem IPS Umfeld auf dem TV zeigen?:rolleyes:
das hatten wir früher mit XBMC gelöst leider geht das seit längere Zeit nicht mehr.:frowning:

LG

Hallo reblade,

ich habe jetzt nicht den ganzen Thread gelesen. Du meinst, über die Dreambox auf dem TV anzeigen?

Das geht doch recht einfach z.B. so:
$message = urlencode(„Es klingelt an der Haustür“);
$xmlResult = new SimpleXMLElement(file_get_contents(„http://192.168.x.xx/web/messagetext=$message&type=3&timeout=5“));

VG
Wolfgang

Gibt es ein Paket, in dem alle Scripte zusammengefasst sind? Oder muss man sich alle raussuchen?

Viele Grüße
Sascha

Nu - sehr viel komfortabler als hier geht es doch fast nicht mehr.

Ok, übersehen. Danke! :wink:

Hallo Zusammen,
wirklich super Arbeit, die hier wieder einmal geleistet wurde! :loveips:
Danke an alle Beteiligten!

Ein Feature vermisse ich noch oder ich habe es noch nicht gefunden:
Wie kann ich herausfinden, ob gerade ein TV-Sender angesehen wird oder ob eine Aufnahme von der Festplatte angesehen wird?

Hier auch noch etwas von meinen Erweiterungen.

Zur Weiterverarbeitung ist die „ENIGMA2_GetSpaceInfo()“ ziemlich ungeeignet, da sich die Einheit ändern kann und zudem wird ein String zurückgegeben. Meine Funktion liefert immer einen Int-Wert in MB zurück. Ich gehe hierbei davon aus, dass die Dreambox auch mit 1000 und nicht wie es korrekt wäre mit 1024 umrechnet.
Des Weiteren wurde nur die erste Festplatte ausgelesen und es wird ignoriert, ob CompactFlash-Speicher, USB-Sticks oder weitere Festplatten angesteckt sind.

Ist zwar nicht elegant gelöst, aber sollte funktionieren:

// liest den noch vorhandenen Festplattenplatz der Box aus
// Rückgabewert = Int (MB)
function ENIGMA2_GetSpaceInfoMb($ipadr, $hddId)
{
	global $credentials;

   if (ENIGMA2_GetAvailable($ipadr))
	{
		// Benutzername und Passwort hinzufügen
		if(isset($credentials['user']) && isset($credentials['pass']))
		{
			$ipadr = $credentials['user'].":".$credentials['pass']."@".$ipadr;
		}

		$xmlResult =  new SimpleXMLElement(file_get_contents("http://$ipadr/web/about"));

		$value = $xmlResult->e2about->e2hddinfo[$hddId]->free;
        
		if(false !== strstr($value, " MB"))
		{
			$value = str_replace(" MB", "", $value);

			if(false !== strstr($value, "."))
			{
   			$value = (int)str_replace(".", "", $value) / 1000;
			}
			else
			{
			   $value = (int)$value;
			}
		}
		else if(false !== strstr($value, " GB"))
		{
			$value = str_replace(" GB", "", $value);
			
			if(false !== strstr($value, "."))
			{
   			$value = (int)str_replace(".", "", $value);
			}
			else
			{
			   $value = (int)$value * 1000;
			}
		}
		else if(false !== strstr($value, " TB"))
		{
			$value = str_replace(" TB", "", $value);

			if(false !== strstr($value, "."))
			{
   			$value = (int)str_replace(".", "", $value);
			}
			else
			{
			   $value = (int)$value * 1000000;
			}
		}
	}

	return $value;
}

Moin liebe Gemeinde ,

soweit Funtkioniert das Script erstmal Super, doch wenn die Box aus ist gibts immer ne Fehlermeldung , ich weiß nicht genau wo es günstig wäre zu prüfen ob das Gerät überhaupt eingeschaltet ist.

Könnt ihr mir da nen Tip geben ?

Moin…

… ping die Box an und wenn True dann führe das Skript aus! Fertig!

Gruß,
Peter

Vlt. so



$dream =  ""; # IP Dreambox

$ping = Sys_Ping($dream, 1000);
if ($ping ==false){
    echo "<FONT SIZE='+3' COLOR=red><br>DreamBox ist ausgeschaltet</FONT>";
    die();
    }