Dreamboxen mit IPS steuern

Hallo zusammen,
ich probiere auch gerade das maximum aus meiner VU+ Box zu holen.

@hofimax
probier mal diese funktion:

function ENIGMA2_GetCurrentFilm($ipadr)
{
	if (ENIGMA2_GetAvailable($ipadr))
   {
		$xmlResult =  new SimpleXMLElement(file_get_contents("http://$ipadr/web/subservices"));
		$reference = $xmlResult->e2service->e2servicereference;
		$name = $xmlResult->e2service->e2servicename;
		$xmlResult =  new SimpleXMLElement(file_get_contents("http://$ipadr/web/epgservice?sRef=$reference"));
		$title = $xmlResult->e2event->e2eventtitle;
		$description = $xmlResult->e2event->e2eventdescriptionextended;
		$startsec = $xmlResult->e2event->e2eventstart;
		$duration = $xmlResult->e2event->e2eventduration;
		$currenttime = $xmlResult->e2event->e2eventcurrenttime;
		$start = date("H:i",(int)$startsec) .' Uhr';
		$ende = date("H:i",(int)$startsec + (int)$duration) .' Uhr';
		$dauer = round((int)$duration / 60).' Minuten';
		$vorbei = round(((int)$currenttime - (int)$startsec) / 60 ).' Minuten';
		$verbl = round(((int)$startsec + (int)$duration - (int)$currenttime) / 60 ).' Minuten';
		return "Kanal      :$name
Titel      :$title
Start      :$start
Ende       :$ende
Dauer      :$dauer
Vergangen  :$vorbei
Verbleiben :$verbl
Details    :$description";
	}
	else
	   return 'Box nicht erreichbar!';
}

Und so testen!

$result = ENIGMA2_GetCurrentFilm($dreamboxIP);
echo $result;

@belmondo2001
Habe mir auch deine funktion angeschaut und so kann man alles abfragen.

/******************************************************************************************************************************
* Schreibt eine Message auf den Bildschirm die man mit ja oder nein beantworten kann
* 0 = Initialisierung
* 1 = VU+ Box Ausgeschaltet
* 2 = Nachricht nicht gesendet
* 3 = Wenn mit Ja geantwortet wurde
* 4 = Wenn mit Nein geantwortet wurde
* 5 = Wenn Zeit abgelaufen ohne antworten
*/
function ENIGMA2_GetAnswerFromMessage($ipadr,$message,$time)
{
	$result = 0;
	$timeout = 25;
	if ($time > $timeout)
	   $time = $timeout;
	if (ENIGMA2_GetAvailable($ipadr))
	{
	   $xmlResult =  new SimpleXMLElement(file_get_contents("http://$ipadr/web/messageanswer?getanswer=now"));
   	if ($time == 0)
		{
	   	$time = $timeout;
      	$xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/message?text=$message&type=0"));
   	}
   	else
      	$xmlResult = new SimpleXMLElement(file_get_contents('http://'.$ipadr.'/web/message?text='.$message.'&type=0&timeout='.$time));
		if ($xmlResult->e2state == "True")
   	{
      	$start = time();
   		do
			{
				$xmlResult =  new SimpleXMLElement(file_get_contents("http://$ipadr/web/messageanswer?getanswer=now"));
				$diff = time() - $start;
				if ($xmlResult->e2state == "True")
				{
         		if ($xmlResult->e2statetext == "Answer is YES!")
         		{
         	   	if (($diff + 1) >= $time)
         	      	$result = 5;
         	   	else
            			$result = 3;
          		}
          		elseif ($xmlResult->e2statetext == "Answer is NO!")
             		$result = 4;
				}
    			sleep(0.5);
			}
			while (($result == 0) and ($diff <= $time));
			if ($result == 0)
		   	$result = 5;
   	}
   	else
     		$result = 2;
	}
	else
		$result = 1;
	return $result;
}

Hallo Leute,

wieder mal total genial was hier an Skripten erarbeitet wird!:slight_smile:

Ich bekomme bei den beiden Variablen:

$vorbei = round(((int)$currenttime - (int)$startsec) / 60 ).' Minuten';
$verbl = round(((int)$startsec + (int)$duration - (int)$currenttime) / 60 ).' Minuten';

komische Werte (Vergangen :-21729254 Minuten Verbleiben :21729384 Minuten) und komme nicht drauf woran das liegt.
Irgendwo gibt es offenbar eine falsche Umrechnung der Zeitwerte…

Bei der anderen Zeile habe ich folgende Modifikation durchgeführt:

$description = utf8_decode($xmlResult->e2event->e2eventdescriptionextended);

dadurch (…utf8_decode…) werden die Umlaute und anderen deutschen Sonderzeichen korrekt angezeigt…

Joachim

