Linux EIB Home Server

Dokumentation




Autoren:

Vladimir Vinarski (volodimir@users.sourceforge.net)

Jens Neumann (jneumann@users.sourceforge.net)













  1. Revisionsstand

    Stand

    Datum

    Bearbeiter

    Anlass

    0.1

    13.03.02

    V.Vinarskyi

    J. Neumann

    Erstellung

    0.2

    16.06.03

    J.Neumann

    Dokumentation für SourceForge

    0.3

    01.04.04

    V.Vinarski

    J.Neumann

    Ergänzungen und Korrekturen

    0.4

    21.06.04

    J.Neumann

    Teilweise neue Klassennamen und Anpassung der entsprechenden Abbildungen

  2. Offene Punkte & TODOs

  1. Inhaltsverzeichnis

    1. Revisionsstand
    2. Offene Punkte & TODOs
    3. Inhaltsverzeichnis
    4. Abbildungsverzeichnis
    5. Einleitung
      1. Architektur
        1. Die Schnittstellen zu Clients
        2. Die interne Schnittstelle „homeserver <-> homedriver“
      2. Dynamische Beschreibung
        1. Schnittstelle zwischen Linux EIB Home Server und EIB-Bus
      3. Beteiligte Dateien des homedriver und homeserver
      4. Modulbeschreibung: homedriver
        1. Kurzbeschreibung
        2. Klassen und deren Assoziationen
        3. Klassen, Attribute und Methoden
        4. Funktionen
      5. Modulbeschreibung: homeserver
        1. Kurzbeschreibung
        2. Klassen und deren Assoziationen
        3. Klassen, Attribute und Methoden
    6. Literaturverzeichnis


  1. Abbildungsverzeichnis

    1. Komponenten des EIB Home Server.
    2. Die Klassen des homedrivers und deren Assoziationen
    3. Die Treiber-Klasse
    4. Die Verbindungsklasse
    5. Vererbungshierarchie der Zustands-Klassen
    6. Die Socketklasse
    7. Vererbungshierarchie der Nachrichten-Klassen
    8. Exceptions des homedrivers
    9. Klassendiagramm des homeserver
    10. Die Klasse HomeServer
    11. Die Klasse DatenBank
    12. Die Klasse Driver
    13. Die Klasse DriverMessages
    14. Die Klasse Client
    15. Die Klasse ClientMessages
    16. Die Klasse Interest
    17. Die Klasse PathData
    18. Die Klasse Instruction
  1. Einleitung

Der Linux EIB Home Server bietet Schnittstellen für die Steuerung und Überwachung einer EIB-Installation.

Der Europäische Installationsbus (EIB) dient der automatischen Steuerung der Funktionen in Wohn- und Zweckbauten. Der EIB trennt klar die Übertragung von elektrischer Energie und Information. Neben einem Stromnetz werden alle EIB-Sensoren und Aktoren über ein zusätzliches informationsübertragendes Netzwerk miteinander verbunden, über das der gesamte Informationsaustausch stattfindet.

Die Zuordnung zwischen Betätigungselement und Verbraucher ist über das Netzwerk programmierbar und beliebig oft veränderbar. Für den Betrieb wird kein zentrales Busmanagement benötigt. Die Verwaltung und Speicherung aller Daten erfolgt dezentralisiert in den einzelnen Busgeräten. Jedoch stehen alle Informationen des EIB-Netzes bei Bedarf an jedem Punkt lückenlos zur Verfügung, so dass eine Integration der Elektroinstallation in ein Überwachungs- und Steuerungssystem, z.B. Embassi [1], ohne zusätzliche Installationskosten möglich ist.


    1. Architektur

Der Home Server besteht im Wesentlichen aus zwei Komponenten (siehe Abbildung 1):


Abbildung 1 Komponenten des EIB Home Server. Die Grafik zeigt den Informationsfluss zwischen einer EIB-Installation und möglichen Anwendungen


Nachrichten- bzw. Informations-Verlauf:

EIB bus -> FT 1.2 Datenschnittstelle -> homedriver -> homeserver -> Clients

Client -> homeserver -> homedriver -> -> FT 1.2 Datenschnittstelle -> EIB-Bus

Bei den Clients ist prinzipiell zwischen normalen Anwendungsprogrammen und HTTP-Clients zu unterscheiden. Die Anzahl der Clients ist unbegrenzt.

Die beiden Komponenten homedriver und homeserver verwenden unterschiedliche zusätzliche Bibliotheken:

      1. Die Schnittstellen zu Clients

        1. EIB-HomeServer <-> TCP/IP-Applikation ( Port 8081 )

