Dreamboxen mit IPS steuern

In der DM7020 sind die beiden Dateien als „sh“ Dateiformat zu lesen

Hast Du eventuell einen Enigma 1 Receiver, also z.B. eine Dreambox DM500, DM500plus, DM600pvr, DM56x0, DM7000 oder DM7020?

Gruß D.Voss

Hallo Leute,

ich habe jetzt mal nachgeschaut:
Marcus hatte ja den Tipp mit dem OnlineTool gegeben, die Datei ist aber zu groß um sie dort anzuschauen.
Trotzdem Dank dafür.

Dann habe ich mal nach den beiden Dateien aus dem Enigma1-Image geschaut, die sind bei mir (erwartungsgemäß) nicht vorhanden, da es sich ja um ein Enigma2-Image handelt…

So komme - zumindest ich - nicht weiter…

Aber sei es drum - es gibt noch so viele andere Möglichkeiten…
Wenn ich etwas über IPS anstosse kann ich die entsprechenden Aktualisierungssskripte auch mit starten, ansonsten pollt man halt im Minutenabstand - bringt einen auch nicht wirklich um (obwohl die andere Lösung selbstverständlich ihren Charme hat…)

Joachim

Hallo Leute,

mit diesem Testcode ist es mir gelungen, ein Videostream des Enigma-Receivers direkt in das Webfront unter IE einzubauen:

SetValueString(45676  /*[Server\Testobjekte	est\Video Test]*/, '<object id="MediaPlayer1" height="650" width="1200" classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95"> <param name="Filename" value="http://192.168.178.39/web/stream.m3u?ref=1:0:1:14:2:85:C00000:0:0:0:"> <PARAM NAME="AutoStart" VALUE="True"> <PARAM NAME="BufferingTime" VALUE="1"> <PARAM NAME="ShowControls" VALUE="False"> <PARAM NAME="ShowTracker" VALUE="False"> <PARAM NAME="ClickToPlay" VALUE="True"> </object>');

Das Ganze ist noch nicht ganz sooo ideal, aber ich denke ein Anfang.
Es handelt sich um den WMP Version 6.4 der über die classID dort eingebunden wird, er hat deutlich mehr Parameter zur Einstellung als der aktuelle WMP.

Ist das noch ausbaufähig?

Frohes Fest!

Joachim

Hallo Joachim

Könntest du mir mal bitte erklären wie du das auf Bild 2 bei dir gemacht hast.
Also wie dein verzeichnisbaum aussieht für die Variablen und Script Zuordnung.

Hallo Heinzzuhaus,

ich habe Dir mal drei Screenshots gemacht.

Schau mal wie Du damit zurecht kommst, bei Bedarf melde Dich bitte!

Joachim

was ist bei dir das kontantenarray script und das tv senderlisten script?

Hier die Senderlistenskripte:

<?
include "f_Enigma_2.ips.php";
include "Konstanten.ips.php";

$Ausloeser = $_IPS['VARIABLE'];
$Wert = $_IPS['VALUE'];

$object = IPS_GetObject($Ausloeser);    // Hole alle Scripteigenschaften
$Senderreferenz = $object['ObjectInfo'];
$Sender = $object['ObjectName'];

If ($Wert == 1)
	{
	SetValueString(48260 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Ausgewählter Sender]*/ , $Sender);
   IPS_SetIcon(48260 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Ausgewählter Sender]*/ , substr(str_replace(":", "_", $Senderreferenz), 0, -1));
   SetValueString(15022 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Aktuelles Programm]*/ , "");
   SetValueString(34139 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Aktuelle Sendung]*/ , "");
   SetValueInteger(29081 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Sendungsfortschritt]*/ , 0);
	SetValueString(18616 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Senderreferenz]*/ , $Senderreferenz);
	}
If ($Wert == 2)
	{
	ENIGMA2_Zap($k_KATHREIN['IP'], $Senderreferenz);
	IPS_RunScript(25487 /*[Sonstige Daten\TV\TV Information\TV Information\Aktueller Sender\Aktuellen Sender anzeigen]*/ );
	}
?>

Hier das was in den Konstanten steht:

//*************************************************************************************************************
// Definieren der Konstanten für den Enigma-Receiver
global $k_KATHREIN;
$k_KATHREIN = array("IP" => "192.168.178.39");

Joachim

ok, das hab ich erst mal.
jetzt hab ich noch probleme mit dem hier

   SetValueString(15022 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Aktuelles Programm]*/ , "");
   SetValueString(34139 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Aktuelle Sendung]*/ , "");

welche funktion hast du dafür benutzt, wie sieht das script aus?

und das hier

 IPS_RunScript(25487 /*[Sonstige Daten\TV\TV Information\TV Information\Aktueller Sender\Aktuellen Sender anzeigen]*/ );

