Dreamboxen mit IPS steuern

Vielleicht mal im VU+ Forum fragen, sind dort auch sehr hilfsbereit.

guck mal hier

http://dream.reichholf.net/wiki/Enigma2:WebInterface#Live_Updates

Dave, vielen Dank für den Link, also gits zumindest die sendende Instanz auf der Box-Seite (ich hab den Part der Seite nicht kapiert und deswegen weiter unten gelesen :D)

Kannst du mir hier ein wenig aufs Pferd helfen?
Wenn ich das richtig verstehe, muss ich IPS dazu bringen, sich gegenüber der Box/dem Webif als Web-Interface auszugeben und die Updates entgegen zu nehmen.

Wenn ja: wie?

:wink:

Hi,

so richtig hab ich auch noch nicht rausgefunden wie das mit den LiveUpdates funktioniert…, bis jetzt hole ich mir alle 5 minuten manuell den status per xml.

ich hab schon einiges mit diesen LiveUpdates versucht… bis jetzt mit recht wenig erfolg. die URL müsste http://dreambox/web/updates.html sein… aber mit einem aufruf im browser funzt das nicht (der status aktualisiert sich im browser nicht), nen aufruf per Console hab ich noch nicht versucht…

jetzt haste aber meine lust zum testen geweckt… werd mich heute abend mal wieder ransetzten :smiley:

das Abholen hab ich gestern mal experimentell ausprobiert (ich hab z.B. ohne Probleme das EPG des aktuellen Senders auf mein Android-Tab gebeamt), aber wenn man es „richtig“ einbinden will, dann macht polling m.E. nicht viel Sinn. Push wäre mir hier deutlich lieber.

Ich schnüffel mal weiter, mal sehen, wer hier als Erster ne Lösung findet :wink:

Hallo Leute,

ich finde es sehr spannend das die Diskussion hier mal „in Gange kommt“… :slight_smile:

Da gibt es so viele „interessante“ Funktionen.

Joachim

Hi Joachim,

das hab ich mir gedacht, dass „Einer zuckt“ :smiley: Ich weiss noch nicht, ob und wieviel Energie hier rein stecke, bin noch am Evaluieren. Ich denke, das wird sich in den kommenden Tagen zeigen, ob ich hier Blut lecke. Und wenn was Brauchbares bei rauskommt werd ich das sicher nicht verheimlichen;)

Mal ein Thema am Rande:

ich grübel noch am Bedienkonzept (IR-Fernbedienung -> XYZ -> SatReceiver). Um sicher zustellen, dass IPS ein Event im SR (SatReceiver) mitbekommt, kann man entweder

[ul]
[li]die IR-Befehle via IPS an den SR weiterleiten,[/li][li]die IR-Befehle direkt an den SR schicken und durch IPS abhören lassen[/li][li]den Status des SR nach einem IR-Event abfragen (pollen)[/li][li]den SR ein Event an IPS melden lassen[/li][/ul]

ich hab gerade den ersten Punkt ausprobiert:
eine andere Fernbedienung via IR Transe an IPS angeknotet, IR-Transe an IPS, IPS übersetzt diese Befehle auf den Code der original-Fb und schickt diesen Code via IR-Trans an den SR. Funktioniert technisch ganz gut, haptisch aber nicht so schön: zwischen Tastendruck FB und rakation am SR liegen gefühlt ca 500ms. Das ist zu viel.

Ich denke, die komfortabelste und auch sicherste Lösung ist Punkt 4

Hallo Raketenschnecke,

im Moment polle ich jede Minute das aktuelle Programm. Wenn sich dort etwas geändert hat wird es angezeigt, dass ist nicht ganz so schön, schöner wäre es in der Tat, wenn der SR die Änderung selbst irgendwie mitteilen würde…

Mit http://sr-ip/web/updates.html

werden die letzen Änderung angezeigt.

Kann man das nicht irgendwie verwenden?

Joachim

Nachtrag:
So wie ich es verstehe, ermöglichen es einem diese Information nur die Änderungen „herauszufiltern“. Es müsste aber wohl dennoch in regelmäßigen Abständen gepollt werden…

