Enigma2:WebInterface

Aus DreamboxWIKI
Wechseln zu: Navigation, Suche

Allgemeines

Das Web-Interface (kurz WebIf) der Dreambox ist ein Bestandteil des Images. Brandaktuelle Versionen des WebIf gibt es 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 Informationen von 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 aktuellen Browser, alles andere befindet sich in der Software 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 eingestellte Lautstärke und die Uhrzeit dargestellt. Die genannten Informationen werden bei Änderungen auf der Box automatisch im Browser aktualisiert. Ein automatischer Reload wie bei anderen Web-Oberflächen 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 heißt, dass 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 um Programme die in C, C++ oder Java geschrieben wurden, 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 des Enigma2-Webinterface ist 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, dass 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.

Laustärke

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 textbasierte 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 False

Links




Grundlagen - Installation - Hardware - Entwicklung - Portal

Enigma - Enigma2 - Plugins - Spiele - Software - Tools - Howto - FAQ - Images

Hauptseite - News - Alle Artikel - Bewertungen - Gewünschte Seiten - Index - Neue Artikel - Impressum - Meilensteine - Team

Hilfeportal - Seite bearbeiten - Bilder - Links - Tabellen - Textgestaltung