@JPaeper
Danke für den Hinweis mit dem „utf8_decode“ so tief bin ich dann doch nicht drin!

Probier mal diese Funktion.

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 = $xmlResult->e2event->e2eventcurrenttime;
		if ((int)$startsec >= time() - 36000)
			$start = date("H:i",(int)$startsec) .' Uhr';
		else
		   $start = "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))
			$vorbei = round(((int)$currenttime - (int)$startsec) / 60 ).' Minuten';
		else
		   $vorbei = "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";
		return "Kanal      :$name
Titel      :$title
Start      :$start
Ende       :$ende
Dauer      :$dauer
Vergangen  :$vorbei
Verbleiben :$verbl
Details    :$description";
	}
	else
	   return 'Box nicht erreichbar!';
}

Hallo luar,

leider komme ich heute dazu mich wieder einmal mit diesem Thema zu beschäftigen. Ich bekome bei Deinem Skript aber überall wo ich es probiere ein „N/A“ bei den beiden Feldern:

kabel eins
Kanal :kabel eins
Titel :Cold Case - Kein Opfer ist je vergessen
Start :21:13 Uhr
Ende :22:12 Uhr
Dauer :59 Minuten
Vergangen :N/A
Verbleiben :N/A
Details :1988: Präsident Reagan hat die Vorschriften über ausgewogene Fernsehberichterstattung und Begrenzung der Werbezeit gelockert. Die Jagd auf Quoten ist eröffnet, das leicht Verdauliche garantiert Erfolg und Karriere. Eine junge Fernsehjournalistin profitiert zunächst von dieser Entwicklung. Als sie jedoch - von professionellem Ehrgeiz getrieben - auf die Spur eines Skandals kommt, besinnt sie sich auf journalistische Ethik. Das wird ihr jedoch zum Verhängnis …

Kannst Du das erklären?:confused:

Joachim

Hallo Leute,

ich habe mich auch mal an einer Funktion versucht, z.B. um die Programme zu schalten:

function ENIGMA2_RemoteControl($ipadr, $Command=0)
{
    $result = "nicht Erfolgreich";

   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/remotecontrol?command=$Command"));
        //print_r ($xmlResult);
        if ($xmlResult->e2result == True)
        {
           $result = "Erfolgreich";
        }
        else
        {
            $result = "nicht Erfolgreich";
        }
   }

return $result;
}

Genutzt habe ich die RemoteControl-Commands von der genannten Seite:
Enigma2:WebInterface
Leider ohne Erfolg…
Was mache ich falsch?:confused:

Joachim

P.S.: Wenn der Receiver in „Grundstellung“ ist, kann man mit 105 und 106 die Programme hoch bzw. herunterschalten…

Hallo JPaeper,
gib das mal in deinem Browser ein:

http://[i][b]IP-Dreambox[/b][/i]/web/subservices

Jetzt kopier den eintrag von „e2servicereference“ (alles zwischen > <) und gib das im Browser ein:

http://[i][b]IP-Dreambox[/b][/i]/web/epgservice?sRef=[i][b]e2servicereference[/b][/i]

Hinter den einträgen „e2eventstart“, „e2eventduration“ und „e2eventcurrenttime“ müssen Zahlen stehen (UNIX-Zeitstempel).

Bei meiner VU+ Box geht es! :smiley:

Bild 001.png

Bild 003.png

Hallo luar,

das sieht bei mir dann doch etwas anders aus…

<e2eventlist>
<e2event>
<e2eventid>48047</e2eventid>
<e2eventstart>1304106900</e2eventstart>
<e2eventduration>6480</e2eventduration>
<e2eventtitle>The Cave</e2eventtitle>
<e2eventdescription>The Cave</e2eventdescription>
<e2eventdescriptionextended>Ein Team von Wissenschaftlern stößt in den rumänischen Wäldern auf ein verborgenes unterirdisches Höhlensystem, das 30 Jahre zuvor nach einem Unglück versiegelt wurde. Dr. Nicolai und seine Assistentin Kathryn rufen Jack McAllister und sein Team von Profihöhlentauchern zur Hilfe. Die Spezialisten machen sich auf den Weg, das möglicherweise unentdeckte Ökosystem zu erforschen. Doch schon bald passieren merkwürdige Dinge …</e2eventdescriptionextended>
<e2eventservicereference>1:0:1:445D:453:1:C00000:0:0:0: ProSieben</e2eventservicereference>
<e2eventservicename> ProSieben</e2eventservicename>
</e2event>
<e2event>
<e2eventid>48073</e2eventid>
<e2eventstart>1304113380</e2eventstart>
<e2eventduration>7440</e2eventduration>
<e2eventtitle>The Host</e2eventtitle>
<e2eventdescription>The Host</e2eventdescription>
<e2eventdescriptionextended>Ein ganz normaler Tag am Ufer des Hanflusses: Gang-du sitzt im Kiosk und wartet auf seine Tochter Hyun-seo. Plötzlich taucht ein Monster aus dem Fluss auf und macht Jagd auf die Menschen. Zu den Opfern, die das Monster in die Tiefe reißt, gehört auch

