Herstellerübergreifende Heim-/Gebäudeautomatisierung beim Einsatz von openhab

Größe: px
Ab Seite anzeigen:

Download "Herstellerübergreifende Heim-/Gebäudeautomatisierung beim Einsatz von openhab"

Transkript

1 Praxisprojektbericht im Studiengang Master Informatik Herstellerübergreifende Heim-/Gebäudeautomatisierung beim Einsatz von openhab von Peter Manheller ( ) Erstprüfer: Zweitprüfer: Prof. Dr. Karl Jonas M.Sc. Michael Rademacher Zeitraum: Eingereicht am:

2 Inhaltsverzeichnis 1 Einleitung Aufgabenstellung Zielsetzung Vorgehensweise Die OSGi-Service-Platform OSGi-Framework Bundles Services OSGi-Schichtenmodell OSGi-Implementierungen Eclipse Equinox Sonstige openhab Architektur OSGi-Framework Komponenten openhab Kernkomponenten openhab Erweiterungen openhab Runtime openhab Designer Automation Regeln, Skripte und Aktionen Jobmanagement Bindings Persistenz Sonstiges Bewegungserkennung von Personen Eingesetzte Hard- und Software Installation und Konfiguration Implementierung Aufbau und Durchführung Ergebnisse und Alternativen Ergebnisse Alternative Ansätze Zusammenfassung und Fazit 42 II

3 Inhaltsverzeichnis 7 Anhang Lex Uno Station - Leitrechner mit openhab Konfiguration - openhab mit Hue-Binding Deklaration - openhab-items Realisierung - openhab-sitemap Konfiguration - openhab-persistence Realisierung - openhab-rules Remote-Zugriff - Bash-Skript TP-Link WLAN Router - Receiver Konfiguration - Netzwerk Konfiguration - Wireless Konfiguration - Lua Skript Profil erstellen - Lua Skript Bewegung erkennen - Lua Skript Kommandos für openhab REST-API - Lua Skript REST-API Kommando für openhab-items - Lua Skript TP-Link WLAN Router - Sender Konfiguration - Netzwerk Konfiguration - Wireless Multi-Generator Skript openhab-gui für realisierte Sitemap Ergebnisse und Messwertvisualisierung Eidesstattliche Erklärung 66 Literaturverzeichnis 73 III

4 Abbildungsverzeichnis 2.1 Beziehungen zwischen Bundles [Fil12, S. 74] Zusammenhang Bundles und Services [Fil12, S. 78] OSGi-Schichtenmodell [i.a.a. All15c, S. 2] Interkation Bundles und Framework-Schichten [Web+10, S. 17] Bundle-Lebenszyklus [i.a.a. All15c, S. 86] openhab Architektur [Uh15i, i.a.a.] UML-Klassendiagramm des Philips Hue-Bindings Eingesetzte Hard- und Software [ope15] UML-Sequenzdiagramm - Profil erstellen UML-Sequenzdiagramm - Bewegungserkennung starten und stoppen UML-Sequenzdiagramm - Zusätzliche UDP-Pakete senden Aufbau des Szenarios in der Hochschule Bonn Rhein Sieg (Raum C060) [ope15] Messergebnisse für den Anwendungsfall Profil erstellen Messergebnisse für den Anwendungsfall Bewegung erkennen (Ruhe-Phase) Messergebnisse für den Anwendungsfall Bewegung erkennen (Bewegungs- Phase) Main-Menü der Benutzeroberfläche [Uh15u] Sub-Menü der Benutzeroberfläche - Steuerung der Leuchten [Uh15u] Visualisierung für Messdurchlauf # Visualisierung für Messdurchlauf # Visualisierung für Messdurchlauf # Visualisierung für Messdurchlauf # Visualisierung für Messdurchlauf # Visualisierung für Messdurchlauf # Visualisierung für Messdurchlauf # Visualisierung für Messdurchlauf # Visualisierung für Messdurchlauf # Visualisierung für Messdurchlauf # Visualisierung für Messdurchlauf # Anmerkungen zu den einzelnen Messdurchläufen IV

5 Quelltextverzeichnis 2.1 Manifest - Ausschnitt openhab Core Ausschnitt - OSGILogListener.class - Delegation an den SLF4J-Logger [Uh15m, Kreuzer K.] Ausschnitt der execute -Methode der HueBinding -Klasse [Uh15m, Hartmann R., Schering J.] Ausschnitt des MySQL-Services - Datentypen [Uh15m, Sjöstrand H., Eichstädt- Engelen T., Jackson C.] Ausschnitt der openhab-konfiguration Deklaration der openhab-items Konfiguration der openhab-sitemap rrd4j-persistenz für Visualisierung der Signalstärken Konfiguration der MySql-Persistenz MySql-Query für Auswertung der Ergebnisse openhab-rules für Reaktion auf Nutzer- und Systeminteraktion Bash-Skript für Remote-Zugriff auf Sender und Receiver Ausschnitt der Netzwerk-Konfiguration Wireless-Konfiguration Lua-Konfiguration RSSI-Profil erstellen Bewegung anhand der absoluten RSSI-Differenz erkennen REST-API Kommandos (POST / GET) openhab-items auf dem Receiver verarbeiten (optional) Ausschnitt der Netzwerk-Konfiguration Wireless-Konfiguration Multi-Generator Skript für 10 Pakete/s V

6 Abkürzungsverzeichnis BatiBUS Industrielles Feldbussystem des BCI BCI BatiBUS Club International CENELEC Comité Européen de Normalisation Électrotechnique DDC-GA Direct-Digital-Control-Gebäudeautomation Drools Rule Management System Solution der JBoss Community EHS European Home Systems EHSA European Home Systems Association EIB Europäischer Installationsbus EIBA European Installation Bus Association EnOcean Technologie batterieloser Funksensorik Fhem Hausautomations-Server auf Basis von Perl FS20 Protokoll für Funksysteme GA Gebäudeautomatisierung bzw. Gebäudeautomation HA Heimautomatisierung bzw. Heimautomation HomeMatic Produktfamilie der eq-3 AG für Hausautomation IANA Internet Assigned Numbers Authority IDE Integrated Development Environment IFTTT If This Then That IHC Intelligent Home Control INSs Inertial Navigation Systems Instabus Installation Bussystem IoT Internet of Things J2ME Java 2 Micro Edition JDBC Java Database Connectivity - Standard JPA Java Persistence API JVM Software-Platform - Java Virtual Machine KNX Konnex-Bus LON Local Operating Network LOS Line-Of-Sight Lua Imperative und funktionale Skriptsprache MA Management Agent Maven Software für den Erstellungsprozess von Softwareprodukten VI

7 Quelltextverzeichnis mdns multicast Domain Name System MisterHouse Open-Source Home Automation Software (Perl) openhab open Home Automation Bus OpenRemote Open Source Automation Platform ORM Object Relational Mapping OSGi-Alliance Non-Profit-Organisation - Gründung März OSGi-Framework Softwareplattform mit Komponentenmodell auf Basis von Java PBX Private Branch Exchange POJOs Plain Old Java Objects RCP Rich Client Platform ROS Robot Operating System RSSI Received Signal Strength Indicator SDK Software Development Kit SHSs Step-and-Heading Systems SLF4J Simple Logging Facade for Java SMTP Simple Mail Transfer Protocol SQL Structured Query Language SSH Secure Shell Telnet Teletype Network TTS Text-To-Speech UDP User Datagram Protocol UIs User Interfaces URI Uniform Resource Identifier UX User Experience SMI Standard Motor Interface WAN Wide Area Network WAPs Wireless Access Points Xbase Expression Language für Java implementiert in Xtext XMPP Extensible Messaging and Presence Protocol Xtend flexibler und expressiver Dialekt von Java VII

8 1 Einleitung Im Jahre 1970 erfolgt aus der Unternehmensgründung der Insta Elektro GmbH, einer Fusion der Unternehmer Berker, Gira und Jung, die Entwicklung des Instabus (Installation Bussystem) [Gmb15b]. Das Instabus wird im Jahre 1994 von dem CENELEC (Comité Européen de Normalisation Électrotechnique) als europäische Norm unter der Bezeichnung EIB (Europäischer Installationsbus) für die EIBA (European Installation Bus Association) ratifiziert [CEN15]. Etwa zeitgleich zur Einführung von EIB wird der BatiBUS (Industrielles Feldbussystem des BCI) von dem BCI (BatiBUS Club International) und das EHS (European Home Systems) von der EHSA (European Home Systems Association) vermarktet [Com15]. Erst durch das Bündnis der oben genannten Organisationen zur KNX-Association, wird bei gleichzeitiger Zusammenlegung der Bussysteme EIB, BatiBUS und EHS, der internationale Grundstein für die heutige GA (Gebäudeautomatisierung bzw. Gebäudeautomation) gelegt [Ass15b]. Der daraus entstandene KNX (Konnex-Bus) wird im Frühjahr 2002 veröffentlicht und letztendlich im November 2006 als internationaler Standard (ISO/IEC ) verabschiedet [Ass15a]. Wenn auch neben KNX weitere leitungsgebundene Standards, wie z. B. LON (Local Operating Network) und SMI (Standard Motor Interface), im Bereich der GA wiederzufinden sind, geht der heutige Trend in Richtung kabelloser Systeme, z. B. EnOcean, HomeMatic und FS20, deren Anwendung vermehrt in der HA (Heimautomatisierung bzw. Heimautomation) anzutreffen ist [Jur15]. Dabei stehen die GA und HA nicht synonym für Anwendung eines speziellen Standards oder Installation einer konkreten Technologie, sondern eine Abgrenzung findet vielmehr durch die Art der Bauten und die nutzerspezifischen Einsatzbereiche statt [Mer+10, S. 17]. So ist die HA beschränkt auf den privaten Wohnungsbau mit Einsatzbereichen aus Energieeinsparung, Komfort und Sicherheit [Mer+10, S. 18]. Hingegen ist die GA konzentriert auf Zweckbauten, z. B. Bürohäuser oder Einkaufszentren, deren Einsatzbereiche über die der HA hinaus gehen und zudem die Faktoren der Flexibilität und Kommunikation der Bussysteme betrachten [Mer+10, S. 19]. Trotz der internationalen Standardisierung weist die Interoperabilität der Technologien, sowohl Hard- als auch Software, Lücken auf. Dies fordert die Hersteller für die Zusammenführung der Vorteile ihrer Kommunikationsstandards zur (Weiter-)Entwicklung neuer Vernetzungssysteme (Gateways) auf [Gmb15a]. Da die Kosten für Anschaffung und der Aufwand für die Installation und die Vernetzung der Gateways quadratisch ist, verliert der Ansatz an Bedeutung. 1

9 1 Einleitung Um die Defizite zu decken, sieht der verbesserte Top-Down-Ansatz nur noch eine einzige Hardware-Komponente, den zentralen Leitrechner, auf der Management-Ebene vor. Auf der darunter folgenden Automationsebene sind dann letztendlich die Komponenten der DDC-GA (Direct-Digital-Control-Gebäudeautomation) wiederzufinden. Den Abschluss bildet die Feldebene - der Aktoren und Sensoren zugehörig sind [Mer+10, S ]. Die Symcon GmbH bietet bereits mit ihrer proprietären Software IP-Symcon und dem zugehörigen Web-Service ein Produkt an, das einige Hardware-Module unterschiedlicher Hersteller vernetzt [Ohl15]. Mit Fhem (Hausautomations-Server auf Basis von Perl) ist bereits die Grundlage für eine Open- Source-Software (GPL v2) für den Anwendungsbereich der GA bzw. HA geschaffen [Wil15]. Mit openhab (open Home Automation Bus) bietet die openhab UG (haftungsbeschränkt) eine Open-Source-Software (EPL) auf Basis des OSGi-Framework (Softwareplattform mit Komponentenmodell auf Basis von Java) an. Der Schwerpunkt der Entwicklung strebt neben der herstellerübergreifenden Vernetzung zudem im aktuellen Stadium die Verbesserung der UX (User Experience) an [Uh15u]. 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausführung eines realitätsnahen Szenarios der Automatisierung beim Einsatz der openhab -Software und der Vernetzung verschiedener Herstellerkomponenten. Zudem soll die Software im Hinblick auf umgesetzte Modularisierung und verwendete Architekturen der OSGi-Service-Platform analysiert werden. Für obigen Auftrag sind folgende Teilanforderungen durchzuführen: Die OSGi-Service-Platform bildet die Kernkomponente von openhab: Neben Funktionsweise und Architektur des OSGi-Framework sind benötigte und umgesetzte Plattform- Restriktionen in openhab zu klären. Für das realitätsnahe Szenario sollen hinreichende Hardwarekomponenten und Software erarbeitet werden, die im Zusammenhang mit dem Oberbegriff der Bewegungserkennung von Personen stehen. Eine anschließende Realisierung der Installation ist obligatorisch. Des Weiteren soll die Implementierung beim Einsatz von openhab für das Szenario verwirklicht und die Güte der Bewegungserkennung bei variierender Parametrisierung analysiert werden. 1.2 Zielsetzung Das Ziel des vorliegenden Projektes ist es, eine herstellerübergreifende Lösung für das Anwendungsszenario der Bewegungserkennung von Personen im Rahmen der GA und HA beim Einsatz 2

10 1 Einleitung von openhab auszuarbeiten. Außerdem ist die eingesetzte Hard- und Software zur Umsetzung des Szenarios im Hinblick auf mögliche auftretende Fehler in der Erkennung zu validieren. Abschließend sollen die gewonnenen Erkenntnisse in Abgrenzung zu weiteren Lösungsansätzen analysiert werden. 1.3 Vorgehensweise In Kapitel 2 - Die OSGi-Service-Platform wird neben einer allgemeinen Vorstellung der OSGi- Service-Platform das OSGi-Framework vorgestellt. Fokus liegt hier sowohl auf der Struktur und dem Aufbau der Framework Module als auch deren Services und Kommunikation untereinander. Im Abschluss des Kapitels wird auf konkrete Implementierungen des OSGi-Standards hingewiesen. Im Kapitel 3 - openhab wird das Softwareprodukt openhab, in Hinblick auf die zugrundeliegende Softwarearchitektur als auch die Umsetzung der notwendigen Paradigmen des OSGi-Frameworks, analysiert. Aufbauend auf den Erkenntnissen der Kapitel 2 und 3 stellt Kapitel 4 - Bewegungserkennung von Personen das Szenario vor. Dazu wird neben dem Realitätsbezug auch die verwendete Hard- und Software näher betrachtet und eine anschließende Durchführung stellt das Proof of Concept dar. Die Ergebnisse werden im Anschluss in Kapitel 5 - Ergebnisse und Alternativen genutzt um die eingesetzten Technologien gegen alternative Lösungsansätze abzugrenzen. Das Kapitel 6 - Zusammenfassung und Fazit weist, neben abschließenden Worten, auf Forschungsgebiete im Zusammenhang mit der HA und GA hin, deren Thematik weitere wissenschaftliche Arbeiten befürworten. 3

11 2 Die OSGi-Service-Platform In diesem Kapitel wird ein Überblick der OSGi-Service-Platform präsentiert. Aufgrund des umfangreichen OSGi-Standards, der von der OSGi-Alliance (Non-Profit-Organisation - Gründung März 1999) entwickelt und verbreitet wird [Web+10, S. 30], greift dieses Kapitel lediglich die Hauptbestandteile des Release 4 in Version 4.3 der OSGi-Service-Platform auf. Die Dokumentation des Standards teilt sich in die OSGi Service Platform Core Specification und das OSGi Service Platform Service Compendium auf. Erstere beinhaltet neben den zentralen Bestandteilen des OSGi-Framework - die in diesem Kapitel näher betrachtet werden - auch die OSGi Service Platform Mobile Specification, die speziell für mobile Endgeräte definiert ist [vgl. Web+10, S. 29; Wüt08, S. 15 f.]. Letztere beinhaltet die Spezifikationen der Standard- Services von OSGi wie zb. der Log-, Http-, IO Conntector- und der JNDI-Service [All15d]: Die OSGi-Service-Platform ist demnach eine quelloffene Software-Architektur deren Augenmerk auf der Verwaltung, Entwicklung und Kommunikation von bzw. zwischen Services liegt. OSGi ist zwar durch die Spezifizierung auf der JVM (Software-Platform - Java Virtual Machine) nicht sprachunabhängig, jedoch plattformunabhängig und erfreut sich deshalb großer Beliebtheit und Anwendung rund um das Smartphone, den Automobilbereich, der Unterhaltungselektronik, reinen Desktop-Applikationen aber auch serverseitige Anwendungen und vor allem der HA [vgl. Web+10, S. 1 f.; Wüt08, S. 14 f.] - auf konkrete Implementierungen von OSGi wird im Abschnitt 2.3 eingegangen. Der Vorteil und damit auch die Befürwortung zur Nutzung des OSGi-Framework liegt in der Beurteilung als bestbewertetes dynamisches Modulsystem im Vergleich zu Laufzeitsystemen, wie z. B. DDL/COM und Shared Libraries [Fil12, S. 68 ff.]. Die für die Bewertung betrachteten Kriterien behandeln dazu sowohl den Aufbau bzw. die Struktur als auch die Umsetzung der Bestandteile, die für eine korrekte Modularisierung, also das Brechen der Komplexität einer Software durch Dekomposition in Module, nötig sind [vgl. Fil12, S. 67 f.; Wüt08, S. 16 f.]. Das sind zum einen die Module und Services und zum anderen die Registry und Versionierung eines Frameworks. Der folgende Abschnitt 2.1 behandelt die Komponenten, die OSGi als dynamisches Modulsystem kennzeichnen. 4