Hallo Leute,

hier mal zwei Bilder aus meinen Webfront.

Auf dem ersten Bild kann über den eingebauten Link unter „Aktueller Sender“ ein Stream im WMP geöffnet werden. Er zeigt dann das aktuell laufende Programm. Schön wäre es hier, wenn es einem gelingen würde das Bild des laufenden Programmes direkt in IPS zu integrieren.

Auf dem zweiten Bild kann man schauen was gerade so läuft und entsprechend Informationen zum Programm des Senders bekommen und ihn auch auswählen. Hier wäre es schöner es irgendwie „platzsparender“ hinzubekommen.

Gerade beim EPG bietet das WebInterface ja diverse Möglichkeiten. Ich habe nach der Vorlage der ersten Postings in diesem Thread eine „Funktionssammlung“ erstellt.

Das Ganze hat noch „Bastelstatus“. Ich bin sehr gespannt was wir hier noch gemeinsam erarbeiten können…

Joachim

nabend,

WOW das sieht mal echt klasse aus :smiley:

dann bring ich auch mal nen bissel „gebastel“ ins Spiel…
hier eine function zum epg holen und an ein WFC popup schicken… mit der möglichkeit nen DreamBox Timer zu erstellen

hier die function

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."."kabel_hd__tv_.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;
}

und hier wie ich die function aufrufe

if($_IPS['VALUE'] == "100") {
    $epgentry = GetDreamEpg($ipadr, $_IPS['VARIABLE']);
    $disname = IPS_GetObject($_IPS['VARIABLE']);
    $disname = $disname['ObjectName'];
    $message = "Aufnahme";
    if($epgentry == "") {
    $epgentry = "Keine Programminformationen vorhanden.";
    }
    WFC_SendPopup(18436 /*[WebFront Configurator]*/, "EPG - $disname", $epgentry);
}

Moin moin!

Ich habe mich jetzt mal ein wenig damit beschäftigt, wie ich die Dreambox dazu bringe Events zu melden!

Es ging mir dabei erst einmal nur darum den Status „standby“ oder „on“ aus der Box herauszukitzeln.

Zuerst muss dafür die Datei Standby.py aus dem Ordner /usr/lib/enigma2/python/Screens/ ein wenig modifiziert werden, für´s Anschalten sieht die Standby.py bei mir jetzt so aus:

class Standby(Screen):
	def Power(self):
		print "leave standby"
		#set input to encoder
		#
		import os
		if os.path.exists("/etc/enigma2/enigma_leave_standby.sh"):
			os.system("/etc/enigma2/enigma_leave_standby.sh")
		# 
		self.avswitch.setInput("ENCODER")

