Netzwerke mit UPnP einrichten und steuern

Seite 4: Erkenntnisse

Inhaltsverzeichnis

Ist ein Control Point an einem Gerät und seinen Diensten interessiert, lädt er per HTTP-GET die über LOCATION referenzierte XML-Datei: Sie enthält Angaben zum Gerätetyp, über den Hersteller und die sogenannte Presentation-URL: Der einfachste UPnP-Gerätetyp ist das Basicdevice, das in XML noch recht übersichtlich ist, da es ohne Dienst auskommt. Alle anderen UPnP-Geräte erweitern diese grundlegende Beschreibung um Dienste, die wiederum in XML-Dateien definiert sind. So muss beispielsweise eine einfache Lampe wenigstens den Dienst SwitchPower:1 enthalten, weitere Funktionen kann der Hersteller einfügen.

<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:SwitchPower:1</serviceType>
<serviceId>urn:upnp-org:serviceId:SwitchPower:1</serviceId>
<SCPDURL>URL für die Dienstebeschreibung</SCPDURL>
<controlURL>URL für die Steuerung</controlURL>
<eventSubURL>Callback-URL für die Ereignisanzeige</eventSubURL>
</service>
Zusätzliche Dienste
</serviceList>
<deviceList>
Beschreibung eingebetteter Geräte
</devicelist>
...

Der Dienst SwitchPower:1 schaltet eine einfache Netzwerklampe ein oder aus.

Damit ein Control Point die Methoden und die Eingabeparameter der Gerätedienste erfährt, ruft er die URL aus SCPDURL auf und erhält dadurch eine XML-Beschreibung aller Funktionen und Gerätezustände. Mit diesen Informationen kann ein Control Point nun das Gerät steuern: Die Aktion set-Target schaltet im Beispiel die Lampe ein oder aus. Dazu sendet er Kommandos und Parameter als XML-Konstrukt per HTTP an die controlURL des Geräts, was mit den Remote Procedure Calls (RPC) beim Network File System (NFS) oder Windows-Netzwerk vergleichbar ist und unter dem Begriff SOAP vom W3C beschrieben wird. Den aktuellen Zustand eines Geräts erfährt der Control Point über ein Abo, das sich im UPnP-Jargon Eventing nennt: Weist er beispielsweise einen Medienabspieler an, zum nächsten Stück zu springen, schreibt der Abspieler den neuen Wert in eine Variable und teilt die Änderung dem Control Point als XML-Beschreibung mit.

Der Control Point aus dem gUPnP-Paket zeigt Geräte und Dienste als Baumstruktur unter Linux an. Eigenschaften wie die Helligkeit einer „Lampe“ lassen sich per Mausklick ändern.

In der Geräte-Beschreibung findet sich beispielsweise der XML-Tag http://fritz.box , der in diesem Falle auf das Browser-Interface eines DSLRouters zeigt. Dieser Vorgang nennt sich unter UPnP Präsentation und dient zur einfachen Steuerung per Webbrowser. UPnP schreibt allerdings nicht vor, was in diesem Eintrag stehen muss. Einige Hersteller lassen daher die URL einfach weg oder ersetzen sie durch die URL ihrer Firmen-Website. In der freien Wildbahn Unter Windows XP und Vista erreicht man UPnP-Geräte wie Medienabspieler über die Netzwerkumgebung oder über Knöpfe in der Taskleiste. Andere Betriebssysteme verzichten bislang auf eine eingebaute UPnP-Suchfunktion. Abhilfe schaffen einige Hilfsmittel wie Intels Entwicklerpaket für UPnP, das eine Reihe von Beispielen mitbringt. So zeigt ein Device-Sniffer den UPnP-Datenverkehr an. Weitere Programme erstellen UPnP-Gerätebeschreibungen oder sind Beispiele für Media-Server, -Renderer, Control-Points oder eine UPnP-Netzwerklampe.

Will man auf dem Linux-Desktop UPnP-Geräte anzeigen, hilft das Debian-Paket gupnp-tools weiter, das mit der C-Bibliothek gUPnP entwickelt wurde. Es enthält einen universellen Control Point für X11, der UPnP-Geräte im Netz anzeigt und steuert.