dann müsst ich es haben

Die im ersten von Dir gezeigten Programmausschnitt angesprochenen Variablen sind die, die Du oben im zweiten Bild siehst (ganz normale Stringvariablen).

Das Skript was Dir wohl noch fehlte, ist dieses hier:

<?
include "f_Enigma_2.ips.php";
include "Konstanten.ips.php";

$AktuellerSender = "Keine Information";

$AktuellerSender = ENIGMA2_GetCurrentServiceName($k_KATHREIN['IP']);
list($AktuelleSenderinformation, $Fortschrittsanzeige) = ENIGMA2_GetCurrentFilm($k_KATHREIN['IP']);;
$AktuelleSenderreferenz = ENIGMA2_GetCurrentServiceReference($k_KATHREIN['IP']);
$URL = "<a href='http://".$k_KATHREIN['IP']."/web/stream.m3u?ref=$AktuelleSenderreferenz'>$AktuellerSender</a>";
list($snrdb, $snr, $ber, $acg) = ENIGMA2_SignalStatus($k_KATHREIN['IP']);

If ($AktuellerSender == "")
	{
   SetValueString(12809 /*[Sonstige Daten\TV\TV Information\TV Information\Aktueller Sender]*/ , "Keine Information");
   SetValueString(32920 /*[Sonstige Daten\TV\TV Information\TV Information\Aktuelle Programminformationen]*/, "");
	SetValueInteger(55375 /*[Sonstige Daten\TV\TV Information\TV Information\Sendungsfortschritt]*/ , 0);
	SetValueInteger(42007 /*[Sonstige Daten\TV\TV Information\TV Information\Empfangspegel (ACG)]*/ , 0);
	}
   else
   {
	SetValueString(12809 /*[Sonstige Daten\TV\TV Information\TV Information\Aktueller Sender]*/ , $URL);
	SetValueString(32920 /*[Sonstige Daten\TV\TV Information\TV Information\Aktuelle Programminformationen]*/, "$AktuelleSenderinformation");
   SetValueInteger(55375 /*[Sonstige Daten\TV\TV Information\TV Information\Sendungsfortschritt]*/ , $Fortschrittsanzeige);
	SetValueInteger(42007 /*[Sonstige Daten\TV\TV Information\TV Information\Empfangspegel (ACG)]*/ , $acg);
	}
?>

Manchmal weiß man nach so langer Zeit auch nicht mehr was man da alles so gestrickt hat…:rolleyes:

Joachim

irgendwie fehlt noch ein script zu dem 2. Bild rechte seite.
das hier

<?
include „f_Enigma_2.ips.php“;
include „Konstanten.ips.php“;

$AktuellerSender = „Keine Information“;

$AktuellerSender = ENIGMA2_GetCurrentServiceName($k_KATHREIN[‚IP‘]);
list($AktuelleSenderinformation, $Fortschrittsanzeige) = ENIGMA2_GetCurrentFilm($k_KATHREIN[‚IP‘]);;
$AktuelleSenderreferenz = ENIGMA2_GetCurrentServiceReference($k_KATHREIN[‚IP‘]);
$URL = „<a href='http://“.$k_KATHREIN[‚IP‘]."/web/stream.m3u?ref=$AktuelleSenderreferenz’>$AktuellerSender</a>";
list($snrdb, $snr, $ber, $acg) = ENIGMA2_SignalStatus($k_KATHREIN[‚IP‘]);

If ($AktuellerSender == „“)
{
SetValueString(12809 /[Sonstige Daten\TV\TV Information\TV Information\Aktueller Sender]/ , „Keine Information“);
SetValueString(32920 /[Sonstige Daten\TV\TV Information\TV Information\Aktuelle Programminformationen]/, „“);
SetValueInteger(55375 /[Sonstige Daten\TV\TV Information\TV Information\Sendungsfortschritt]/ , 0);
SetValueInteger(42007 /[Sonstige Daten\TV\TV Information\TV Information\Empfangspegel (ACG)]/ , 0);
}
else
{
SetValueString(12809 /[Sonstige Daten\TV\TV Information\TV Information\Aktueller Sender]/ , $URL);
SetValueString(32920 /[Sonstige Daten\TV\TV Information\TV Information\Aktuelle Programminformationen]/, „$AktuelleSenderinformation“);
SetValueInteger(55375 /[Sonstige Daten\TV\TV Information\TV Information\Sendungsfortschritt]/ , $Fortschrittsanzeige);
SetValueInteger(42007 /[Sonstige Daten\TV\TV Information\TV Information\Empfangspegel (ACG)]/ , $acg);
}
?>

passt zum 1.Bild