Ein Client ist ein belibiger Prozess, der eine tcp/ip-Verbindung zum homeserver aufbaut und die in diesem Kapitel beschriebenen Befehle zum homeserver sendet.

Es gibt folgende Befehle:


Beispiel READ:

Ziel: Den Wert der (Geräte mit der) Gruppenadresse 2/0/2 ermitteln.

Format:

<eib type="read" path="/eib/groups/2/0/2/curvalue"/>

Antwort vom HomeServer:

<eib state="true" path="database.value/eib/groups/2/0/2/curvalue" data="0"/>

(falls der momentane Wert der zugehörigen Gruppenadresse 0 beträgt.)

Fehlerantwort:

<eib state="false" path="database.value/eib/groups/2/0/2" error="$error0007"/>

Fehlerantwort bei falschem Befehl:

<eib state="false" error="instruction isn't correct"/>


Beispiel WRITE:

Ziel: Der Wert der Gruppenadresse 2/0/2 soll auf „11“ gesetzt werden., d.h. die zugehörigen Geräte entsprechend umgeschaltet.

Format:

<eib type="write" path="/eib/groups/2/0/2/curvalue" data="11">

Antwort vom HomeServer:

<eib state="true" path="database.value/eib/groups/2/0/2/curvalue" data="11"/>

Fehlerantwort: siehe READ.

Beispiel SUBSCRIBE:

Ziel: Der Client möchte den Wert der Gruppenadresse 2/1/0 überwachen,d.h über alle Änderungen (der Geräte mit) dieser Gruppenadresse informiert werden.

Format:

<eib type="subscribe" path="/eib/groups/2/1/0"/>

Antwort vom Home-Server:

<eib state="true" type="subscribe" path="/eib/groups/2/1/0"/>

Anschliessend bekommt der Client alle bestellten Nachrichten.

Fehlerantwort: siehe READ.


Dieser Befehl unterstützt Platzhalter, d.h. mit

<eib type="subscribe" path="*"/>

bestellt man alle Nachrichten vom EIB-Bus, d.h. alle Gruppenadressen werden überwacht.

Antwort vom Server:

<eib state="true" type="subscribe" path="*"/>

Beispiel UNSUBSCRIBE:

Ziel: Aufhebung eines SUBSCRIBE-Befehls.

Format:

<eib type="unsubscribe" path="/eib/groups/2/1/0"/>

Antwort vom Server:

<eib state="true" type="unsubscribe" path="/eib/groups/2/1/0"/>


Auch hier werden Platzhalter unterstützt, d.h. mit

<eib type="unsubscribe" path="*"/>

bestellt man alle Nachrichten vom EIB-Bus ab.

Antwort vom Server:

<eib state="true" type="unsubscribe" path="*"/>

Bemerkungen:

Die Verbindung zum Client besteht bis der Client selber die Socketverbindung schliesst.

Der Read-Befehl wirkt gleichzeitig als SUBSCRIBE-Befehl !!!

        1. EIB-Home-Server <-> HTTP-Applikation (Port 8080)

Format des Befehles (wenn der Home-Server auf einem Rechner mit der IP-Adresse 192.168.169.33 läuft):

http://192.168.169.33:8080/eibhomeserver?instruction=<eib type="read" path="/eib/groups/2/0/2/curvalue"/>

Nach instruction= muß entweder der oben beschriebene vollständige READ- oder WRITE-Befehl (siehe voriges Kapitel) folgen. Ein HTTP-Client kann keine SUBSCRIBE- oder UNSUBSCRIBE-Befehle auszuführen!

Antwort vom HomeServer:

HTTP/1.0 200 OK
Server: Loewe HomeServer 1.0
MIME-version: 1.0
Content-type: text/html

<html><script>var answer='<eib state="true" path="database.value/eib/groups/2/0/2/curvalue" data="11"/>’;</script></html>

Ein Beispiel für einen Write-Befehl:

http://192.168.169.33:8080/eibhomeserver?instruction=<eib type="write" path="/eib/groups/2/0/2/curvalue" data="11"/>

Antwort vom HomeServer:

HTTP/1.0 200 OK
Server: Loewe HomeServer 1.0
MIME-version: 1.0
Content-type: text/html

<html><script>var answer='<eib state="true" path="database.value/eib/groups/2/0/2/curvalue" data="11"/>';</script></html>

Fehlerantwort:

HTTP/1.0 200 OK
Server: Loewe HomeServer 1.0
MIME-version: 1.0
Content-type: text/html

<html><script>var answer='<eib state="false" error="instruction isn't correct"/>';</script></html>


Bemerkungen:

Die Verbindung zur HTTP-Applikation wird nach der Antwort durch den Linux EIB Home Server geschlossen.

      1. Die interne Schnittstelle „homeserver <-> homedriver“

Zwischen homedriver und homeserver werden Datentelegramme folgenden Formats ausgetauscht (siehe dazu auch EIBA Handbuch [3]):

Das Telegramm besteht aus 12 oder mehr Bytes:

Byte 0(type): definiert den Typ des Telegrammes

0: EIB-Message

1: Interne Message zwischen homedriver und homeserver.

Byte 1 (total length): Gesammte Länge der Message vom 2. Byte bis zum Checksum-Byte.

Byte 2 (control field): defaultmäßig 0x9c.

Bytes 3, 4 (source address): definiert die Adresse der Quelle des Telegrammes

Bytes 5, 6 (group address): definiert die Adresse des Empfängers des Telegrammes

Bytes 7 (routing counter / length): Dieses Byte ist ein kombiniertes Feld, das aus dem Teil “routing counter” und „data length“ besteht. Defaultmäßig ist routing counter = [110] und definiert die Bits Nummer 6,5 und 4. Das Bit 7 definiert Gruppenadressierung bzw. physikalische Adressierung (1 bedeutet Gruppenadressierung). Die Bits 3, 2, 1 und 0 sind Längen- Bits und definieren die gesammte Anzahl Bytes für den übertragenden Wert. Bei length = 1 wird z.B. nur sogenannte short user data übertragen.

Byte 8 (transport control field / APCI ): defaultmäßig gleich 0, wobei die Bits 7, 6, 5, 4, 3, 2 zum transport control field gehören, die Bits 1 und 0 den Anfang des APCI definieren.

Byte 9 (APCI / short user data ): 2 Bits (Nummer 7 und 6) definieren den Rest des APCI und 6 Bits (Nummer 5, 4, 3, 2, 1, 0) das Feld short user data. Das Feld short user data wird nur dann verwendet, wenn der zu übertragen Wert mit 6 Bits dargestellt werden kann, sonst benutzt man das user data Byte (oder Bytes), welches die Nummer 10 hat (die Nummern 10, 11 hat).

Byte 10 (Bytes 10, 11, ... – user data): Definiert die zu übertragen Daten, falls diese nicht mit 6 Bits dargestelt werden können.

Abschliessendes Byte (checksum): Eine spezielle Checksumme der Bytes von Byte 2 bis zum Checksum-Byte. Es wird die Bit-Funktion (not (b0 b1 b2 ... bn) ) verwendet, wobei „“ die Bit-Operation „xor“ bedeutet.


Der homedriver leitet die Nachrichten vom homeserver auf den EIB-Bus weiter, wobei dem Telegramm zusätzliche Header der anderen OSI-Layer hinzugefügt werden. (siehe EIBA-Handbuch [3])

    1. Dynamische Beschreibung

      1. Schnittstelle zwischen Linux EIB Home Server und EIB-Bus

Der homedriver kommuniziert mit dem EIB-Bus über eine FT1.2 kompatible Datenschnittstelle. Das FT1.2 Übertragungsprotokoll basiert auf den internationalen Standards IEC 870-5-1 und 870-5-2 (DIN 19244) (siehe EIBA Handbuch [3]). Der Anschluß der Schnittstelle an den PC erfolgt über die serielle Schnittstelle, der Anschluß an den EIB-Bus über eine sogenannte „Bus-Access-Unit“ (BAU) vom Typ 2 (siehe EIBA Handbuch, Kapitel 9/4/2, [3]).

Der homedriver setzt die Datenschnittstelle in den sogenannten Busmonitor-Modus. In diesem Modus werden alle Nachrichten auf dem EIB-Bus an den homedriver weitergeleitet. Dadurch registriert der Linux EIB Home Server jede Änderung in der angeschlossenen EIB-Installation.

