Enigma2:WebInterface

Aus DreamboxWIKI
Version vom 18. Januar 2007, 21:02 Uhr von 3c5x9 (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Allgemeines

Das Web-Interface (kurz WebIf) der Dreambox ist ein Bestandteil des Images. Brandaktuelle Versionen des WebIf gibts mittels CVS. Über die LAN-Verbindung kann man auf die Web-Bedienoberfläche der Dreambox zugreifen. Dazu reicht ein Browser, der JavaScript kann. Über das Web-Interface werden aktuelle Zustände der Box dargestellt (aktueller Sender, EPG usw.) und es können Bedienkommandos an die Box weitergegeben werden.

Um zu diesem WebIf zu gelangen, gibt man in der Adressleiste des Browsers die IP-Adresse der Box ein (z.B. "10.0.0.5"). In den Einstellungen der Box (Menü - Einstellungen - System - Netzwerk ) oder vom eigenen DHCP-Server kann man diese erfahren.

Hintergrund

Für das Interface benötigt man nur einen guten Browser, alles Andere ist in der Dreambox: Der Web-Server bekommt vom TCP/IP über den Port 80 die WWW-Befehle, also das Abrufen von Web-Seiten. Diese Seiten werden aus dem Dateisystem entnommen. Vor der Ausgabe werden sie aber vom Server bearbeitet. Platzhalter werden durch aktuelle Informationen ersetzt. So wird z.B. der aktuelle Sender und die aktuelle Sendung sowie die eingestellt Lautstärke und die Uhrzeit dargestellt. Die genannten Informationen werden bei Änderungen auf der Box automatisch im Browser aktualisiert. Ein utomatischer Reload wie bei anderen WebIf´s ist daher nicht nötig.

technische Beschreibung

Das WebIf ist fester Bestandteil von Enigma2. Alle Funktionen sind in Python realisiert und greifen direkt auf die internen Funktionen von Enigma2 zu.

Konzept

Bei der Realisierung und der Programmierung wurde ein Client/Serverkonzept vorgesehen. Das heisst das Enigma2 auf der Dreambox eine Webschnittstelle bereit stellt, die jeder beliebige Client als Schnittstelle zur Dreambox nutzen kann. Dabei ist es unerheblich ob dieser Client ein WebInterface in HTML und JavaScript bzw Ajax ist, oder ob es sich Programme in C, C++ oder Java handelt. Damit ist das Webinterface vorbereitet auf beliebige Änderungen auf Clientseite. Entscheidend ist, das diese die XML-Schnittstelle nutzen können.

Live Updates

Eine der besten Funktionen der Enigma2-Webinterface sind die Liveupdate Funktion. Dabei wird zwischen dem Client und der Dreambox eine dauerhafte Verbindung geschaffen, mit der die Dreambox die angeschlossenen Clients über Änderungen automatisch benachrichtigt. Wenn ein Client diese Updates bekommen möchte, ruft er die URL http://dbox/web/updates auf und hält diese Verbindung aufrecht. In dieser Verbindung kommen dann die Updates von der Box wie in folgendem Beispiel.

<script>parent.set("CurrentTime", "19:46:32");</script>
<script>parent.set("CurrentService", "Sendernamen (19.2�E)");</script>
<script>parent.set("Event_Now_Name", "Titel der aktuellen");</script>
<script>parent.set("Event_Now_Extended_Description", "Beschreibung aus dem EPG des aktuellen Event");</script>
<script>parent.set("Event_Now_Begin", "19:40");</script>
<script>parent.set("Event_Now_Remaining", "+28 min");</script>
<script>parent.set("Event_Next_Name", "Titel der nächsten Sendung");</script>
<script>parent.set("Event_Next_Begin", "20:15");</script>
<script>parent.set("Event_Next_Remaining", "60 min");</script>
<script>parent.set("Event_Next_Extended_Description", "Beschreibung aus dem EPG des nächsten Event");</script>

Aus diesen Angaben kann ein Client z.B. heraus lesen, das die aktuelle Uhrzeit auf der Box 19:46:32 ist und das die aktuelle Sendung noch 28min läuft.

Funktions API

Alle HTTP-Request erfolgen derzeit über GET-Anfragen an den Port 80 der Box. Als Antwort gibt die Box überall XML-Objekte zurück. Der Aufbau unterscheidet sich jeweils nach Art des Request. Der Volumerequest ist im Folgenden ausführlicher erklärt, die weiteren sind vom Ablauf her identisch.

Volumen

Requests:

Result:

<?xml version="1.0" encoding="utf-8"?>
<e2volume>
   <e2result>True</e2result>
   <e2resulttext>state</e2resulttext>
   <e2current>5</e2current>
   <e2ismuted>False</e2ismuted>	
</e2volume>

Parameter:

result = True wenn Kommando erfolgreich, andernfalls False.
resulttext = eine textbasiere Beschreibung, ob das Kommando durchgeführt wurde oder bzw. was falsch war.
current = derzeitige Lautstärke im Bereich zwischen 0 und 100.
ismuted = True, wenn der Ton ausgeschaltet ist. Wenn er eingeschaltet ist True.

Links