Und für den Standby-Modus so:

		print "enter standby"
		#
		import os
		if os.path.exists("/etc/enigma2/enigma_enter_standby.sh"):
			os.system("/etc/enigma2/enigma_enter_standby.sh")
		# 
		self["actions"] = ActionMap( [ "StandbyActions" ],

Super wichtig ist, dass Ihr beim modifizieren der Standby.py keine Leerzeichen, sondern Tabs vor den eingefügten Code setzt, ansonsten gibt´s beim Start Probleme! Der Standby.py müssen dann die Rechte 644 zugewiesen werden.

Anschließend werden im Ordner /etc/enigma2/ die beiden Dateien „enigma_leave_standby.sh“ und „enigma_enter_standby.sh“ angelegt und mit den Rechten 755 versehen.

Über http://IP-SymconIP:Port/?browserMode=retroMobile habe ich mir dann die Links zum Ein- bzw. Ausschalten einiger Steckdosen besorgt und in die beiden neu hinzugefügten Dateien als wget Befehl eingetragen, z.B. so:

wget http://IP-SymconIP:Port/index.php?parent=55835&action=setVariable&VariableID=28731&VariableAction=52099&VariableIdent=&Value=1&pt=e47225f62ea8b5922b481c1818f140af

Leider funktioniert das Ganze nur ein einziges Mal, so dass dieser Weg nicht wirklich brauchbar ist :confused:
Die Links aus dem Retro-Modus scheinen leider nicht statisch zu sein…

Welche Möglichkeit habe ich von der Dreambox direkt an IP-Symcon einen Wget-Befehl abzusetzen?
Dafür muss sicherlich eine neue Instanz angelegt werden, oder?

Gruß

Timo

Hallo Timo,

Du musst schon ein wenig aufpassen!
Der Thread heißt doch „Dreambox mit IPS steuern“ - und nicht umgekehrt! :wink:

Als ich Deinen Betrag gelesen habe, dachte ich „Was geht denn hier ab? Wie genial ist das denn??“!
Ich habe zwar in den letzten Tagen auch öfters mal in das WebIf-Verzeichnis auf der Box geschaut, aber auf die Idee bin ich nun absolut nicht gekommen!

Meine spontanen Gedanken dazu:

  • irgendeine Funktion erstellen, die sich jeder unter kleinen Anpassungen (z.B. IP von IPS) an eine definierte Position auf der Box kopieren kann
  • die Funktion sendet lediglich eine Information, dass sich etwas geändert hat
  • Funktionsweise z.B. so wie bei Anruf die FritzBox etwas auf Port 1012 sendet…

Soweit die ersten Gedanken

Joachim

Hi Joachim!

Sorry, wer lesen kann ist klar im Vorteil…

Kann mir denn vielleicht trotzdem jemand beantworten wie ich IP-Symcon davon Überzeugen kann die per wget von der Dreambox abgesendeten Befehle zu empfangen und auszuwerten? Oder soll ich lieber einen neuen Thread aufmachen?

Lieben Dank

Timo

Hallo Timo,

innerhalb deines LAN kannst du direkt im IP-Symcon Verzeichnis eine PHP Datei anlegen und diese durch den Satreceiver ausführen lassen.
Wobei es auch geht wenn man vom Internet darauf zugreift, also das Webfront von der Internetseite offen ist >> Vorsicht !! Quick and Dirty wäre es so > anlegen einer test.php im Webfront Verzeichnis mit zum Beispiel

<?
  HM_WriteValueBoolean(49386 /*[Homematic\Steckdose 2-Fach-Büro\Fernseh 2-Fach-1]*/ , "STATE", false); //Gerät ausschalten
?>

und eine weitere Datei zum Einschalten der Steckdose > STATE true

Hoffe es hilft dir… suche mal hier im Forum da gibt es einige Hinweise wo du die „eigene“ Ideen unterbringen kannst >> webfront/user

Gruß D.Voss

Spitze!

Vielen Dank das läuft.

Hallo Timo,

wenn ich mit dem „Dreambox Control Center E2“ auf das oben angegebene Verzeichnis zugreife, dann finde ich die Datei aber sie enden alle dort auf „.pyc“…
Wenn ich dann auf „Bearbeiten“ klicke, dann sehe ich nur „wildes Zeug“…

Welches Tool benutzt Du?

Joachim

Habe ein online Tool zum decrypten gefunden, vielleicht hilft dir das.

Hi Joachim,

habe gerade mal versucht, dass anhand des aktuellen release Images 3.2x von DM und dem aktuellen experimental Image nachzuvollziehen, bei beiden ist die Standby.py im angegebenen Ordner.

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

Falls ja wird das bei der Box so nicht funktionieren, sondern wahrscheinlich so:

Ich meine gelesen zu haben, dass unter Enigma 1 Receivern die Dateien „enigma_leave_standby.sh“ und „enigma_enter_standby.sh“ bereits im Ordner var/etc vorhanden sind! Du kannst dort also direkt den wget Befehl eintragen und brauchst an der Standby.pyc nichts zu ändern!

Gruß

Timo

Hallo Timo,

ich habe einen Kathrein UFS912 Receiver mit dem Enigma2-Image als alternativer Firmware.
Ich werde heute Abend mal schauen ob ich die angegebenen Dateien dort finden kann.
Vielen Dank für den Tipp!

Joachim