Beruflich Dokumente
Kultur Dokumente
Jakob S. Doppler
DIPLOMARBEIT
eingereicht am
Fachhochschul-Masterstudiengang
Digitale Medien
in Hagenberg
im Juni 2006
c Copyright 2006 Jakob S. Doppler
ii
Erklärung
Hiermit erkläre ich an Eides statt, dass ich die vorliegende Arbeit selbst-
ständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen
und Hilfsmittel nicht benutzt und die aus anderen Quellen entnommenen
Stellen als solche gekennzeichnet habe.
Jakob S. Doppler
iii
Inhaltsverzeichnis
Erklärung iii
Vorwort vii
Kurzfassung viii
Abstract ix
1 Einleitung 1
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Abgrenzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Technische Begriffserklärungen 4
2.1 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Technische Details . . . . . . . . . . . . . . . . . . . . 4
2.1.2 Architektur . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.3 Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.4 Vergleichbare Funktechnologien . . . . . . . . . . . . . 7
2.2 Service-Plattformen . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1 JINI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2 UPnP . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.3 OSGi . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 Geräte 17
3.1 Szenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 UPnP-Technologie . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.1 Sensor-Hardwaredevice . . . . . . . . . . . . . . . . . . 20
3.4.2 Webcam Streaming-Server und Client . . . . . . . . . 23
3.4.3 UPnP-Winamp Media Player . . . . . . . . . . . . . . 26
3.4.4 MIDI-Device . . . . . . . . . . . . . . . . . . . . . . . 26
iv
INHALTSVERZEICHNIS v
5 GUI-Builder 53
5.1 Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.1.1 System-Schnittstellen . . . . . . . . . . . . . . . . . . 54
5.1.2 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.2 Implementierung - PC . . . . . . . . . . . . . . . . . . . . . . 56
5.2.1 Entwicklung mit OSGi . . . . . . . . . . . . . . . . . . 56
5.2.2 Systemaufbau . . . . . . . . . . . . . . . . . . . . . . . 58
5.2.3 GUI-Generator . . . . . . . . . . . . . . . . . . . . . . 60
5.2.4 UI-Erweiterungen . . . . . . . . . . . . . . . . . . . . 66
5.3 Implementierung - Smart Phone . . . . . . . . . . . . . . . . 70
5.3.1 Entwicklung mobiler Java-Anwendungen . . . . . . . . 71
5.3.2 Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.3.3 Mobile Client . . . . . . . . . . . . . . . . . . . . . . . 74
6 Fazit 78
6.1 Erreichte Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.1 Geräte . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.2 GUI-Builder . . . . . . . . . . . . . . . . . . . . . . . 79
6.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.4 Quellcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Literaturverzeichnis 84
Vorwort
Mit der Fertigstellung der vorliegenden Diplomschrift geht ein weiterer Ab-
schnitt in meinem Leben zu Ende. Der Blick zurück an den Beginn des
Studiums lässt mich kaum glauben, dass seither fünf Jahre vergangen sind.
Auch wenn die Zeit an der Fachhochschule Hagenberg mit viel Arbeitsauf-
wand und Engagement verbunden war, möchte ich sie dennoch nicht missen.
Viele gute Erinnerungen und lehrreiche Erfahrungen in fachlicher als auch
in menschlicher Hinsicht tragen zu diesem positiven Eindruck bei.
Die Faszination der Technik liegt für mich in ihrer gestalterischen Schaf-
fenskraft, die, wenn sie mit Wissen und Gewissen eingesetzt wird, Großar-
tiges vollbringen kann. Ich hoffe mit meiner Arbeit einen kleinen Teil zu
einem technologischen Fortschritt beizutragen, der in Einklang mit den Be-
dürfnissen und Werten unserer Gesellschaft steht. Daher scheint es auch
angemessen, jene Personen zu nennen, die mir das Gefühl geben eben dieses
erreichen zu können.
Im Rahmen einer mehrjährigen Forschungsarbeit konnten mit meinem
Projektpartner und Freund Bernhard Wally neue Aspekte einer intelligen-
ten und vernetzten Gerätelandschaft beleuchtet werden, wie sie in ein paar
Jahren vielleicht in jedem Haushalt zu finden sein wird. Dafür und für die
vielen, teils lustigen Stunden gemeinsamen Wirkens sei ihm gedankt. Auch
meinem Betreuer DI Dr. Christoph Schaffer, der mir im Laufe meines Di-
plomstudiums in zahlreichen Gesprächen mit guten Ratschlägen und fachli-
chem Wissen zur Seite gestanden ist, gilt mein besonderer Dank.
Die Erkenntnis, dass das Leben neben der Schönheit der Technik auch
noch andere, ebenso wichtige Facetten zu bieten hat, habe ich zweifelsohne
meiner Familie und den zahlreichen, guten Freundschaften in Hagenberg
und Gallneukirchen zu verdanken. Insbesondere sind hier meine Eltern Re-
gina und Erwin Doppler genannt, die mir in vielen richtungsweisenden Ent-
scheidungen, denen ich im Laufe meines bisherigen Lebens begegnete bin,
geholfen haben und mir meine Ausbildung ermöglichten.
vii
Kurzfassung
viii
Abstract
ix
Kapitel 1
Einleitung
1
KAPITEL 1. EINLEITUNG 2
1.1 Motivation
Der Grundstein für die Realisierung der Vision einer pervasiven Umgebung
scheint mit den fortschreitenden Entwicklungen von mobilen und Embedded-
Technologien gelegt. Ein weitgehend ungeklärter Aspekt hingegen sind Stan-
dards und Automatismen für die Darstellung und Interaktion mit verteilten
Diensten.
Service-Plattformen wie Universal Plug and Play (siehe Kapitel 2.2.2)
sind plattformunabhängige Software-Bibliotheken, die dem Entwickler die
große Verantwortung hinsichtlich einheitlicher Geräteschnittstellen und au-
tomatischer Erkennung der Netzwerkdienste abnehmen und diese von einem
beliebigen Ort aus fernsteuerbar und überwachbar machen. Sie treffen jedoch
keine Entscheidungen hinsichtlich der Repräsentation der Interaktionsdaten.
Aus diesen Überlegungen entsteht die Idee sowohl Eingabegeräte für den
Einsatz in einem Mediensteuerungsszenario zu entwickeln, als auch For-
schung in Richtung der automatisierten Generierung von User Interfaces
zur Fernsteuerung von verteilten Geräten zu betreiben. Erstere ist Teil eines
lang ersehnten Wunsches, den PC als vorrangiges Interaktionsmedium für
computerisierte Dienste ablösen zu können. In diesem Zusammenhang wird
ein Weg gesucht, um Sensorik und die Bewegungserkennung einer Kamera
als Auslöser zur Steuerung verteilter Netzwerkdienste nutzen zu können.
Die zweite Idee befasst sich mit Interaktionen, in denen ein Display hin-
gegen notwendig und sinnvoll ist. Hierfür muss ein Konzept zur automati-
sierten Generierung von User Interfaces im Kontext verteilter Geräte und
Anwendungen erstellt werden. Möglich wird dies durch die Architektur von
UPnP. Wird ein neues Gerät dem Netzwerk hinzugefügt, werden alle inter-
essierten Teilnehmer darüber informiert und erhalten eine funktionale Be-
schreibung der Gerätedienste. Diese Beschreibung kann genutzt werden, um
ein Interface zur Steuerung des Gerätes darzustellen.
Da die Problemstellung der automatisierten Generierung von User In-
terfaces nicht alleine auf die Domäne der verteilten Netzwerke beschränkt
ist, gibt es einige, vielversprechende Ansätze. Mehrere XML-basierte Spra-
chen und GUI-Building Systeme (siehe Kapitel 4) bieten Lösungsansätze
auf verschiedenen Abstraktionsebenen an. Diese reichen von einer konkre-
ten Beschreibung und Positionierung der Steuerelemente bis hin zu einer
Verknüpfung zwischen den Interaktionsdatentypen der Gerätefunktion und
abstrakten Elementen, denen abhängig von den Vorgaben der Plattform eine
andere grafische Repräsentation zukommt.
1.2 Abgrenzung
Ziel der Arbeit ist die Nutzung der UPnP Service-Plattform zur Erstellung
netzwerkbasierter Geräte, die in einen Wohn- und Arbeitsraum integriert
KAPITEL 1. EINLEITUNG 3
Kapitel 2 stellt die technischen Vorraussetzungen für die Arbeit mit den
Geräten vor. Es wird der Funkstandard Bluetooth beleuchtet und die Wahl
UPnP als bevorzugte Service-Plattform vorgestellt.
Kapitel 3 versucht mit einem pervasiven Szenario die Intention der Arbeit
zu erklären und beleuchtet anhand der entwickelten Geräte den ersten Teil
der Implementierung.
Technische
Begriffserklärungen
2.1 Bluetooth
Durch den Bedarf einer kostengünstigen Technologie mit niedrigem Energie-
verbrauch als Ersatz für kabelgebundene Kommunikation, wurde 1994 von
dem Mobilfunkunternehmen Ericsson die Bluetooth-Technologie1 ins Leben
gerufen. Das rege Interesse namhafter Hersteller wie IBM, Intel und Nokia
führte zur Gründung des Entwicklerkonsortiums Bluetooth Special Interest
Group (Bluetooth SIG)2 und zur Erhebung von Bluetooth zum Industrie-
standard gemäß IEEE3 802.15.1. Wenngleich auch die flächendeckende Ein-
führung von Anfang an in einer allgemeinen Euphorie prognostiziert wurde,
vergingen einige Jahre bevor die Akzeptanz gegeben und eine genügende
Verbreitung an Endgeräten mit Bluetooth-Hardware gegeben war.
4
KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 5
WAE
WAP
TCP/UDP SDP
AT AUDIO
OBEX PPP Command
RFCOMM
L2CAP
HCI
LMP
Baseband
Bluetooth Radio
(Enhanced Data Rate) bei 2,1 Mbit/s. Um der Anforderung einer kosten-
günstigen und energiesparenden Funktechnologie gerecht zu werden, wurden
drei Leistungsklassen für verschiedene Einsatzzwecke geschaffen. Klasse 1-
Geräte sind für eine Reichweite von bis zu 100 m bei einer Leistung von
100 mW konzipiert. Am anderen Ende liegen Klasse 3-Geräte mit 1 m und
1 mW. Die breite Palette der Unterhaltungselektronik und mobilen Endge-
räte arbeitet mit Klasse 2-Chips bei einem Verbrauch von 2,5 mW und einer
Reichweite bis zu 10 m [31].
In einem Bluetooth Netzwerk (Piconet) können sich bis zu 65.000 Geräte
befinden, von denen jedoch nur acht aktiv sein dürfen. Ein Master-Gerät
sorgt für sie Synchronisation der sieben Slaves. Ein Bluetooth-Teilnehmer
kann sich in mehreren Netzwerken aufhalten, wodurch eine netzwerküber-
greifende Kommunikation möglich wird. Der Zusammenschluss mehrerer Pi-
conets bezeichnet man als Scatternet.
2.1.2 Architektur
Der Bluetooth Protokollstack wurde von der Bluetooth SIG entworfen und
enthält eine Sammlung hierarchisch angeordneter Protokolle (siehe Abbil-
dung 2.1). Erklärte Designziele waren eine bindende Richtlinie für die Im-
plementierung von Bluetooth-Geräten und maximale Interoperabilität durch
die Wiederverwendung älterer Kommunikationsprotokolle in den höheren
Schichten. Die Protokolle werden in vier grundlegende Schichten eingeteilt
[31] (siehe Tabelle 2.1.2).
KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 6
2.1.3 Profile
Im Vergleich zu anderen Funktechniken wie WLAN, die einmal spezifiziert
werden und eine starre Auslegung verlangen, lebt die Bluetooth-Spezifika-
tion vor allem durch ihre hochgradige Flexibilität und Erweiterbarkeit. Ver-
antwortlich dafür ist der vielschichtige Aufbau der Bluetooth-Architektur.
Um den verschiedenartigen Anwendungsmöglichkeiten für unterschiedliche
Geräteklassen gerecht werden zu können, bedarf es eines komponentenba-
sierten Ansatzes, der es durch einfachen Austausch von Protokollen schafft,
die gewünschten Szenarien abzudecken. Aufbauend auf einem generischen
Protokollstack setzen spezifischere Protokolle auf, die in einer Vererbungs-
hierarchie angeordnet sind [20]. Profile sind Kombinationen dieser Kompo-
nenten, die bestimmte Rückschlüsse auf den Aufbau und die Zusammenset-
zung des Bluetooth Protokollstacks zulassen. Die Interoperabilität zwischen
zwei Bluetooth-Geräten ist von der Unterstützung der gemeinsamen Profile
abhängig. Beim Verbindungsaufbau tauschen die Teilnehmer diese aus und
ermitteln, ob sie zueinander kompatibel sind.
Es existiert eine Vielzahl an Profilen, die unter anderem die Synchro-
nisation und Vernetzung, den Austausch von Daten und Dokumenten, die
Ein- und Ausgabe auf Endgeräten (FAX, Drucker) oder die Übertragung von
Audiodaten über Headset und Mobiltelefon definieren. Erwähnenswert ist in
diesem Zusammenhang eine Reihe an Profilen, die für die Mediensteuerung
interessant sind. Das Personal Area Network -Profil definiert, wie sich alle
in Reichweite befindlichen Geräte zu einem Ad-Hoc PAN-Netzwerk zusam-
menschließen können und Zugang zu einem LAN erhalten. Einen weiteren
Schritt in Richtung Vernetzung von Diensten geht die Bluetooth SIG mit
dem Entwurf für das Extended Service Discovery Protocol (ESDP), das zur
Erkennung von UPnP Geräten herangezogen werden soll. Die Liste der Pro-
file ist einer ständigen Veränderung unterworfen und wird von der Bluetooth
SIG verwaltet4 .
quency Identification (RFID) nur schwer geleugnet werden5 . Dies ruft auch
unweigerlich Probleme in der Standardisierung durch die IEEE auf den Plan,
wie sie im aktuellen Formatstreit um Ultra Wide Band (UWB), das als Basis
für das zukünftige drahtlose USB gilt, ersichtlich sind. Bluetooth wird den-
noch an den Spezifikation der beiden gegensätzlichen Konsortien WiMedia
Alliance6 und dem UWB Forum7 mitwirken, verspricht UWB doch große
Datenübertragungsraten bei niedrigstem Energieverbrauch.
2.2 Service-Plattformen
Technologien wie Jini 8 und Universal Plug and Play (UPnP)9 wurden ent-
wickelt, um Ordnung in die heterogene Landschaft verteilter Geräte und
Dienste zu bringen und die gegenseitige Kommunikation zu ermöglichen.
Neben der einheitlichen Kommunikationsschnittstelle ist auch die automati-
sierte Ad-Hoc-Vernetzung und Diensterkennung (Service Discovery) ein vor-
rangiges Ziel10 . Unter Ad-Hoc versteht man in der Informatik-Terminologie
die Vernetzung meist mobiler Geräte ohne das Vorhandensein einer festen
Infrastruktur. Die Konzepte und Unterschiede der beiden Standards wer-
den im folgenden Kapitel näher erläutert. Im Anschluss wird mit OSGi ein
generisches Service-Framework Open Service Gateway Initiative (OSGi)11
vorgestellt, das die beiden konkurrierenden Netzwerk-Technologien in einem
gemeinsamen Standard zu vereinen versucht.
2.2.1 JINI
Allgemeines
Jini wurde 1999 als verteilte Netzwerktechnologie schon viele Jahre vor
UPnP ins Leben gerufen. Die Architektur wurde von Sun entworfen und ver-
wendet gängige Java-Technologien [35]. Jini kann auf einem beliebigen Netz-
werkprotokoll aufsetzen, ist aber an eine vorhandene Laufzeitumgebung, die
Java Virtual Machine (JVM), und dadurch an die Konzepte der Program-
miersprache Java gebunden. Dies ist ein entscheidender Nachteil im Vergleich
zur generischeren Auslegung des Konkurrenten UPnP (siehe Kapitel 2.2.2)
Auf Basis der Virtual Machine setzten Jini’s eigene Netzwerkprotokolle
und das Java Remote Methode Invocation-Modell (RMI) für den Aufruf von
entfernten Objekten im Netzwerk auf. Die Jini-Bibliothek umfasst die oberen
5
Eine Gegenüberstellung verschiedener Wireless-Technologien und deren Einsatzzwecke
findet sich unter http://bluetooth.com/Bluetooth/Learn/Technology/Compare/
6
WiMedia Alliance - http://www.wimedia.org
7
UWB Forum - http://www.uwbforum.org/
8
Jini - http://www.jini.org
9
UPnP - http://www.upnp.org/
10
Ein Überblick über bestehende Protokolle zur Diensterkennung finden sich in [25]
11
OSGi - http://osgi.org/
KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 9
Lookup
RMI
Kommunikationsmodell
Das Jini-Kommunikationsmodell wird von drei Komponenten getragen. Ein
Service Provider, im Java Jargon auch als Djinn bezeichnet, stellt einem
Netzwerk seine Dienste zur Verfügung. Dazu wird für jeden Dienst ein
Dienstobjekt und eine Liste von Attributen mit Serviceinformationen in ei-
ner speziell dafür vorgesehenen Java-Klasse erstellt. Dienstobjekte stellen
für den Service Provider ein Interface zur Verfügung, mit der er seine Fä-
higkeiten präsentieren kann. Der Service Provider sendet diese Information
an einen Lookup Service und wird dort registriert. Jeder Lookup Service ist
ebenfalls ein Dienst und die Anlaufstelle für Jini-Clients die nach Services
Ausschau halten. Will ein Client einen Service in Anspruch nehmen, so er-
hält er aus dem Index des Lookup Services die benötigte Information, um
den Dienst am Service Provider eigenständig aufrufen zu können.
Die Kommunikation zwischen den Teilkomponenten (Abb. 2.3) wird in
die Phasen Discovery, Join, Lookup und Service Call eingeteilt:
Lookup Service
e
nc
Di
re
sc
fe
ov
Re
er
ya
ice
p
ku
nd
rv
o
Lo
Se
Jo
in
Client Service Provider
Service Call
Lookup: Mit Lookup bezeichnet man den Vorgang den ein Client anstößt,
wenn er auf der Suche nach einem Dienst ist. Wird er bei einem Lookup Ser-
vice fündig, so erhält er eine Kopie des Dienstobjektes. Für die Kommuni-
kation wird eine RMI-Verbindung hergestellt, die das dynamisch Laden von
Programmteilen und das Ausführen von nicht-lokalen Prozessen auf einer
anderen Virtual Machine erlaubt.
Service Call: Mit dem Erhalt des Dienstobjektes bekommt der Client die
Möglichkeit, direkt mit dem Service Provider zu kommunizieren und den
Service in Anspruch zu nehmen.
Weitere Konzepte
Eventing: Ähnlich dem UPnP-Modell können sich Objekte als Service
Listener bei einem Dienst eintragen und werden beim Eintreten eines Er-
eignisses über die Zustandsänderung informiert.
KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 11
Leasing: In Jini wird die temporäre Nutzung der Ressourcen eines Ser-
vices als Leasing bezeichnet. Ein Client kann nach Absprache mit dem Ser-
vice Provider einen Zeitrahmen definieren, in dem er den Dienst in Anspruch
nehmen darf. Wird bis zum Ablaufs des Abonnements keine Erneuerung der
Vereinbarung beantragt, so gibt der Provider die Ressourcen wieder frei.
2.2.2 UPnP
Allgemein
Universal Plug and Play ist eine offene, verteilte Netzwerkarchitektur, die au-
tomatischen Verbindungsaufbau, Steuerung und Datenaustausch zwischen
Geräten im Heim- und Office-Bereich auf Basis von TCP/IP und Internet-
technologien ermöglicht. Die Entwicklung des Gerätesteuerungssystems wird
von namhaften Firmen unterstützt und versucht die Charakteristika des Plug
and Play-Paradigmas auf bestehenden Netzwerkstandards umzusetzen und
mit verteilter und unabhängiger Applikationslogik zu verbinden. Ein beliebi-
ges Gerät kann somit dynamisch einem Netzwerk hinzugefügt werden, seine
Dienste offerieren und über die Verfügbarkeit und Serviceleistungen anderer
Geräte lernen. Die Merkmale von UPnP umfassen:
• Automatische Geräte- und Serviceerkennung, Konfiguration und Inte-
gration (zero configuration).
• Abstraktion der Netzwerktopologie zugunsten einer einfachen Bedie-
nung ( invisible“ networking).
”
• Plattform-, protokoll- und geräteunabhängige Kommunikation und Da-
tenaustausch.
Bedingt durch die Flexibilität der Architektur ist auch eine Anpassung
von Technologien und Mediengeräten mit nicht IP-konformen Proto-
kollen möglich. Der Implementierungsaufwand für herstellerspezifische
Gerätetreiber ist damit ebenfalls überflüssig, da standardisierte Pro-
tokolle verwendet werden und dem Entwickler im Gegensatz zu Jini
die freie Wahl der Programmiersprache und des Betriebssystems ga-
rantieren.
Das UPnP Forum ist ein Konsortium das sich mit dem Design der Wei-
terentwicklung der UPnP-Kommunikation zwischen den Produkten verschie-
dener Hersteller beschäftigt. Praktisch alle namhaften Firmen in der IT-
Branche sind in diesem Forum vertreten12 .
Komponenten
Die UPnP-Architektur definiert zwei Komponententypen - das Gerät (De-
vice) und die Steuerinstanz (Control Point).
12
UPnP Implementers Corporation - http://www.upnp-ic.org/
KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 12
UPnP Vendor
UPnP Forum
UDP TCP
IP
Control Point: Der Control Point erlaubt die Entdeckung und Steuerung
der Geräte. Er liest die Gerätebeschreibungen aus, um Informationen über
die Dienste zu erhalten, kann Statusabfragen tätigen, Statusänderungen vor-
nehmen und Aktionen aufrufen um Dienste in Anspruch zu nehmen.
UPnP Networking
Im Folgenden werden die einzelnen Phasen des in Abb. 2.5 dargestellten
UPnP-Kommunikationsmodells beschrieben. Eine ausführliche Beschreibung
von UPnP findet sich unter [38].
Addressing
Discovery
Description
Abbildung 2.5: Die einzelnen Phasen des UPnP Networking Modells (in
Anlehnung an [38]).
Description: Nach der Identifizierung eines Gerätes hat ein Control Point
nur wenig Information über dessen Beschreibung. Er kennt die URL, die
zu einer detaillierten Gerätebeschreibung führt. Darin sind gemäß einem
definierten XML-Schema folgende Informationen enthalten:
Control: Mit dem Abschluss der Description ist das UPnP-Netzwerk be-
triebsbereit. Ein Control Point kann nun ihm bekannte Serviceleistungen in
Anspruch nehmen und Zustände an den Geräten abfragen. In Form von
KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 15
Eventing: Wenn sich ein Control Point als Listener bei einem Gerät regi-
striert, so wird er durch ausgelöste Events über Änderungen von Statusva-
riablen informiert. Für die Anmeldung an einem Service sendet er eine Sub-
scription Message an das Gerät. Wenn das Abonnement angenommen wird,
definiert der Service die zeitliche Begrenzung und sendet diese Information
an die Steuerinstanz zurück. Um eine Weiterführung des Abonnements durch
eine erneute Benachrichtigung oder die Kündigung vor der abgelaufenen Zeit
muss sich der Control Point selbst kümmern. Event-Nachrichten werden im
XML-Format GENA erstellt. Um Szenarien mit mehreren Control Points
realisieren zu können, werden alle Abonnenten über alle Eventvariablen und
deren Änderungen informiert. Dabei ist nicht relevant ob die Zustandsän-
derung aufgrund eines externen Aktionsaufrufes oder innerhalb des Gerätes
zu Stande kommt.
Fazit
UPnP wird aufgrund der Unterstützung vieler Software- und Unterhaltungs-
elektronikkonzerne mit großer Wahrscheinlichkeit zu einer Schlüsseltechno-
logie im Bereich der verteilten Heimnetzwerke heranwachsen. Es fehlt jedoch
noch an konkreten Szenarien, die dem Endkunden die Vorteile verdeutlichen.
2.2.3 OSGi
Die Spezifikation zu OSGi (Open Service Gateway Initiative) wird von der
OSGi Alliance 13 , einem Zusammenschluss bedeutender Hard- und Software-
hersteller, darunter Sun Microsystems, IBM und Ericsson, getragen. Das
OSGi-Framework definiert eine offene Service-Plattform für vernetzte Dien-
ste, die sowohl für industrielle Anwendungen als auch für den Einsatz beim
Endkunden und in mobilen Umgebungen geeignet ist. Das Framework setzt
auf einer Java Virtual Machine-Umgebung auf und wird folgenden Anfor-
derungen gerecht (vgl. [37]):
13
OSGi und OSGi Alliance - http://www.osgi.org/
KAPITEL 2. TECHNISCHE BEGRIFFSERKLÄRUNGEN 16
Geräte
3.1 Szenario
Um die Tauglichkeit von UPnP als Service-Plattform unter Beweis stellen zu
können, müssen vorher Anforderungen für prototypische Implementierungen
definiert werden. Es soll geklärt werden, inwiefern die Technologie in einem
Mediensteuerungsszenario genutzt werden kann. Mit Blick auf die vielfäl-
tige Unterhaltungselektronik eines Haushaltes ist schnell ein reichhaltiges
Einsatzgebiet gefunden.
So möchte man beispielsweise auch während der Küchenarbeit nicht
auf den Musikgenuss verzichten müssen. Zusätzlich zur Stereoanlage im
Wohnzimmer ist das Aufstellen eines weiteren Elektronikgerätes, nur für
das Musikhören, jedoch alles andere als platzsparend und ökonomisch. Hinzu
kommt, dass die jahrelang gepflegte Mp3-Sammlung am PC im Arbeitszim-
mer ohnehin dem Radio vorgezogen wird. Obwohl die Inhalte über das Netz-
werk auf einen PC mit Bildschirm in die Küche übertragen werden könnten,
ist die Bedienung mehr als mühsam. Das Hantieren mit einer Maus passt in
keiner Weise zu den Tätigkeiten in der Küche. Ein in die Wand integriertes
Touchpanel würde hier Abhilfe schaffen, die Nutzung scheitert jedoch an der
Software des Medienplayers, dessen GUI mit den kleinen Bedienelementen
nicht für ein solches Szenario ausgelegt ist.
Zudem möchte man auch die Inhalte anderer, im Haus verteilter Geräte
und Anwendungen in einem gemeinsamen Display darstellen und fernsteuern
können, ohne sich über deren Standorte Gedanken machen zu müssen.
Ebenso wie in diesem Fall finden sich in einem Haushalt viele Beispiele,
in denen ein nahtloses Zusammenspiel zwischen Elektronikgeräten Sinn ma-
chen würde. Die Stereoanlage, der Fernseher, der DVD-Player und auch das
Raumlicht könnten unter einem gemeinsamen Standard und den entspre-
chenden technischen Vorrausetzungen alle von einem mobilen Smart Phone
aus gesteuert werden. Darüber hinaus eröffnen mit Sensoren ausgestattete
Embedded-Geräte und Bewegungsdetektoren neue Möglichkeiten, um Ab-
17
KAPITEL 3. GERÄTE 18
läufe zu automatisieren. Steht eine Person am Morgen auf, könnte dies von
Drucksensoren am Boden registriert werden und eine Gebäudesteuerung in-
formieren, die das Licht in allen vordefinierten Räumen einschaltet. Verlässt
der Bewohner das Haus und geht zur Arbeit, wird eine Überwachungskamera
mit Bewegungsdetektor aktiviert, die, sobald eine Bewegung registriert wird,
eine E-Mail mit einem Standbild der Kamera an den Benutzer schickt.
3.2 Konzept
Alle diese Szenarien zeigen, dass Mediengeräte durch die Unterstützung ver-
teilter Netzwerke nicht mehr nur als eigenständige Dienste betrachtet wer-
den können, sondern gerade durch ihre vielfältigen Vernetzungsmöglichkei-
ten eine neue Servicequalität bieten. Die drahtlosen und netzwerkfähigen
Geräte hierfür sind mit PCs, PDAs, Touchpanels und Mobiltelefonen vor-
handen. Auch Unterhaltungselektronik wird vermehrt mit Netzwerkfunk-
tionalität ausgestattet. Mit einer gemeinsamen Service-Plattform für die
Dienste wird eine Trennung zwischen dem Standort eines Gerätes und des-
sen grafischer Repräsentation zur Fernsteuerung möglich. Die Inhalte der
verschiedenen Anwendungen könnten dann über ein gemeinsames, an das
Darstellungsgerät angepasstes, User Interface gesteuert werden. Aus diesen
Ideen ergeben sich mehrere Komponenten, die zum Aufbau solcher Szenarien
benötigt werden:
3.3 UPnP-Technologie
Als Grundlage für die Entwicklung der Geräte und GUI-Builder Steueran-
wendung wird eine Bibliothek benötigt, die die Besonderheiten der UPnP-
Technologie abstrahiert und die Implementierung von Geräten und Control-
point-Instanzen ermöglicht. Die Cyberlink UPnP Bibliotheken1 des japa-
nischen Programmierers Satoshi Konno ist in den Programmiersprachen
C/C++ und Java verfügbar. Zusätzliche Beispielanwendungen und ein ru-
dimentärer Controlpoint zum Steuern der Gerätedienste sind ebenfalls vor-
handen. Die Java-Variante dieser Bibliothek wurde für die Entwicklung aus-
gewählt, da sie schon mehreren Revisionen unterzogen wurde und eine über-
sichtliche und gut abstrahierte Klassenstruktur bietet.
3.4 Implementierung
Für das Szenario werden Eingabegeräte und verteilte Anwendungen benö-
tigt. UPnP spezifiziert trotz der breiten Herstellerunterstützung zum ge-
1
Cyberlink UPnP Bibliotheken http://www.cybergarage.org/net/
KAPITEL 3. GERÄTE 20
3.4.1 Sensor-Hardwaredevice
Anforderungen
Um ein alternatives Eingabegerät für das Steuerungsszenario zu erhalten,
wurde nach einer Möglichkeit zur Integration von Sensoren gesucht. Dazu
wird ein hardwarenahes System benötigt, das den Anschluss von Sensorik an
einen Analog-Digital Wandler erlaubt und die gemessenen Spannungswerte
der Sensoren ins UPnP-Netzwerk exportieren kann. Um die Anbindung an
das Netzwerk zu ermöglichen, sollte eine schlanke C/C++-Bibliothek gefun-
den werden, die einen UPnP-Stack für performanceschwache Systeme im-
plementiert. In netzwerktechnischer Hinsicht muss das Gerät einen TCP/IP
Stack integrieren und den Zugriff über ein LAN-Modul mit RJ45-Anschluss
oder eine WLAN-Schnittstelle erlauben. Im besten Falle sollte das Gerät
auch geringen Stromverbrauch garantieren oder mit Batterie betrieben wer-
den.
Hinsichtlich frei verfügbarer Software wurden folgende UPnP-Bibliothe-
ken für die Entwicklung in Betracht gezogen:
generiert. Jedoch ist dieser Code nur für Microsoft Windows, Pocket-
PC und Linux ausgelegt.
• Linux UPnP-SDK: Ein UPnP-SDK für Linux6 wird als Open Source
Software zur Verfügung gestellt. Die Einarbeitungszeit in ein Embedded-
Linux System ist für den kleinen Teil des Szenarios allerdings nicht
gerechtfertigt.
• Cyberlink: Neben der Java-Variante wird von Cyberlink auch eine
C++und eine C-Bibliothek bereitgestellt. Aufgrund der umfassenden
Klassenstruktur und der mehrfachen Threads kann die C++-Implemen-
tierung nicht auf einem hardwarenahen System eingesetzt werden. Die
C-Bibliothek hingegen ist dezidiert für mehrere Embedded-Systeme
ausgelegt. Doch auch hier konnte für die unterstützten Betriebssy-
steme T-Engine 7 und uTRON 8 kein bekanntes Hardwareboard gefun-
den werden.
Auf der Suche nach entsprechender Hardware stellte sich heraus, dass
kein greifbares Gesamtsystem die Anforderungen hinreichend erfüllt und in
kurzer Zeit die Erstellung eines Prototyp ermöglicht:
Systemaufbau
Schließlich wurde ein prototypisches Hardwaredevice der Firma Ubitronix 15
eingesetzt. Das Gerät basiert auf einem Texas Instrument MSP430 -Mikro-
controller16 , der einen 8-Port Analog-Digital Wandler integriert. Zusätzlich
ist ein mit dem Lantronix XPort 17 ein Ethernet-Modul angebracht, das die
Netzwerkkommunikation ermöglicht. Am Gerät wurden acht Drucksensoren
angebracht und so konfiguriert, dass der Wandler je nach Druckstärke einen
skalierten Wert zwischen 0 und 4000 zurück liefert. Mit einem proprietären,
TCP/IP-basierten Kommunikationsprotokoll kann das Gerät im Netzwerk
angesprochen werden. Es definiert eine Folge an Befehlen im Byte-Format
um die acht Sensorwerte auslesen zu können.
Ein Zyklus einer Sensorabfrage (Abb. 3.2) sieht vor, dass zuerst ein re-
quest-Befehl an das Gerät gesendet wird. Das Hardwaredevice bestätigt
diese Anfrage (acknowledge) und teilt dem PC mit, dass es Daten senden
will (send). Ist der PC damit einverstanden (ack), sendet das Gerät die er-
mittelten acht Sensorwerte mit je 2 Byte Länge zurück (sensordata). Trotz
12
SUN Spot - http://www.sunspotworld.com/
13
Sun Microsystems Laboratories - http://research.sun.com/
14
IEEE 802.15 WPAN Task Group 4 ist ein Arbeitsgruppe zur Spezifizierung von
Kurzstrecken-Funktechnik in Wireless Personal Area Networks - http://www.ieee802.org/
15/pub/TG4.html
15
Ubitronix - http://www.ubitronix.com/
16
Texas Instrument MSP430 Mikrocontroller - http://www.ti.com/msp430
17
Lantronix XPort -
http://www.lantronix.com/device-networking/embedded-device-servers/xport.html
KAPITEL 3. GERÄTE 23
request
ack
send
PC Hardware
ack Device
sensordata
ack
des aufwendigen Protokolls, das nicht nur für die Sensorabfrage entworfen
wurden, zeigte sich der Prototyp als robustes Eingabegerät, das auch nach
tagelangem Einsatz noch einwandfrei funktioniert.
Für die Integration ins UPnP-Netzwerk wurde eine Adapteranwendung
am PC implementiert, die eine persistente Verbindung zum Hardwarede-
vice hält und auf eine GetSensor-Aktionsanfrage eines UPnP-Controlpoints
die acht Sensorwerte ermittelt und in Form eines XML-formatierten Strings
zurück liefert.
Mit dieser Implementierung wurde die UPnP-Welt des Szenarios um ein
physisches Eingabegerät bereichert. Welche Funktionen die Sensoren erfül-
len, ist Teil des Mappings zwischen zwei UPnP-Diensten, wie sie im Torem-
Framework definiert werden kann. So kann unter anderem folgendes Verhal-
ten festgelegt werden: Wenn der Wert des Sensors1 kleiner 2000 ist, dann
soll der Play-Befehl eines Medienplayers ausgeführt werden. Ein erweiter-
tes Szenario könnte auch eine Passwortabfrage anhand einer bestimmten
Abfolge an gedrückten Sensoren realisieren. Mit dem Hardwaredevice ist die
Integration vieler, weiterer Sensortypen, wie Temperatur-Sensoren, Distanz-
Sensoren, Magnetfeld-Sensoren, etc. denkbar, da sie am gleichen Gerät an-
gebracht werden können und die Bedeutung eines Sensors erst durch dessen
semantische Verknüpfung definiert wird.
Systemaufbau
Für die Implementierung der Streaming-Architektur wurde das Java Me-
dia Framework 18 (JMF, Version 2.1.1e), eine Java-basierte Bibliothek für
die Medienverarbeitung, herangezogen. JMF ermöglicht den Zugriff auf die
Daten, der am PC angeschlossenen Audio- und Videohardware und abge-
speicherter Medienformate. Durch die Entwicklung von Plugins können Än-
derungen in den Datenströmen der Verarbeitungskette vorgenommen wer-
den, die sich aus einer Datenquelle, einem Prozessor und einer Datensenke
zusammensetzen. Sowohl Datenquelle als auch Datensenke sind abstrakte
Bezeichnungen für Ein- und Ausgabeinstanzen. Dazu zählen neben Gerä-
ten wie Videokamera und Bildschirm ebenso ein Netzwerkstream oder eine
Mediendatei.
Der Streaming Server und der Client verwenden eine annähernd identi-
sche Klassenstruktur, die in drei Bereiche unterteilt ist:
3.4.4 MIDI-Device
Für die Übertragung von MIDI-Steuerbefehlen wurde mit Hilfe des LoopBe1
MIDI-Treibers24 , einer virtuellen MIDI-Kabelverbindung am PC, ein UPnP-
Adapter für das Windows Betriebsystem entwickelt. Damit können alle soft-
21
Winamp Media Player - http://httpq.sourceforge.net/
22
Winamp Plugin Development Center- http://www.winamp.com/nsdn/winamp/plugins/
23
httpQ Network Protocol - http://httpq.sourceforge.net/
24
LoopBe1 Virtual MIDI Driver - http://www.nerds.de/en/loopbe1.html
KAPITEL 3. GERÄTE 27
25
Native Instruments Reaktor - http://www.native-instruments.com/index.php?id=
reaktor5 us
26
Eine Liste alternativer MIDI-Controller - http://www.stoffelshome.de/alt controller/
alt midi controller.html
27
Döpfer MIDI-Controller - http://www.doepfer.de/home d.htm
Kapitel 4
28
KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 29
mit Hilfe eigener Window Manager zur Verfügung stellt. Eine Vielzahl weiter
Publikationen beschäftigt sich mit Richtlinien für Interaktionsdesign [8, 34]
und auch für grafisches Design [4]. Aufgrund der Vielfalt und Komplexität
von Softwaresystem und dem unvorhersehbaren Nutzerverhalten lassen sich
diese Ansätze nicht in einer allgemeingültiger Theorie postulieren. Gutes
Design liegt demnach zu einem großen Teil noch immer in den Händen des
Designers.
4.2.2 Geräteeigenschaften
Die gestiegene Performance und Speicherkapazität bei mobilen Geräten er-
laubt die Darstellung grafischer Inhalte auf Farbdisplays, die bis vor kur-
zem noch Desktop-Systemen vorbehalten waren. Mobile Betriebsysteme wie
Windows Mobile3 und Symbian4 und systemübergreifende Entwicklungs-
plattformen wie Microsoft .NET5 und die Java 2 Platform, Micro Edition
(J2ME)6 bieten mit grafischen Toolkits Unterstützung für einfache GUI-
Programmierung.
Eine weitere Eigenschaft der neuen Geräteklassen sind spezialisierte Ein-
und Ausgabehardware. Auf Seiten der Interaktionstechniken reicht die Pa-
lette von wandgroßen Displays über berührungsempfindlichen Touch Screens
und PDAs mit Bedienstift (stylus) bis hin zu Mobiltelefonen mit mehrfach-
belegten Funktionstasten und Joystick oder Richtungstaste für die Naviga-
tion. Durch Wegfall von Maus und Tastatur muss die Navigation durch das
User Interface anders ausgelegt sein. Am Beispiel einer einfachen Textein-
gabe lässt sich der Paradigmenwechsel leicht erklären. Durch die Populari-
tät des Short Message Services (SMS ) zeigt sich, dass es dem Konsumenten
selbst am Mobiltelefon ein Bedürfnis ist, Texte zu verfassen. Das neue Be-
dienungskonzept, das für wenigen Tasten mehrfache Buchstabenbelegungen
erfordert, wird trotz der offensichtlichen Nachteile in Kauf genommen. Am
PDA ist die selbe Funktionalität in mehrfacher Ausführung vorhanden: Der
Bedienstift kann dazu benutzt werden, um Zeichen, die auf einer im Display
sichtbaren Tastatur aufgereiht sind, anzuwählen. Eine neue Form der Inter-
aktion bieten die Zeichenerkennung per Handschrift. Als weitere Möglichkeit
bieten sich externe Eingabegeräte wie das Virtual Laser Keyboard7 an, das
mittels einer Laserprojektion ein Standard-Tastaturlayout auf die Tischober-
fläche zeichnet. Auch die Forschung mit Spracherkennung und Analyse von
Videobildern mittels integrierter Kamera lassen auf zukünftige, alternative
3
Windows Mobile - http://www.microsoft.com/windowsmobile/
4
Symbian OS - http://www.symbian.com/
5
.NET Compact Framework - http://msdn.microsoft.com/netframework/programming/
netcf/
6
Java Micro Edition - http://java.sun.com/javame/
7
Virtual Laser Keyboard - http://www.virtual-laser-keyboard.com/
KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 32
Interaktionstechniken hoffen.
Alle Geräte verfügen mittlerweile über Farbdisplays in unterschiedlichen
Ausführungen. Die Auflösung und Skalierung des Displays hat ebenfalls si-
gnifikante Auswirkungen auf die Anzahl und Anordnung der grafischen Ele-
mente die in einem GUI dargestellt werden können [26]. Die Bandbereite
reicht von kleinen Mobiltelefon-Displays bis zu hochauflösenden Bildschir-
men. Trotz des Vorhandenseins gemeinsamer, grafischer Toolkits kann auf-
grund der Varianten bei Ein- und Ausgabegeräten nicht jeder grafische Inhalt
gleich repräsentiert werden. Erschwerend kommt noch hinzu, dass nicht ein-
mal gemeinsame Geräteklassen über gleiches Hardwarelayout verfügen und
Standards in dieser, bedingt durch den großen Wettbewerb, heterogenen
Landschaft nur sehr schwer Fuß fassen.
Die Entwicklung von Plattform-übergreifenden Applikationen in perva-
siven Umgebungen erfordert neue Konzepte im Umgang mit Software und
deren grafischer Darstellung. Rapid Prototyping [9], die schnelle und teilau-
tomatisierte Entwicklung von (prototypischen) Implementierungen, ist dabei
ebenso ein Thema wie Techniken zur abstrakten Beschreibung und Modellie-
rung von Funktionalität einer Applikation. Auf Basis dieser Anstrengungen
können Versuche zur automatisierten Generierung grafischer Benutzerober-
flächen unternommen werden.
Mobiles Web
Die fortschreitende Entwicklung mobiler Endgeräte ermöglicht die Nutzung
von Webinhalten und Rich Media-Applikationen auch zunehmend auf Smart
Phones und PDAs. Mehrere vielversprechende Konzepte versuchen beste-
hende Technologien auf mobile Plattformen zu portieren. In [41] wird die
Idee eines zukünftigen, einheitlichen User Interfaces für dynamische, webba-
sierte Services erläutert:
wand und Intelligenz bei der Auswertung der enthaltenen Information durch
Transformatoren und wissensbasierte Systeme und stellt vorab kein konkre-
tes Rendering mit vordefinierten GUI-Elementen in Aussicht.
4.4.1 XAML
WinFX13 ist der Name von Microsofts .NET basierter Programmierschnitt-
stelle, die die Basis für Applikationsentwicklungen im kommenden Betriebs-
system Windows Vista bildet und in vier Bereiche gegliedert ist. Neben dem
Kommunikationsmodell Windows Communication Foundation (WCF), dem
Programmiermodell Windows Workflow Foundation (WF) und sicherheits-
und authentifizierungsrelevanten InfoCard-Komponenten ist die Windows
Presentation Foundation (WPF) für die grafische Aufbereitung in Vista zu-
ständig. Als Teil dieses Subsystems wurde die Extensible Application Mar-
kup Language (XAML) als XML-basierte Beschreibungssprache für User In-
terfaces konzipiert. Ziel ist die Trennung von Logik und Präsentationsschicht,
sowie die nahtlose Zusammenarbeit mit bestehenden .NET-Technologien.
So kann die Ereignisbehandlung, etwa ein Button-Klick, in externe C# oder
VB.NET Codefragmente ausgelagert werden, die in XAML referenziert wer-
den. Innerhalb des Dokuments können auch Layouteigenschaften und ein-
fache visuelle Effekte wie Transparenz festgelegt werden. Darüber hinaus
ist XAML als deklarative Sprache zur Darstellung folgender multimedialer
Inhalte, die Anlehnung an bestehenden Standards nehmen, angedacht14 :
4.4.2 XUL
XML User Interface Language (XUL)15 ist eine von Mozilla spezifizierte
GUI-Sprache, die in Mozillas Browser Firefox, dem Email-Client Thunder-
bird und weiteren Projekten zum Einsatz kommt und von der Gecko Rende-
ring Engine verarbeitet wird. XUL wurde zur schnellen Entwicklung platt-
formunabhängiger Benutzeroberflächen entwickelt und versucht mit Hilfe
von Technologien wie XML-Transformationen, CSS und JavaScript den Im-
plementierungsaufwand für grafische Oberflächen, der durch die Mischung
dieser verschiedenen Standards entsteht, zu minimieren. Zusätzlich wird an
der Gecko Laufzeitumgebung gearbeitet, die in Kombination mit serverseiti-
gen Webarchitekturen wie PHP und JSP und der Programmiersprache Java,
die Entwicklung von GUI-Anwendungen mit dynamischem Inhalt auch au-
ßerhalb des Webbrowser-Kontextes erlaubt. Obwohl XUL kein Standard ist,
der von einer Dachorganisation getragen wird, beschäftigen sich mehrere
Projekte mit XUL Implementierungen16 und Anwendungen17. Mit der Er-
findung von XUL versucht Mozilla dem durch lange Perioden der Stagnation
geprägten Prozess der Standardisierung von Web-Technologien zu entkom-
men und aufbauend auf vorhandenen Lösungen einen weiteren Schritt in
Richtung Unabhängigkeit von XHTML-basierten Services zu wagen.
Die Idee dahinter sieht eine Aufteilung von Kompetenzen in vier Bereiche
vor: Für die Beschreibung der baumartigen Struktur und den Inhalt des
grafischen Interfaces ist die XUL-Datei verantwortlich. Das Look & Feel des
Programms übernimmt ein eingebetteter oder referenzierter CSS-Code und
die Ereignisbehandlung wird an JavaScript-Anweisungen übertragen. Alle
internationalisierten Bezeichner einer GUI-Anwendung werden ebenfalls in
einer externen Datei festgelegt.
Wie auch XAML befindet sich XUL noch in der Entwicklungsphase, die
von einigen wenige Quellen dokumentiert wird18 .
4.4.3 XForms
Das XForms-Konzept19 ist aus der Notwendigkeit entstanden, das veraltete
Formularwesen in HMTL abzulösen. XForms ist ein XML basierter Stan-
dard und vollzieht eine klare Trennung zwischen der Präsentationsschicht
und dem dahinter liegenden Formularmodell [6]. Diese modulare Auslegung
15
Mozilla XUL - http://www.mozilla.org/projects/xul/
16
Luxor XUL - http://luxor-xul.sourceforge.net/
17
Mozilla Amazon Browser - http://www.faser.net/mab/
18
XUL Planet (Dokumentation des XUL Entwicklungsprozesses) - http://www.xulplanet.
com/tutorials/mozsdk/
19
XForms - http://www.w3.org/MarkUp/Forms/
KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 37
Host Document
(XHTML,SVG,...)
XForms Model
Person
Name
Address
Process Input
Validate
XForms
User Interface
XForms:Input
Peers
Structure
Swing
Renderer WML Style
Renderer
> i am quite
sure you can't
Content Application
read this yerk!
yak '06...
Behaviour
Data Source
Platform / Device
4.4.4 UIML
Die User Interface Markup Language (UIML)20 versteht sich als eine Me-
tasprache zur Beschreibung von User Interfaces, die plattformunabhängig,
geräteunabhängig und auch von der Vorstellung eines grafischen Interfaces
losgelöst sein soll. Das Mapping von abstrakten Interaktionselementen in die
spezifischen Sprachen Java, HTML, WML und VoiceXML, eine Sprache zur
Generierung von sprachgesteuerten Interfaces (auditory displays), wird in
der aktuellen Spezifikation [1] aus dem Jahr 2004 unterstützt. Diese Trans-
formationsaufgabe wird dabei von speziellen Renderern übernommen, die
einmal für jede Sprache implementiert werden müssen.
UIML selbst definiert nur sehr wenige XML-Tags. Ähnlich der Document
Type Definition (DTD) für die Definition eines spezifischen XML-Dialekts
muss ein Vokabular, das ein direktes Mapping in eine Zielsprache oder eine
allgemeinere Beschreibung vorsieht, für das Arbeiten mit UIML geschaffen
werden. Die Komponenten eines Interfaces werden daher als Elemente mit
einer eindeutigen Id und einem Verweis auf eine Klasse gekennzeichnet.
Die Präsentation, die Anbindung an externe Datenquellen und das In-
teraktionsverhalten sind ebenfalls Teil der Sprachdefinition, die sich am
Model-View-Controller Designpattern orientiert (siehe Abb. 4.2). Auch UI-
Templates und zeitliche Veränderungen der Interface-Struktur, die durch
Öffnen eines neuen Fensters entstehen können, werden in UIML berücksich-
tigt. Die grundlegende Struktur ist in folgende Bereiche gegliedert:
1 < uiml xmlns = ’ http: // uiml . org / dtds / UIML3_0a . dtd ’ >
2 < head > ... </ head >
20
UIML - http://www.uiml.org/
KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 39
4.4.5 XIML
Ein fehlender Standard zur Interaktion und Repräsentation von Daten führte
zum Design der Extensible Interface Markup Language (XIML)21 . Die Aus-
legung der Sprache umfasst die ganzheitliche Unterstützung vom UI-Design-
prozess, über das Mapping zwischen abstrakten und konkreten Steuerele-
21
XIML - http://www.ximl.org/
KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 40
1 < interface
2 xmlns = "x - schema:http: // www . ximl . org / validator / schema . xml "
3 id = " test " >
4 < definitions > ... </ definitions >
5 < model_compo ne nt s >
6 < task_model id = " dictionary " > ... </ task_model >
7 < domain_model id = " dictobjects " > ... </ domain_model >
KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 41
XIML Interface
Specification
Presentation HTML
> i am quite
sure you can't
read this yerk!
yak '06...
Component 1 Converter
Presentation WML
Component 2 Converter
8 < user_model id = " dictobjects " > ... </ user_model >
9 < presentation _m o de l id = " java " > ... </ presentati on _m o de l >
10 < dialog_model id = " dictdialog " > ... </ dialog_model >
11 </ model_compo ne nt s >
12 </ interface >
Presentation HTML
> i am quite
sure you can't
read this yerk!
yak '06...
Component 1 Converter
Intermediate
Presentation
Component
Presentation WML
Component 2 Converter
und XIML zu sehen ist, ist der Aufwand für eine generische, deklarative
Beschreibung mit zunehmender Komplexität einer GUI-Anwendung höher
einzuschätzen, als eine programmatische Lösung. Zudem müssen ohnehin
Transformationswerkzeuge implementiert werden, die Quellcode für die spe-
zifische Plattform oder -sprache erzeugen. In dieser Hinsicht haben XAML
und XUL den Vorteil der engen Bindung an bestehende Softwaresysteme,
die eine Entwicklung von GUI-Anwendungen auch ohne programmatischen
Mehraufwand erlauben.
All diese Konzepte stehen aber in Widerspruch zu den Anforderungen ei-
nes plattformübergreifenden User Interfaces, das dynamischen Änderungen
zur Laufzeit unterliegt und dabei kontextbezogene Informationen mit ein-
bezieht. Model-based User Interface Tools sind Systeme zur automatisierten
Erfassung und Auswertung verschiedener Interface-bezogener Datenmodelle.
Bereits in den Neunziger Jahren wurden Forschungen in diese Richtung vor-
angetrieben. Obwohl zu diesem Zeitpunkt noch kein standardisiertes Daten-
format wie XML oder tiefgreifende objektorientierte Paradigmen Teil der
Softwareentwicklung waren, wurden dennoch grundlegende User Interface
Modelle entworfen, die bis heute Gültigkeit haben. In [32] und [23] wurden
anhand mehrere Projekte folgende Modelle identifiziert:
andere Daten aus dem Umfeld, die für die Anwendung von Bedeutung
sind.
• Zuerst muss eine Auswertung der Models und eine anschließende Iden-
tifizierung aller abstrakten Interface-Elemente passieren. Ein Beispiel
für ein abstraktes Interface-Element ist die Definition eines Fenster-
menüs, das je nach Wahl der Plattform anders aussehen kann, aber
immer die gleiche Funktion erfüllt.
• Die spätere Umwandlung in konkrete, plattformabhängige Interface-
Elemente wird als Mapping bezeichnet und geschieht zusammen mit
der automatisierten Anordnung der Komponenten im Interface.
• Zwecks semantischer Bindung werden Zusatzinformationen zur Ver-
haltensmodellierung des Interfaces eingebracht. Damit können etwa
Abhängigkeiten zwischen Elementen definiert werden, um ganze Funk-
tionsgruppen anhand eines Elements zu aktivieren oder zu deaktivie-
ren. Komplexere Verhaltensmuster werden jedoch nicht von den model-
based UI Tools abgedeckt und müssen selbstständig modelliert werden.
• Kaum ein generiertes Interface entspricht in allen Belangen den Vor-
stellungen des Designers oder den Bedürfnissen des Users. Zusätzliche
Methoden zur Evaluierung und Revision unter Einbeziehung mensch-
licher Beurteilungen sind daher ein adäquates Mittel zur manuellen
und automatisierten Abänderung des Interfaces zur Laufzeit.
Systemarchitektur
Abbildung 4.5 zeigt den Systemaufbau von PUC. Da die funktionale Be-
schreibung von jedem Endgerät zur Verfügung gestellt werden muss, braucht
es eine einheitliche Kommunikationsschnittstelle zwischen Gerät und Inter-
face. Gerade im Bereich der Unterhaltungselektronik ist jedoch kaum ein
gemeinsamer Standard zu finden. Daher müssen Geräteadapter in Software
oder Hardware für die Umsetzung der Befehle des PUC-Protokolls in das
proprietäre Protokollformat zwischengeschalten werden. Soweit das Gerät
bidirektionale Kommunikation unterstützt, garantiert PUC die Konsistenz
zwischen dem Application Model und den Inhalten des Interfaces. Speziell
im Niedrigpreissegment sind aber immer noch viele Geräten mit Infrarot-
Schnittstellen ausgestattet und können nach dem bekannten Prinzip einer
Fernbedienung lediglich Befehle entgegennehmen.
In PUC existieren nach eigenen Angaben zum gegebenen Zeitpunkt Ad-
apter für Camcorder mit IEEE 139424 -Anschluss und dem AV/C Protokoll,
Videorecorder die den Steuerungsstandard HAVi25 unterstützen, den ameri-
kanischen Gebäudesteuerungsstandard X1026 und diverse proprietäre Hard-
ware wie eine Telefonanlage. Die Integration von Jini und UPnP wird in
Aussicht gestellt.
Obwohl Funktechnologien bevorzugt werden, stellt PUC keine Anforde-
rungen an die verwendete Netzwerktechnologie. Es wird jedoch vorausge-
setzt, dass jedes Gerät oder dessen Adapter über eine eigene Netzwerkan-
bindung verfügt, um die Peer-to-Peer Kommunikation zwischen Endgerät
und dem Interface-Client, die ohne zentralen Verbindungsknoten auskommt,
zu ermöglichen. Das XML-basierte Kommunikationsprotokoll ist einfach ge-
halten und definiert sechs Befehle zum Austausch von Gerätebeschreibung,
23
PUC Specification Language - http://www.pebbles.hcii.cmu.edu/puc/specification.html
24
Die Datenschnittstelle ist auch unter dem Namen FireWire bekannt.
25
HAVi - urlhttp://www.havi.org/
26
X10 - http://www.x10.com/home2.html
KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 46
Adapter
Layout Generierung
Die Gerätespezifikation in Form einer funktionalen XML-Beschreibung ist
die Basis für die Generierung eines Interfaces. Innerhalb des Dokuments
ist eine Gruppen-Baumstruktur zur Anordnung von Zustandsvariablen und
Steuerbefehlen definiert. Die Variable gibt Auskunft über den Namen, den
Datentyp und den Wertebereich des Zustandes. Anhand des Datentyps, der
neben primären Datentypen auch eine Auflistung und eigens definierte Ty-
pen erlaubt, wird ein Interface-Element zur Darstellung und Manipulation
des Zustandes ausgewählt. Dennoch sind in Form von Steuerbefehlen, die
als ausführbare Buttons gerendert werden, zusätzliche Funktionen nötig, da
nicht jeder Zustand im vorhinein bekannt sein kann.
Am Beispiel eines Radios, das einen Button für den automatischen Fre-
quenzsuchlauf benötigt, ist dieses Vorgehen schnell erklärt: Würde man ganz
auf die Verwendung von Zustandsvariablen verzichten, entspräche die Model-
lierung des Interfaces einer heutigen Hardware-Fernbedienung, die keinerlei
Rückmeldung über die Gerätezustände zulässt [28]. Die logische Gruppie-
rung erlaubt dem UI-Generator, der für jede Plattform einmal implemen-
tiert werden muss, anfängliche Rückschlüsse über die Strukturierung der
Interface-Elemente.
Durch zusätzlich definierte Abhängigkeiten zwischen den Zustandsva-
riablen können weitere Rendering-Hinweise abgeleitet werden. Das Display
mobiler Endgeräte ist in seiner Größe stark eingeschränkt. Daher müssen
Funktionen oft in mehreren Reitern angeordnet werden. Werden im Zuge
der Auswertungen Gruppierungen und Elementen gefunden, die sich auf-
grund von Abhängigkeiten gegenseitig ausschließen, kann diese Information
dazu benutzt werden, um die Interface-Elemente auch lokal von einander
27
PUC Communications Protocol - http://www.pebbles.hcii.cmu.edu/puc/protocol spec.
html
KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 47
Supple
Method Call
Supple Solver Messages
User Device
Model Model
sein können, Rücksicht. Das User Model sammelt zur Laufzeit Daten des
Benutzers, um das Interface den aktuellen Bedürfnissen anzupassen.
Systemarchitektur
Abbildung 4.7 zeigt die Architektur von Supple. Für die automatisierte Ge-
nerierung wird ein Interface Model definiert, das die Steuerbefehle und Zu-
standsvariablen des unterliegenden Application Models als abstraktes Inter-
face-Elemente exportiert und dem Supple Solver zur Verfügung stellt. Dieser
erstellt anhand der Device Model Information mehrere plattformabhängige
Widget Proxies und ordnet sie mit Hilfe einer kombinatorischen Suche einem
Element zu. Zuletzt werden die bestehenden Verbindungen ausgewertet und
für jedes abstrakte Element ein konkretes UI-Element generiert. Ist die An-
bindung der Applikation mit Hilfe von Bean-Objekten realisiert, garantiert
Supple die bidirektionale Konsistenz zwischen den Daten des User Interfaces
und dem Application Model [15]. Mit dieser Funktionalität sind mehrere In-
stanzen eines GUI mit gleichbleibender Applikationslogik ohne zusätzlichen
Aufwand denkbar.
Layout Generierung
Supple definiert die Aufgabe des Interface-Rendering als Optimierungspro-
blem, das Teil der theoretischen Informatik und des Forschungsgebietes der
Künstlichen Intelligenz ist. Das Ziel ist die Suche nach der bestmöglichen
Darstellung des User Interfaces unter den gegebenen Einschränkungen und
Erkenntnissen. Diese sind durch die funktionale Spezifikation des Interface-
Models, durch das Device Model und durch die Ablaufverfolgung des Be-
nutzers gegeben. Als Maß für die Optimierung wird eine Kostenfunktion,
die den Navigationsaufwand für den Benutzer darstellt, herangezogen. Das
bestmögliche Interface-Rendering, das aus einer Menge an errechneten Mög-
lichkeiten ausgewählt wird, ist jenes, das den minimalsten Gesamtaufwand
KAPITEL 4. GENERIERUNG GRAFISCHER USER INTERFACES 50
aufweist. Die Kosten einer Möglichkeit können als gewichtete Summe einzel-
ner Kostenfunktionen der Interface-Elemente beschrieben werden. Die Ko-
sten für ein einzelnes Element setzen sich aus mehreren Faktoren K und
zugehörigen Gewichtungsfaktoren uk zusammen, die durch Interaktion des
Benutzers fortwährend adaptiert werden (siehe Formel 4.1 aus [17]).
K
$(render(e)) = uk (render(e)) (4.1)
k=1
(a) (b)
besserung der subjektiven Qualität des Interfaces ermitteln. Für diese Fälle
generiert Arnauld einfache binäre Fragen, die zwei konkrete Interface-Ren-
derings oder einfache Interface-Elemente miteinander vergleicht und den
User nach dem qualitativ besseren Ergebnis fragt. Wichtig ist dabei, dass
auch die Fragen signifikanter Relevanz sein müssen, um genügend Informa-
tionen extrahieren zu können. In diesem Zusammenhang muss dem Benutzer
der Unterschied zwischen den Renderings bewusst sein, um ein Urteil fällen
zu können. Betrifft die Frage etwa nur das Aussehen eines einzelnen Ele-
ments, so muss diese in einem auffolgenden Schritt auch im Kontext des
gesamten Interfaces präsentiert werden, um dieses Bewusstsein zu gewähr-
leisten [18].
Kapitel 5
GUI-Builder
5.1 Konzept
Das Supple Projekt (siehe Kapitel 4.5.3) hat sich als brauchbares Software-
Werkzeug zur automatisierten Generierung grafischer User Interfaces erwie-
sen. Supple verfügt über geeignete Schnittstellen zur Anbindung externer
Applikationslogik. Diese muss in der Lage sein, einen Bezug zwischen dem
technischen Aufbau des Interfaces und der zugrundeliegenden Aufgabe der
Anwendung herzustellen. Diese Verbindung ist grundsätzlich bei jeder Soft-
ware der Fall, bei der sowohl die Benutzeroberfläche als auch die Logik ge-
meinsam entwickelt werden. Verteilte Netzwerkgeräte liefern hingegen nur
funktionale Beschreibungen der Schnittstellen ohne Bezug auf den Kontext
der Anwendung zu nehmen oder gar Auslegung und Verhalten eines grafi-
schen Interfaces zu definieren. Die Service-Plattform UPnP integriert mit
Absicht keine Unterstützung für Benutzeroberflächen, um die herstellerspe-
zifische Individualität der Produkte zu gewährleisten [7]. Die zur Verfügung
stehenden Controlpoint-Implementierungen bieten lediglich ein rudimentä-
res Interface zur zentralen Fernsteuerung der UPnP-Geräte und sind für
Laien nur schwer bedienbar (siehe Abb.5.1).
Aus dieser Überlegung heraus entstand die Idee zu einer Erweiterung
des UPnP-Standards, die den Nutzen einer einheitlichen Service-Plattform
auf das User Interface ausweitet und so zu einem Gesamtkonzept für die
Steuerung verteilter Anwendungen und Gerätedienste beiträgt. Dafür müs-
sen folgende Anforderungen erfüllt werden:
• Zur Fernsteuerung von UPnP-Geräten soll ein ein gemeinsames User
Interface erstellt werden, das in ansprechender Form präsentieren und
intuitiv bedienbar sein.
• Zusätzlich zu der funktionalen UPnP-Gerätespezifikation muss eine In-
formationsquelle gefunden werden, die Aufschluss über die semantische
Zusammengehörigkeit von Interface-Elementen und dadurch zwischen
den einzelnen, ausführbaren UPnP-Aktionen gibt.
53
KAPITEL 5. GUI-BUILDER 54
Abbildung 5.1: Cyberlink Controlpoint (siehe auch Kap. 3.3) – Entlang ei-
ner Baumstruktur werden die Services, Aktionen und Zustandsvariablen der
UPnP-Geräte gelistet. Erst auf dritter Ebene ist das Ausführen einer Ak-
tion möglich. Eine eklatante Schwäche hinsichtlich der Benutzerfreundlich-
keit zeigt folgender Fall: Wurde ein neues Gerät gefunden oder vom Netzwerk
abgemeldet, wird der gesamte Baum geschlossen und neu aufgebaut.
5.1.1 System-Schnittstellen
Für die Implementierung des GUI-Builder Prototyps wird ein OSGi-Frame-
work mit einem Bundle zur Kommunikation mit UPnP eingesetzt.
KAPITEL 5. GUI-BUILDER 55
generate
Cyberlink
OSGi Framework
UPnP Network
Virtual
UPnP Device 2 UPnP Device 1
Abbildung 5.2: Aufbau des Domoware Base Drivers (siehe Domoware Ho-
mepage).
OSGi-Framework
Um eine Vereinfachung des Entwicklungsprozesses und maximale Kompa-
tibilität zwischen den einzelnen Softwarekomponenten zu erreichen, wird
ein OSGi-Framework Release 4 eingesetzt. Die Entwicklung des UPnP-GUI
Builders wird mit dem Eclipse Equinox 2 Framework realisiert. Equinox ist
ein Teil der Java-Entwicklungsumgebung Eclipse IDE und wird für das Ma-
nagement der OSGi-Plugins (Bundles) verwendet. Durch die enge Bindung
zwischen OSGi-Framework und IDE können OSGi-Bundles in Eclipse ent-
worfen und auch direkt darin getestet werden.
UPnP-OSGi Gateway
Für die Integration von UPnP in das OSGi Service-Framework steht der
UPnP Base Driver von Domoware3 zur Verfügung. Das Bundle agiert dabei
als Gateway zwischen den beiden Standards. Es importiert alle gefundenen
UPnP-Geräte als generische OSGi-Services und hilft beim Export aller in
OSGi entwickelten UPnP-Geräte ins UPnP-Netzwerk (siehe Abb. 5.2 von
der Domoware-Website4 ).
2
Eclipse Equinox - http://www.eclipse.org/equinox/
3
Domoware - http://domoware.isti.cnr.it/
4
Domoware UPnP Base Driver - http://domoware.isti.cnr.it/documentation.html
KAPITEL 5. GUI-BUILDER 56
5.1.2 Setup
Das in Abbildung 5.3 ersichtliche Setup zeigt die Zusammenhänge zwischen
den einzelnen Applikationen. Der GUI-Builder PC ist als OSGi-Bundle ent-
worfen und hat auf die OSGi-internen und, über den Base Driver, auf die ex-
ternen UPnP-Geräte Zugriff. Er nutzt die von den verteilten UPnP-Geräten
zur Verfügung gestellte, XML-Gerätebeschreibung, um anhand dieser Infor-
mation ein User Interface zu generieren.
Das selbe Konzept wird beim mobilen GUI-Builder angewandt. Diese
Anwendung wurde jedoch ohne den Overhead des OSGi-Frameworks ent-
wickelt und besteht aus einer Gateway-Anwendung am PC und einem mo-
bilen Client am Smart Phone. Das Gateway ist ein eigenständiger UPnP-
Controlpoint und bereitet die Informationen der gefundenen UPnP-Geräte
für den Client auf. Ist ein Smart Phone über Bluetooth zum Gateway ver-
bunden, bekommt es die Gerätebeschreibungen übermittelt und generiert ein
GUI zur Fernsteuerung. Die bei der Interaktion durch den Benutzer erzeug-
ten Befehle werden anschließend an das Gateway zurückgeschickt und von
diesem auf dem angesteuerten UPnP-Gerät ausführt. Diese Server/Client-
Architektur hat den Vorteil, dass speicherintensive Aufgaben wie das Parsen
von XML-Beschreibungen und die Datenhaltung, die am mobilen Endgerät
zu Performanceengpässen führen würden, auf den Gateway-Server ausgela-
gert werden können. Das mobile Endgerät muss sich nur um die Darstellung
und Kommunikation kümmern.
5.2 Implementierung - PC
Die Implementierung des GUI-Builders wird anhand folgender Bereiche er-
läutert:
OSGi Core
UPnP
Misc. Device
Bundle Bundle
UPnP
Device
Bundle
> i am quite
sure you can't
read this yerk!
yak '06...
GUI Builder
Basedriver Bundle PC
UPnP Network
UPnP Device
Bluetooth Gateway
Mobile Controlpoint
GUI Builder
aufgebaut werden. Ein Vorteil in der Arbeit mit OSGI ist der Informati-
onsaustausch zwischen den Bundles über eine zentrale Registrierungsstelle
im Framework. Dort können Services registriert werden, die zur Laufzeit
zur Verfügung stehen. Alle Bundles können sich als Listener für beliebige
Service-Klassen anmelden und werden über Zustandsänderungen wie etwa
die An- und Abmeldung von zugehörigen Objekten, informiert. OSGi ent-
hält eine Reihe an vordefinierten Services. Dazu zählt eine einfach gehalten
UPnP-Geräteklasse mit Zugriff auf UPnP-Services, Aktionen und Zustands-
variablen. Mit Hilfe dieser OSGi-Serviceschnittstelle für UPnP meldet der
Domoware Basedriver alle gefundenen UPnP-Geräte an.
Eine weitere Eigenschaft von OSGi ist die Einbindung passiver Bundles,
die nichts anderes als globale Programmbibliotheken darstellen. Für alle ak-
tiven und passiven Bundles können Klassen-spezifische Zugriffsrechte mit-
tels einer Manifest-Datei konfiguriert werden. Die Modularität des OSGi-
Konzeptes erlaubt es, eine Softwareanwendung nicht mehr als starres Sys-
tem, sondern als eine Zusammenspiel mehrerer, dynamischer Komponenten
zu begreifen. Dementsprechend muss auch den Beziehungen zwischen den
KAPITEL 5. GUI-BUILDER 58
5.2.2 Systemaufbau
Bei der Konzeption des Systemaufbaus wurde auf eine Trennung von Da-
tenhaltung, Applikationslogik und GUI geachtet. Daraus ergibt sich folgende
Aufteilung der wichtigsten Zuständigkeitsbereiche:
Datenhaltung
Um Informationen über im Netzwerk befindliche UPnP-Geräte zu erhalten
und um diese ansteuern zu können, wird ein UPnPSupervisor definiert. Er
überwacht die An- und Abmeldung der Geräte und speichert die Objekte
in einem zugehörigen UPnPDeviceManager, der für die Datenhaltung der
Geräte zuständig ist. Allfällige Änderungen werden an betroffene Kompo-
nenten wie das GUI weitergeleitet. Mit der Anmeldung eines Gerätes liegt
dessen funktionale Beschreibung in Form einer objektorientierten Baum-
struktur vor. In einem UPnPDevice sind alle UPnPServices enthalten, die
wiederum Zugriff auf die UPnPAction-Objekte und UPnPStateVariables
erlauben. Leider ist das Traversieren des Baumes durch die OSGi-bedingte
UPnP-Servicedefinition nur in Richtung der Unterelemente möglich. Daher
wurde eine ActionPath-Datenstruktur definiert, die Referenzen zu allen En-
titäten entlang eines bestimmten Aktionsweges enthält. Dies ist notwendig,
da ausgehend von einer UPnPAction, oft auch auf das Service oder das De-
vice zurückgeschlossen werden muss. Um die Zustände der UPnP-Geräte
KAPITEL 5. GUI-BUILDER 59
auch zur Laufzeit überwachen zu können, abonniert der Supervisor bei der
Anmeldung eines Gerätes alle verfügbaren Services. Der UPnP-Eventing
Mechanismus garantiert, dass alle Änderungen von ereignisorientierten Zu-
standsvariablen eines abonnierten Services an die Applikation übermittelt
werden.
GUI
Abbildung 5.4 zeigt das GUI der Applikation. Im Bereich Available Devices
werden alle entdeckten UPnP-Geräte gelistet. Durch Doppelklick wird der
Supple Interface-Generator angestoßen und ein Fenster mit einem konkreten
Rendering zur Steuerung des Gerätes erzeugt (siehe Abb.5.7 und 5.8). Das
aktive Gerät wird anschließend im unteren Bereich Active Devices gelistet
und kann kein zweites Mal instanziert werden. Durch das Schließen des Fen-
sters oder den Klick auf den Namen in der Active Device-Liste kann das
erstellte User Interface des Gerätes wieder entfernt werden. Um ein schö-
neres UI-Design zu erzielen, wurde anstatt des standardisierten Java Swing
Look and Feels die externe GUI-Bibliothek JGoodies Looks5 eingesetzt.
In einer zukünftigen Version soll die Erstellung von User Interfaces aus
zusammengesetzten Teilen verschiedener UPnP-Geräte möglich sein. Damit
kann eine individualisierte Oberfläche zur Steuerung und Übersicht über
mehrere, in einem Szenario vernetzte Geräte realisiert werden. Es wäre etwa
denkbar, einen Lichtschalter dazu zu benutzen, gleichzeitig einen CD-Player
weiterzuschalten und die Temperatur einer UPnP-fähigen Heizung zu regu-
lieren. In einem gemeinsamen GUI wären somit der Lichtschalter, die An-
zeige des aktuellen Songtitels und die Raumtemperatur von Interesse. Die
Definition von Abläufen mit UPnP-fähiger Soft- und Hardware ist Teil des
Torem-Frameworks, das in [39] näher erläutert wird.
Der Informationsaustausch zwischen Applikationslogik und GUI ist über
eine Schnittstelle definiert, die Befehle in Form von Beans mit angehängten
Objekten vom Interface-Typ IRenderedEntities kapselt. Jedes Objekt, das
dieses Interface implementiert, kann übergeben werden. Das Konzept wird
vor allem zur Benachrichtigung und einheitlichen Darstellung von Objek-
ten im GUI benötigt. Die Bean-Klasse kennt derzeit vier Befehle, die über
das Hinzufügen und Entfernen von UPnP-Geräten und die Erstellung und
Zerstörung des User Interfaces eines aktiven Gerätes informieren. Obwohl
alle Business-Komponenten Bean-Objekte an das Interface schicken können,
macht derzeit nur der UPnPDeviceManager davon Gebrauch, wenn Geräte
an- und abgemeldet werden.
5
JGoodies Looks - http://www.jgoodies.com/freeware/looks/
KAPITEL 5. GUI-BUILDER 60
5.2.3 GUI-Generator
Das Supple-Toolkit bildet die Schnittstelle zwischen diesem Datenmodell der
Geräte und dem konkreten Interface-Rendering und kümmert sich sowohl
um das Mapping von UPnP-Datentypen und Interface-Elementen als auch
um das Layout der GUI-Komponenten. Zusätzlich überwacht Supple die
Zustände des User Interfaces und leitet durch Interaktionen hervorgerufene
Änderungen an interessierte Komponenten der Applikationsschicht weiter.
Bevor der Rendering-Prozess eingeleitet werden kann, muss eine Infor-
mationsquelle in Form einer UPnP-Gerätebeschreibung ausgewertet werden.
UPnP arbeitet mit Aktionen und Zuständen, die als Parametern für Aktio-
nen eingesetzt werden, um Geräte ansteuern zu können. Sehr oft sind UPnP-
Aktionen Getter und Setter -Funktionen einer Zustandsvariable. Am Beispiel
einer Volume-Zustandsvariable für einen UPnP-fähigen Medienplayer wird
die Vorgehensweise erklärt. Folgender Quellcode zeigt einen Auszug aus dem
Dokument des Config-Services am Gerät, das die Volume-Variable eines Me-
dienplayers und deren Aktionen GetVolume und SetVolume definiert:
1 < actionList >
2 < action >
3 < name > GetVolume </ name >
4 < argumentList >
5 < argument >
6 < name > Volume </ name >
7 < r e l a t e d S t a t e V a r i a bl e> Volume </ r e l a t e d S t a t e V a r i a b l e>
8 < direction > out </ direction >
9 </ argument >
10 </ argumentList >
11 </ action >
KAPITEL 5. GUI-BUILDER 61
nen. Dazu ist der vorher erwähnte Event-Mechanismus, der jede Änderung
an interessierte Netzwerkteilnehmer bekannt gibt, besser geeignet.
Für den Fall, dass für eine Aktion mit Rückgabeparameter keine entge-
gengesetzte Setter -Aktion gefunden wird, muss diese trotzdem im Interface
kenntlich gemacht werden. Weil sie jedoch selbst keinen Eingabeparameter
definiert, der in ein Elemente umgewandelt werden könnte, muss die Aktion
mit einem Button zum Ausführen und im einfachsten Fall einem zusätzlichen
Textfeld zur Darstellung des Rückgabewertes repräsentiert werden.
UPnP erlaubt auch die Definition von Aktionen mit mehreren oder kei-
nen Ein- oder Ausgabeparametern. Auch Kombinationen sind denkbar. Al-
leine aus dem Kontext der Gerätebeschreibung kann aber kein Bezug zur
konkreten Auslegung im Interface abgeleitet werden. Ein Beispiel hierfür ist
eine Aktion mit zwei Integer-Parametern. Ohne die Aufgabe des Gerätes zu
verstehen, kann keine genaue Angabe über die Auslegung der Bedienung ge-
troffen werden. Es wäre beispielsweise denkbar diese Aktion als 2D-Matrix
mit diskreten Werten aufzufassen und in equidistanten Abständen einen
Knopf für jede der Kombinationen im Interface zu zeichnen. Genauso gut
kann es aber auch möglich sein, dass zwei Slider eine bessere Repräsentation
darstellen. Darüber hinaus ist nicht bekannt, ob die Aktion nur zur Konfi-
guration von Einstellungen dient und die Aktion mit einem Bestätigungs-
button ähnlich einem Formular ausgeführt werden sollte. Oder aber ob sie,
sobald das Interface-Element manipuliert wird, ohne Bestätigung ausgeführt
werden soll.
Ideen um semantische Probleme dieser Art lösen zu können, werden an-
satzweise in Kapitel 5.2.4 erläutert und anhand einiger Regeln demonstriert.
Das Konzept der UPnP-Zustandsvariablen kommt Supple sehr entgegen.
Der Toolkit benötigt für die Generierung des Interfaces keine Beschreibung
konkreter Interface-Elemente, sondern verwendet abstrakte Zustandsvaria-
blen, die neben der Spezifikation des Datentyps und möglichen Einschrän-
kungen des Wertebereichs auch nach einem Bean-Objekt zur Speicherung
des Zustandes verlangen. Erst beim Rendering-Prozess werden die Zustands-
variablen anhand ihrer Eigenschaften in Elemente wie Buttons, Slider und
Eingabefelder umgewandelt. Dabei ist eine fixe Zuweisung zwischen Zustand
und Interface-Element nicht gegeben. Vielmehr schränken deren Eigenschaf-
ten die möglichen Render-Ergebnisse ein. Der Datentyp ist zusammen mit
den wertebedingten Einschränkungen der Zustandsvariable und den Eigen-
schaften des Darstellungsgerätes das entscheidende Kriterium zur Generie-
rung des konkreten Interface-Elements. Am Beispiel einer Integer-Variable
mit einer ganzzahligen Einschränkung von 0 − 5 werden Ergebnisse der dy-
namische Elementauswahl von Supple gezeigt. Alle Varianten in Abb.5.5
stellen legale Repräsentationen des Eingangsparameters der UPnP-Aktion
SetFanLevel dar.
KAPITEL 5. GUI-BUILDER 63
<action>
<name>SetFanlevel</name>
<argumentList><argument>
<name>FanArg</name>
<relatedStateVariable>Fanlevel
</relatedStateVariable>
<direction>in</direction>
</argument></argumentList>
</action>
...
<stateVariable sendEvents="yes">
<name>Fanlevel</name>
<dataType>ui1</dataType>
<defaultValue>0</defaultValue>
<allowedValueRange>
<minimum>0</minimum>
<maximum>5</maximum>
</allowedValueRange>
</stateVariable>
Datentyp
Der Datentyp der verknüpften UPnP-Zustandsvariable muss in einen Java-
Basisdatentyp umgewandelt werden und anschließend als Supple-Datentyp
der Instanz einer Supple-Zustandsvariable StateVar mitgegeben wird. OSGi
selbst stellt für die erste Konvertierung mit dem UPnPStateVariable-Inter-
face eine entsprechende Methode getJavaDataType() zur Verfügung. Die
Konvertierung in den entsprechenden Supple-Datentyp funktioniert eben-
falls nach einem einfachen Mapping-Prinzip. Die Tabelle 5.2.3 zeigt die Kon-
vertierungsschritte.
Bean-Datenstruktur
Zur Speicherung des Variablenzustandes wird ein Bean-Objekt benötigt. Das
Objekt muss eine Membervariable entsprechend dem Datentyp und Namen
des Zustandes enthalten und zusätzlich eine Getter und eine Setter -Methode
zur Manipulation des Wertes definieren. Da der Name der Membervaria-
ble nicht im vorhinein bekannt ist, kann keine statische Bean-Klasse her-
angezogen werden. Für diese Aufgabe wird JavAssist 6 verwendet. Die By-
tecode Engineering-Bibliothek ermöglicht die Erstellung und Instanzierung
von Java Klassen zur Laufzeit durch String-basierte Spezifikation auf Ebene
des Sourcecodes. Wenn das Bean-Objekt darüber hinaus für die Zustands-
überwachung ein Objekt der Klasse java.beans.PropertyChangeSupport
mitführt, garantiert Supple die Benachrichtigung aller, an einer Variable in-
teressierten, Komponenten und führt in entgegengesetzter Richtung auch
Updates des Interfaces bei Manipulation des Bean-Objektes aus.
6
JavAssist - http://www.csg.is.titech.ac.jp/˜chiba/javassist/
KAPITEL 5. GUI-BUILDER 64
Supple UIGenerator
Application
Supple
Renderer
Container
TypeImpl UIObject StateVarImpl
1 n
StringTypeImpl SimpleValue
Renderer
Renderer Type
Rendering-Prozess
Abb. 5.6 bietet einen Überblick über die im Rendering-Prozess involvierten
Klassen. Der UIGenerator bereitet die Informationen eines angeforderten
UPnP-Gerätes für den anschließenden Rendering-Vorgang mit Supple auf.
Dazu wird mit den UI-relevanten Supple Klassen7 eine hierarchische Struk-
tur aus Containern und Komponenten ähnlich dem Java Swing Modell8 auf-
7
Supple Java Doc - http://www.cs.washington.edu/ai/supple/docs/
8
Java Foundation Classes und Swing - http://java.sun.com/products/jfc/
KAPITEL 5. GUI-BUILDER 65
UPnP-Kommunikation
Damit Interaktionen im Interface in Steuerbefehle für die im Netzwerk ver-
teilten UPnP-Geräten umgesetzt werden können, wird das ActiveDevice für
alle StateVarImpl-Objekte als PropertyChangeListener registriert. Wird
ein Interface-Element vom Benutzer manipuliert, versucht der PC GUI-
Builder diese Aktion an das entsprechende Gerät weiterzuleiten. Dazu wird
ein Dictionary-Objekt mit Schlüssel-Wert Paaren erzeugt, das mit allen
Eingangsparameternamen der auszuführenden Aktion und den Werten der
zugehörigen Supple-Zustandsvariable befüllt wird. Damit ist auch für den
Fall vorgesorgt, dass eine Aktion, die mehrere Eingabeparameter besitzt,
auch bei der Manipulation nur eines entsprechenden Interface-Elements aus-
geführt werden kann. Der untenstehende Quellcode zeigt den Vorgang in der
ActiveDevice-Methode executeAction():
1 public void executeAction ( ActionPath actionPath ) {
2 Dictionary arguments = new Hashtable ();
3 UPnPAction action = actionPath . getAction ();
4 Map < StateVar , String > stateVarToAr g Na me = actionPath . getMap ();
5
6 for ( StateVar suppleVar : stateVarToA rg Na m e . keySet ()) {
7 Object value = suppleVar . getValue ();
KAPITEL 5. GUI-BUILDER 66
(a) (b)
5.2.4 UI-Erweiterungen
Da UPnP keine native Unterstützung zur Definition von grafischen Ober-
flächen bietet und die Gerätebeschreibung nicht ausreicht, um die vielschich-
tigen Vorgänge eines User Interfaces zu modellieren, muss der Standard um
semantische Zusatzinformation erweitert werden. Im Rahmen dieser Arbeit
wurden mehrere Ideen für eine Erweiterung des Prototyps in Erwägung ge-
zogen. Eine davon wurde im Zuge der Implementierung mit den Geräten
getestet.
Die Abbildungen 5.8(a) und 5.8(b) zeigen die Auswirkungen der Re-
geln auf das Interface-Rendering. Der untenstehende Quellcode gibt Auf-
schluss über die Struktur der XML-Datei mit beiden Regeldefinitionen und
Informationen, die in Zukunft ausgewertet werden könnten. Dazu zählen die
KAPITEL 5. GUI-BUILDER 69
Enumerationsdatentyp:
Ein UPnP-spezifisches Problem ist das Fehlen eines Enumerationsdatentyps,
der unter anderem für den Rückgabeparameter der GetPlayList-Aktion be-
nötigt würde. Um dennoch eine Liste übertragen zu können, wird ein String-
Datentyp aus mehreren XML-Elementen zusammengesetzt, der anschließend
am Empfänger wieder auseinander genommen werden kann. Dafür wurde
folgendes, einfache XML-Format festgelegt:
1 < t_list >
2 < element value = " Dave Matthews Band - Satellite " / >
3 < element value = " Incubus - Echo " / >
4 < element value = " Joss Stone - I had a dream " / >
5 </ t_list >
Softwareunterstützung
Für die Entwicklung von J2ME-Anwendungen ist eine Reihe an nützli-
cher Open Source-Software verfügbar. Das Wireless Toolkit (WTK)12 ist
eine einfach gehaltene Sammlung an Softwarekomponenten zur Entwicklung
von J2ME-Applikationen. Neben einem Compiler, den API-Spezifikationen
und zahlreichen Beispielanwendungen ist auch ein Simulator enthalten. Das
WTK ist ein solides Werkzeug um erstellte Applikationen am PC zu testen.
Da die Umsetzung der Java-Spezifikationen am Mobiltelefon jedoch dem Ge-
rätehersteller überlassen ist, weicht das konkrete Erscheinungsbild oft vom
Look and Feel des Simulators ab. Um in der bekannten Java-Entwicklungs-
umgebung Eclipse arbeiten zu können, kann das Plugin EclipseME 13 ver-
wendet werden, das die Schnittstelle zwischen dem WTK und Eclipse bil-
det. Da die Ressourcen mobiler Endgeräte meist begrenzt sind, muss auf
speicheroptimierte Programmierung geachtet werden. Um unnötigen Pro-
grammoverhead automatisch zu entfernen kann ein sogenannter Obfuscator
eingesetzt werden. EclipseME bietet Integrationsmöglichkeiten für externe
9
Java Platform, Standard Edition - http://java.sun.com/javase/
10
J2ME - Java Technology - http://java.sun.com/j2me/
http://developers.sun.com/techtopics/mobility/getstart/
11
Java Technology for Wireless Industry (JSR 185) - http://developers.sun.com/
techtopics/mobility/jtwi/
12
Sun Java Wireless Toolkit (WTK) - http://java.sun.com/products/sjwtoolkit/
13
EclipseME - http://eclipseme.org/
KAPITEL 5. GUI-BUILDER 72
Application UPnP
State Controller hierarchical
UPnP Data
Model
Discovery Network
Supervisor EndPoint
Agent
1 n
Connection
Handler
Sender Reader
5.3.2 Gateway
Da die Java-Technologien J2SE uns dessen Derivat J2ME viele Gemeinsam-
keiten aufweisen, liegt es nahe den Systemaufbau und das Kommunikati-
onsprotokoll für das Gateway und den Client einheitlich zu gestalten (siehe
Abbildung 5.9).
Die Implementierung des Gateway ist in folgende Bereiche unterteilt:
Netzwerk
Die Entwicklung von Java-Anwendungen mit Bluetooth-Unterstützung ist
noch im Anfangsstadium. Da es keine native Java-Unterstützung für Blue-
tooth-Hardware gibt, kommt Open Source Software zur Anwendung. Blue-
Cove 15 , eine Bibliothek zur Java Bluetooth Kommunikation mit dem PC
setzt Teile der JSR82 -Spezifikation um und greift über den Microsoft Blue-
tooth-Stack direkt auf die Hardware zu16 . Für den Mobile GUI-Builder wird
das Bluetooth-Profil Serial Port Profile, das eine serielle Schnittstelle simu-
liert, eingesetzt.
Die Klasse Supervisor ist das Herzstück der Bluetooth-Kommunikation.
Sie übernimmt die Initialisierung, die Konfiguration und die Wartung der
Netzwerkverbindungen. Durch die Initialisierung zweier Objekte der Klas-
sen DeviceInquiry und ConnectionHandler wird anfangs nach anderen
Kommunikationsteilnehmern in Funkreichweite gesucht und ein Server für
spätere Verbindungsanfragen eingerichtet. Der Server ist für die Kommu-
nikation mit mehreren Mobile-Clients ausgelegt, jedoch noch nicht in der
Praxis getestet.
Beim Starten des Servers akquiriert die Klasse DeviceInquiry ein Single-
ton 17 -Objekt DiscoveryAgent. Dieser Agent instanziert eine Connection-
Handler-Klasse, die während der Laufzeit des Servers auf eingehende Verbin-
dungsanfragen wartet. Bei einem erfolgreichen Verbindungsaufbau werden
zwei Threads (Reader und Sender) gestartet und in einem Endpoint ge-
speichert werden. Der Supervisor verwaltet alle Endpoints und gibt Befehle,
die nicht den Auf- und Abbau der Verbindung betreffen, an die Applikation
weiter. Ein- und ausgehende Nachrichten werden in Form von Packets ge-
kapselt, die sowohl den Inhalt der Nachricht, als auch Informationen über
den Sender und einen verbindungsspezifischen Befehl (SIGNAL_TERMINATE,
SIGNAL_HANDSHAKE,SIGNAL_MESSAGE) enthalten.
Datenhaltung
Ebenso wie beim GUI-Builder für den PC werden die Informationen der
XML-Gerätebeschreibung in einer hierarchisch Form zusammengefasst. Die
Datenhaltung am Gateway wird in einer Baumstruktur speichert. Dieser
kann ausgehend von einem Node-Elementen in Richtungen der Kinder und
der Eltern-Elemente traversiert werden. Das Gateway transformiert diese
XML-Daten in eine flacherer Struktur, die die Verschachtelungstiefe der Ele-
mente zu reduzieren versucht und sendet sie als Zeichenkette an den Client.
Dieser Vorverarbeitungsschritt ist notwendig, da die beschränkte Rechen-
leistung und Speicherkapazität des mobilen Endgeräten beschränkt ist. Der
folgende Quellcode zeigt die transformierte Beschreibung im Gegensatz zur
originalen Struktur (siehe Abs. 5.2.3).
1 < service serviceId = " urn:schemas - upnp - o r g : s e r v i c e I d : t e m p : 1"
2 serviceType = " urn:schemas - upnp - org:service : te mp : 1 " >
3 < stateVariable name = " Volume " sendEvents = " yes "
4 dataType = " ui1 " value = " 200 " / >
5 < stateVariable name = " Result " sendEvents = " no "
6 dataType = " boolean " value = " " / >
7 < action name = " SetVolume " >
8 < argument name = " Vol " direction = " in " relatedState = " Volume " / >
9 < argument name = " Re " direction = " out " relatedState = " Result " / >
10 </ action >
11 ...
12 </ service >
XML-Parser
Die vom Gateway an den Mobile Client übertragenen Geräteinformationen
müssen mit einem, speziell für leistungsschwache Geräte ausgelegten, XML-
Parser ausgelesen werden. Für diese Aufgabe wird kXML2 19 , eine kleine
XML Pullparsing-Bibliothek, verwendet.
GUI
Die Applikation ist aufgrund gerätebedingter Verzögerungen beim Aufbau
der Bluetooth-Verbindung langsam in der Initialisierung. Es kann einige Zeit
18
Nokia 6600 Smart Phone - http://www.nokia.at/german/phones/phone models/6600/
index.html
19
XML Parsing kXML2 - http://kxml.sourceforge.net/
KAPITEL 5. GUI-BUILDER 75
dauern bis am Smart Phone eine Anfrage an den Benutzer für die Erlaubnis
zum Verbindungsaufbau erscheint. Wird diese bestätigt, werden die UPnP-
Geräteinformationen vom Gateway übertragen und am Smart Phone darge-
stellt.
Die Menüführung wurde in folgender Hierarchie festgehalten: Geräteliste
> Aktionsliste > Parameterliste (siehe Abb. 5.10). Durch Anwahl eines Ge-
rätes werden die enthaltenen Aktionen aufgelistet. Durch erneutes Klicken
kommt man in das Parametermenü der Aktion. Dort können die Werte für
die auszuführende Aktion gesetzt werden. Das Setzen von Boolean-Werten,
beispielsweise Licht an/aus, führt direkt zum Ausführen der Aktion. Sie kön-
nen direkt mit einer Checkbox angewählt werden. Float, Integer und String
werden als Input Feld dargestellt und müssen erst mit einem Send-Befehl aus
dem Optionen-Menü bestätigt werden. Der Back -Befehl führt in das jeweils
vorherige Menü. Der Exit-Befehl meldet den Client beim Server ab. Sofern
das Gateway aktiviert bleibt, kann sich das mobile Gerät jedoch jederzeit
neu verbinden.
Um das Look and Feel der Anwendung verbessern zu können, wurde
die Grafikbibliothek J2ME Polish 20 verwendet. Mit Hilfe von Auszeichnun-
gen im Java-Quellcode, externen CSS-Layoutdefinitionen und Grafiken kann
das Polish Building-Tool eine visuell ansprechende Version der Applikation
compilieren, die immer noch dem mobilen Java-Standard MIDP 2.0 ent-
spricht. Dabei berücksichtigt die Bibliothek auch produktspezifische Eigen-
schaften eines mobilen Endgerätes durch vordefinierte Hersteller-Profile für
Firmen wie Nokia und Sony-Ericsson. Die Abbildung 5.11 zeigt das neu
gestaltete User Interface anhand der Geräteliste und der Aktionsliste, das
im Vergleich zu der vorher präsentierten J2ME-Benutzeroberfläche (siehe
Abb. 5.10) deutlich benutzerfreundlicher ist.
20
J2ME Polish - http://www.j2mepolish.org/
KAPITEL 5. GUI-BUILDER 76
(a) (b)
(a) (b)
Fazit
Anlass für die Idee der vorliegenden Arbeit war die Erkenntnis, dass ver-
netzte Strukturen, die in Form von computerisierter Geräte in beinahe alle
Bereiche unserer Lebenswelt eindringen, bereits heute allgegenwärtig sind.
Mit lokalen und globalen Funknetzwerken wie Bluetooth, WLAN, und den
Mobiltelefonie-Standards sind eine Vielzahl neuer Dienste möglich, die bis
vor einigen Jahren nicht in dieser Form denkbar gewesen wären. Die zugehö-
rigen Technologien in Form von Geräten wie Smart Phones, PDAs, Laptops
und zahlreicher Unterhaltungselektronik finden sich in vielen Haushalten.
Es wird aller Voraussicht nach nicht mehr lange dauern, bis Haustechnik
wie beispielsweise Heizung und Elektroinstallationen auch an einem loka-
len Netzwerk angeschlossen sein wird. In diesem Zusammenhang stellt sich
die Frage nach dem Sinn dieser Vernetzung [33]. Die Vision, dass die Wär-
meregulierung eines Toasters per Netzwerk vorgenommen werden kann, hat
wenig praktische Relevanz um Tätigkeiten im Haushalt zu vereinfachen. Im
Gegensatz dazu wäre es jedoch wünschenswert die Steuerung der gesamten
Unterhaltungselektronik eines Haushaltes in einem Mobiltelefon zu verei-
nen und so die Fernbedienungen der einzelnen Geräte wie TV-Gerät und
Stereoanlage ersetzen zu können.
Solche Szenarien werden erst dann zur Realität, wenn nach der techni-
schen Machbarkeit von Netzwerken auch die Vernetzungen von Anwendun-
gen in die Konzeptualisierung kommender Technologien miteinbezogen wird.
Solange es von Seiten der Hersteller nur wenige Anstrengungen in Richtung
gemeinsamer Standards für verteilte Geräte gibt, bleibt für die Forschung
ein umso größeres Betätigungsfeld.
Die vernetzte Service-Plattform UPnP ist ein Ansatz in die richtige
Richtung. Wenngleich die Technologie dem Endkunden noch nicht geläu-
fig ist und bisher nur in wenigen Mediengeräten integriert ist, so birgt sie
doch großes Potential durch die Standardisierung einer einheitlichen Service-
schnittstelle.
78
KAPITEL 6. FAZIT 79
6.1.1 Geräte
Auf Basis von UPnP wurden mit einem Sensorgerät und einer Webcam
mit Bewegungserkennung zwei Geräte geschaffen, die als Eingabemedien für
ein Steuerungsszenario mit weiteren, vernetzten Geräten eingesetzt werden
können. Das für die Verknüpfung der Geräte notwendige Framework Torem
wird in [39] eingehend beschrieben.
In mehreren Tests konnte die nahtlose Zusammenarbeit unter Beweis
gestellt werden. So ist es beispielsweise möglich die Webcam als Überwa-
chungskamera einzusetzen. Betritt eine Person den Raum, wird das Ereignis
Bewegung erkannt generiert und an die Torem gesendet. Das Framework
wertet das Ergebnis aus und schaltet ein Hardware-Licht1 an. Mit wenig
Aufwand kann der Ablauf dahingehend geändert werden, dass als Antwort
auf das vorher genannte Ereignis nicht nur das Licht angeschaltet, sondern
auch eine SMS-Nachricht an den Benutzer gesendet wird.
Ähnlich verhält es sich mit dem Drucksensor-Modul, das in einem Szena-
rio als aktives oder passives Eingabegerät zum Einsatz kommen kann. Sind
die Drucksensoren am Boden angebracht, können sie zum Beispiel das Auf-
treten einer Person registrieren und dieses Ereignis an interessierte Steuer-
instanzen weiterleiten. In einem anderen Fall könnten die Sensoren als Ein-
gabefelder benutzt werden, um eine Passwortabfrage zu simulieren, die nach
einer definierten Reihenfolge bei der Eingabe verlangt.
Mit dieser dynamischen Zuordnung der Eingabegeräte zu der spezifischen
Bedeutung der Interaktion konnte im Gegensatz zu proprietären Softwarelö-
sungen und dem Konzept des verteilten Netzwerkes eine klare Verbesserung
hinsichtlich der ökonomischen Nutzung des computerisierten Gerätes erzielt
werden. Umgelegt auf ein Szenario im Haushalt bedeutet dies, dass ein Be-
wegungsmelder an der Eingangstür nicht nur an das Einschalten eines Lichts,
sondern auch an andere Ereignisempfänger gekoppelt sein kann.
6.1.2 GUI-Builder
Mit der Definition der regelbasierten UI-Beschreibung am Gerät ist ein er-
ster Schritt in Richtung automatisierter Generierung von User Interfaces für
die UPnP Service-Plattform getan. Zusammen mit der funktionalen Gerä-
tebeschreibung stehen dem PC GUI-Builder zwei Informationsquellen zur
1
Das Licht ist Teil des Testaufbaus einer EIB-Gebäudesteuerung, die über einen Soft-
wareadapter ebenfalls ins UPnP-Netzwerk eingebunden wurde.
KAPITEL 6. FAZIT 80
6.2 Ausblick
Neben der zentralen Steuerung von Haushaltsgeräten scheinen verteilte Netz-
werke in Kombination mit Eingabegeräten auch für einen weiteren Bereich
interessant. Es stellt sich die Frage, ob mit diesen Technologien auch künst-
lerische Medieninstallationen verwirklicht werden können. Diese basieren
meist auf der Interaktion eines Benutzers abseits eines Computerterminals
und benötigen neben diverser Sensorik auch Zugriff auf viele Mediengeräte.
2
Die Infrarot-Schnittstelle ist aufgrund der niedrigen Produktions- und Integrationsko-
sten die vorrangige Technologie für Fernsteuerungen von Unterhaltungselektronik. Viele
Hersteller verwenden auf Basis des Lichtsignals ein eigenes, unidirektionales Übertragungs-
protokoll. Ein Überblick findet sich unter http://www.xs4all.nl/˜sbp/knowledge/ir/ir.htm
3
BTkit - http://www.btkit.com/de/
KAPITEL 6. FAZIT 81
4
Remote Procedure Call (RPC) bezeichnet den Aufruf einer entfernten Funktion über
ein Netzwerk.
5
Java Remote Method Invocation (RMI) - http://java.sun.com/products/jdk/rmi/
6
Common Object Request Broker Architecture (CORBA) - http://www.omg.org/
gettingstarted/corbafaq.htm
Anhang A
A.1 Diplomarbeit
Pfad: /thesis/
da doppler.pdf . . . . . Diplomarbeit (PDF-File)
da doppler.ps . . . . . . Diplomarbeit (PostScript-File)
images/ . . . . . . . . . Alle Grafiken der Diplomarbeit im
EPS-Format
A.2 Literatur
Pfad: /docs/
index.html . . . . . . . . Link-Liste der Literaturquellen
Der Ordner enthält nach einzelnen Kapiteln geordnet alle Online-Literatur-
quellen als PDF-Files.
A.3 Anwendungen
Pfad: /applications/
info.pdf . . . . . . . . . Anleitung für die Inbetriebnahme und das
Arbeiten mit den Geräten.
guibuilder pc setup.exe Installierbare Win32 -Version des PC
GUI-Builders
guibuilder pc.zip . . . . Zip-Datei des PC GUI-Builders
82
ANHANG A. INHALT DER CD-ROM 83
A.4 Quellcode
Pfad: /source/
/guibuilder pc/ . . . . . Alle Eclipse-Plugin-Projekte, die für den
GUI-Builder benötigt werden.
/guibuilder mobile/ . . Eclipse-Projekt des mobilen GUI-Builders
/devices/ . . . . . . . . Eclipse-Projekte der UPnP-Geräte
Sensor-Device, Streaming Server/Client,
Winamp, MIDI-Device
Literaturverzeichnis
[4] Baxley, B.: Making the Web Work - Designing Effective Web Appli-
cations. Sams, 2002.
[8] Cooper, A. und R. Robert: About Face 2.0 - The Essentials of User
Interface Design. Wiley Publishing, Inc., Indianapolis, Indiana, 2003.
84
LITERATURVERZEICHNIS 85
[24] Li, S.: Professional Jini . Wrox Press Ltd., Birmingham, UK, 2003.
[26] Myers, B., S. E. Hudson und R. Pausch: Past, present, and future of
user interface software tools. ACM Transactions on Computer-Human
Interaction, 7(1):3–28, 2000.
[30] Reiter, S.: Smart Shelf Design and Implementation of an RFID Rea-
der UPnP device based on the Sindrion architecture. Diplomarbeit,
Fachhochschule Hagenberg, Hardware- Software Systems Engineering,
Hagenberg, Austria, Juli 2005.
[33] Sietmann, R.: Muss man alles und alle vernetzen ? — Natascha Ada-
mowsky über die Folgen des Ubiquitous Computing. CT, 16:91, 2004.
[40] Weiser, M.: The computer for the 21st century. Scientific American,
265:94–104, September 1991.
— Druckgröße kontrollieren! —
Breite = 100 mm
Höhe = 50 mm
88