mir fehlt immer noch aktuelles Programm und aktuelle Sendung so wie bei dir auf dem 2. Bild
bekomm ich nicht hin.

Sorry - ich habe offenbar noch ein Skript vergessen:

<?
include "f_Enigma_2.ips.php";
include "Konstanten.ips.php";

$currenttime = time();

$liste = ENIGMA2_EPG($k_KATHREIN['IP'], GetValueString(18616 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Senderreferenz]*/ ));
		$i = 0;
      SetValueString(15022 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Aktuelles Programm]*/ , "");
		foreach ($liste as $sendung)
      {
			$Sendungsinfo[$i][0] = utf8_decode($sendung->e2eventtitle); // Sendungsname
         $startsec = ($sendung->e2eventstart);
         $Sendungsinfo[$i][1] = date("H:i",(int)$startsec) .' Uhr'; // Startzeit
         $duration = ($sendung->e2eventduration);
         $Sendungsinfo[$i][2] = date("H:i",(int)$startsec + (int)$duration) .' Uhr'; // Endzeit
			SetValueString(15022 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Aktuelles Programm]*/ , GetValueString(15022 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Aktuelles Programm]*/ ).$Sendungsinfo[$i][1].": ".$Sendungsinfo[$i][0]." 
");
			If ($i == 3)
			{
				break;
			}
			If ($i == 0)
			   {
			   If (round((int)$duration / 60) > 0)
				   {
					SetValueInteger(29081 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Sendungsfortschritt]*/ , (int)(round(((int)$currenttime - (int)$startsec) / 60 ) / round((int)$duration / 60) * 100));
					}
				else
				   {
				   SetValueInteger(29081 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Sendungsfortschritt]*/ , 0);
				   }
				SetValueString(34139 /*[Sonstige Daten\TV\TV Programminformation\TV Programminformation\Aktuelle Sendung]*/ , utf8_decode($sendung->e2eventdescriptionextended));
				}

			$i = $i + 1;
		}

?>

Danke, jetzt hab ich es.
wenn du mir jetzt noch sagst in welchen ordner ich die Senderlogos packe und wo ich die her bekomme.:slight_smile:

Danke dir für deine Hilfe

…die Senderlogos kommen wie die anderen Icons in den IPS-Ordner webfront/user/icons/fixed…

Picons findest Du z.B. hier… Ansonsten suche mal bei Google nach Picons…

Du solltest dort aber nicht alle verfügbaren Picons in den oben genannten Ordner kopieren, da dieser sonst verhältnismäßig lange zum Einlesen benötigen könnte…

Joachim

hab ich alles gemacht, aber werden nicht angezeigt.
kann es sein wenn sie zu groß sind?
muss ich die in 32x32 haben oder ist die größe egal?

…da bin ich jetzt etwas überfragt…

Die Icons werden den Variablen ja zugewiesen, wenn sie erzeugt werden. Ich weiß nicht ganz genau was passiert, wenn das zugewiesene Icon zum Zeitpunkt der Zuweisung nicht vorhanden ist.
Ggf. noch mal alle Programmvariablen löschen und die Variablenstruktur noch mal neu erzeugen lassen…

Haben die Icon die Nummernkombinationen wie die Sender ID??

Joachim

ja haben sie, sind aber in 100x 60
find keine in 32x32

jetzt sind sie da. hab noch mal neu in ordner kopiert

Hallo.
Ich versuche nun seit einiger Zeit meine Dreambox mit einzubinden. Ich habe mir soweit alle Funktionen zusammen kopiert.
Die zwei Bilder haben mich auf den Geschmack gebracht.
Leider komme ich mit den geposteten Scripten nur so halb weiter. Ich wollte eigentlich eine Art Beschreibung basteln aber soweit komme ich nun nicht. :wink:

Mal von vorne anfangen… Wie weit seit Ihr mit der „enigma2_functions.ips.php“ Ich habe hier mal http://paste2.org/KczYgsN4 meine Zusammenstellung der Grundfunktionen ohne Timer.

@JPaeper… Hi, Ist es möglich das du kurz beschreibst welche Scripte du in deinem Beitrag bei Bild 1 verwendest.?
Ich versuche das grad nachzustellen :wink: … Mein Versuch http://paste2.org/8Z7kw3hE & http://paste2.org/y4EGG9nx

  1. Ich konnte zb nicht rausfinden wie du die Fortschrittsanzeige dort hinbekommst?
  2. Wie löst du die Aktionen/Scripte auf Bild1 / linke Seite aus?
  3. Was in etwas ist den für Bild1 / rechte Seite zuständig?

Bin im Moment leicht verwirrt g und habe mehr Chaos drinnen als gut is.

1000 Dank im Vorraus :slight_smile:

Hallo t33kanne,