Joachim

Hallo JPaeper
Bei dir fehlt nur „e2eventcurrenttime“. Probier mal folgenden code, dann wird anstelle des „e2eventcurrenttime“ die Aktuelle Zeit deines IPS Servers genommen.

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";
		return "Kanal      :$name
Titel      :$title
Start      :$start
Ende       :$ende
Dauer      :$dauer
Vergangen  :$vorbei
Verbleiben :$verbl
Details    :$description";
	}
	else
	   return 'Box nicht erreichbar!';
}

Raul

Hallo Raul,

das „funzt“! :slight_smile:

Hast Du eigentlich schon eine Weboberfläche „gebastelt“?

Joachim

Hallo Joachim,
habe noch keine weboberfläsche weil mir ein wenig die Zeit fehlt.

Wegen dem anderen problem, es lag nur am

$xmlResult = new SimpleXMLElement(file_get_contents(„http://$ipadr/web/remotecontrol?command=$Command“));

versuch mal das.

/*****************************************************************************************************
* Sendet einen RemoteControl code. Infos unter
* "http://dream.reichholf.net/wiki/Enigma2:WebInterface#RemoteControl"
*/
function ENIGMA2_RemoteControl($ipadr,$command)
{
   if (ENIGMA2_GetAvailable($ipadr))
   {
      $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/remotecontrol?command=$command"));
      if ($xmlResult->e2result == "True")
         $result = ($xmlResult->e2resulttext);
		else
		   $result = "error";
   }
   else
      $result = "not available";
	return $result;
}

Raul :wink:

Hallo,
nur mal so als Idee. Man könnte ja diese Entertainmentsteuerung an die
Dreambox anpassen .
http://www.ip-symcon.de/forum/f53/entertainment-steuerung-13229/

mfg.
Jürgen

Hallo,

oder so ähnlich…
Muss mich doch mal mit meinem ersten Post hierzu melden.
Ich bin seit ein paar Wochen dabei mich in IP-Symcon und vor allem PHP einzuarbeiten.
Ahnung von php habe/hatte ich bis dato keine. Komme ehr mit VB/NET, SQL und ein bissel Javascript zurecht.

Na ja, als erstes hatte ich natürlich gedacht meine Dreamboxen (DM8k und 7025 - enigma2!) an IPS anzubinden.
Da ich nur lose Scripte gefunden hatte, und mir die Steuerung fehlte, habe ich als Basis das Shoutcast script genommen.
An dieser Stelle…Danke an die Ersteller der Scripte!

Es kann noch nicht so viel und alles noch nicht richtig formatiert.
Problem ist auch, dass bei CSS und HTML auch nur Hobby Kenntnisse vorhanden sind.

  • Listen für Bouquet/Kanäle TV; Radio und Timer-/ Movieliste
  • Einige Sender Icons (transparent) für Kanalliste
  • Umschalten/Zap auf Kanäle mit „Notification“
  • EPG
  • Variablen für „Aktueller Sender“ bzw. Programm (hier habe ich noch Probleme!)
  • Läuft auch im iFront - allerdings müsste hier evtl. ein seperates style.css her!?

Da ich auch nur wenig Zeit habe und eigentlich keine Ahnung könntet Ihr ja mal weiter mithelfen.

Ihr habt definitiv bessere PHP Kenntnisse, so dass es ein leichtes für euch ist meine „simpel scripte“ zu verbessern und zu erweitern z.B.

  • die Formatierung von Zeiten (EPG, Timer und Movielist) in PHP vorzunehmen
  • Meine nicht funkionierenden Fuktionen zu prüfen (Aktuelles Programm und vorallem „getPowerstate“ um den Standby Status abzufragen)
  • alles gewünschte und noch fehlende hinzu zu fügen

Ich hänge mal ein paar Screenshots an, wie es im Moment aussieht.

Ach, ich hänge auch mal die Dateien an, die bisher entstanden sind.
Der Ordner „dreambox“ muss hier her kopiert/entpackt werden c:\IP-Symcon\webfront\user\dreambox
Das Einbinden in IPS müsstet Ihr allerdings selber vornehmen, da ich noch keine installierbare Version hinbekomme.

  • Dummy Modul für die Box(en) anlegen
  • Es sind die Variablen mit gleichem Namen anzulegen, da diese in den Scripten verwendet werden. (siehe Bild)
  • die IP der Box muss in der Variablen „IP“ hinterlegt werden.
  • Var „dreambox Webcontrol“ ist als String/~HTMLbox zu definieren damit die PHP Seite geladen wird.
  • start scripte sind mit neuen bzw. euren ID’s zu übernehmen

Viel Spaß

Gruß
Akai

dreambox.zip (975 KB)

start_scripts.zip (1.81 KB)

var2.jpg

10 downloads…!?
Und, schon jemand getestet bzw. eingerichtet bekommen?

Ich habe vergessen zu erwähnen, dass der EPG Aufruf nicht mehr aktiv ist bzw. ich noch am überlegen bin, wie (von wo) ich den Aufruf starte!?
Im Moment wird bei Klick auf den div des Sendernamen auf den Sender umgeschaltet.
Ein Button könnte dann das EPG aufrufen…wie z.b. der Timer löschen Button.
(ach so, der timer wird im Moment noch ohne Rückfrage gelöscht!)
Na ja, es ist wirklich nur der erste Entwurf, da ich sonst nichts gefunden hatte.

Ich weiß auch nicht, ob es bessere Ansätze geben könnte?
Ist es richtig, dass ich im IPS diese Art „geladene Menüs aus XML“ nur wirklich per HTMLbox, iframe und php.html anzuzeigen/steuern sind? Oder geht es auch anders?

Gruß
Akai

moin,
ich habe es mir mal runter geladen und installiert. scheint auch soweit zu funktionieren. Nur eine Sache ist mir unklar, was ist bei dir unter dem Script getcurrent?
Auf alle Fälle herzlichen Dank für deine Bemühungen! Leider kann ich dir nicht viel helfen, was sicher schon meine Frage verdeutlicht. Ich hoffe das noch viele Funktionen folgen werden! Leider sind die anderen Ansätze ja leider alle nicht fertig geworden und für einen Anfänger dadurch schwer umzusetzen.
mfg
Armin

eigentlich müsste das Script auch für den Coolstream neo (enigma) gehen ??? Den wollte ich demnächst bestellen. Der hat ein Webinterface zur Programmierung.

Coolstream neo (enigma) ?? da ist doch Neutrino als Software

Deswegen wird das so nicht funktionieren :frowning:

Gruß Jens :loveips:

Hoi, ein großes Dankeschön für euer geniale Arbeit.

Soweit funktioniert alles nur bei dreambox Webcontrol bekomme ich immer nur angezeigt: Bouquets werden geladen…

Box ist eine VU+

Gruß

Habe gerade meiner VU+Duo ein neues Update verpasst(von VTI 3.2 auf 4.1),
jetzt hagelt es Fehlermeldungen und nichts klappt mehr. Never change a running System.
Dabei lief alles so schön. Ahhhhhrrrr

Ich weis nicht in wie weit Dreamboxen bei Updates davon betroffen sind.
Wollte nur bescheid geben :wink:

Hallo mac106,
hast du mal das Changelog durchgeschaut?

Änderungen zu VTI 4.0

  • [VTIPanel] einfachen Passwortschutz hinzugefügt
  • [VTIPanel] Möglichkeit zum Entfernen von Einträgen aus dem Hauptmenü
  • [VTI SoftwareManager] gleichzeitige Auswahl mehrerer Plugins zur Installation/Deinstallation
  • [DeviceManager] Erkennung der korrekten Mountpunkte nach dem ersten Start verbessert
  • [DriverManager] fix für Datumsanzeige der aktuell installierten Treiber
  • [dvbapp2] frei wählbare VFD Skins (Ultimo)
  • [dvbapp2] vom Boxtyp abhängiges Scrollverhalten des VFD (nur unterstützte Skins) (Duo & Uno)
  • [dvbapp2] Entfernung von Services aus der Gesamtsenderliste möglich
  • [FactoryTest] Plugin aus dem Image entfernt
  • [WebBrowser] aus dem Image etnfernt (Duo & Uno)
  • [LEDBrightness] separate Einstellung der LED’s für den Standby möglich
  • [Automatictimerlistcleanup] aus Image entfernt
  • [WebBouquetEditor] aus Image entfernt
  • [WebInterface] aus Image entfernt
  • [OpenWebIF] ins Image integriert
  • [Wlan]: LED-Blinken für Sticks mit rt3070 Chipsatz abgeschaltet
  • [Wlan] mehrere Verbesserungen im WLAN Bereich (z.B. versteckte ESSID)

Ich habe das Image zwar noch nicht drauf, aber es könnte an „- [WebInterface] aus Image entfernt“ liegen!

Wenn ich später zeit habe dannprobiere ich es mal aus!

Gruß Raul.

Ich habe das Problem gelöst,
in dem ich das alte Webinterface wieder installiert habe.
Mit dem neuen Interface was dabei ist, ging gar nichts.
Jetzt klappt wieder alles :slight_smile:
Danke für den Tipp