12 2 Die OSGi-Service-Platform 2.1 OSGi-Framework Das OSGi-Framework ist eine Laufzeitumgebung die einen Container für die Softwarekomponenten (Module und Dienste) bereitstellt. Neben diesen Komponenten enthält das Framework den MA (Management Agent) als zentrale Verwaltungsstelle, dessen Hauptaufgabe die Überwachung des Lebenszykluses der Module und deren Dienste ist [Wüt08, S. 12 f.] - Der Lebenszyklus wird in Abschnitt 2.2 behandelt. Das Modul als abgeschlossene Einheit der Software ist im OSGi-Framework mit dem Begriff Bundle gleichzusetzen und wird in Abschnitt beschrieben. In Abschnitt sind die Services, die zur bundle-übergreifenden Kommunikation verwendet werden, charakterisiert. Größere Softwareprodukte tendieren mit der Zeit dazu, dasss ihre innere Struktur mehr einem Irrgarten ähnelt als einer geplanten Entwicklung. Das wird allgemein als Architecture Erosion bezeichnet [Fil12, S. 59]. Um der Architecture Erosion bereits zu Beginn der Entwicklung entgegenzuwirken, nutzt das Framework zur Kopplung der Bundles neben statischen auch dynamische transitive Abhängigkeiten, die in Abschnitt erörtert werden. Im Anschluss daran zeigt der Abschnitt 2.2 das Schichtenmodell des OSGi-Framework das von den Services bis zum Betriebssystem definiert ist. Als Abschluss dieses Kapitels (Abschnitt 2.3) werden sowohl zertifizierte Produkte als auch Open-Source-Lösungen, die konkrete Implementierungen des OSGi-Framework darstellen, genannt. Der Fokus liegt auf der Vorstellung der Eclipse Equinox, die als Kernkomponente der openhab-software anzusehen ist Bundles Wie bereits erwähnt, ist ein Bundle mit dem Begriff Modul gleichzusetzen und beinhaltet neben Java-Archiven, Java-Klassen und anderen Ressourcen (z. B. Icons als Bilder) ein Manifest, in dem ergänzende Metadaten aufgelistet sind [All15c, S. 25] - was ein Bundle letztendlich auch als ein Java-Archiv kennzeichnet [vgl. Fil12, S. 72 f.; Web+10, S. 16 ff.]. Nach [Web+10, S. 126] ist die Migration von jedem konventionellen Java-Archiv in ein OSGi-Bundle möglich. In einem bundle-zugehörigen Manifest ist beschrieben, welche externen Archive das Bundle benötigt (import), bzw. ob es seine Funktionalität anderen Bundles zur Verfügung stellt (export). Damit ein Bundle die benötigten Abhängigkeiten aufschlüsseln kann, erhält es vom OSGi-Framework-Container einen eigenen Class-Loader der die benötigten Java-Archive bzw. Java-Klassen sowohl aus dem Boot- und Framework-Class-Path als auch aus dem Bundle- Space nachladen kann. Die Gesamtheit aller Class-Loader wird als Class Loading-Delegation- Netzwerk bezeichnet [vgl. Fil12, S. 74 f.,138; Web+10, S. 6]. Grundsätzlich unterscheidet die Spezifikation drei Arten von Bundles: 5

13 2 Die OSGi-Service-Platform Requiring Bundles [All15c, S. 66 ff.] - Requiring Bundles setzen eine direkte Kommunikation bzw. Verbindung mit dem Require-Mechanismus um und werden in Abschnitt detaillierter beschrieben. Der Einsatz des Mechanismus birgt die Gefahr von statischen Abhängigkeiten zwischen Bundles. Fragment Bundles [All15c, S. 69 ff.] - Bundles, die von der Laufzeitumgebung des Frameworks einem oder mehreren Host -Bundles zugewiesen werden - z. B. ein Sub- Jar-Archive, das nach Auflösung als Bestandteil des Host -Bundles angesehen wird, jedoch keinen eigenen Class-Loader besitzen muss, wird Fragment Bundle genannt. Extension Bundles [All15c, S. 72 f.] - Diese Bundles verwenden wie die Requiring Bundles nicht den Import/Export -Mechanismus (Abschnitt ), sondern müssen direkt dem Boot-Class-Path beigelegt werden. Zwar bieten diese Bundles framework-eigene Services an, wie z. B. den Permission Admin Service, sollten aber nicht für die Implementierung anwendungsspezifischer Bundles verwendet werden, um statische Abhängigkeiten zu vermeiden. Zudem ist das OSGi-Bundle von den IANA (Internet Assigned Numbers Authority) als gültiger MIME-Type vnd.osgi.bundle klassifiziert [Aut15] Manifest Das Manifest META-INF/MANIFEST.MF beinhaltet eine Auflistung von Metainformationen, die ein OSGi-Bundle individuell kennzeichnen. Zudem enthält es Informationen für den Lebenszyklus und die verwendete Laufzeitumgebung [Fil12, S. 73]. 1: Manifest - Version : 1.0 2: Bundle - Name : openhab Core 3: Bundle - RequiredExecutionEnvironment : J2SE : Bundle - Vendor : openhab. org 5: Bundle - Version : qualifier 6: Bundle - Activator : org. openhab. core. internal. CoreActivator 7: Bundle - ManifestVersion : 2 8: Bundle - License : http :// www. eclipse. org / legal /epl - v10. html 9: Bundle - SymbolicName : org. openhab. core 10: Bundle - DocURL : http :// www. openhab. org Quelltext 2.1: Manifest - Ausschnitt openhab Core Der Quelltext 2.1 zeigt einen Ausschnitt des Manifestes der Kernkomponente von openhab. Dabei ist SymbolicName eine Pflichtangabe, die das Bundle, zusammen mit der Angabe der Version, eindeutig bezeichnen - gleichbedeutend dazu die ManifestVersion. Die Namensgebung folgt keiner direkten Konvention. Sollte die Namensgebung allerdings schwer 6

14 2 Die OSGi-Service-Platform fallen, enthält das Bundle wahrscheinlich Funktionalität aus semantisch unabhängigen Bereichen, wodurch dann die Paradigmen der OSGi-Schichtenarchitektur nicht eingehalten werden [Fil12, S. 137]. Mit RequiredExecutionEnvironment wird die minimal benötigte Laufzeitumgebung gekennzeichnet. Der openhab-core benötigt mindestens die Java Plattform in der Standard Edition Version 5. Aufgrund der Rückwärtskompatibilität von Java können demnach auch höhere Versionen für den openhab-core genutzt werden [All15c, S. 35 f.]. Die Angabe Activator dient dem MA, damit er weiß, welche Java-Klasse er verwenden muss, um das Bundle in den Lebenszyklus einzubinden. Die Activation Policy gibt an, wie bzw. wann das Bundle gestartet werden soll [All15c, S. 91 ff.]. Ist sie lazy, wird das Bundle erst geladen, wenn dessen Funktionalität abgerufen wird. Ist die Activation Policy nicht angegeben, ist sie standardmäßig auf directive gesetzt und das Bundle wird direkt beim Start der Laufzeitumgebung mit initialisiert. Für selbst-definierte Header-Angaben, die nicht dem OSGi-Namespace folgen, können diese mit dem Prefix x- gekennzeichnet werden [All15c, S. 29]. Auf Header-Angaben, die für eine Kommunikation von Bundles benötigt werden, wird in Abschnitt näher eingegangen - für Weitere sei auf die auf OSGi-Service-Platform Core Specification [All15c, S ] verwiesen Import, Export und Require Neben den in Abschnitt erwähnten, können die Header-Angaben Export- und Import- Package genutzt werden, um Abhängigkeiten zwischen den Bundles zu erzeugen. Um externe Funktionalitäten anderer Bundles nutzen zu können, kann das Bundle diese explizit in der Import-Anweisung auflisten. Umgekehrt wird die Export-Anweisung im Manifest angegeben, um die eigene Funktionalität anderen Bundles bereitzustellen [Fil12, S. 73]. Die Abbildung 2.1 zeigt die mit der Angabe von Import und Export geschaffenen Beziehungen der Bundles. Als Beigabe der Import-Anweisung kann optional eine Version mit Semikolon getrennt angegeben werden - standardmäßig wird die aktuellste Version vom MA geladen. Neben einer spezifischen Version können auch Version-Ranges durch die mathematische Intervall-Notation vermerkt werden [vgl. All15c, S. 29 f.; Fil12, S. 79; Web+10, S. 7]. Um statische Abhängigkeiten zu vermeiden, sollten Bundles für den Export nie die direkten Implementierungen weiterreichen, sondern nur solche Packages angeben, die ausschließlich Schnittstellen beinhalten: Das Class Filtering ermöglicht die flexible Einschränkung der Sichtbarkeit von Bestandteilen des Bundles [All15c, S. 49 f.]. Bei der Verwendung von Import und Export greift der Standard-Resolving-Mechanismus des MA und verhindert gleichzeitig auch mögliche Zyklen in der Abhängigkeitskette der Bundles. Mit Require-Bundle können Bundles direkt miteinander verbunden werden. Die mit Require geschaffenen statischen Beziehungen bergen Risiken, die den Standard-Resolving-Mechanismus umgehen und dadurch Split Packages, Mutable Exports und Shadowing verursachen 7

15 2 Die OSGi-Service-Platform [All15c, S. 68 f.]: Für eine dynamische Kopplung der Bundles ist somit der Import und Export zu bevorzugen. Abbildung 2.1: Beziehungen zwischen Bundles [Fil12, S. 74] Services A service is a normal Java object that is registered under one or more Java interfaces with the service registry [All15c, S. 111] OSGi-Services sind Instanzen von POJOs (Plain Old Java Objects) die durch die Bundle Context -Objekte von Bundles genutzt werden können, um eigene Services zu registrieren (bundlecontext.registerservice), fremde Services zu nutzen (bundlecontext.getservicereference und bundlecontext.getservice) oder sogar über mögliche Änderungen der Services informiert zu werden (bundlecontext.addservicelistener) [All15c, S. 111 f.]. Als zentrale und bundleübergreifende Stelle dient die Service Registry der Verwaltung der registrierten Services und regelt Anfragen oder Änderungen der Services über Service Events. Wie in Abbildung 2.2 dargestellt, ist es es anderen Bundles nach Instanziierung der Services möglich, auf die Schnittstelle zuzugreifen und dadurch die Funktionalität zu nutzen. Summa Summarum bedeutet dies: OSGi löst die Diskrepanz zwischen Komponenten und Diensten auf sehr elegante Weise: Ein Bundle entspricht nicht einem Service, sondern ein Bundle kann einen oder mehrere Services zur Verfügung stellen [Web+10, S. 24]. Bei Verwendung von Import und Export ermöglicht das OSGi-Framework, mit den Services als Softwareartefakt, eine dynamische Kommunikation innerhalb der Bundles. Wenn in der 8

16 2 Die OSGi-Service-Platform Entwicklung eine statische Kopplung mit Require umgesetzt wird, sind die Vorteile der Services, ihrer Registry und die Reaktion auf Events mit den Listenern hinfällig [Fil12, S. 78 f.]. Einige der Events sind in Abbildung 2.5 dargestellt und sind speziell dem Lebenszyklus eines Bundles bzw. der Objektinstanz, dem Service, zuzuordnen. Alle übrigen Events sind den Kategorien von Fehlermanagement (z. B. ERROR, WARNING oder INFO) oder der erweiterten Package-Verwaltung (z. B. PACKAGES REFRESHED oder WAIT TIMEOUT) zugeordnet [All15c, S. 105 f.]. Der MA nutzt die Service-Registry, um auf Änderungen zu reagieren bzw. diese einzuleiten - dazu mehr in Abschnitt 2.2. Abbildung 2.2: Zusammenhang Bundles und Services [Fil12, S. 78] Die OSGi-Service-Platform bietet ca. 20 Standard-Services für unterschiedliche Anwendungsfälle an. Im Folgenden sind die sechs interessantesten Services erwähnt: [All15d] Log Service - Der Log-Service besteht aus zwei Services: Der LogService ermöglicht das Aufzeichnen eines Protokolls (bestehend aus: Nachicht, Level, Fehlermeldung, Service- Referenz und dem Bundle-Objekt) und der LogReaderService kann die Informationen der gespeicherten Protokolle abrufen [All15d, S. 5]. HTTP Service - Der HTTP-Service ermöglicht dem Entwickler die Standard-Technologien, wie z. B. HTTP, HTML, XML und Servlets, zu nutzen. Dieser Service ist demnach geeignet, um das Abrufen oder Zusenden von Informationen durch den Anwendungsnutzer zu bewerkstelligen [All15d, S. 15]. JDBC Service - Der JDBC-Service bietet eine Schnittstelle, um mittels JDBC (Java Database Connectivity - Standard) mit relationalen Datenbanken zu kommunizieren [All15d, S. 701]. JPA Service - Der JPA-Service dient der Persistenz von Objekten in einer Datenbank. Die JPA (Java Persistence API) bietet dazu die Technik des ORM (Object Relational Mapping) an [All15d, S. 727]. 9

17 2 Die OSGi-Service-Platform IO Connector Service - Der IO-Connector-Service ist eine Kommunikationsinfrastruktur, die auf der Implementierung der J2ME (Java 2 Micro Edition) basiert: Notwendige Kommunikationen werden über den URI (Uniform Resource Identifier) realisiert [All15d, S. 191]. Bis jetzt können die Bundles nur die Funktionalität von Services innerhalb ihrer Laufzeitumgebung nutzen. Mit Einführung des OSGi-Standards 4.2 (März 2010) arrangiert der Remote Service Admin Service die Konnektivität für Distributed Services externer Laufzeitumgebungen in einem Netzwerk [Web+10, S. 19 f.]. 2.2 OSGi-Schichtenmodell Ausgehend von den Begrifflichkeiten der vorherigen Abschnitte sind die Zusammenhänge der Framework-Komponenten, wie in Abbildung 2.3 dargestellt, zu betrachten. Das OSGi- Framework als Basiskomponente der OSGi-Service-Platform ist in mehrere logische Schichten eingeteilt. Abbildung 2.3: OSGi-Schichtenmodell [i.a.a. All15c, S. 2] Die Schnittstelle einer logischen Schicht ist die Menge der exportierten Java-Interfaces der ihr zugehörigen Bundles [Fil12, S. 139]. Bundleschicht: Auch wenn in Abbildung 2.3 die Bundles als unabhängige Komponente eingezeichnet sind, so können sie dennoch auf jede logische Schicht zugreifen und von der Lebenszyklusschicht noch zusätzlich gesteuert werden - siehe Abbildung

18 2 Die OSGi-Service-Platform Abbildung 2.4: Interkation Bundles und Framework-Schichten [Web+10, S. 17] Diensteschicht: Der Diensteschicht sind alle in Abschnitt erörterten Komponenten zugeteilt. Für die Verwaltung und Nutzung der Services verwendet das OSGi-Framework das Publish-Find-Bind-Modell. Die Schnittstellen der Dienste sind Java-Interfaces [Web+10, S. 14 f.]; Lebenszyklusschicht: In der Lebenszyklusschicht wird der Lebenzyklus eines Bundles mit all seinen Zuständen festgelegt. Der MA reguliert bzw. manipuliert die Bundle-Zustände. Abbildung 2.5: Bundle-Lebenszyklus [i.a.a. All15c, S. 86] 11

19 2 Die OSGi-Service-Platform Ein Bundle kann somit nach seiner Installation direkt wieder deinstalliert werden. Andernfalls folgt auf den INSTALLED-Zustand der RESOLVED-Zustand, von dem ausgehend der MA dann das Bundle startet und der Modulschicht als ACTIVE zur Verfügung stellt. Das OSGi-Framework verwirklicht dadurch Hot Deployment - das Aktualisieren, Installieren und Deinstallieren von Bundles und Services während der Laufzeit. Modulschicht: Der Modulschicht sind alle Objektinstanzen der Bundles hinterlegt. Zudem können die vom Bundle benötigten Klassen über den Class-Loader aus der Modulschicht geladen werden. Sicherheitsschicht: Die Funktionalität der Sicherheitsschicht basiert auf der Java-2-Sicherheits- Architektur und ist in Fine-grained (Die Umsetzung von Sicherheit wird von der Anwendung realisiert.), Manageable (Die Tätigkeit wird an die Lebenszyklusschicht delegiert.) und Optional unterteilt. Die OSGi-Service-Platform unterstützt die Authentifizierung von Programmcode nach Herkunft oder einer digitalen Signatur. Der Permission-Admin-Service verwaltet die Berechtigungen auf Basis von Location-Strings, dem Conditional-Permission-Admin-Service unterliegt ein umfangreiches Berechtigungsmodell [All15c, S. 11]. Die Sicherheitsschicht ist vertikal eingezeichnet um den schichten-übergreifenden Wirkungsgrad zu verdeutlichen. 2.3 OSGi-Implementierungen Die OSGi-Service-Platform ist eine Ansammlung von Spezifikationen die ein Komponentensystem mit einer modularen Softwarearchitektur auf Basis der Programmiersprache Java beschreiben [All15e]. Die OSGi-Allianz gruppiert ihre Teilnehmer in (1) Strategic Members, (2) Principal Members, (3) Contributing Associates und (4) Supporters [All15b]. Mitgliedschaft... (1) mit Wahlrecht und Sitz im OSGi-Alliance Ausschuss, aktive Beteiligung an der Weiterentwicklung der Spezifikationen und einer jährlichen Gebühr von USD $ 25,000. (2) mit Teilnahme an Experten-Zirkeln und einer jährlichen Gebühr von USD $ 20,000 ( 250 Beschäftigte) oder USD $ 10,000 ( 249 Beschäftigte). (3) ohne Sitz im Ausschuss oder Teilnahme an Zirkeln, mit technisch-unterstützenden Hintergrund und einer jährlichen Gebühr von USD $ 5,000 (4) mit der Berechtigung das Logo der OSGi-Alliance auf der firmeneigenen Website zu führen. Um die Funktionalität der OSGi-Service-Platform nutzen zu können, sind mehrere Varianten denkbar. Eine Mitgliedschaft in der OSGi-Alliance mit eigener Realisierung und Implementierung der Spezifikationen und anschließender Zertifizierung des Softwareproduktes - intensiv in 12