Jede Busmonitor-Nachricht wird vom homedriver zum homeserver weitergeleitet. Andere Nachrichten werden vom homedriver verarbeitet.

    1. Beteiligte Dateien des homedriver und homeserver

      Modul / Include-File / Source-File

      Beschreibung

      homeserver/include/client.h

      homeserver/src/client.cpp

      Kommunikation mit den verschiedenen Klienten. Klienten sind alle Programme, die den EIB-Bus steuern wollen oder Informationen über die EIB-Installation benötigen.

      Lauschen nach neuen Klienten.

      homeserver/include/homeserver.h

      homeserver/src /datenbank.cpp

      Kommunikation des homeservers mit einer internen Datenbank.

      homeserver/include/homeserver.h

      homeserver/src/driver.cpp

      Kommunikation mit dem homedriver. Der homedriver stellt dem homeserver die Verbindung zum EIB-Bus zur Verfügung.

      homeserver/include/homeserver.h

      homeserver/src/homeserver.cpp

      Die zentrale Klasse des homeservers. Verwaltet alle Prozesse im homeserver.

      homedriver/main/eibmain.cpp

      Main-Programm des homedrivers. Kann zum Starten des homedrivers verwendet werden. Der homedriver kann aber auch als Thread in einem anderen Programm aufgerufen werden.

      homedriver/include/eibdriver.h

      homedriver/src/eibdriver.cpp

      Zentrale Klasse des homedrivers. Startet alle Threads und Verwaltung sowohl die Verbindung zum homeserver als auch zum EIB-Bus.

      homedriver/include/eibsocket.h

      homedriver/src/eibsocket.cpp

      Verbindung zum homeserver über einen Socket.

      homedriver/include/ eibconnection .h

      homedriver/src/eibconnection.cpp

      Serielle RS232-Verbindung zum EIB-Bus.

      homedriver/include/ eibstate .h

      homedriver/src/eibstate.cpp

      Status der FT1.2-Verbindung zum EIB-Bus

      homedriver/include/ eibmessage .h homedriver/src/eibmessage.cpp

      EIB-Nachrichtenformate

      homedriver/include/eibexception .h

      homedriver/src/eibexception.cpp

      Fehler- und Ausnahmezustände

      homedriver/include/ eibstd.h

      Verschiedene Definitionen zur Fehlerausgabe oder Nachrichtenformate oder Standard-Schnittstellen und Ports.

    2. Modulbeschreibung: homedriver

      1. Kurzbeschreibung

Der homedriver hat zwei Aufgaben:

  1. Er empfängt „Write“- und „Read“-Anfragen sowie „Response“-Nachrichten von dem homeserver und leitet diese an den EIB-Bus weiter

    1. Write: Der Wert einer Gruppenadresse wird in den entsprechenden Geräten verändert.

    2. Read: Der Wert einer Gruppenadresse wird gelesen.

    3. Response: Antwort auf einen Read-Befehl vom EIB-Bus. Dieser Befehl wird momentan vom homeserver nicht unterstützt, da er für keine Anwendung benötigt wird.

  2. Der homedriver leitet empfangene „Busmonitor“-Nachrichten an den homeserver weiter.

Der homedriver kann als selbstandiges Programm gestartet werden oder in einem anderen Programm aufgerufen werden:

  1. Selbstandiges Programm: Dazu kompiliert man die Datei eibmain.cpp und erhält ein ausführbares Programm. Beim Start können mehrere Parameter angegeben werden. Syntax:
    homedriver [–d device] [–p portnumber] [–f inputfile outputfile]
    device: Gibt die serielle Schnittstelle zum EIB-bus an, z.B. /dev/ttyS4
    portnumber: Gibt den Port für die Socketverbindung zum homeserver an.
    inputfile, outputfile: Für Simulationszwecke kann aus bzw. in eine Datei gelesen bzw. geschrieben werden. Dieser Modus ist sinnvoll, wenn kein EIB-Anschluß zur Verfügung steht. Die Dateien müssen existieren. An einem reinen Simulationsmodus ohne Dateien wird gearbeitet. Die Option –f darf nicht mit –d angegeben werden.

    Alle Parameter sind optional.

    Ohne Parameter gelten die Defaultwerte:
    device: /dev/ttyS0
    portnumber: 8083

  2. Aufruf von anderem Programm: Dazu instanziiert man ein Objekt des homedriver durch Aufruf der statischen Methode:
    EibDriver::createInstance( int portNumber, char* inputDevice, char* outputDevice, bool simulation)
    portnumber: Gibt den Port für die Socketverbindung zum homeserver an.
    inputDevice: Gibt die serielle Schnittstelle zum EIB-bus an, z.B. /dev/ttyS1, oder eine Eingabedatei.
    outputDevice: Gibt die serielle Schnittstelle zum EIB-bus an, z.B. /dev/ttyS1, oder eine Ausgabedatei.
    simulation: True für Simulation, d.h. input/outputDevice sind Dateien. False für Realbetrieb, d.h input/ouputdevice gibt die gleiche serielle Schnittstelle an.

      1. Klassen und deren Assoziationen