versuchen wir das mal Step-by-Step abzuarbeiten…
zu 1.)

//*************************************************************************************************************
// Prüft die Signalstärke des Senders
function ENIGMA2_SignalStatus($ipadr)
{
	if (ENIGMA2_GetAvailable( $ipadr ))
    	{
		$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);
}

Aufruf über:

list($snrdb, $snr, $ber, $acg) = ENIGMA2_SignalStatus($k_KATHREIN['IP']);

Anzeige über Integer-Variablen mit Prozent-Einteilung…

zu 2.)
Ausgelöst wird dieses Skript zyklisch jede Minute oder wenn man das Programm über eine der Funktionen unten links auf der Seite geändert hat…
Es soll zwar auch irgendwie möglich sein eine Meldung vom Receiver zu bekommen, wenn sich dort z.B. über die FB etwas geändert hat, das konnte ich bisher aber nicht umsetzen…

zu 3.)
Auf der rechten Seite des ersten Bildes ist der rss-Feed von TV-Movie zu sehen

<?

If (GetValueBoolean(18029 /*[Fritz!Box\DSL\DSL\Status]*/) == True)
	{
	$simpleXMLElement = simplexml_load_file("http://www.tvmovie.de/rss/tvjetzt.xml"); // URL des RSS Feeds
	$senderAnzahl = count($simpleXMLElement->channel->item); // Anzahl der anzuzeigenden Sender
	$anzeigen = array("ARD", "ZDF", "RTL", "SAT.1", "PRO 7", "RTL II", "S RTL", "KABEL", "3SAT", "VOX", "NDR", "Das Vierte", "Tele 5", "DMAX", "KI.KA", "DELUXE MUSIC TV", "sixx"); // anzuzeigende Sender
	$Ausgabe = "<table width='auto' border='0'>";

	// Datenausgabe
	for($i=0; $i<$senderAnzahl; $i++)
		{
    	$item = $simpleXMLElement->channel->item;
    	$item = xmlToArray($item[$i]);
     	$sender = explode("-", $item['title']);
     	$sender = trim(substr($sender[0], 5));
     	if(in_array($sender, $anzeigen))
    		{
	  		$titel = "<b style=color:#C00000;>".$item['title']."</b>"; // Textfarbe anpassen
     		$beschreibung = "<small>".$item['description']."</small>";
     		$text = $titel."<br>".$beschreibung."<br>";
     		$text = utf8_decode($text);
     		$searchArray = $item;
     		$Ausgabe = $Ausgabe."<table width='auto'>";
     if(array_key_exists('enclosure', $searchArray))
     		{
        	$image = $item['enclosure']['@attributes']['url'];
        	$Ausgabe = $Ausgabe."<tr>";
        	$Ausgabe = $Ausgabe."<td width='auto'height='80px'><div><img src=$image alt='not Found'></div></td>";
        	$Ausgabe = $Ausgabe."<td width='auto'><div style='text-align:left; margin-left:10px;'>$text</div></td>";
        	$Ausgabe = $Ausgabe."</tr>
";
    		}
    	else
    		{
		  	$Ausgabe .= "<tr>";
		  	$Ausgabe .= "<td></td><td width='auto'><div style='text-align:left; margin-left:10px;'>$text</div></td>";
        	$Ausgabe .= "</tr>
";

        	//$Ausgabe = $Ausgabe."<tr>";
        	//$Ausgabe = $Ausgabe."<td width='auto'><div style='text-align:left; margin-left:10px;'>$text</div></td>";
		  	//$Ausgabe = $Ausgabe."</tr>
";
    		}
    	$Ausgabe = $Ausgabe."</table>
";
    	}
	}
	SetValueString(50064 /*[Sonstige Daten\TV\TV Programm\TV Programm\TV-Programm]*/ , $Ausgabe);
}
return;


function xmlToArray($data)
{
    if(is_object($data))
    {
        $data = get_object_vars($data);
    }
      return (is_array($data)) ? array_map(__FUNCTION__,$data) : $data;
}

?>

Das der Stand bis hier…:wink:

Joachim

Hallo t33kanne,

bei 1. meintest Du wohl etwas anderes:

//*************************************************************************************************************
// Ermittelt den aktuellen Film
function ENIGMA2_GetCurrentFilm($ipadr)
{
   if (ENIGMA2_GetAvailable($ipadr))
   	{
      $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!';
}

Aufruf über:

list($AktuelleSenderinformation, $Fortschrittsanzeige) = ENIGMA2_GetCurrentFilm($k_KATHREIN['IP']);;

Setzen einer Integer-Variablen mit %:

SetValueInteger(55375 /*[Sonstige Daten\TV\TV Information\TV Information\Sendungsfortschritt]*/ , $Fortschrittsanzeige);

Joachim