20 2 Die OSGi-Service-Platform der Investition von Zeit und Finanzen, oder auf bereits zertifizierte kommerzielle oder Open- Source Lösungen zugreifen - eine Mitgliedschaft ist nicht notwendig Eclipse Equinox Eine der bekanntesten Implementierungen des OSGi-Frameworks im Bereich der Desktop- Applikationen ist die Eclipse Equinox - in der Version 3.2 für die OSGi-Service-Platform R4 zertifiziert [All15a]. Für die Eclipse IDE (Integrated Development Environment) stellt die Eclipse Equinox, neben Texteditoren, Compiler und Debuggern, eine Kernkomponente der Anwendung dar [Fou15d]. Equinox besitzt Eigenheiten, wie z. B. das Buddy-Class-Loading und die Extension Points, die in der OSGi-Spezifikation nicht vorgesehen sind [Web+10, S. 33]. Das Buddy-Class-Loading beschreibt einen Mechanismus der es Bundles ermöglich, mit Hilfe von Class-Loadern anderer Bundles, Java-Ressourcen zu binden, die der eigene Class-Loader nicht verknüpfen kann. Die Buddy-Policy beschreibt, für die Auswahl der Helfer-Bundles, fünf Richtlinien [Fou15a]. Extension Points sind Bundle-Schnittstellen die nicht das Konzept der OSGi-Services umsetzen, sondern eigens dafür Schnittstelleninformationen in einer XML-Datei festhalten [Fou15b] Sonstige Neben der Eclipse Equinox existieren noch weitere zertifizierte Lösungen [All15a]: Kommerziell: Makewave Knopflerfish Pro 3 ( ProSyst Software mbedded Server 7 ( Hitachi Solutions SuperJ Engine Framework V4 ( Samsung OSGi R4 Solution ( KT OSGi Service Platform (KOSP) 1.0 ( Open-Source: Makewave Knopflerfish ( Apache Felix Framework ( 13

21 3 openhab Mit openhab bietet die openhab UG (haftungsbeschränkt) - Firmengründung am , Gründungsmitglieder: Kai Kreuzer, Thomas Eichstädt-Engelen und Victor Belov - eine Softwarelösung für die GA und HA an, deren Hauptziel eine herstellerübergreifende Kopplung von Hard- und Software ist. Die openhab UG ist Mitglied der EnOcean Allicance, AllSeen Alliance und Eclipse Foundation. Durch den Einsatz der Programmiersprache Java ist openhab nicht nur plattformunabhängig, sondern kann durch die Verwendung von der Eclipse Equinox auf die dem OSGi-Framework (Abschnitt 2.1) zugrundeliegende Softwarearchitektur zurückgreifen [Uh15e]. Aus Sicht des Endanwenders verfolgt openhab das Prinzip des Intranet Of Things - alle Endgeräte sind im eigenen Netzwerk verbunden und für den lokalen und externen Zugriff durch eine Firewall abgesichert. Die historische Entwicklung von openhab ist wie folgt zu sehen: Trotz seiner Erfahrungen mit MisterHouse (Open-Source Home Automation Software (Perl)) [Con15] für die Steuerung seiner KNX-Komponenten, entscheidet sich Kai Kreuzer im November 2009 zur Entwicklung einer eigenen Softwarelösung für die HA unter dem Namen SmartKNX - wegen evtl. Markenrechtsverletzungen ab Februar 2010 fortan openhab genannt. Er entscheidet sich zudem explizit gegen eine Projektbeteiligung und Weiterentwicklung der OpenRemote (Open Source Automation Platform) [Inc15c]: Seiner Meinung nach, ist durch die dort fortgeschrittene Architecture Erosion die Umsetzung einer zukunftsweisenden Softwarearchitektur nur durch einen Rewrite des Programmcodes zu bewerkstelligen. Für das Build-Management von openhab wird Maven (Software für den Erstellungsprozess von Softwareprodukten) in der Version 3 und das Plugin Tycho verwendet. Drools (Rule Management System Solution der JBoss Community) wird anfänglich als Rule Engine eingesetzt und im Mai 2012 durch eine Kombination aus dem Quartz-Framework, der Xbase (Expression Language für Java implementiert in Xtext) und der Joda-Time Bibliothek ersetzt [Kre15]. Looking back at this evolution of the project, I am perfectly sure that if I had designed openhab as a normal Java application instead of an OSGi application, it would not have prospered as it did. It is really the choice of the software architecture that made it happen [...] [Kre15, 17. Dezember 2012]. 14

22 3 openhab Zu dem Zeitpunkt der von Kai Kreuzer getroffenen Aussage, weist openhab bereits eine zweieinhalbjährige Entwicklung (Release Version 1.0) auf und mit dem Release Version 1.2 (April 2013) veröffentlicht die openhab UG sämtliche Implementierungen zur Kopplung der HA- Produkte von HomeMatic, Philips Hue, DMX und Kouchbachi. Noch im selben Jahr folgen Implementierungen für Z-Wave, EnOcean, Fritz AHA und Tinkgerforge. Mit dem Entwicklungszweig (Release Versionen 2.x) verfolgt openhab den User Comfort, also vorwiegend die Gebrauchstauglichkeit der Software - als Teildisziplin der UX [Kre15]. Die Analyse der Architektur und Programmcode in den Folgeabschnitten basiert auf dem openhab Release Version Architektur Die Abbildung 3.1 zeigt die Softwarearchitektur von openhab und ist in drei Sektionen unterteilt: Die Komponenten des OSGi-Frameworks (grün), die Kernkomponenten (blau) und die Erweiterungen (gelb) von openhab. Abbildung 3.1: openhab Architektur [Uh15i, i.a.a.] OSGi-Framework Komponenten OSGi Runtime: Das Fundament der openhab-software in der Version stellt die Eclipse Equinox in der Version ( ) und die zugehörigen Services in der Version

23 3 openhab dar. Damit alle anderen Architektur-Komponenten die Programmierparadigmen des OSGi- Standards berücksichtigen, stellt jede Komponente eine Plug-in Abhängigkeit zur Eclipse Equinox und den Services her. Mit der Equinox bietet Eclipse nicht nur ein Framework für den OSGi-Standard an, sondern verwirklicht eine Laufzeitumgebung mit folgenden Funktionalitäten [Uh15m, Kreuzer K. et al.]: Die Bereitstellung einer Konsole sowohl für die Eingabe und Interpretation von Kommandos als auch die Ausgabe von Informationen. Die Darstellung allgemeiner Statistiken und Informationen zu aktivierten Bundles und die vom Class-Loader geladenen Klassen. Zudem bietet das Package runtime.internal.stats den Haupteinstiegspunkt für die Protokollierung der Bundle-Aktivitäten. Der StatsManager verbindet die Informationen der Bundles ohne die Bundle-Registry zu beeinflussen. Die Verwaltung von Berechtigungen und Erweiterungen für die Protokollierung der Bundle-Aktivitäten. Eine Protokollierung in Abhängigkeit einzelner Berechtigungen ist dadurch realisierbar. Das Aufstellen einer Trace für eine evtl. Fehlerbeseitigung. Das Einhängen von zusätzlichen Funktionen mittels der Hook-Registry und der Verwaltung der Hooks durch den Hook-Konfigurator (osgi.baseadapter). Einen Event-Manager der mit den Event-Listeners die eintreffenden Events abarbeiten kann. Und weitere Dienstprogramme wie z. B. die Handler von Streams und Multiplexern oder Parser für einzelne Manifest-Elemente ( internal.core oder osgi.util ). Von den ca. 20 Standard-Services des OSGi-Standards verwendet die openhab-software die folgenden fünf Services: Declarative Services: Mit den Declaratice Services stellt der OSGi-Standard ein publishfind-bind -Modell für die Verwendung der Dienste zur Verfügung. Mit dem Modell können Applikationen erstellt werden, die das Arbeiten und die Kommunikation der Bundles untereinander realisieren. Dabei simplifizieren die Declarative Services die Verwaltung der Dienste indem sie die Registrierung und Abhängigkeiten von anderen Diensten übernehmen. In dem Modell übernimmt die Service Component Runtime die Instanziierung der Components und die Kontrolle der Component Configuration(s) [All15d, S. 245 f.]. Die einzelnen Klassen bzw. Schnittstellen für dieses Modell sind in den Packages org.osgi.service.component und org.osgi.service.component.annotations wiederzufinden. Zwar importieren die Action-, Binding- und Core-Komponenten der openhab-software die Declarative Services durch die Import-Package Angabe in ihrem Manifest, dennoch nutzt nur die Twitter-Action, das IHC (Intelligent Home Control) -, KNX-, PulseAudio- und das Withings-Binding und die Core-Komponente den ComponentContext um die Services zu (de- 16

24 3 openhab )aktivieren und eine Protokollierung vorzunehmen. Alle übrigen Komponenten implementieren nur den Configuration Admin Service. Logback/SLF4J: Der Logback/SLF4J - Dienst ist in [All15d, S. 5 f.] unter der Bezeichnung Log Service wiederzufinden und wird bereits in Abschnitt erörtert. Die Klasse OSGILogListener, als Bestandteil der Core-Komponente, implementiert den LogListener und LogReaderService und dient als Adapter um die Protokolleinträge an die SLF4J (Simple Logging Facade for Java) zu delegieren [QOS15]. 1: private static class NLogListener implements LogListener { 2: public void logged ( LogEntry entry ) { 3: Logger logger = LoggerFactory. getlogger (" OSGi "); 4: Marker marker = MarkerFactory. getmarker ( entry. getbundle (). getsymbolicname ()); 5: switch ( entry. getlevel ()) { 6: case LogService. LOG_DEBUG : logger. debug ( marker, entry. getmessage (), entry. getexception ()); break ; 7: case LogService. LOG_INFO : logger. info ( marker, entry. getmessage (), entry. getexception ()); break ; 8: case LogService. LOG_WARNING : logger. warn ( marker, entry. getmessage (), entry. getexception ()); break ; 9: case LogService. LOG_ERROR : logger. error ( marker, entry. getmessage (), entry. getexception ()); break ; 10: } 11: } 12: } Quelltext 3.1: Ausschnitt - OSGILogListener.class - Delegation an den SLF4J-Logger [Uh15m, Kreuzer K.] Event Admin: Der Event Admin Service ermöglicht die Kommunikation zwischen Bundles auf Grundlage eines Event-Publish-Subscribe - Modells. Für die Kommunikation sendet der Event Publisher mithilfe des Event Admin Service einen Event an den Event Handler der wiederum das Event an den Event Comsumer weiterleitet [All15d, S. 295 f.]. In der openhab-software implementiert die Core-Komponente in der EventPublisherImpl - Klasse einen solchen Event Publisher der dann mit dem Event Admin Service und der sendevent -Methode das Event für den spezifischen Event Comsumer (Binding) ausruft [Uh15m, Kreuzer K.]. Um ein Bindung als Event Consumer zu deklarieren, muss neben dem Import im Manifest auch die Referenz zum Event Publisher in der XML-Datei des OSGI-INF Ordner angegeben werden. Das Event-Publish-Subscribe - Modell ist somit exakt einmal in der openhab-software implementiert: Die Core-Komponente stellte eine zentrale Broadcast-Einheit dar und leitet die 17

25 3 openhab eintretenden Ereignisse an die Bindings weiter. Die openhab UG tituliert dieses Modell und dessen Implementierung als openhab Event Bus [Uh15i]. Configuration Admin: Der Configuration Admin Service ermöglicht die Konfiguration von installierten ManagedService(s). Damit notwendige Änderungen in der Konfiguration eines ManagedService bereits vor Aktivierung durch den MA vorliegen, reagiert der Configuration Admin Service sofort auf eingehende Kommandos [All15d, S. 57]. In der openhab- Software ist der Configuration Admin Service als eigenständiges Binding (configadmin) in der Klasse ConfigAdminBinding implementiert. Bei Aufruf der bindingchanged -Methode wird die Konfiguration für den entsprechenden ManagedService angepasst [Uh15m, Eichstädt- Engelen T.]. Als ManagedService sind in der openhab-software alle Bundles (Action, Binding, Persistence, etc.) gekennzeichnet, die die Service-Schnittstelle in der XML-Datei im OSGI-INF Ordner und im Manifest auflisten und zudem die updated -Methode der ManagedService -Schnittstelle implementieren. HTTP Service: Der HttpService wird überall dort eingesetzt wo die Bundles die Standardtechnologien wie z. B. HTTP, HTML, XML oder Servlets nutzen möchten. Der HTTP Service registriert mit dem HttpContext die Servlets, in denen dann auf den geforderten Request ein Response folgt [All15d, S. 15 f.]. In der openhab-software wird der HTT- PService primär in der Klasse RESTApplication des REST-Bindings umgesetzt [Uh15m, Kreuzer K.]. Für die Realisierung nutzt openhab den Web-Server und Servlet-Container von Jetty in der Version [Fou15c] und das Jersey Framework für die RESTful Web-Services in der Version [Cor15] ein. Neben dem REST-Binding implementiert z. B. das Weather- Binding den HttpService und nutzt den Servlet-Container um die Wetterinformationen darzustellen openhab Kernkomponenten openhab Core: Der openhab Core ist die Kernkomponente der openhab-software und implementiert den Event Admin Service um eingehende Ereignisse weiterzuleiten und eine Kommunikation der Bundles zu ermöglichen. Neben dieser Kernfunktionalität bietet der open- HAB Core die Dienste an, die es Bundles erlauben selbst auf eingehende Events zu reagieren, z. B. das Wake-on-Lan-Binding sendet bei Ausführung der receivecommand -Methode das zum Wecken entfernter Clients notwendige Paket. Ein weiterer Dienst ist die ItemRegistry. Sie dient als zentrale Stelle um die Items (Elemente aktiver Bundles) und ihre Status in einer ConcurrentHashMap im flüchtigen Speicher der Laufzeitumgebung abzulegen. Die Items können hinzugefügt, initialisiert und aus der Registry entfernt werden. Neben den oben und in Abschnitt genannten Realisierungen der OSGi-Services bietet der openhab-core weitere Features an [Uh15m, Kreuzer K. et al.]: 18

26 3 openhab Der PersistenceManager dient der persistenten Speicherung der Items und deren Status in Verbindung mit einer Datenbank-Software (z. B. db4o, rrd4j, mysql und mongodb) [Uh15n]. Das AutoUpdate -Feature ermöglicht es Bundles automatisch auf eingehende Änderungen zu reagieren (openhab.core.autoupdate). Der SchedulerActivator ist eine Erweiterung des OSGi-Bundle-Activator der in Verbindung mit dem Bundle-Context steht. Um geplante Jobs rechtzeitig oder in gewissen Zeitabständen abzuarbeiten, verwendet die openhab-software den Quartz-Scheduler in der Version [Inc15e] Die openhab-skripte sind wiederverwendbare Zusammenstellungen von openhab-regeln und werden in Abschnitt beschrieben. Um diese Skripte auszuführen stellt der openhab-core eine Script-Engine zu Verfügung (openhab.core.scriptengine). Da die openhab-skripte in Xtend (flexibler und expressiver Dialekt von Java) geschrieben sind, verwendet der openhab-core zur Komposition und dem Parsen der Skripte das Xtext- Framework in der Version [Uh15q]. Letztendlich bietet der openhab-core neun unterschiedliche Transformation-Services an, um eingehende Dokumenttypen zu verarbeiten (z. B. JavaScript, JSonPath, Map, RegEx, XPath oder Xslt). openhab Base Library: Zu der openhab Base Library gehören alle Funktionalitäten die unter dem openhab-core als Features aufgelistet sind. Zwar liegt in der Darstellung der Architektur eine Trennung zwischen diesen beiden Komponenten vor, programmatisch sind diese Features jedoch als Subpakete des openhab-core aufzufassen. openhab Repository: In [Uh15i] wird das openhab Repository als Softwarekomponente beschrieben, die mit dem openhab Event Bus, der Automation Logic und dem User Interface interagiert. Das openhab Repository ist eine Schnittstelle die in der openhab- Software als ModelRepository wiederzufinden ist (org.opehab.model.core). Neben einer Implementierung im REST-Binding ist das ModelRepository im PersistenceManager und den Klassen zur Erzeugung der Benutzeroberfläche (org.openhab.ui) realisiert. openhab REST Service - Der openhab Rest Service ist das REST-Binding (openhab.io.rest) welches den OSGi-HTTP-Service implementiert openhab Erweiterungen openhab Add-on Libraries: Da in [Uh15i] keine weiteren Informationen vorliegen, welche Komponenten der openhab-software den openhab Add-on Libraries zugehörig sind, ist anzunehmen, dass die nach dem Ausschlussverfahren verbleibenden Bundles (org.openhab.io.*) den erweiterten Bibliotheken zuzuordnen sind [Uh15m, Kreuzer K. et al.]: 19

27 3 openhab.console - Eine Schnittstelle für eine Konsole die mithilfe des Interpreters einfache Kommandos (items, send, update, status, say und >) umsetzt..cv - Hier sind alle Schnittstellen der Web-basierten Echtzeitvisualisierung CometVisu wiederzufinden [May15]..dropbox - Ermöglicht die Nutzung des Filehosting-Dienst Dropbox. Zur Realisierung wird das Dropbox Core SDK (Software Development Kit) in der Version verwendet [Inc15a]..gcal - Es können Google Kalender Einträge heruntergeladen und dazu genutzt werden um mit dem Quartz-Scheduler die relevanten Aktionen durchzuführen [Uh15f].gpio - Eine Implementierung des Linux GPIO Frameworks [Uh15g]..multimedia.* - Hierunter fallen die TTS (Text-To-Speech) Dienste wie z. B. der Google Translate Service, die PlainTalk für Mac OS und MaryTTS die genutzt werden können um openhab mit der eigenen Stimme zu kontrollieren [Uh15c]..net - Dieses Paket enthält Realisierungen um z. B. in openhab-skripten die Konsolen- Kommandos oder einen HTTP-Request auszuführen..servicediscovery - Eine Realisierung des Netzwerkprotokoll mdns (multicast Domain Name System) bei Verwendung der JmDNS Implementierung in der Version [JmD15]..squeezeserver - Der Squeezeserver regelt die Kommunikation zwischen der openhab- Software und den Netzwerk-Musikplayern Squeezebox [Uh15r]. openhab User Interfaces: Grundsätzlich bietet die openhab UG sowohl Mobile- als auch Desktop-UIs (User Interfaces) an. Zu den Mobile-UIs existieren für die Betriebssysteme Android, ios und Windows Phone eigenständige Applikationen. Für die Standard-Desktop-UI wird das WebApp.Net Framework eingesetzt, ansonsten kann eine UI auch als GreenT (Sencha JavaScript Framework) oder mit CometVisu gestaltet werden [Uh15s]. Um die Gestaltung der UI für den Endanwender möglichst einfach zu halten, wird die Konfiguration über die deklarativen UI-Definitionen der Sitemaps realisiert. Die Sitemaps sind wie die Skripte in Xtext geschrieben [Uh15d]. Für die Darstellung bzw. Übertragung der Dokumente an die Clients wird der Servlet-Container des Webservers Jetty in der Version [Fou15c] verwendet. openhab Automation Logic: Als die openhab Automation Logic ist ein Zusammenspiel der Script-Engine und der Scheduler zu bezeichnen. Also die Verarbeitung der openhab-regeln bzw. openhab-skripte bei Verwendung des Quartz-Scheduler. Obwohl Kai Kreuzer anfänglich dieses Zusammenspiel als die perfekte Funktionseinheit tituliert,... Xtext + Xbase + Quartz + Joda Time = Perfect Rule Engine [Kre15, 20. Mai 2012].... stehen für die openhab-software Versionen 2.x die IFTTT (If This Then That) Rezepte als alternative Nutzung zu Auswahl [Inc15b]: 20

28 3 openhab Its vision is to make rule (or parts of them) easily sharable and reusable by others. Again, this should empower average users to set up automation logic through simple UIs - think of something like IFTTT. [Kre15, 24. November 2014] openhab Protocol Bindings: Ein openhab Protocol Binding ist eine konkrete Implementierung eines OSGi-Bundles für eine Technologie bzw. ein Protokoll. Derzeitig verfügt die openhab-software über mehr als 120 Bindings. Repräsentativ für die Umsetzung namhafter Protokolle steht das DMX-, EnOcean-, FritzBox-, FS20-, HomeMatic-, Hue-, KNX-, Koubachi-, SamsungTV-, XBMC- und ZWave-Binding [Uh15i]. Exemplarisch soll die Implementierung des Hue-Binding genauer betrachtet werden. Abbildung 3.2: UML-Klassendiagramm des Philips Hue-Bindings Die Abbildung 3.2 zeigt das UML-Klassendiagramm des Philips Hue-Bindings. Aufgrund der Komplexität sind in dem Diagramm keine Attribute oder Methoden dargestellt. Die HueBinding - Klasse ist die zentrale Komponente des Bindings. Sie verwirklicht die Schnittstellenfunktionalität des HueBindingProvider und des ManagedService um die registrierten Hue-Items (Lampen) aufzulisten und auf mitgeteilte Änderungen der Konfiguration durch den Configuration Admin Service zu reagieren. In der HueBinding -Klasse interpretiert die execute - Methode die eingehenden Events (Licht an/aus, Lichtintensität, Farbe), informiert den Event Publisher und nimmt die Änderungen an der Konfiguration vor [Uh15m, Hartmann R., Schering J.]. Der folgende Quelltext zeigt einen Ausschnitt der execute -Methode indem die Lichtintensität einer Lampe reguliert wird. 1:... 2: if ( deviceconfig. gettype (). equals ( BindingType. brightness )) { 3: if (( bulb. getison () == true ) && ( bulb. getisreachable () == true )) { 21

29 3 openhab 4: // Only postupdate when bulb is on, otherwise dimmer item is not retaining state and shows to max brightness value 5: PercentType newpercent = new PercentType (( int ) Math. round (( bulb. getbrightness () * ( double ) 100) / ( double ) 255) ); 6: if (( deviceconfig. itemstatepercenttype == null ) ( deviceconfig. itemstatepercenttype. equals ( newpercent ) == false )) { 7: eventpublisher. postupdate ( hueitemname, newpercent ); 8: deviceconfig. itemstatepercenttype = newpercent ; 9: } 10: } 11:... Quelltext 3.2: Ausschnitt der execute -Methode der HueBinding -Klasse [Uh15m, Hartmann R., Schering J.] Vor der Ausführung des Events ist eine Plausibilitätsprüfung der HueSettings vorangestellt, die möglichen Aufschluss über eine fehl-konfigurierte bzw. nicht initialisierte Hue-Bridge gibt. Ein Objekt der HueBulb -Klasse stellt eine konkrete Lampe dar und bietet zahlreiche Methoden an, um die Lampen-Parameter einzustellen oder auszulesen. Die SsdpDiscovery -Klasse wird dazu verwendet, die IP-Adresse der Hue-Bridge aufzulösen. Die HueActivator -Klasse ist eine Implementierung des OSGi-Bundle-Activator und stellt eine Protokollierung für die start - und stop -Methode des Bundle-Lebenszykluses dar [Uh15m, Hartmann R., Schering J.]. openhab Item Provider: Der openhab-core bietet die ItemProvider -Schnittstelle an, die in der GenericItemProvider -Klasse implementiert wird. Der openhab Item Provider kann Items aus den Konfigurationsdateien (*.items) erstellen, in der Item-Factory abspeichern und verwalten. Neben logischen Verknüpfungen (AND, OR, NAND und NOR) kann der openhab Item Provider auch einige Aggregatfunktionen (AVG, SUM, MIN und MAX), für Items die einer Gruppe angehören, ausführen [Uh15m, Kreuzer K., Eichstädt-Engelen T.]. 3.2 openhab Runtime Der openhab Runtime werden in [Uh15i] alle in Abschnitt 3.1 beschriebenen Komponenten der Architektur zugeordnet. Um dem Endanwender eine ausführbare Software für die Betriebssysteme Windows, Mac OS X und Linux anzubieten, wird die Build-Management Software Maven 3 eingesetzt. Dabei wird die Versions- und Abhängigkeitsverwaltung der Bundles in den XML-Files (pom.xml) festgelegt [Kre15, 27. April 2008]. Letztendlich steht dem Endanwender 22

30 3 openhab eine Software zu Verfügung die er in den in [Uh15h] beschrieben Schritten auf seinem Betriebssystem installieren kann. Die dort aufgeführten Addons sind die Jar-Archive der Bindings und müssen explizit vom Endanwender installiert und konfiguriert werden. Für den schnellen Einstieg bietet die openhab UG einen Demo-Setup inklusive Sitemap und Items an. 3.3 openhab Designer Der openhab Designer ist eine Eclipse RCP (Rich Client Platform) Desktop-Applikation die für die Konfiguration der openhab Runtime genutzt werden kann. Die Funktionalität der Applikation ist zu vergleichen mit der eines einfachen Text-Editors der zusätzlich eine Syntaxüberprüfung, Syntaxhervorhebung und Autovervollständigung für die Sitemaps, Items, Skripte und Regeln anbietet [Uh15i]. 3.4 Automation Die in Abschnitt getroffenen Aussagen zur openhab Automation Logic sollen durch eine Betrachtung der Umsetzung von Skripten, Regeln und Aktionen weitergehend verdeutlicht werden Regeln, Skripte und Aktionen Regeln: Die Regeln sind eine der wichtigsten Komponenten um die openhab-software nicht nur als zentrale Web-basierte und herstellerübergreifende Verwaltungstelle sondern als Heimautomatisierungssoftware zu bezeichnen. Die Regeln dienen der Automatisierung von Hardwarekomponenten und Web-Technologien. In den Regeln wird z. B. definiert, dass Fenster geschlossenen und Rollläden heruntergelassen werden, wenn durch die am Haus angebrachte Sensorik schlechtes Wetter signalisiert bzw. triggert wird. Die Regeln sind in Xtext verfasst und deren Aufbau und Strukturblöcke gleichen denen von Java-Dateien: 1. Import, 2. Variablen-Deklarationen und 3. Regeln (when-then-block). Um Regeln auszulösen bietet die openhab-software drei unterschiedliche Varianten von Triggern an [Uh15p]. Dabei können Regeln ausgeführt werden wenn sich der Status eines Items geändert hat oder selbiges ein Kommando erhält (itembased.... eine Uhrzeit erreicht ist oder der mit dem Quartz-Scheduler definierte Ausdruck zutrifft (time-based). 23

31 3 openhab... die openhab-software gestartet oder gestoppt wird (system-based). Skripte: Die Skripte sind in Xtend geschrieben und dienen dazu redundanten Programmcode in den Regeln zu vermeiden. Sie werden innerhalb des Then-Blocks einer Regel aufgerufen - vergleichbar mit einem Methodenaufruf jedoch ohne Ein- und Ausgabeparameter [for15, Eichstädt-Engelen T. al. teichsta]. Aktionen: Die Aktionen sind Java-Methoden deren Funktionalität den Regeln und Skripten zur Verfügung steht. Die openhab-runtime bietet bereits Aktionen an [Uh15a]: Die dem openhab Event Bus zugehörigen Aktionen zum Senden eines Events, aktualisieren eines Item-Status und speichern oder wiederherstellen von Status eines oder mehrerer Items. Alle audio-relevanten Aktionen für die Steuerung der Lautstärke, das Abspielen von Audio-Dateien oder Streams und die TTS-Wiedergabe. Und zudem Aktionen zur Protokollierung und für die Ausführung eines HTTP-Request oder einem Befehl auf der Konsole. Die oben aufgelisteten sind die Aktionen die nach der Installation der openhab Runtime serienmäßig verfügbar sind. Alle weiteren Aktionen müssen vom Endanwender als Add-on nachinstalliert werden - hierzu zählen [Uh15a]: Die Aktionen um SMTP (Simple Mail Transfer Protocol) Dienste zu nutzen oder eine Kommunikation mit dem XMPP (Extensible Messaging and Presence Protocol) zu realisieren. Und zudem Aktionen um Nachrichten an ios oder Android Geräte zu schicken Jobmanagement Für das Jobmanagement wird der Quartz-Scheduler eingesetzt. Der Quartz-Scheduler kann Trigger erzeugen die einem Job zugeordnet und planmäßig ausgelöst werden. Für die planmäßige Ausführung bietet der Quartz-Scheduler die Cron-Expressions an [Inc15f]. In den Regeln sind sie den time-based Triggern zuzuordnen. Zudem werden die Cron-Expressions in der Konfiguration der Persistenz verwendet [Uh15n]. 3.5 Bindings Ein openhab-binding ist eine konkrete Implementierung die auf der Struktur eines im Abschnitt und beschriebenen Bundles basiert: 24

32 3 openhab As openhab allows adding support for a new system by implementing a single OS- Gi bundle (a so-called binding ), we have seen a great activity in the community during the past months [Kre15, 17. Dezember 2012] Bei Instanziierung der Bundles (openhab-bindings) können die Services über die Java-Interfaces genutzt und über die Methoden des Lebenszykluses modifiziert werden (start, stop, de-activate). 3.6 Persistenz Mit den Persistenz-Bindings der openhab-software kann der Endanwender die Status der Items speichern - eine Koexistenz mehrerer Persistenz-Bindings ist möglich. Da lediglich die Status der Items persistiert werden, ist keine Erfahrung in der SQL (Structured Query Language) notwendig. Die Persistenz-Logik ist in den Dateien (*.persist) abgelegt und in zwei Sektionen unterteilt: Die Strategien-Sektion in denen die Trigger zur Speicherung eines Items aufgeführt und die Items-Sektion in denen die Items mit zugehöriger Strategie aufgelistet sind. Die SQL wird in den Bindings realisert und bleibt dem Anwender verborgen. Die derzeitig unterstützen Datenbank-Dienste sind [Uh15n]: DB4o ( RRD4J ( MySQL ( MongoDB ( Open.Sen.Se ( InfluxDB ( und JPA In der Implementierung des MySQL-Bindings wird z. B. automatisch die Konnektivität zur MySQL-Datenbank hergestellt und die Tabelle Items angelegt. Auf Anfrage werden die Items mit ihrem Namen abgespeichert. Des Weiteren werden die openhab-typen auf die MySQL-Datentypen abgebildet. 1:... 2: public void activate () { 3: // Initialise the type array 4: sqltypes. put (" COLORITEM ", " VARCHAR (70) "); 5: sqltypes. put (" CONTACTITEM ", " VARCHAR (6) "); 6: sqltypes. put (" DATETIMEITEM ", " DATETIME "); 7: sqltypes. put (" DIMMERITEM ", " TINYINT "); 8: sqltypes. put (" GROUPITEM ", " DOUBLE "); 25

33 3 openhab 9: sqltypes. put (" NUMBERITEM ", " DOUBLE "); 10: sqltypes. put (" ROLERSHUTTERITEM ", " TINYINT "); 11: sqltypes. put (" STRINGITEM ", " VARCHAR (20000) "); 12: sqltypes. put (" SWITCHITEM ", " CHAR (3) "); 13: } 14:... Quelltext 3.3: Ausschnitt des MySQL-Services - Datentypen [Uh15m, Sjöstrand H., Eichstädt- Engelen T., Jackson C.] Für jedes openhab-item, das in der Item-Sektion aufgelistet ist, legt openhab automatisch eine Tabelle an, in der die Entitäten der Items als (Time, Value)-Paare gespeichert sind. Der Endanwender hat somit keinen Einfluss auf die Tabellenstruktur oder Aufbau der Entitäten. 3.7 Sonstiges Neben den in Abschnitt erörterten Transformation-Services, dem REST-Binding und den TTS Diensten in Abschnitt 3.1.3, bietet die openhab-software die Integration von derzeitig neun Applikationen an [Uh15b]. Erwähnenswert ist das Astersik Framework ( für die Umsetzung von IP PBX (Private Branch Exchange) Systemen und VoIP Gateways und das ROS (Robot Operating System) ( 26

34 4 Bewegungserkennung von Personen In Kapitel 3 wird erörtert, inwieweit openhab die Programmierparadigmen des OSGi-Standards aus Kapitel 2 umsetzt bzw. verfolgt. Auf dieser Wissensbasis aufbauend, soll nun ein realitätsnahes Anwendungsszenario aus dem Bereich der Bewegungserkennung erarbeitet werden, welches Hardwarekomponenten unterschiedlicher Hersteller einsetzt und somit eine herstellerübergreifende HA bzw. GA beim Einsatz von openhab realisiert. Dazu wird in den Folgeabschnitten neben dem Aufbau, eingesetzter Hard- und Software auch die Implementierung und die eigentliche Durchführung des Szenarios beschrieben. Eine detaillierte Ergebnisauswertung und alternative Lösungsansätze sind in Kapitel 5 - Ergebnisse und Alternativen wiederzufinden. Zwar ist das hier beschriebene Szenario explizit auf die Bewegungserkennung von Personen zugeschnitten, dennoch ist eine Detektion der Bewegung von Tieren oder Gegenständen bei den eingesetzten Technologien und Verfahren gleichermaßen anzuwenden. Neben möglichen Anwendungsbereichen der Bewegungserkennung von Personen in Zweckbauten, wie z. B. die Überwachung von Arbeitnehmern in Bürogebäuden oder die Auswertung von Verbraucherverhalten in Einkaufszentren, verfolgen die Einsatzbereiche im privaten Wohnungsbau eine effiziente Steuerung der Hausautomatik, eine Angriffserkennung und eine Gesundheitsvorsorge der Personen [vgl. Han+14, S. 271; Kos+12, S. 181]. So wird z. B. beim Betreten/Verlassen einer Räumlichkeit das Licht automatisch an/aus geschaltet, das Eindringen von unerwünschten Personen oder ein kritischer Gesundheitszustand frühzeitig erkannt und hilfestellende Maßnahmen eingeleitet. Die Erkennungssysteme für die erwähnten Anwendungsbereiche sind in zwei Klassen zu unterteilen - (1) device-based und (2) device-free. [Han+14] unterscheidet vier Klassen die (1) und (2) wie folgt zuzuweisen sind: (1) device-based - Hierunter fallen die Systeme, bei denen die notwendige Sensorik zur Bewegungserkennung direkt an den Personen angebracht ist. a) wearable sensor based - [Har13] zeigt Systeme, die eine Sensorik an Händen, Füßen oder am Oberkörper der Personen vorsehen. Die INSs (Inertial Navigation Systems) verwenden neben Trägheits- und Beschleunigungssensoren auch Gyroskope und Magnetometer, die neben der Lokalisierung auch eine Navigation ermöglichen - die SHSs (Step-and-Heading Systems) nutzen zudem Barometer und Funkschnittstellen. Zwar liegt der Fokus der 27

35 4 Bewegungserkennung von Personen Anwendung dieser Systeme in der Lokalisierung und der Navigation von Personen, eine Bewegungserkennung ist aber durch eine mehrfache Lokalisierung gegeben. b) smart-{phone watch} based techniques - Diese Systeme gleichen den wearable sensor based Systemen. Einziger Unterschied ist, dass die vorliegende Infrastruktur nicht erweitert, sondern auf die vorhandene Sensorik von Smartphone oder Smartwatch zurückgegriffen wird - Je nach verwendeten Endgerät stehen Barometer, Bluetooth, WLAN, GPS, Gyroskop, Beschleunigungs- und Helligkeitssensor zur Auswahl. [Iwa+13] zeigt einen Lösungsansatz der auf der Wi-Fi Sensorik beruht. (2) device-free - Die Bewegung wird anhand von Sensoren erkannt, die nicht von Personen mitgeführt werden, sondern explizit in der Räumlichkeit verbaut bzw. installiert sind. a) vision based - Für die Bewegungserkennung werden Bilder von hochauflösenden Kameras ausgewertet. Die Präzision der Systeme reicht bis hin zur fingergenauen Gestenauswertung [Uts+02]. b) ambient device based - Diese Systeme benötigen fest installierte Bewegungs-, oder Präsenzmelder, werten Audio-Signale von Mikrofonen oder Daten von Piezo-Sensoren aus. [Alw+06] beschreibt ein Verfahren zur Erkennung von gestürzten Personen beim Einsatz von Piezo-Sensoren und deutet zudem auf eine mögliche Auswertung der Fortbewegung von Personen hin. Für (1) ist nachteilig zu erwähnen, dass - bis auf ein evtl. vorhandenes Smartphone - alle Endgeräte und Sensoren explizit für den Anwendungsfall erworben werden und zu jeder Zeit an der Person angebracht sein müssen - was auf Dauer eine hohe Belastung für die Person darstellt. Die Klasse device-free besitzt neben den hohen Anschaffungskosten weitere Defizite, die eine korrekte Bewegungserkennung verhindern: Die vision based Systeme scheitern oft an der notwendigen LOS (Line-Of-Sight) zur Person (z. B. tote Ecken / Winkel), sind nur auf bestimmte Räumlichkeiten des privaten Wohnraums begrenzt oder können nicht in der Dunkelheit ausgewertet werden. Bei (1b) bedarf es zudem einer Planung vor Fertigstellung der Lokalität - z. B. die Piezo-Sensoren werden meist vor Montage des Fußboden installiert. Somit ist für die Einrichtung der obigen Systeme die vorhandene Infrastruktur zu erweitern. Grundsätzlich könnten diese Systeme für eine korrekte Szenariodurchführung angewendet werden, dennoch soll aufgrund der genannten Defizite die Klasse (2) um rf device based Systeme ergänzt und für das in diesem Kapitel beschriebene Szenario verwirklicht werden: Darunter fallen alle Systeme, die keine Sensorik an den Personen vorsehen, einen funkbasierten Ansatz (Radiowellen) verfolgen und die vorhandene Infrastruktur nutzen. Die Radiowellen benötigen keine direkte LOS zu den Personen [Kos+12, S. 181] und die Auswertung der Bewegungserkennung kann auf bereits installierten WAPs (Wireless Access Points) des konfigurierten WLAN stattfinden. Stellvertretend für die eingeführte Klasse stehen folgende Ansätze: In [Han+14] wird WiFall vorgestellt - ein System das den Sturz einer Person mit 87% Wahrscheinlichkeit 28

36 4 Bewegungserkennung von Personen erkennt und eine Fehlerrate von 18% besitzt [Han+14, S. 278]. Zwar unterscheidet die referenzierte Literatur die Falltypen in Fallrichtungen, Endpositionen und Rotationen [Nou+07, S. 1665], WiFall zeigt jedoch keine typenspezifische Auswertung die Aufschluss über die erzielte Ungenauigkeit und Fehlerraten geben könnte. Ein weiteres System ist RASID, das die Erkennung einer Bewegung anhand der aufgezeichneten RSSI (Received Signal Strength Indicator) im WLAN realisiert [Kos+12]. In [Kos+12, S. 182 ff.] wird statistischer Mittelwert und Varianz der gemessenen RSSI zur Berechnung verwendet. Weitere Erkenntnisse der Auswirkung der menschlichen Bewegung auf die Varianz der RSSI wird in [EK+11] gezeigt. In [Kas+12] wird die Implementierung eines Systems vorgestellt, das die Präsenz von Vehikel erkennt und deren Geschwindigkeit abschätzen kann. Die oben genannten Systeme sehen neben dem zentralen Leitrechner zumeist einen Rechner für die Auswertung der gemessenen RSSI vor, d.h. die Analyse der Bewegungserkennung wird nicht direkt von einem WAP übernommen. Für die Realisierung des Projektziels soll ein rf device based System umgesetzt werden, das in Verbindung mit openhab ein Szenario der herstellerübergreifenden HA bzw. GA kennzeichnet. 4.1 Eingesetzte Hard- und Software Die Abbildung 4.1 zeigt die im Projekt eingesetzte Hard- und Software, die in diesen Abschnitt genauer betrachtet wird. Der Kontext für die Implementierung bei Verwendung der Software ist in Abschnitt 4.3 beschrieben. Im Top-Down-Ansatz der Automatisierung ist die Lex Uno Station als zentraler Leitrechner anzusehen [Gmb15c]: Hardware: Der Leitrechner verfügt über ein Mainboard UNO-3I270D-V4G-H16-00 mit einer Intel Atom NN Ghz CPU, 1GB DDR2 SDRAM, einer VGA, einer SATA (128GB Intenso SSD) und vier Realtek GB LAN Schnittstellen. Software: Das installierte Betriebssystem ist Ubuntu Desktop in der Version (i386). Die für den Einsatz der openhab-software eingesetzte Laufzeitumgebung ist OpenJDK-Java-7. Sowohl die openhab-runtime, der openhab-designer als auch die zugehörigen Bindings org.openhab.binding.{hue, http}, org.openhab.persistence.{rrd4j, mysql} liegen in der Version vor. Für die Ausführung der Skripte werden sshpass und die Bash-Shell genutzt. Die erste herstellerabhängige Hardwarekomponente ist das Philips Hue Living-Colors Bloom Starter Kit [V15]: Hardware: Die Hue-Bridge (1xLAN) dient als Controller für die Hue Bloom Leuchten. 29

37 4 Bewegungserkennung von Personen Software: Zur Kommunikation des Controllers mit den Leuchten, implementiert das Produkt die ZigBee Spezifikation als Erweiterung der IEEE Norm. Als letzte Hardwarekomponente werden für das Szenario zwei TP-Link WLAN Router N750 (Model TL-WDR4300 Version 1.7) eingesetzt [wik15a]: Hardware: Die Router sind mit einer Atheros AR9344 CPU mit 560Mhz, 8MB ROM, 128MB RAM, vier LAN, einem WAN, zwei USB 2.0 und zwei Radios (Atheros AR9344 bgn, AR9580 an) ausgestattet. Software: Statt der TP-Link Firmware wird auf beiden Routern das OpenWrt Betriebssystem Barrier Breaker in der Version installiert [wik15b]. Auf dem Sender wird das Paket mgen (Multi-Generator) und auf dem Receiver werden die Pakete tcpdump (inkl. libpcap) und luasocket installiert. In der Grundinstallation von OpenWrt ist der Lua (Imperative und funktionale Skriptsprache) Interpreter verfügbar. Abbildung 4.1: Eingesetzte Hard- und Software [ope15] 4.2 Installation und Konfiguration Nach Installation des Ubuntu-Betriebssystems und der Laufzeitumgebung auf dem Leitrechner, ist die openhab-software nach den in [Uh15h] beschriebenen Schritten zu konfigurieren. Im Anhang sind die notwendigen Zeilen für eine openhab und Hue-Bridge Konfiguration aufgelistet. Die genannten Bindings sind im Ordner addons hinterlegt. Für den Start von openhab ist das Shell-Skript (start.sh) auszuführen. Alternativ kann openhab auch zeitgleich 30

38 4 Bewegungserkennung von Personen mit dem Systemstart von Ubuntu initialisiert werden [Uh15k]. Für die Steuerung der Hue- Leuchten über die Hue-Bridge ist keine weitere Konfiguration notwendig. [wik15b] beschreibt die Installation von OpenWrt auf den WAPs und beinhaltet die Benutzeroberfläche Luci. Nach dem ersten Start der WAPs ist für beide ein Systempasswort via Telnet (Teletype Network) zu vergeben. Um den Zugriff mittels SSH (Secure Shell) zu ermöglichen, müssen folgende Einstellungen vorgenommen werden: 1. Die Firewall-Regeln des WAN (Wide Area Network) -Port anpassen, d.h. sowohl eingehender als auch ausgehender Verkehr muss akzeptiert werden (Luci:Network/Firewall). 2. Der SSH-Zugriff ist auf den WAN-Port einzustellen und der SSH-Key zu hinterlegen (Luci:System/Administration). 3. Die WAPs über den WAN-Port anschließen. Für die Konfiguration der Funkschnittstellen sind die Konfigurationsdateien wireless und network, wie in Anhang und für den Receiver und in Anhang und für den Sender dargestellt, anzupassen. Alternativ kann eine Konfiguration der Schnittstellen auch über die Benutzeroberfläche erfolgen (Luci:Network/Interfaces und Network/Wifi). Letztendlich kommunizieren beide WAPs über ein Ad-hoc-Netz auf dem 2.4 GHz-Frequenzband, wobei der Receiver, der eine Bewegung bei Auswertung der RSSI erkennen soll, im Vergleich zum Sender noch über eine virtuelle Funk-Schnittstelle im Monitor-Mode verfügt, um den eingehenden Netzwerk-Verkehr zu analysieren. Um die Kommunikation im Ad-hoc-Netz aufrechtzuerhalten, senden die WAPs die Beacon Frames zum Kommunikationspartner. Da für die spätere Szenariodurchführung analysiert werden soll, inwieweit die Güte der Bewegungserkennung von der Anzahl der analysierten Pakete abhängt, erzeugt der Sender auf Anfrage weiteren UDP (User Datagram Protocol) Verkehr. Der Anhang zeigt ein Multi-Generator Skript, das exemplarisch zehn weitere UDP-Pakete pro Sekunde an den Receiver verschickt. Die dann auf dem Receiver durch tcpdump gesnifften Pakete werden an die Lua-Skripte zur Auswertung weitergereicht. Um openhab eine Bewegungserkennung zu signalisieren und die REST-API anzusprechen, wird das Paket luasocket benötigt [Neh15]. Für eine Auswertung der Ergebnisse ist die MySQL-Datenbank [ubu15] und das MySQL- Binding [Uh15l] zu installieren und zu konfigurieren. Die Strategien zur Speicherung der openhab-items sind, wie im Anhang dargestellt, umzusetzen. 31

39 4 Bewegungserkennung von Personen 4.3 Implementierung Durch die zuvor deklarierte Sitemap (7.1.3) und die angegebenen Items (7.1.2) visualisiert der Webserver die Benutzeroberfläche (7.4), die in fünf Sektionen eingeteilt ist: 1 Steuerung: Der Verweis Philips Hue-Bloom Lampen führt zum Sub-Menü wo dann die Hue-Bloom Leuchten an und ausgeschaltet werden können. Zudem können die Leuchten auf alle Farben aus dem HSV-Farbraum gesetzt werden. 2 Profil erstellen: Diese Sektion ermöglicht dem Anwender das Messen einer Signalstärke für die vorliegende Räumlichkeit und die eingestellte Distanz zwischen Sender und Receiver. Standardmäßig ist die Dauer der Messung auf zehn Sekunden eingestellt. Der Rückgabewert ist die durch die Anzahl der über den Zeitraum gemessenen Pakete gemittelte Signalstärke und wird automatisch in gespeicherte Signalstärke eingetragen. Zudem wird die maximal und minimal gemessene Signalstärke an die Benutzeroberfläche übermittelt. Das in Abbildung 4.2 visualisierte UML-Sequenzdiagramm behandelt diesen Anwendungsfall. 3 Bewegung erkennen: Die dritte Sektion behandelt den Anwendungsfall der Bewegungserkennung. Für die spätere Szenariodurchführung ist der absolute Signalstärkenunterschied von gespeicherter Signalstärke aus Sektion 2 und in gemessener Signalstärke aus Sektion 3 individuell einstellbar. Falls der Receiver eine Signalstärke misst, die den einstellten Grenzwert überschreitet, wird die Signalstärke eingetragen und somit die Bewegung erkannt. Der Anwendungsfall ist im UML-Sequenzdiagramm 4.3 dargestellt. 4 Multi-Generator: Um die Verbindung des Ad-hoc-Netzes aufrecht zu erhalten, senden beide WAPs im Rotationsverfahren die Beacons-Frames an die Kommunikationspartner [Inc15d] - im vorliegenden Szenario ca. 6-8 Pakete pro Sekunde. Um eventuelle Abhängigkeiten zwischen der Güte der Bewegungserkennung und Anzahl der gemessenen Pakete aufzuzeigen, kann der Anwender zusätzlichen Netzwerk-Verkehr beim Sender erzeugen - UML-Squenzdiagramm Graph: Die fünfte Sektion zeigt die graphische Visualisierung der unterschiedlichen Signalstärken. Das Ziel der Implementierung ist es, eine Bewegung anhand einer Grenzwertüberschreitung von gemessenen Signalstärken zu erkennen und durch den Einsatz von unterschiedlichen Hardwarekomponenten und der openhab-software die Machbarkeit der herstellerübergreifenden GA bzw. HA aufzuzeigen. Im Folgenden soll die umgesetzte Implementierung anhand der Sequenzdiagramme erörtert werden: Profil erstellen: Der Anwender startet seinen Browser, ruft die Start-Url von openhab auf (z.b. htttp://openhab:8080) und authentifiziert sich gegebenenfalls. Der Webserver stellt ihm die Benutzeroberfläche zur Verfügung und die openhab-items werden durch die Regel In- 32

40 4 Bewegungserkennung von Personen itialize Items (7.1.5) initialisiert. Sobald der Anwender die Dauer eingestellt und den Schalter für Signalstärke messen betätigt hat, startet die Messung. Durch Betätigung ändert sich der Status des Schalters von OFF und ON und triggert die Regel Measure RSSI Profile. Neben Log-Informationen wird dem Anwender der Start und das Ende der Messung durch Änderung der Farbe und Lichtintensität der beiden Leuchten signalisiert. Die eigentliche Messung wird durch die Methode executecommandline ausgeführt. Die Methode ruft das im Ordner configurations/scripts abgelegte Bash-Skript remote.sh (7.1.6) auf und übergibt die Parameter capture, Dauer und Item-Namen. Im Bash-Skript wird der SSH Aufruf für den Receiver durchgeführt, der den tcpdump startet und die gesnifften Pakete an den Lua- Interpreter bzw. das Lua-Skript captureprofile.lua (7.2.4) weiterleitet. Abbildung 4.2: UML-Sequenzdiagramm - Profil erstellen Das Skript berechnet den minimalen, maximalen und mittleren Wert der empfangenen RS- SI für die vom Anwender eingestellte Dauer und teilt dem Leitrechner durch Verwendung der REST-API und Aufruf der HTTP-Post-Methode die Änderung des openhab-items für die übermittelten Item-Namen mit. Neben der HTTP-Post-Methode implementiert das Lua-Skript openhabcmd.lua (7.2.6) die HTTP-GET-Methode, um die in openhab verfügbaren Items als XML-Datei abzurufen. Hierfür wird das oben genannte Paket luasocket verwendet. Das Lua-Skript (7.2.7) zeigt das Parsen von Items auf dem Receiver oder Sender mittels des Paketes LuaXML, ist aber für dem Anwendungsfall Profil erstellen nicht notwendig. Obwohl in [Uh15o] auf den Mime-Type application/json hingewiesen wird, ist er bei ausgewählter Hard- und Software nicht verfügbar. Selbst eine Anpassung der Konfiguration des Webservers blieb erfolglos. In der weiteren Verarbeitung von Profil erstellen wird der Schalter in der Regel Measure RSSI Profile auf OFF gestellt und dem Anwender neben der gespeicherten 33

41 4 Bewegungserkennung von Personen Signalstärke und den Änderungen der Leuchten ein Ende der Messung signalisiert. Für die Visualisierung der Signalstärken in Sektion 5 werden die Signalstärken mit der Konfiguration der Persistenz (7.1.4) gespeichert. Durch die gewählten Strategien werden die Werte bei jeder Änderung und jede Minute persistiert. Bewegung erkennen: Der Anwender hat bereits ein Profil erstellt und den Grenzwert für den Signalstärkenunterschied eingestellt. Durch die Betätigung des Schalters Bewegungserkennung wird der Status des Items auf ON gestellt und die Regel Start recognizing movement (7.1.5) getriggert. Die Methode executecommandline wird ausgeführt und die Parameter recognize, die gespeicherte Signalstärke, der Grenzwert und die Item-Namen dem Bash-Skript für die Ausführung des Lua-Skripts capturerecognition.lua (7.2.5) auf dem Receiver übermittelt. Wie bei dem oben erörterten Anwendungsfall nutzt das Lua-Skript die vom tcpdump gesnifften Pakete und überprüft, ob die gespeicherte Signalstärke und die derzeitig ermittelte Signalstärke den angegebenen Grenzwert überschreitet. Abbildung 4.3: UML-Sequenzdiagramm - Bewegungserkennung starten und stoppen Eine Überschreitung wird über die REST-API und Aufruf der HTTP-Post-Methode als neuer Wert im openhab-item eingetragen. Bei Änderung des Wertes wird die Regel Movement recognized getriggert und dem Anwender eine Bewegung durch einen Farbwechsel (Grün / Rot) der Leuchten gekennzeichnet. Das Lua-Skript führt solange Berechnungen durch, bis der Anwender den Schalter Bewegungserkennung erneut betätigt und dadurch die Regel Stop recognizing movement anstößt. Die Regel führt das Bash-Skript aus, das dann den Befehl zur Terminierung der Prozesse von tcpdump und dem Lua-Interpreter auf dem Receiver auslöst. 34

42 4 Bewegungserkennung von Personen Multi-Generator: Sowohl bei Profil erstellen als auch bei Bewegung erkennen werden nur die empfangenen Beacon-Frames vom Sender ausgewertet. Mit dem Multi-Generator kann der Anwender optional auf dem Sender zusätzlichen Netzwerk-Verkehr in Form von 64 Byte großen UDP-Paketen erzeugen. Bei Betätigung des Schalters UDP-Verkehr erzeugen agiert die Regel Send more packets und führt das auf dem Sender befindliche MGen-Skript (7.3.3) aus. Das MGen-Skript startet auf der Funkt-Schnittstelle wlan0 einen unendlichen und periodischen UDP-Fluss and die angegebene Zieladresse - hier exemplarisch zehn Pakete pro Sekunde, ansonsten wird die Eingabe vom Anwender berücksichtigt. Die so erzeugten UDP- Pakete werden automatisch bei der Auswertung der Signalstärken berücksichtigt. Falls der Anwender den UDP-Verkehr stoppt, wird die Regel Stop sending packets aufgerufen und der Prozess auf dem Sender terminiert. Abbildung 4.4: UML-Sequenzdiagramm - Zusätzliche UDP-Pakete senden Graph: Für die graphische Visualisierung wird die rrd4j-persistenz (7.1.4) eingesetzt. Für eine korrekte Visualisierung des Chart-Item GRSSI Chart - eine Gruppierung der drei gemessenen Signalstärken - ist eine Speicherung mit mindestens der everyminute -Strategie obligatorisch [Uh15t]. Bei derzeitigem Entwicklungsstand des rrd4j-bindings ist eine Anpassung für eine individuelle Achsenbeschriftung oder Skala nicht möglich. 35

43 4 Bewegungserkennung von Personen 4.4 Aufbau und Durchführung Sowohl Aufbau als auch Durchführung des Szenarios finden im Raum C060 der Hochschule Bonn-Rhein-Sieg statt. Wie in Abbildung 4.5 visualisiert, ist der Leitrechner, die Hue-Bridge und die WAPs über Ethernet im gleichen Subnetz ( ) verbunden. Dabei ist der Abstand von Leuchten und Hue-Bridge für eine korrekte Funktionsweise unerheblich. Der Szenarioaufbau ist insofern statisch, als dass lediglich der Abstand (1m, 2m, 4m, 6m und 10m) von Sender und Receiver bei der Durchführung variabel ist. Die Antennen der Router sind auf einer Höhe von 95cm angebracht. Für jede Distanz zwischen den WAPs ist sowohl Profil erstellen als auch Bewegung erkennen für zwei Signalleistungen (30dBm und 15dBm) durchzuführen. Für die Distanzen 1-6m ist die LOS der WAPs nicht beeinträchtigt. Bei einer abschließenden Durchführung ist die LOS durch eine 16cm dicke Betonziegelwand gehindert. Abbildung 4.5: Aufbau des Szenarios in der Hochschule Bonn Rhein Sieg (Raum C060) [ope15] 36

44 4 Bewegungserkennung von Personen Um False-Positives auszuschließen, ist für jeden Messdurchlauf nach Profil erstellen für Bewegung erkennen eine Ruhe-Phase eingeplant, in der keine Bewegung stattfindet. Eine Steuerung der Benutzeroberfläche erfolgt über die Android-Applikation HABDroid [Uh15j]. Nach dieser Ruhe-Phase betritt die Testperson den Raum: Sie öffnet die Tür und geht langsamen Schrittes durch die LOS der WAPs hindurch - bis zur eingezeichneten Fensterwand, kehrt um verlässt den Raum und schließt die Tür. Dabei ist die Messung als False-Negatives zu werten, falls die Testperson den Raum durchschritten aber keine Grenzwertüberschreitung stattgefunden hat. Für die Abbildung eines realitätsnahen Szenarios sind für jeden Messdurchlauf weitere WAPs in Reichweite (in- und außerhalb des Raumes) des Senders und Receivers auf dem 2,4GHz Frequenzband verfügbar. Mögliche Fehlmessungen, durch auftretende Interferenzen mit den anderen WAPs, sind deshalb nicht ausgeschlossen. Für die anschließende Auswertung werden die gemessenen Daten bei jeder Änderung in der MySQL-Datenbank persistiert und mit dem SQL-Query (7.1.4) abgefragt. Eine korrekte Bewegungserkennung hängt somit von folgenden Parametern ab: Die Dauer für die Profilerstellung und somit die Anzahl der Pakete für die Mittelwertbildung der gespeicherten Signalstärke, der eingestellte absolute Grenzwert für den Signalstärkenunterschied bei aktueller Distanz zwischen Sender und Receiver und die vom Sender und Receiver eingestellte Signalleistung. Die in Kapitel 5 - Ergebnisse und Alternativen aufgeführten Ergebnisse geben Aufschluss über die Zusammenhänge bzw. Abhängigkeiten der Parameter. 37

45 5 Ergebnisse und Alternativen 5.1 Ergebnisse Bei Durchführung des im vorherigen Kapitel beschriebenen Szenarios, ergeben sich die in Abbildung 5.1, 5.2, 5.3 und 7.14 dargestellten Ergebnisse für insgesamt elf Messdurchläufe. Die erste Spalte jeder Abbildung kennzeichnet den Messdurchlauf. Die Abbildung 5.1 behandelt den Anwendungsfall Profil erstellen und berücksichtigt die Parameter für Sichtausbreitung, Distanz und Sendeleistung der WAPs. Für eine Dauer von jeweils 60 Sekunden ist für jeden Messdurchlauf der minimale, maximale und gemittelte RSSI errechnet. Aufgrund einer unzureichenden Verbindung ist bei dem neunten Messdurchlauf eine Sendeleistung von 20dBm statt 15dBm verwendet worden. Für den elften Messdurchlauf wurde in Abgrenzung zum zehnten Messdurchlauf der Multi-Generator mit zusätzlichen 25pps genutzt. Abbildung 5.1: Messergebnisse für den Anwendungsfall Profil erstellen In Abbildung 5.2 sind die Messergebnisse für den Anwendungsfall Bewegung erkennen in der Ruhe-Phase aufgeführt. Die Einstellung für den Grenzwert ist durch die Abweichung der gemessenen RSSI aus Profile erstellen zu begründen und ist für Ruhe- und Bewegungs-Phase gleichgesetzt. Die False-Positives - eine fälschlicherweise erkannte Bewegung in der Ruhe-Phase 38

46 5 Ergebnisse und Alternativen - sind die prozentualen Anteile der Grenzwertüberschreitungen für die Anzahl der Messungen. Für die Messdurchläufe #1-3 und #6 ist ein False-Positive aufgetreten. Die möglichen Erklärungen für die False-Positives sind mit den Anmerkungen (Anhang 7.14) abzugleichen. Abbildung 5.2: Messergebnisse für den Anwendungsfall Bewegung erkennen (Ruhe-Phase) Exemplarisch für den Messdurchlauf #2 ist der False-Positive aufgetreten, als eine Person mit ihrem Laptop an dem Raum C060 vorbeigegangen ist. Für die Messdurchläufe #3 und #6 ist auf dem Smartphone mit der HABdroid Applikation zusätzlicher Netzwerk-Verkehr eingegangen. Die Rate in der Bewegungs-Phase ist nicht als z.b. eine Bewegung ist zu 30,77% erkannt worden zu deuten, sondern ist der Anteil der Grenzwertüberschreitungen bei Anzahl der Messungen. Abbildung 5.3: Messergebnisse für den Anwendungsfall Bewegung erkennen (Bewegungs-Phase) 39

47 5 Ergebnisse und Alternativen Dem Anhang 7.5 sind die Visualisierungen der Messdurchläufe beigefügt und geben weiteren Aufschluss über die Abhängigkeit zwischen verwendeter Sendeleistung, Distanz und eingestelltem Grenzwert. Wenn auch die Messdurchläufe #1-7 eine präzise Grenzwerteinstellung aufweisen, wären bei Justierung des Grenzwertes für die Messdurchläufe #8, #10 und #11 mehr Überschreitungen zu verzeichnen. Der Grenzwert ist die Abweichung der in Profil erstellen gemessenen minimalen und maximalen RSSI zum gemittelten RSSI für eine Dauer von 60 Sekunden. Bei Verwendung der mittleren quadratischen Abweichung könnten mehr Messwerte als Bewegung erkannt werden, jedoch auch die Anzahl der False-Positives ansteigen - eine Messung über einen längeren Zeitraum ist obligatorisch. Die Visualisierungen zeigen deutlich, dass für alle Distanzen und Sendeleistungen sowohl bei als auch eingeschränkter LOS der WAPs, die gemessenen Werte in der Ruhe-Phase zu denen in der Bewegungs-Phase abgrenzbar sind. Insgesamt ist durch die gezeigte Implementierung und Szenariodurchführung eine herstellerübergreifende HA bzw. GA beim Einsatz von openhab gezeigt. 5.2 Alternative Ansätze Die in diesem Abschnitt aufgelisteten alternativen Ansätze sollen für das Szenario der Bewegungserkennung auf bereits implementierte openhab-bindings für herstellerabhängige Hardwarekomponenten und Einsatz von Open-Source-Software hinweisen. Bei Anwendung der Ansätze sind die in Kapitel 4 - Bewegungserkennung von Personen genannten Defizite der device-free - vision based und device-free - ambient device based Klassen zu bedenken. Variante Nr. 1 - Bewegungsmelder: HomeMatic: openhab: Homematic-Binding Neben openhab-rules und openhab-skripten ist keine Software erforderlich. Quelle: FS20: openhab: FS20-Binding Neben openhab-rules und openhab-skripten ist keine Software erforderlich. Quelle: rsteuerung.html/refid/zanox/zanpid/ EnOcean: openhab: EnOcean-Binding Neben openhab-rules und openhab-skripten ist keine Software erforderlich. Quelle: 40

48 5 Ergebnisse und Alternativen Variante Nr. 2 - Videoauswertung: Microsoft Kinect: openhab: REST-Binding Für die Realisierung ist der Jnect -Adapter und das Microsoft Kinect SDK notwendig. Quelle: Motion Detector Bricklet: openhab: REST-Binding Für die Realisierung ist der Einsatz von jmt obligatorisch. Quelle: ctor_bricklet_java.html Java-Motion-Tracking: openhab: REST-Binding Die Open-Source Software jmt verwendet das Java Media Framework. Quelle: JMyron: openhab: REST-Binding JMyron ist eine Open-Source Bibliothek für die Bildmanipulation und Bewegungserkennung. Quelle: OpenCV: openhab: REST-Binding Mit den Algorithmen der OpenCV Bibliothek ist eine Bewegung durch Abgleich der aufgezeichneten Bilder vorstellbar. Quelle: Variante Nr. 3 - Tonauswertung: Sphinx-4: openhab: REST-Binding Mit der sphinx4 Software können Audiosignale analysiert werden (Präsenzerkennung). Quelle: Variante Nr. 4 - LEAP Motion: LEAP Motion: openhab: Leap-Binding (frühe Alpha-Phase) Der Leap-Motion Sensor ist für eine Gestenerkennung bei kurzen Distanzen einsetzbar. Quelle: 41

49 6 Zusammenfassung und Fazit Die vorherrschende Inkompatibilität zur Interoperabilität der herstellerabhängigen Technologien aus dem Bereich der Heim- bzw. Gebäudeautomatisierung zwingt die Hersteller zur Entwicklung von Hard- und Softwarelösungen. Einige dieser Lösungen sind lediglich als Gateway zweier Standards bzw. Protokolle angedacht und können darüber hinaus nicht mit anderen Produkten konkurrieren. In jüngster Zeit sieht der Trend der Automatisierung eine Softwarelösung auf dem Leitrechner vor, die alle konkurrierenden Hard- und Softwarekomponenten vereinigen kann. Die openhab-software ist eine solche Lösung die auch dem Begriff der IoT (Internet of Things) zuzuordnen ist: Die Idee des Internet of Things basiert darauf, dass die Dinge des Alltags vernetzt sind. Was aber, wenn das liebgewonnene Ding keine IP- Schnittstelle aufweist oder das verwendete Protokoll für den IoT-Service der Wahl unverständlich ist? Was, wenn alle Dinger mit einer einheitlichen Oberfläche bedient, ein gemeinsames Chart mit Daten bestücken, oder gemeinsamen Automatisierungsregeln fol- gen sollen? In diesem Fall können Integrationsplattformen helfen, die für diese Problemstellungen Lösungen anbieten. [EE15, 1. April 2012]. Wenn auch Thomas Eichstädt-Engelen als Mitbegründer der openhab UG diese Aussage sehr umgangssprachlich formuliert, trifft sie dennoch den Kerngedanken einer zukunftswürdigen Automatisierungsplattform: Nicht nur weil die openhab-software auf der Eclipse-Equinox, als Implementierung des OSGi-Standards, aufbaut, sondern auch weil die fortgeführte Implementierung die geforderten Programmierparadigmen achtet, ist openhab als dynamisches Modulsystem anzusehen. Dank der aufgelösten Programmkomplexität durch Dekomposition in Softwaremodule verfügt openhab sowohl über eine einheitliche Versionierung und Protokollierung als auch über eine Registrierung und Verwaltung von Diensten. Die verwendeten dynamischen Abhängigkeiten der Protokollimplementierungen (openhab-bindings) ermöglichen das (de-)installieren und konfigurieren von Diensten während der Laufzeit und sind somit autark: Hot Deployment. Statische Abhängigkeiten sind nur für die Kernkomponenten eingesetzt. Aufgrund einer zentralen Konfiguration für die Hard- und Softwarekomponenten, der umgesetzten Automatisierungslogik, unterteilt in Regel-, Skripte- und Jobmanagement im expressiven 42

50 6 Zusammenfassung und Fazit Dialekt, und der simplen SQL-Logik ist der Funktionsumfangs der openhab-software für den erprobten Endanwender nutzbar. Der Entwicklungsschwerpunkt der openhab Versionen 2.x liegt in der Verbesserung der Gebrauchstauglichkeit als Teildisziplin der User Experience, um dem Laien die Funktionen der Software zugänglicher zu gestalten. Eine Thematik für anknüpfende Arbeiten ist demnach die Analyse der User Experience bei Anwendung der heuristischen Evaluation, dem Cognitive Walk-Through oder den Usability-Tests. Neben den in Kapitel 5 - Ergebnisse und Alternativen gelisteten Ansätzen, kann Thema weitere Projekte auch eine verteile openhab-automatisierung über externe Laufzeitumgebungen sein. Für das in dieser Arbeit vorgestellte und durchgeführte realitätsnahe Szenario gilt eine Bewegungserkennung von Personen durch die Auswertung der empfangenen Signalstärke von WAPs anhand der Beacon-Frames als plausibel und kennzeichnet eine herstellerübergreifende Automatisierung beim Einsatz von openhab. Für diese Art der Bewegungserkennung ist vorteilhaft, dass keine Sensorik an den Personen angebracht und die Infrastruktur nicht erweitert werden muss. Für eine Produktreife in den Anwendungsbereichen der Angriffserkennung und der Gesundheitsvorsorge sind Messungen über einen längeren Zeitraum abzuhalten und die Entwicklung bis hin zur automatischen Konfiguration der WAPs fortzuführen. Für die Abschätzungen der Grenzwertüberschreitungen sind andere mathematische Ausdrücke bzw. Wahrscheinlichkeitsverteilungen anzuwenden. In [al15] wird ein mathematisches Model entwickelt, das bei Verwendung der Kullback Leibner Distanz und der gemessenen RSSI eine Auskunft über die Anzahl von Personen in der Lokalität gibt. Störeinflüsse durch evtl. Endgeräte auf dem gleichen Frequenzband bleiben unberücksichtigt. Zudem wird darauf hingewiesen, dass eine Auswertung der Signalstärken für alle Kanäle des Frequenzspektrums nahezu die gleichen Ergebnisse liefert, wie bei Auswertung der RSSI. 43

51 7 Anhang 7.1 Lex Uno Station - Leitrechner mit openhab Konfiguration - openhab mit Hue-Binding 1:... 2: folder : items =10, items 3: folder : sitemaps =10, sitemap 4: folder : rules =10, rules 5: folder : scripts =10, script 6: folder : persistence =10, persist 7:... 8: security : option =ON 9:... 10: # IP address of Hue Bridge ( optional, default is auto - discovery ) 11: hue :ip= 12:... 13: hue : secret = huebridgesecret 14:... Quelltext 7.1: Ausschnitt der openhab-konfiguration Deklaration - openhab-items 1: Group GRSSI_Chart 2: Group GItem_Control 3: Color Hue_Light_1 ( GItem_Control ) { hue =" 1" } 4: Color Hue_Light_2 ( GItem_Control ) { hue =" 2" } 5: Number Duration_Profile 6: Number Threshold_Value 7: Number RSSI_Profile " saved RSSI "( GRSSI_Chart ) 44

52 7 Anhang 8: Number RSSI_Profile_min 9: Number RSSI_Profile_max 10: Number RSSI_Recognition " measured RSSI " ( GRSSI_Chart ) 11: Number RSSI_Threshold " > Threshold " ( GRSSI_Chart ) 12: Number Packet_Value 13: Switch Do_Profile 14: Switch Do_Recognition 15: Switch Do_MGen 16: String Persist_Log Quelltext 7.2: Deklaration der openhab-items Realisierung - openhab-sitemap 1: sitemap default label =" Main Menu " 2: { 3: Frame label =" Steuerung " { 4: Group item = GItem_Control label =" Philips Hue - Bloom Lampen " icon =" light -on" { 5: Frame { 6: Colorpicker item = Hue_Light_1 label ="1. Hue - Bloom Leuchte " icon =" slider " 7: Colorpicker item = Hue_Light_2 label ="2. Hue - Bloom Leuchte " icon =" slider " 8: } 9: } 10: } 11: 12: Frame label =" Profil erstellen " { 13: Setpoint item = Duration_Profile label =" Dauer : [% ds]" step =1 minvalue =1 maxvalue =120 icon =" clock -on" 14: Switch item = Do_Profile label =" Signalst ä rke messen " icon =" fire " 15: Text item = RSSI_Profile label = " gespeicherte Signalst ä rke : [%.2 fdb ]" icon =" chart " 16: Text item = RSSI_Profile_min label =" min. Signalst ä rke [%.2 fdb ]" icon =" chart " 17: Text item = RSSI_Profile_max label =" max. Signalst ä rke [%.2 fdb ]" icon =" chart " 18: } 19: 45

53 7 Anhang 20: Frame label =" Bewegung erkennen " { 21: Setpoint item = Threshold_Value label =" Grenzwert f ü r Signalst ä rkenunterschied ( abs ): [%.1 fdb ]" step =0.1 minvalue =0. 5 maxvalue =60 icon =" energy " 22: Switch item = Do_Recognition label =" Bewegungserkennung " icon =" fire " 23: Text item = RSSI_Recognition label =" momentane Signalst ä rke : [%.2 fdb ]" icon =" chart " 24: Text item = RSSI_Threshold label =" Bewegung erkannt für Signalst ä rke : [%.2 fdb ]" icon =" chart " 25: Text item = Persist_Log visibility =[ Persist_Log ==" Uninitialized "] 26: } 27: 28: Frame label =" Multi - Generator - OpenWrtSender " { 29: Setpoint item = Packet_Value label =" Pakete : [%d/s]" step =5 minvalue =5 maxvalue =25 icon =" box " 30: Switch item = Do_MGen label ="UDP - Verkehr erzeugen " icon =" network " 31: } 32: 33: Frame label =" Graph " { 34: Chart item = GRSSI_Chart service =" rrd4j " period = h refresh = : // Image url =" http :// openhab : :8080/ rrdchart. png? groups = GRSSI_Chart & period =h& service = rrd4j & h =200& w =1400" 36: } 37: } Quelltext 7.3: Konfiguration der openhab-sitemap Konfiguration - openhab-persistence 1: Strategies { 2: everyminute : "0 * * * *?" 3: // default = everychange 4: } 5: 6: Items { 7: RSSI_Recognition : strategy = everychange, everyminute 46

54 7 Anhang 8: RSSI_Profile : strategy = everychange, everyminute 9: RSSI_Threshold : strategy = everychange, everyminute 10: } Quelltext 7.4: rrd4j-persistenz für Visualisierung der Signalstärken 1: Strategies { 2: default = everychange 3: } 4: 5: Items { 6: RSSI_Recognition : strategy = everychange 7: RSSI_Profile : strategy = everychange 8: RSSI_Threshold : strategy = everychange 9: Persist_Log : strategy = everychange 10: RSSI_Profile_min : strategy = everychange 11: RSSI_Profile_max : strategy = everychange 12: } Quelltext 7.5: Konfiguration der MySql-Persistenz 1: ( SELECT * FROM openhab. Item4 ORDER BY openhab. Item4. Time ) 2: UNION 3: ( SELECT * FROM openhab. Item3 ORDER BY openhab. Item3. Time ) 4: UNION 5: ( SELECT * FROM openhab. Item1 ORDER BY openhab. Item1. Time ) 6: UNION 7: ( SELECT * FROM openhab. Item2 ORDER BY openhab. Item2. Time ) 8: UNION 9: ( SELECT * FROM openhab. Item5 ORDER BY openhab. Item5. Time ) 10: UNION 11: ( SELECT * FROM openhab. Item6 ORDER BY openhab. Item6. Time ) 12: ORDER BY Time Quelltext 7.6: MySql-Query für Auswertung der Ergebnisse Realisierung - openhab-rules 1: import org. openhab. core. library. types.* 2: 3: rule " Initialize Items " 4: when 5: System started 47

55 7 Anhang 6: then 7: if ( Duration_Profile. state == Uninitialized ) { 8: Duration_ Profile. sendcommand ( 10) 9: } 10: if( Threshold_Value. state == Uninitialized ) { 11: Threshold_Value. sendcommand (1) 12: } 13: if( Packet_Value. state == Uninitialized ) { 14: Packet_Value. sendcommand (5) 15: } 16: if( RSSI_Profile. state == Uninitialized ) { 17: RSSI_Profile. sendcommand (0) 18: } 19: if( RSSI_Profile_min. state == Uninitialized ) { 20: RSSI_Profile_min. sendcommand (0) 21: } 22: if( RSSI_Profile_max. state == Uninitialized ) { 23: RSSI_Profile_max. sendcommand (0) 24: } 25: if( RSSI_Recognition. state == Uninitialized ) { 26: RSSI_Recognition. sendcommand (0) 27: } 28: if( RSSI_Threshold. state == Uninitialized ) { 29: RSSI_Threshold. sendcommand (0) 30: } 31: end 32: 33: rule " Measure RSSI_Profile " 34: when 35: Item Do_Profile received command 36: then 37: var duration = ( Duration_Profile. state as DecimalType ). intvalue 38: if( Do_Profile. state == ON) { 39: loginfo (" org. openhab. rules ", "RSSI - Profile started : " + duration + "s") 40: Persist_Log. sendcommand ("RSSI - Profile started : " + duration + "s") 41: Hue_Light_1. sendcommand (" 100,100,0 ") 42: Hue_Light_2. sendcommand (" 100,100,0 ") 43: executecommandline ("/ bin / bash./ configurations / scripts / remote.sh capture "+ duration +" RSSI_Profile ") 48

56 7 Anhang 44: Thread :: sleep ( duration * ) 45: Hue_Light_1. sendcommand (" 100,100,70 ") 46: Hue_Light_2. sendcommand (" 100,100,70 ") 47: Do_Profile. sendcommand ( OFF ) 48: loginfo (" org. openhab. rules ", "RSSI - Profile finished ") 49: Persist_Log. sendcommand ("RSSI - Profile finished :" + duration + "s") 50: } 51: end 52: 53: rule " Start recognizing movement " 54: when 55: Item Do_Recognition received command ON 56: then 57: var rssi_profile = ( RSSI_Profile. state as DecimalType ) 58: var threshold_value = ( Threshold_Value. state as DecimalType ) 59: executecommandline ("/ bin / bash./ configurations / scripts / remote.sh recognize -1 RSSI_Recognition "+ rssi_profile + " RSSI_Threshold " + threshold_value ) 60: loginfo (" org. openhab. rules ", "RSSI - Recognition started : " + rssi_profile + "db and threshold of "+ threshold_value +"db ") 61: Persist_Log. sendcommand ("RSSI - Recognition started : " + rssi_profile + "db and threshold of "+ threshold_value +"db ") 62: end 63: 64: rule " Stop recognizing movement " 65: when 66: Item Do_Recognition changed from ON to OFF 67: then 68: executecommandline ("/ bin / bash./ configurations / scripts / remote.sh recognize kill ") 69: loginfo (" org. openhab. rules ", "RSSI - Recognition stopped : killed tcpdump and lua ") 70: Persist_Log. sendcommand ("RSSI - Recognition stopped : killed tcpdump and lua ") 71: end 72: 73: rule " Movement recognized " 74: when 75: Item RSSI_Threshold received command 49

57 7 Anhang 76: then 77: var rssi_profile = ( RSSI_Profile. state as DecimalType ) 78: var rssi_threshold = ( RSSI_Threshold. state as DecimalType ) 79: loginfo (" org. openhab. rules ", " Movement recognized : "+ rssi_threshold +"db measured ") 80: Persist_Log. sendcommand (" Movement recognized : "+ rssi_threshold +"db measured ") 81: Hue_Light_1. sendcommand (" 30,100,70 ") 82: Hue_Light_2. sendcommand (" 30,100,70 ") 83: Thread :: sleep ( 500) 84: Hue_Light_1. sendcommand (" 100,100,70 ") 85: Hue_Light_2. sendcommand (" 100,100,70 ") 86: end 87: 88: rule " Send more packets " 89: when 90: Item Do_MGen received command ON 91: then 92: var packet_value = ( Packet_Value. state as DecimalType ). intvalue 93: executecommandline ("/ bin / bash./ configurations / scripts / remote.sh mgen "+ packet_value ) 94: loginfo (" org. openhab. rules ", " Multi - Generator started with " + packet_value +"/s") 95: Persist_Log. sendcommand (" Multi - Generator started with "+ packet_value +"/s") 96: end 97: 98: rule " Stop sending packets " 99: when 100: Item Do_MGen changed from ON to OFF 101: then 102: executecommandline ("/ bin / bash./ configurations / scripts / remote.sh mgen kill ") 103: loginfo (" org. openhab. rules ", " Multi - Generator stopped ") 104: Persist_Log. sendcommand (" Multi - Generator stopped ") 105: end Quelltext 7.7: openhab-rules für Reaktion auf Nutzer- und Systeminteraktion Remote-Zugriff - Bash-Skript 50

58 7 Anhang 1: #!/ bin / bash 2: if [ "$1" == "" ] 3: then 4: echo " error : missing params " 5: else 6: if [ "$1" == " capture " ] 7: then 8: if [ "$2"!= "" ] 9: then 10: sshpass - p openhab1! ssh root@ cd / etc / recognition / && tcpdump - i wlan0-1 - e " ether src 30: b5:c2 :38:3 d :63 " lua captureprofile. lua "$2" "$3" " $4" "$5" 11: fi 12: fi 13: if [ "$1" == " recognize " ] 14: then 15: if [ "$2"!= " kill " ] 16: then 17: if [ "$4"!= "" ] 18: then 19: sshpass - p openhab1! ssh root@ cd / etc / recognition / && tcpdump - i wlan0-1 - e " ether src 30: b5:c2 :38:3 d :63 " lua capturerecognition. lua " $3" "$4" "$5" "$6" 20: fi 21: else 22: sshpass - p openhab1! ssh root@ kill -9 $( pidof lua capture ) && kill -9 $( pidof tcpdump ) 23: fi 24: fi 25: if [ "$1" == " mgen " ] 26: then 27: if [ "$2"!= " kill " ] 28: then 29: sshpass - p openhab1! ssh root@ cd / etc / && mgen input udpgen "$2".mgn 30: else 31: sshpass - p openhab1! ssh root@ kill -9 $( pidof mgen ) 32: fi 51

59 7 Anhang 33: fi 34: fi 35: exit Quelltext 7.8: Bash-Skript für Remote-Zugriff auf Sender und Receiver 7.2 TP-Link WLAN Router - Receiver Konfiguration - Netzwerk 1:... 2: config interface lan 3: option ifname eth0.1 4: option force_ link 1 5: option type bridge 6: option proto static 7: option ipaddr : option netmask : option ip6assign 60 10: 11: config interface wan6 12: option wan 13: option proto dhcpv6 14: 15:... 16: 17: config interface wlan0 18: option _orig_ifname wlan0 19: option _orig_bridge false 20: option proto static 21: option ipaddr : option netmask Quelltext 7.9: Ausschnitt der Netzwerk-Konfiguration Konfiguration - Wireless 1: config wifi - device radio0 2: option type mac

60 7 Anhang 3: option channel 11 4: option hwmode 11 g 5: option path platform / ar934x_wmac 6: option htmode HT20 7: option txpower 30 8: option country US 9: 10: config wifi - device radio1 11: option type mac : option channel 36 13: option hwmode 11 a 14: option path pci0000 :00/0000:00: : option htmode HT20 16: option disabled 1 17: 18: config wifi - iface 19: option device radio0 20: option ssid OpenWrt - adhoc 21: option mode adhoc 22: option network wlan0 23: option encryption wep - shared 24: option key 1 25: option key1 ABCDABCDAB 26: 27: config wifi - iface 28: option device radio0 29: option ssid OpenWrt 30: option mode monitor Quelltext 7.10: Wireless-Konfiguration Konfiguration - Lua Skript 1: local conf = { 2: host = " ", 3: port = 8080, 4: user = openhab, 5: pw= openhab1!, 6: } 7: return conf Quelltext 7.11: Lua-Konfiguration 53

61 7 Anhang Profil erstellen - Lua Skript 1: require " socket " 2: local io = require " io" 3: local config = require " config " 4: local openhabcmd = require " openhabcmd " 5: 6: local rssi = 0 7: local duration = arg [1] 8: local cnt = 0 9: local saverssiitem = "/ rest / items /".. arg [2] 10: local minrssiitem = "/ rest / items /".. arg [3] 11: local maxrssiitem = "/ rest / items /".. arg [4] 12: local currentmin = 0 13: local currentmax = : local host = string. format (" http ://% s:% s@%s:%d", config.user, config.pw, config.host, config. port ) 15: 16: while true do 17: 18: local line = io. read () 19: if line == nil then 20: io. write (" error : no input ") break 21: end 22: 23: str = string. match (line," -%d+db") 24: if str == nil then 25: str = "" 26: else 27: str = string. sub (str,1, string. len ( str ) -2) 28: rssi = rssi + str 29: cnt = cnt : if math. abs ( currentmin ) < math. abs ( tonumber ( str )) then 31: currentmin = tonumber ( str ) 32: end 33: if math. abs ( currentmax ) > math. abs ( tonumber ( str )) then 34: currentmax = tonumber ( str ) 35: end 36: end 37: 38: if duration ~= 0 then 39: socket. select (nil,nil,1) 54

62 7 Anhang 40: else 41: response = rssi / cnt 42: openhabcmd. request ( host.. saverssiitem, response, string. len ( response )) 43: openhabcmd. request ( host.. minrssiitem, currentmin, string. len ( currentmin )) 44: openhabcmd. request ( host.. maxrssiitem, currentmax, string. len ( currentmax )) 45: break 46: end 47: duration = duration : end Quelltext 7.12: RSSI-Profil erstellen Bewegung erkennen - Lua Skript 1: require " socket " 2: local io = require " io" 3: local config = require " config " 4: local openhabcmd = require " openhabcmd " 5: 6: local calcrssi = 0 7: local storedrssi = arg [2] 8: local cnt = 0 9: local recognition_item = "/ rest / items /".. arg [1] 10: local threshold_item = "/ rest / items /".. arg [3] 11: local threshold_value = arg [4] 12: local host = string. format (" http ://% s:% s@%s:%d", config.user, config.pw, config.host, config. por 13: 14: while true do 15: local line = io. read () 16: if line == nil then 17: io. write (" error : no input ") break 18: end 19: 20: str = string. match (line," -%d+db") 21: if str == nil then 22: str = "" 23: else 55

63 7 Anhang 24: str = string. sub (str,1, string. len ( str ) -2) 25: calcrssi = calcrssi + str 26: cnt = cnt : end 28: 29: if cnt == 10 then 30: response = calcrssi / cnt 31: openhabcmd. request ( host.. recognition_item, response, string. len ( response )) 32: if math. abs (( math. abs ( storedrssi )-math. abs ( response ))) > tonumber ( threshold_value ) then 33: openhabcmd. request ( host.. threshold_item, response, string. len ( response )) 34: end 35: calcrssi = 0 36: cnt = 0 37: end 38: end Quelltext 7.13: Bewegung anhand der absoluten RSSI-Differenz erkennen Kommandos für openhab REST-API - Lua Skript 1: local http = require " socket. http " 2: local ltn12 = require " ltn12 " 3: local io = require " io" 4: module (" openhabcmd ", package. seeall ) 5: 6: : -- HTTP. Request ( POST ); Parameter : url, value, value - length 8: : function request ( URL, VALUE, LENGTH ) 10: local RSP, CODE, TR = http. request { 11: url = URL, 12: method = " POST ", 13: headers = { [ Content - Type ] = " text / plain ", [ Content - Length ] = LENGTH }, 14: redirect = false, 15: source = ltn12. source. string ( VALUE ), 16: sink = ltn12. sink. null () 17: } 56

64 7 Anhang 18: return RSP,CODE,TR 19: end 20: 21: : -- HTTP. Request ( GET ) return xml ; Parmeter : url host with port 23: : function items ( URL ) 25: local RSP = http. request { 26: url = URL.."/ rest / items ", 27: method = " GET ", 28: headers = { [ Content - Type ] = " application / xml " }, 29: source = ltn12. source. empty (), 30: sink = ltn12. sink. file (io. open (" items. xml ", "w")) 31: } 32: return RSP 33: end Quelltext 7.14: REST-API Kommandos (POST / GET) REST-API Kommando für openhab-items - Lua Skript 1: require (" LuaXml ") 2: module (" configurephase ", package. seeall ) 3: 4: function getitems ( host, filepath, itemtype ) 5: local response = openhabcmd. items ( host ) 6: local items = {} 7: if response == 1 then 8: local xmlfile = xml. load ( filepath ) 9: local xmlitems = xmlfile : find (" items ") 10: if xmlitems ~= nil then 11: for i in pairs ( xmlitems ) do 12: local xmlitemtype = xmlitems [i]: find (" type ") 13: if xmlitemtype ~= nil then 14: -- scenario specific parameter ITEMTYPE 15: if xmlitemtype [1] == itemtype then 16: local xmlitemname = xmlitems [i]: find (" name ") 17: if xmlitemname ~= nil then 18: -- create dynamic variable for itempath 19: _G[" URL "..i] = string. format ("%s/ rest / items /".. xmlitemname [1], host ) 57

65 7 Anhang 20: table. insert ( items, _G[" URL "..i]) 21: end 22: end 23: end 24: end 25: end 26: end 27: return items 28: end Quelltext 7.15: openhab-items auf dem Receiver verarbeiten (optional) 7.3 TP-Link WLAN Router - Sender Konfiguration - Netzwerk 1:... 2: config interface lan 3: option force_ link 1 4: option proto static 5: option ipaddr : option netmask : option ip6assign 60 8: option _orig_ifname eth0.1 wlan0 wlan1 9: option _orig_bridge true 10: option type bridge 11: 12: config interface wan 13: option ifname eth0.2 14: option proto dhcp 15: 16:... 17: 18: config interface wlan0 19: option _orig_ifname wlan0 20: option _orig_bridge false 21: option proto static 22: option netmask : option ipaddr :... 58

66 7 Anhang Quelltext 7.16: Ausschnitt der Netzwerk-Konfiguration Konfiguration - Wireless 1: config wifi - device radio0 2: option type mac : option channel 11 4: option hwmode 11 g 5: option path platform / ar934x_wmac 6: option htmode HT20 7: option txpower 30 8: option country US 9: 10: config wifi - device radio1 11: option type mac : option channel 36 13: option hwmode 11 a 14: option path pci0000 :00/0000:00: : option htmode HT20 16: option txpower 17 17: option country US 18: 19: config wifi - iface 20: option device radio0 21: option ssid OpenWrt - adhoc 22: option mode adhoc 23: option network wlan0 24: option encryption wep - shared 25: option key 1 26: option key1 ABCDABCDAB Quelltext 7.17: Wireless-Konfiguration Multi-Generator Skript 1: START NOW 2: INTERFACE wlan0 3: 0.0 ON 1 UDP DST / PERIODIC [10 64] COUNT -1 59

67 7 Anhang Quelltext 7.18: Multi-Generator Skript für 10 Pakete/s 7.4 openhab-gui für realisierte Sitemap Abbildung 7.1: Main-Menü der Benutzeroberfläche [Uh15u] 60

68 7 Anhang Abbildung 7.2: Sub-Menü der Benutzeroberfläche - Steuerung der Leuchten [Uh15u] 7.5 Ergebnisse und Messwertvisualisierung Abbildung 7.3: Visualisierung für Messdurchlauf #1 Abbildung 7.4: Visualisierung für Messdurchlauf #2 61

69 7 Anhang Abbildung 7.5: Visualisierung für Messdurchlauf #3 Abbildung 7.6: Visualisierung für Messdurchlauf #4 Abbildung 7.7: Visualisierung für Messdurchlauf #5 62

70 7 Anhang Abbildung 7.8: Visualisierung für Messdurchlauf #6 Abbildung 7.9: Visualisierung für Messdurchlauf #7 Abbildung 7.10: Visualisierung für Messdurchlauf #8 63

71 7 Anhang Abbildung 7.11: Visualisierung für Messdurchlauf #9 Abbildung 7.12: Visualisierung für Messdurchlauf #10 Abbildung 7.13: Visualisierung für Messdurchlauf #11 64

72 7 Anhang Abbildung 7.14: Anmerkungen zu den einzelnen Messdurchläufen 65

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

Task: Nmap Skripte ausführen

Task: Nmap Skripte ausführen Task: Nmap Skripte ausführen Inhalt Einfache Netzwerkscans mit NSE Ausführen des Scans Anpassung der Parameter Einleitung Copyright 2009-2015 Greenbone Networks GmbH Herkunft und aktuellste Version dieses

Mehr

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder

OSGi. The Next Generation Java Service Platform. SOA - The Java Way or My classpath is killing me. Michael Greifeneder Michael Greifeneder OSGi The Next Generation Java Service Platform SOA - The Java Way or My classpath is killing me Bilder von Peter Kriens W-JAX Keynote 2007 und Neil Bartletts Getting Started with OSGi

Mehr

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen 9 3 Web Services 3.1 Überblick Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen mit Hilfe von XML über das Internet ermöglicht (siehe Abb.

Mehr

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Autorisierung Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Dokumentation zum Referat von Matthias Warnicke und Joachim Schröder Modul: Komponenten basierte Softwareentwickelung

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

Man liest sich: POP3/IMAP

Man liest sich: POP3/IMAP Man liest sich: POP3/IMAP Gliederung 1. Einführung 1.1 Allgemeiner Nachrichtenfluss beim Versenden von E-Mails 1.2 Client und Server 1.2.1 Client 1.2.2 Server 2. POP3 2.1 Definition 2.2 Geschichte und

Mehr

Handbuch xgdm-was Extension Version 1.0

Handbuch xgdm-was Extension Version 1.0 Handbuch xgdm-was Extension Version 1.0 Maxstr. 3A Königsbergerstrasse 22 Landwehrstrasse 143 13347 Berlin 57462 Olpe 59368 Werne Tel. 030/466062-80 Tel. 02761/9396-0 Tel. 02389/9827-0 Fax 030/466062-82

Mehr

MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS

MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS 072 MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS Die Flut von Open Source Frameworks ist vergleichbar mit dem Markt von kommerziellen Produkten Es gibt eine Vielzahl

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert: Firewall für Lexware professional konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Windows XP SP2 und Windows 2003 Server SP1 Firewall...1 4. Bitdefender 9... 5 5. Norton Personal

Mehr

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014 Konfiguration VLAN's Version 2.0.1 Deutsch 01.07.2014 In diesem HOWTO wird die Konfiguration der VLAN's für das Surf-LAN der IAC-BOX beschrieben. Konfiguration VLAN's TITEL Inhaltsverzeichnis Inhaltsverzeichnis...

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

Installation der SAS Foundation Software auf Windows

Installation der SAS Foundation Software auf Windows Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software

Mehr

Lizenzierung von System Center 2012

Lizenzierung von System Center 2012 Lizenzierung von System Center 2012 Mit den Microsoft System Center-Produkten lassen sich Endgeräte wie Server, Clients und mobile Geräte mit unterschiedlichen Betriebssystemen verwalten. Verwalten im

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Avira Management Console 2.6.1 Optimierung für großes Netzwerk. Kurzanleitung

Avira Management Console 2.6.1 Optimierung für großes Netzwerk. Kurzanleitung Avira Management Console 2.6.1 Optimierung für großes Netzwerk Kurzanleitung Inhaltsverzeichnis 1. Einleitung... 3 2. Aktivieren des Pull-Modus für den AMC Agent... 3 3. Ereignisse des AMC Agent festlegen...

Mehr

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele: 2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Configuring Terminal Services o Configure Windows Server 2008 Terminal Services RemoteApp (TS RemoteApp) o Configure Terminal Services Gateway

Mehr

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern andreas.moesching@rtc.ch

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern andreas.moesching@rtc.ch Eclipse Runtime (OSGi) als Plattform eines Swing Rich Client Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern andreas.moesching@rtc.ch Zu meiner Person

Mehr

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper) Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4

Mehr

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Handbuch timecard Connector 1.0.0 Version: 1.0.0 REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Furtwangen, den 18.11.2011 Inhaltsverzeichnis Seite 1 Einführung... 3 2 Systemvoraussetzungen...

Mehr

ANYWHERE Zugriff von externen Arbeitsplätzen

ANYWHERE Zugriff von externen Arbeitsplätzen ANYWHERE Zugriff von externen Arbeitsplätzen Inhaltsverzeichnis 1 Leistungsbeschreibung... 3 2 Integration Agenda ANYWHERE... 4 3 Highlights... 5 3.1 Sofort einsatzbereit ohne Installationsaufwand... 5

Mehr

Workflow Systeme mit der Windows Workflow Foundation

Workflow Systeme mit der Windows Workflow Foundation Studiengang Electronic Business (EB) Diplomarbeit (280000) Workflow Systeme mit der Windows Workflow Foundation externe Betreuung durch Christoph Müller vorgelegt bei Prof. Dr. Michael Gröschel von Hans-Martin

Mehr

VIDA ADMIN KURZANLEITUNG

VIDA ADMIN KURZANLEITUNG INHALT 1 VIDA ADMIN... 3 1.1 Checkliste... 3 1.2 Benutzer hinzufügen... 3 1.3 VIDA All-in-one registrieren... 4 1.4 Abonnement aktivieren und Benutzer und Computer an ein Abonnement knüpfen... 5 1.5 Benutzername

Mehr

Installation des edu- sharing Plug- Ins für Moodle

Installation des edu- sharing Plug- Ins für Moodle Installation des edu- sharing Plug- Ins für Moodle [edu-sharing Team] [Dieses Dokument beschreibt die Installation und Konfiguration des edu-sharing Plug-Ins für das LMS Moodle.] edu- sharing / metaventis

Mehr

Windows 8 Lizenzierung in Szenarien

Windows 8 Lizenzierung in Szenarien Windows 8 Lizenzierung in Szenarien Windows Desktop-Betriebssysteme kommen in unterschiedlichen Szenarien im Unternehmen zum Einsatz. Die Mitarbeiter arbeiten an Unternehmensgeräten oder bringen eigene

Mehr

Lokale Installation von DotNetNuke 4 ohne IIS

Lokale Installation von DotNetNuke 4 ohne IIS Lokale Installation von DotNetNuke 4 ohne IIS ITM GmbH Wankelstr. 14 70563 Stuttgart http://www.itm-consulting.de Benjamin Hermann hermann@itm-consulting.de 12.12.2006 Agenda Benötigte Komponenten Installation

Mehr

Parallels Mac Management 3.5

Parallels Mac Management 3.5 Parallels Mac Management 3.5 Deployment-Handbuch 25. Februar 2015 Copyright 1999 2015 Parallels IP Holdings GmbH und Tochterunternehmen. Alle Rechte vorbehalten. Alle anderen hierin erwähnten Marken und

Mehr

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof Bedienungsanleitung für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof Matthias Haasler Version 0.4 Webadministrator, email: webadmin@rundkirche.de Inhaltsverzeichnis 1 Einführung

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

Lizenzierung von Windows Server 2012

Lizenzierung von Windows Server 2012 Lizenzierung von Windows Server 2012 Das Lizenzmodell von Windows Server 2012 Datacenter und Standard besteht aus zwei Komponenten: Prozessorlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

RESTful Web. Representational State Transfer

RESTful Web. Representational State Transfer RESTful Web Representational State Transfer 1 Warum REST? REST ist die Lingua Franca des Webs Heterogene (verschiedenartige) Systeme können mit REST kommunizieren, unabhängig von Technologie der beteiligten

Mehr

FAQ The FAQ/knowledge base. Version 2.1.1

FAQ The FAQ/knowledge base. Version 2.1.1 FAQ The FAQ/knowledge base. Version 2.1.1 (c) 2012 OTRS AG, http://otrs.org/ GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007 This work is copyrighted by OTRS AG, Norsk-Data-Str. 1, 61352 Bad

Mehr

Synchronisations- Assistent

Synchronisations- Assistent TimePunch Synchronisations- Assistent Benutzerhandbuch Gerhard Stephan Softwareentwicklung -und Vertrieb 25.08.2011 Dokumenten Information: Dokumenten-Name Benutzerhandbuch, Synchronisations-Assistent

Mehr

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Installation von NetBeans inkl. Glassfish Anwendungs-Server Installation von NetBeans inkl. Glassfish Anwendungs-Server Diese Anleitung führt Sie Schritt für Schritt durch die Einrichtung der Entwicklungsumgebung NetBeans, angefangen beim Download der benötigten

Mehr

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695 Database Exchange Manager Replication Service- schematische Darstellung Replication Service- allgemeines Replikation von Daten von bzw. in ein SAP-System und einer relationalen DMS-Datenbank Kombination

Mehr

Einleitung: Frontend Backend

Einleitung: Frontend Backend Die Internetseite des LSW Deutschland e.v. hat ein neues Gesicht bekommen. Ab dem 01.01.2012 ist sie in Form eines Content Management Systems (CMS) im Netz. Einleitung: Die Grundlage für die Neuprogrammierung

Mehr

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren Verwaltungsdirektion Informatikdienste Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren Inhaltsverzeichnis Einleitung... 3 Installation WSUS Server... 4 Dokumente... 4 Step by Step Installation...

Mehr

ESB - Elektronischer Service Bericht

ESB - Elektronischer Service Bericht Desk Software & Consulting GmbH ESB - Elektronischer Service Bericht Dokumentation des elektronischen Serviceberichts Matthias Hoffmann 25.04.2012 DESK Software und Consulting GmbH Im Heerfeld 2-4 35713

Mehr

ICS-Addin. Benutzerhandbuch. Version: 1.0

ICS-Addin. Benutzerhandbuch. Version: 1.0 ICS-Addin Benutzerhandbuch Version: 1.0 SecureGUARD GmbH, 2011 Inhalt: 1. Was ist ICS?... 3 2. ICS-Addin im Dashboard... 3 3. ICS einrichten... 4 4. ICS deaktivieren... 5 5. Adapter-Details am Server speichern...

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Grid-Systeme. Betrachtung verschiedener Softwareplattformen zur Realisierung von Grids und Vorstellung des Globus Toolkit. 07.06.2002 Grid Systeme 1

Grid-Systeme. Betrachtung verschiedener Softwareplattformen zur Realisierung von Grids und Vorstellung des Globus Toolkit. 07.06.2002 Grid Systeme 1 Grid-Systeme Betrachtung verschiedener Softwareplattformen zur Realisierung von Grids und Vorstellung des Globus Toolkit 07.06.2002 Grid Systeme 1 Gliederung Vorstellung verschiedener Plattformen Globus

Mehr

Workflow, Business Process Management, 4.Teil

Workflow, Business Process Management, 4.Teil Workflow, Business Process Management, 4.Teil 24. Januar 2004 Der vorliegende Text darf für Zwecke der Vorlesung Workflow, Business Process Management des Autors vervielfältigt werden. Eine weitere Nutzung

Mehr

Man unterscheidet zwischen LAN (Local Area Network) und WAN (Wide Area Network), auch Internet genannt.

Man unterscheidet zwischen LAN (Local Area Network) und WAN (Wide Area Network), auch Internet genannt. Netzwerk Ein Netzwerk wird gebildet, wenn mehrere Geräte an einem Switch mit Netzwerkkabeln angeschlossen werden. Dabei können die einzelnen Geräte miteinander kommunizieren und über ein Netzwerkprotokoll

Mehr

InfoPoint vom 9. November 2011

InfoPoint vom 9. November 2011 InfoPoint vom 9. November 2011 Was ist Joomla? Theorie Installation Extensions Administration Demo Joomla ist ein modulares content management system (CMS) Es ermöglicht eine Website zu erstellen und online

Mehr

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand: 28.05.2014

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand: 28.05.2014 robotron*e count robotron*e sales robotron*e collect Anwenderdokumentation Version: 2.0 Stand: 28.05.2014 Seite 2 von 5 Alle Rechte dieser Dokumentation unterliegen dem deutschen Urheberrecht. Die Vervielfältigung,

Mehr

IT-Governance und Social, Mobile und Cloud Computing: Ein Management Framework... Bachelorarbeit

IT-Governance und Social, Mobile und Cloud Computing: Ein Management Framework... Bachelorarbeit IT-Governance und Social, Mobile und Cloud Computing: Ein Management Framework... Bachelorarbeit zur Erlangung des akademischen Grades Bachelor of Science (B.Sc.) im Studiengang Wirtschaftswissenschaft

Mehr

(1) Mit dem Administrator Modul werden die Datenbank, Gruppen, Benutzer, Projekte und sonstige Aufgaben verwaltet.

(1) Mit dem Administrator Modul werden die Datenbank, Gruppen, Benutzer, Projekte und sonstige Aufgaben verwaltet. 1 TimeTrack! TimeTrack! Ist ein Softwareprodukt von The Project Group, welches der Erfassung von Ist- Aufwänden von Projekten dient. Voraussetzung hierfür ist allerdings, dass das Projekt vorher mit Microsoft

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java Stand: 21.02.2015 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert

Mehr

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2 Kurzanleitung zur Softwareverteilung von Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2 I. BitDefender Management Agenten Verteilung...2 1.1. Allgemeine Bedingungen:... 2 1.2. Erste

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Business Application Framework für SharePoint Der Kern aller PSC-Lösungen

Business Application Framework für SharePoint Der Kern aller PSC-Lösungen Business Application Framework für SharePoint Der Kern aller PSC-Lösungen Überblick pscbaf Dieses Dokument liefert die Antworten auf folgende Fragen: Was ist das Portal Systems Business Application Framework

Mehr

FastViewer Remote Edition 2.X

FastViewer Remote Edition 2.X FastViewer Remote Edition 2.X Mit der FastViewer Remote Edition ist es möglich beliebige Rechner, unabhängig vom Standort, fernzusteuern. Die Eingabe einer Sessionnummer entfällt. Dazu muß auf dem zu steuernden

Mehr

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

TimeMachine. Time CGI. Version 1.5. Stand 04.12.2013. Dokument: time.odt. Berger EDV Service Tulbeckstr. 33 80339 München

TimeMachine. Time CGI. Version 1.5. Stand 04.12.2013. Dokument: time.odt. Berger EDV Service Tulbeckstr. 33 80339 München Time CGI Version 1.5 Stand 04.12.2013 TimeMachine Dokument: time.odt Berger EDV Service Tulbeckstr. 33 80339 München Fon +49 89 13945642 Mail rb@bergertime.de Versionsangaben Autor Version Datum Kommentar

Mehr

Java und XML 2. Java und XML

Java und XML 2. Java und XML Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik Java und XML Hauptseminar Telematik WS 2002/2003

Mehr

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH Amt für Informatik Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH Anleitung vom 12. September 2009 Version: 1.0 Ersteller: Ressort Sicherheit Zielgruppe: Benutzer von SSLVPN.TG.CH Kurzbeschreib:

Mehr

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor: Client-Installation ec@ros2 ASP-Server 1. Allgemeine Informationen Für den Einsatz von ec@ros2 ist auf den Clients die Software Java Webstart (enthalten im Java Runtime Environment (JRE)) notwendig. Wir

Mehr

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten Seit Anfang Juni 2012 hat Facebook die Static FBML Reiter deaktiviert, so wird es relativ schwierig für Firmenseiten eigene Impressumsreiter

Mehr

CADEMIA: Einrichtung Ihres Computers unter Windows

CADEMIA: Einrichtung Ihres Computers unter Windows CADEMIA: Einrichtung Ihres Computers unter Windows Stand: 21.02.2015 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert sein.

Mehr

CNAME-Record Verknüpfung einer Subdomain mit einer anderen Subdomain. Ein Alias für einen Domainnamen.

CNAME-Record Verknüpfung einer Subdomain mit einer anderen Subdomain. Ein Alias für einen Domainnamen. Seite 1 von 5 Nameserver Fragen zu den Nameservereinstellungen df FAQ Technische FAQ Nameserver Welche Nameserver-Records stehen zur Verfügung? Bei domainfactory können folgende Nameservereinträge erstellt

Mehr

Windows Server 2008 für die RADIUS-Authentisierung einrichten

Windows Server 2008 für die RADIUS-Authentisierung einrichten Windows Server 2008 für die RADIUS-Authentisierung einrichten Version 0.2 Die aktuellste Version dieser Installationsanleitung ist verfügbar unter: http://www.revosec.ch/files/windows-radius.pdf Einleitung

Mehr

Gruppenrichtlinien und Softwareverteilung

Gruppenrichtlinien und Softwareverteilung Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden

Mehr

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16 Änderungen in Dokumentation und Software sind vorbehalten! Copyright Copyright 2005 COSA GmbH Alle Rechte vorbehalten.

Mehr

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005 Das Software Studio Christian Efinger mobilepoi 0.91 Demo Version Anleitung Erstellt am 21. Oktober 2005 Kontakt: Das Software Studio Christian Efinger ce@efinger-online.de Inhalt 1. Einführung... 3 2.

Mehr

ISA Server 2004 Protokollierung - Von Marc Grote. Die Informationen in diesem Artikel beziehen sich auf:

ISA Server 2004 Protokollierung - Von Marc Grote. Die Informationen in diesem Artikel beziehen sich auf: ISA Server 2004 Protokollierung - Von Marc Grote Die Informationen in diesem Artikel beziehen sich auf:? Microsoft ISA Server 2004 Im Artikel Übersicht Monitoring wurde eine Zusammenfassung aller Überwachungsfunktionen

Mehr

Einführung in Eclipse und Java

Einführung in Eclipse und Java Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik

Mehr

HTBVIEWER INBETRIEBNAHME

HTBVIEWER INBETRIEBNAHME HTBVIEWER INBETRIEBNAHME Vorbereitungen und Systemvoraussetzungen... 1 Systemvoraussetzungen... 1 Betriebssystem... 1 Vorbereitungen... 1 Installation und Inbetriebnahme... 1 Installation... 1 Assistenten

Mehr

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert. Usability Heuristiken Karima Tefifha Proseminar: "Software Engineering Kernkonzepte: Usability" 28.06.2012 Prof. Dr. Kurt Schneider Leibniz Universität Hannover Die ProSeminar-Ausarbeitung beschäftigt

Mehr

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler - www.neo-one.de 13. Oktober 2008 Version 1.0.

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler - www.neo-one.de 13. Oktober 2008 Version 1.0. Konfigurationsanleitung Access Control Lists (ACL) Funkwerk Copyright Stefan Dahler - www.neo-one.de 13. Oktober 2008 Version 1.0 Seite - 1 - 1. Konfiguration der Access Listen 1.1 Einleitung Im Folgenden

Mehr

Installation Microsoft SQL Server 2008 Express

Installation Microsoft SQL Server 2008 Express Installation Microsoft SQL Server 2008 Express Im nachfolgenden Dokument werden alle Einzelschritte aufgeführt, die als Voraussetzung für die korrekte Funktion der SelectLine Applikation mit dem SQL Server

Mehr

IGT-Richtlinie 01: Anforderungen an Smarthome-Systeme

IGT-Richtlinie 01: Anforderungen an Smarthome-Systeme Bewertungskriterien inklusive Vorlagen zur Unterscheidung der Funktionalität von Smarthome- Systemen aus Nutzersicht bzw. aus technischer Sicht. Version 03, August 2015 Prof. Dr. Michael Krödel IGT - Institut

Mehr

SharePoint Demonstration

SharePoint Demonstration SharePoint Demonstration Was zeigt die Demonstration? Diese Demonstration soll den modernen Zugriff auf Daten und Informationen veranschaulichen und zeigen welche Vorteile sich dadurch in der Zusammenarbeit

Mehr

PHP Kurs Online Kurs Analysten Programmierer Web PHP

PHP Kurs Online Kurs Analysten Programmierer Web PHP PHP Kurs Online Kurs Analysten Programmierer Web PHP Akademie Domani info@akademiedomani.de Allgemeines Programm des Kurses PHP Modul 1 - Einführung und Installation PHP-Umgebung Erste Lerneinheit Introduzione

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

Installationsanleitung dateiagent Pro

Installationsanleitung dateiagent Pro Installationsanleitung dateiagent Pro Sehr geehrter Kunde, mit dieser Anleitung möchten wir Ihnen die Installation des dateiagent Pro so einfach wie möglich gestalten. Es ist jedoch eine Softwareinstallation

Mehr

2. Kommunikation und Synchronisation von Prozessen 2.2 Kommunikation zwischen Prozessen

2. Kommunikation und Synchronisation von Prozessen 2.2 Kommunikation zwischen Prozessen 2. Kommunikation und Synchronisation von Prozessen 2.2 Kommunikation zwischen Prozessen Dienste des Internets Das Internet bietet als riesiges Rechnernetz viele Nutzungsmöglichkeiten, wie etwa das World

Mehr

Registrierung am Elterninformationssysytem: ClaXss Infoline

Registrierung am Elterninformationssysytem: ClaXss Infoline elektronisches ElternInformationsSystem (EIS) Klicken Sie auf das Logo oder geben Sie in Ihrem Browser folgende Adresse ein: https://kommunalersprien.schule-eltern.info/infoline/claxss Diese Anleitung

Mehr

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

Mehr

IT- Wir machen das! Leistungskatalog. M3B Service GmbH Alter Sportplatz Lake 1 57392 Schmallenberg

IT- Wir machen das! Leistungskatalog. M3B Service GmbH Alter Sportplatz Lake 1 57392 Schmallenberg IT- Wir machen das! Leistungskatalog M3B Service GmbH Alter Sportplatz Lake 1 57392 Schmallenberg Tel.: 02972 9725-0 Fax: 02972 9725-92 Email: info@m3b.de www.m3b.de www.systemhaus-sauerland.de Inhaltsverzeichnis

Mehr

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver Eine Firewall für Lexware professional oder premium konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Die Firewall von Windows 7 und Windows 2008 Server... 2 4. Die Firewall

Mehr

Betriebshandbuch. MyInTouch Import Tool

Betriebshandbuch. MyInTouch Import Tool Betriebshandbuch MyInTouch Import Tool Version 2.0.5, 17.08.2004 2 MyInTouch Installationshandbuch Inhaltsverzeichnis Inhaltsverzeichnis... 2 Bevor Sie beginnen... 3 Einleitung...3 Benötigte Daten...3

Mehr

Netzwerkeinstellungen unter Mac OS X

Netzwerkeinstellungen unter Mac OS X Netzwerkeinstellungen unter Mac OS X Dieses Dokument bezieht sich auf das D-Link Dokument Apple Kompatibilität und Problemlösungen und erklärt, wie Sie schnell und einfach ein Netzwerkprofil unter Mac

Mehr

Endpoint Web Control Übersichtsanleitung

Endpoint Web Control Übersichtsanleitung Endpoint Web Control Übersichtsanleitung Sophos Web Appliance Sophos UTM (Version 9.2 oder höher) Sophos Enterprise Console Sophos Endpoint Security and Control Stand: Dezember 2013 Inhalt 1 Endpoint Web

Mehr

Gmail in Thunderbird mit IMAP einrichten

Gmail in Thunderbird mit IMAP einrichten Gmail in mit IMAP einrichten Der E-Mail-Dienst Gmail (Google Mail) erfreut sich bei vielen Anwendern großer Beliebtheit, doch nicht alle greifen auf Ihre E-Mails ausschließlich über die Web-Oberfläche

Mehr

System-Update Addendum

System-Update Addendum System-Update Addendum System-Update ist ein Druckserverdienst, der die Systemsoftware auf dem Druckserver mit den neuesten Sicherheitsupdates von Microsoft aktuell hält. Er wird auf dem Druckserver im

Mehr

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA Unter Windows Vista ist die Installation der V-Modell XT Komponenten nicht ohne Weiteres möglich, da die User Account Control (UAC)-Engine dies unterbindet.

Mehr

Installationshilfe VisKalk V5

Installationshilfe VisKalk V5 1 Installationshilfe VisKalk V5 Updateinstallation (ältere Version vorhanden): Es ist nicht nötig das Programm für ein Update zu deinstallieren! Mit der Option Programm reparieren wird das Update über

Mehr

AnNoText. AnNoText Online-Update. Copyright Wolters Kluwer Deutschland GmbH

AnNoText. AnNoText Online-Update. Copyright Wolters Kluwer Deutschland GmbH Copyright Wolters Kluwer Deutschland GmbH AnNoText AnNoText Online-Update Wolters Kluwer Deutschland GmbH Software + Services Legal Robert-Bosch-Straße 6 D-50354 Hürth Telefon (02 21) 9 43 73-6000 Telefax

Mehr

Administrator Handbuch

Administrator Handbuch SPTools Extension Keys: sptools_fal_base sptools_fal_driver SPTools Version: 1 Extension Version: 1.0.2 Inhaltsverzeichnis... 1 1. Einleitung... 2 2. Systemanforderungen... 3 3. SPTools FAL Installation...

Mehr

White Paper. Konfiguration und Verwendung des Auditlogs. 2012 Winter Release

White Paper. Konfiguration und Verwendung des Auditlogs. 2012 Winter Release White Paper Konfiguration und Verwendung des Auditlogs 2012 Winter Release Copyright Fabasoft R&D GmbH, A-4020 Linz, 2011. Alle Rechte vorbehalten. Alle verwendeten Hard- und Softwarenamen sind Handelsnamen

Mehr