Das Klassendiagramm in Abbildung 2 zeigt die Klassen des Moduls homedriver und die Beziehungen der einzelnen Klassen zueinander. Bis auf die beiden Klassen EibReceiveMessage und EibSendMessage, die die zu versendenden und empfangenen EIBNachrichten repräsentieren, sind alle anderen Klassen als Singleton realisiert. Aus diesem Grund entspricht das Klassendiagramm nahezu dem Objektdiagramm.

Der homedriver kommuniziert mit dem homeserver über einen Socket. Die Standardeinstellung für den Port ist 8083. Der Socket wird in der Klasse EibDriverSocket realisiert, von der ein Objekt instanziiert wird.

Ein Thread schreibt Nachrichten in den Socket und ein anderer Thread liest Nachrichten von dem Socket. Alle Nachrichten werden in zwei Nachrichtenschlangen gehalten, die durch die Klasse lfcdllist der LFC realisiert sind. Auf den EIB-Bus zu versendende Nachrichten werden durch die Klasse EibSendMessage implementiert und empfangene Nachrichten durch die Klasse EibReceiveMessage.

Der homedriver kommuniziert mit dem EIB-Bus über die serielle Schnittstelle. Während der Initialisierungsphase des Systems wird die FT1.2 Datenschnittstelle durch entsprechende Nachrichten in den Busmonitormodus geschaltet. Anschließend empfängt der homedriver sämliche Nachrichten, die auf dem EIB-Bus gesendet werden. Er quittiert jede Nachricht mit einem Acknowledge. Die Verbindung zum EIB-Bus wird durch die Klasse EibConnection repräsentiert. Der Zustand der Verbindung wird durch eine Klasse beschrieben, die sich von der abstrakten Basisklasse EibState ableitet.


Abbildung 2: Die Klassen des homedrivers und deren Assoziationen.

Momentan gibt es die Verbindungszustände

  1. EibStateReady: Nachrichten können empfangen und versendet werden.

  2. EibStateSent: Es ist ein Write- oder Response-Befehl (siehe in Kapitel 5.1) an die BAU versendet worden. Es kann keine weitere Nachricht versendet werden. Der homedriver wartet auf das Acknowledge der BAU. Wenn das Acknowledge empfangen wird, kehrt der homedriver in den State EibStateReady zurück. Wird innerhalb von 200ms kein Acknowledge empfangen, wird die Nachricht bis zu dreimal wiederholt. Nach vier erfolglosen Versuchen wird die gesamte Verbindung neu initialisiert.

  3. EibStateRequest: Es ist ein Read-Befehl (siehe in Kapitel 5.1) an die BAU versendet worden. Es kann keine weitere Nachricht versendet werden. Der homedriver wartet auf das Acknowledge der BAU. Wird innerhalb einer bestimmten Zeit kein Acknowledge empfangen, wird die Nachricht bis zu dreimal wiederholt. Nach vier erfolglosen Versuchen wird die gesamte Verbindung neu initialisiert.

  4. EibStateWait: Ein Acknowledge für einen Read-Befehl wurde empfangen. Der homedriver wartet auf eine Response von einem Gerät. Es kann keine weitere Nachricht versendet werden. Wenn die Response empfangen wird oder nach einem bestimmten TimeOut (siehe EIBA Handbuch [3]), kehrt der homedriver in den State EibStateReady zurück.

Von allen empfangenen Busmonitor-Nachrichten wird der FT1.2-Protokoll-Rahmen, das Status-Byte und der TimeStamp entfernt und die Nachricht an den homeserver weitergeleitet. Vorher werden Wiederholungen aussortiert. Das Nachrichtenformat ist in Kapitel beschriebenen.

      1. Klassen, Attribute und Methoden

        1. EibDriver

Die Methoden der Klasse EibDriver sind in Abbildung 3 dargestellt.


Abbildung 3: Die Treiber-Klasse

        1. EibConnection

Die Methoden der Klasse EibConnection sind in Abbildung 4 dargestellt.

Abbildung 4: Die Verbindungsklasse

        1. EibState

Die Methoden der Klasse EibState, und die zugehörige Vererbungshierarchie ist in Abbildung 5 dargestellt.


Abbildung 5: Vererbungshierarchie der Zustands-Klassen.

        1. EibSocket

Die Methoden der Klasse EibSocket sind in Abbildung 6 dargestellt.


Abbildung 6: Die Socketklasse

        1. EibMessage

Die Klasse EibMessage und die davon abgeleiteten Klassen sind in Abbildung 7 dargestellt.


Abbildung 7: Vererbungshierarchie der Nachrichten-Klassen.

        1. EibException

Die Klasse EibException und die davon abgeleiteten Klassen sind in Abbildung 8 dargestellt.

Abbildung 8: Exceptions des homedrivers.


      1. Funktionen

In dem Modul homedriver gibt es bis auf main() keine Funktionen, die nicht „Klassenmember-Methoden“ sind. Die Beschreibung der Klassenmember-Methoden“ findet man bei den jeweiligen Klassen.

Der homedriver lässt sich von außen entweder

starten. Die Dokumentation der Klassen bzw. Methoden findet man im Quellcode.

    1. Modulbeschreibung: homeserver

      1. Kurzbeschreibung

Der homeserver hat zwei Aufgaben:

  1. Er kommuniziert über TCP/IP bzw. HTTP mit Applikationen (siehe Abschnitt 5.1.1)

  2. Er kommuniziert mit dem homedriver (siehe voriger Abschnitt 5.1.2)

  3. Er verwaltet die Datenbank mit den Gruppenadressen und aktuellen Werten.


Der homeserver speichert die aktuellen Werte der Gruppenadresse in einer XML-Datenbank. Die Datenbank wird in einer Datei (Defaultname:eibdb.xml) abgelegt. In diese Datei müssen bei der Installation des Servers einmalig die Daten der EIB-Installation eingetragen werden. Während des Betriebs werden die Werte der konfigurierten Gruppenadressen ständig in der Datenbank aktualisiert und die Datei eibdb.xml gelegentlich synchronisiert.

Die Synchronisationsintervalle können beim Start mit dem Parameter

-s <Anzahl in Sekunden>
angegeben werden ( Deafult: -s 300, d.h. Synchronisation alle 5 Minuten, falls überhaupt Änderungen vorliegen. Keine Synchronisation durch -s 0).


Syntax:

homeserver -dr driver-host -db database -dp driver-port -ap applications-port -wp http-port -s synctimeout

Beschreibung der Parameter:

Default-Werte:

driverhost: localhost

driver-port: 8083

database: eibdb.xml

applications-port: 8081

http-port: 8080

synctimeout: 300 (in sec)


      1. Klassen und deren Assoziationen

Das Klassendiagramm in Abbildung 9 zeigt die Klassen des Moduls homeserver und die Beziehungen der einzelnen Klassen zueinander.


Abbildung 9: Klassendiagramm des homeserver.


      1. Klassen, Attribute und Methoden

        1. HomeServer

Die Methoden der Klasse HomeServer sind in Abbildung 10 dargestellt.


Abbildung 10: Die Klasse HomeServer


        1. DatenBank

Die Methoden der Klasse DatenBank sind in Abbildung 11 dargestellt.


Abbildung 11: Die Klasse DatenBank.

        1. Driver

Die Methoden der Klasse Driver sind in Abbildung 12 dargestellt.

Abbildung 12: Die Klasse Driver.

        1. DriverMessages

Die Methoden der Klasse DriverMessages sind in Abbildung 13 dargestellt.

Abbildung 13: Die Klasse DriverMessages.

        1. Client

Die Methoden der Klasse Client sind in Abbildung 14 dargestellt.

Abbildung 14: Die Klasse Client.

        1. ClientMessages

Die Methoden der Klasse ClientMessages sind in Abbildung 15 dargestellt.


Abbildung 15: Die Klasse ClientMessages

        1. Interest

Die Methoden der Klasse Interest sind in Abbildung 16 dargestellt.

Abbildung 16: Die Klasse Interest.

        1. PathData

Die Methoden der Klasse PathData sind in Abbildung 17 dargestellt.

Abbildung 17: Die Klasse PathData.

        1. Instruction

Die Methoden der Klasse Instruction sind in Abbildung 18 dargestellt.

Abbildung 18 Die Klasse Instruction.

  1. Literaturverzeichnis

  1. BMBF-Leitprojekt „Eletronische Multimediale Bedienassistenz“ (Embassi) www.embassi.de

  2. Intel: The Universal Plug and Play (UPnP) SDK for Linux, http://sourceforge.net/projects/upnp/

  3. EIB Association: www.eiba.org