Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des...

80
Praxisprojektbericht im Studiengang Master Informatik Hersteller¨ ubergreifende Heim-/Geb¨ audeautomatisierung beim Einsatz von openHAB von Peter Manheller (9016802) Erstpr¨ ufer: Prof. Dr. Karl Jonas Zweitpr¨ ufer: M.Sc. Michael Rademacher Zeitraum: 30.03.2015 - 24.07.2015 Eingereicht am: 26.06.2015

Transcript of Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des...

Page 1: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Praxisprojektbericht

im Studiengang Master Informatik

HerstellerubergreifendeHeim-/Gebaudeautomatisierung beim

Einsatz von openHAB

von

Peter Manheller(9016802)

Erstprufer: Prof. Dr. Karl JonasZweitprufer: M.Sc. Michael Rademacher

Zeitraum: 30.03.2015 - 24.07.2015Eingereicht am: 26.06.2015

Page 2: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Inhaltsverzeichnis

1 Einleitung 11.1 Aufgabenstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Die OSGi-Service-Platform 42.1 OSGi-Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1 Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2 Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2 OSGi-Schichtenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3 OSGi-Implementierungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3.1 Eclipse Equinox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3.2 Sonstige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 openHAB 143.1 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1.1 OSGi-Framework Komponenten . . . . . . . . . . . . . . . . . . . . . 153.1.2 openHAB Kernkomponenten . . . . . . . . . . . . . . . . . . . . . . . 183.1.3 openHAB Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2 openHAB Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.3 openHAB Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.4 Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.4.1 Regeln, Skripte und Aktionen . . . . . . . . . . . . . . . . . . . . . . 233.4.2 Jobmanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.5 Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.6 Persistenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.7 Sonstiges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4 Bewegungserkennung von Personen 274.1 Eingesetzte Hard- und Software . . . . . . . . . . . . . . . . . . . . . . . . . 294.2 Installation und Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . 304.3 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.4 Aufbau und Durchfuhrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5 Ergebnisse und Alternativen 385.1 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2 Alternative Ansatze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

6 Zusammenfassung und Fazit 42

II

Page 3: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Inhaltsverzeichnis

7 Anhang 447.1 Lex Uno Station - Leitrechner mit openHAB . . . . . . . . . . . . . . . . . . 44

7.1.1 Konfiguration - openHAB mit Hue-Binding . . . . . . . . . . . . . . . 447.1.2 Deklaration - openHAB-Items . . . . . . . . . . . . . . . . . . . . . . 447.1.3 Realisierung - openHAB-Sitemap . . . . . . . . . . . . . . . . . . . . 457.1.4 Konfiguration - openHAB-Persistence . . . . . . . . . . . . . . . . . . 467.1.5 Realisierung - openHAB-Rules . . . . . . . . . . . . . . . . . . . . . . 477.1.6 Remote-Zugriff - Bash-Skript . . . . . . . . . . . . . . . . . . . . . . 50

7.2 TP-Link WLAN Router - Receiver . . . . . . . . . . . . . . . . . . . . . . . . 527.2.1 Konfiguration - Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . 527.2.2 Konfiguration - Wireless . . . . . . . . . . . . . . . . . . . . . . . . . 527.2.3 Konfiguration - Lua Skript . . . . . . . . . . . . . . . . . . . . . . . . 537.2.4 Profil erstellen - Lua Skript . . . . . . . . . . . . . . . . . . . . . . . 547.2.5 Bewegung erkennen - Lua Skript . . . . . . . . . . . . . . . . . . . . 557.2.6 Kommandos fur openHAB REST-API - Lua Skript . . . . . . . . . . . 567.2.7 REST-API Kommando fur openHAB-Items - Lua Skript . . . . . . . . 57

7.3 TP-Link WLAN Router - Sender . . . . . . . . . . . . . . . . . . . . . . . . . 587.3.1 Konfiguration - Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . 587.3.2 Konfiguration - Wireless . . . . . . . . . . . . . . . . . . . . . . . . . 597.3.3 Multi-Generator Skript . . . . . . . . . . . . . . . . . . . . . . . . . . 59

7.4 openHAB-GUI fur realisierte Sitemap . . . . . . . . . . . . . . . . . . . . . . 607.5 Ergebnisse und Messwertvisualisierung . . . . . . . . . . . . . . . . . . . . . . 61

8 Eidesstattliche Erklarung 66

Literaturverzeichnis 73

III

Page 4: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Abbildungsverzeichnis

2.1 Beziehungen zwischen Bundles [Fil12, S. 74] . . . . . . . . . . . . . . . . . . 82.2 Zusammenhang Bundles und Services [Fil12, S. 78] . . . . . . . . . . . . . . . 92.3 OSGi-Schichtenmodell [i.A.a. All15c, S. 2] . . . . . . . . . . . . . . . . . . . 102.4 Interkation Bundles und Framework-Schichten [Web+10, S. 17] . . . . . . . . 112.5 Bundle-Lebenszyklus [i.A.a. All15c, S. 86] . . . . . . . . . . . . . . . . . . . . 11

3.1 openHAB Architektur [Uh15i, i.A.a.] . . . . . . . . . . . . . . . . . . . . . . 153.2 UML-Klassendiagramm des Philips Hue-Bindings . . . . . . . . . . . . . . . . 21

4.1 Eingesetzte Hard- und Software [ope15] . . . . . . . . . . . . . . . . . . . . . 304.2 UML-Sequenzdiagramm - Profil erstellen . . . . . . . . . . . . . . . . . . . . 334.3 UML-Sequenzdiagramm - Bewegungserkennung starten und stoppen . . . . . . 344.4 UML-Sequenzdiagramm - Zusatzliche UDP-Pakete senden . . . . . . . . . . . 354.5 Aufbau des Szenarios in der Hochschule Bonn Rhein Sieg (Raum C060) [ope15] 36

5.1 Messergebnisse fur den Anwendungsfall ”Profil erstellen” . . . . . . . . . . . . 385.2 Messergebnisse fur den Anwendungsfall ”Bewegung erkennen” (Ruhe-Phase) . 395.3 Messergebnisse fur den Anwendungsfall ”Bewegung erkennen” (Bewegungs-

Phase) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

7.1 Main-Menu der Benutzeroberflache [Uh15u] . . . . . . . . . . . . . . . . . . 607.2 Sub-Menu der Benutzeroberflache - Steuerung der Leuchten [Uh15u] . . . . . 617.3 Visualisierung fur Messdurchlauf #1 . . . . . . . . . . . . . . . . . . . . . . . 617.4 Visualisierung fur Messdurchlauf #2 . . . . . . . . . . . . . . . . . . . . . . . 617.5 Visualisierung fur Messdurchlauf #3 . . . . . . . . . . . . . . . . . . . . . . . 627.6 Visualisierung fur Messdurchlauf #4 . . . . . . . . . . . . . . . . . . . . . . . 627.7 Visualisierung fur Messdurchlauf #5 . . . . . . . . . . . . . . . . . . . . . . . 627.8 Visualisierung fur Messdurchlauf #6 . . . . . . . . . . . . . . . . . . . . . . . 637.9 Visualisierung fur Messdurchlauf #7 . . . . . . . . . . . . . . . . . . . . . . . 637.10 Visualisierung fur Messdurchlauf #8 . . . . . . . . . . . . . . . . . . . . . . . 637.11 Visualisierung fur Messdurchlauf #9 . . . . . . . . . . . . . . . . . . . . . . . 647.12 Visualisierung fur Messdurchlauf #10 . . . . . . . . . . . . . . . . . . . . . . 647.13 Visualisierung fur Messdurchlauf #11 . . . . . . . . . . . . . . . . . . . . . . 647.14 Anmerkungen zu den einzelnen Messdurchlaufen . . . . . . . . . . . . . . . . 65

IV

Page 5: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Quelltextverzeichnis

2.1 Manifest - Ausschnitt ”openHAB Core” . . . . . . . . . . . . . . . . . . . . . 6

3.1 Ausschnitt - OSGILogListener.class - Delegation an den SLF4J-Logger [Uh15m,Kreuzer K.] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2 Ausschnitt der ”execute”-Methode der ”HueBinding”-Klasse [Uh15m, Hart-mann R., Schering J.] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.3 Ausschnitt des MySQL-Services - Datentypen [Uh15m, Sjostrand H., Eichstadt-Engelen T., Jackson C.] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

7.1 Ausschnitt der openHAB-Konfiguration . . . . . . . . . . . . . . . . . . . . . 447.2 Deklaration der openHAB-Items . . . . . . . . . . . . . . . . . . . . . . . . . 447.3 Konfiguration der openHAB-Sitemap . . . . . . . . . . . . . . . . . . . . . . 457.4 rrd4j-Persistenz fur Visualisierung der Signalstarken . . . . . . . . . . . . . . . 467.5 Konfiguration der MySql-Persistenz . . . . . . . . . . . . . . . . . . . . . . . 477.6 MySql-Query fur Auswertung der Ergebnisse . . . . . . . . . . . . . . . . . . 477.7 openHAB-Rules fur Reaktion auf Nutzer- und Systeminteraktion . . . . . . . . 477.8 Bash-Skript fur Remote-Zugriff auf Sender und Receiver . . . . . . . . . . . . 517.9 Ausschnitt der Netzwerk-Konfiguration . . . . . . . . . . . . . . . . . . . . . 527.10 Wireless-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527.11 Lua-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537.12 RSSI-Profil erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547.13 Bewegung anhand der absoluten RSSI-Differenz erkennen . . . . . . . . . . . 557.14 REST-API Kommandos (POST / GET) . . . . . . . . . . . . . . . . . . . . 567.15 openHAB-Items auf dem Receiver verarbeiten (optional) . . . . . . . . . . . . 577.16 Ausschnitt der Netzwerk-Konfiguration . . . . . . . . . . . . . . . . . . . . . 587.17 Wireless-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597.18 Multi-Generator Skript fur 10 Pakete/s . . . . . . . . . . . . . . . . . . . . . 59

V

Page 6: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Abkurzungsverzeichnis

BatiBUS Industrielles Feldbussystem des BCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

BCI BatiBUS Club International . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

CENELEC Comite Europeen de Normalisation Electrotechnique . . . . . . . . . . . . . . . 1

DDC-GA Direct-Digital-Control-Gebaudeautomation. . . . . . . . . . . . . . . . . . . . . . . . .2

Drools Rule Management System Solution der JBoss Community . . . . . . . . . 14

EHS European Home Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

EHSA European Home Systems Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

EIB Europaischer Installationsbus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

EIBA European Installation Bus Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

EnOcean Technologie batterieloser Funksensorik

Fhem Hausautomations-Server auf Basis von Perl . . . . . . . . . . . . . . . . . . . . . . . . 2

FS20 Protokoll fur Funksysteme

GA Gebaudeautomatisierung bzw. Gebaudeautomation . . . . . . . . . . . . . . . . . 1

HA Heimautomatisierung bzw. Heimautomation . . . . . . . . . . . . . . . . . . . . . . . 1

HomeMatic Produktfamilie der eQ-3 AG fur Hausautomation

IANA Internet Assigned Numbers Authority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

IDE Integrated Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

IFTTT If This Then That . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

IHC Intelligent Home Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

INSs Inertial Navigation Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Instabus Installation Bussystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

IoT Internet of Things. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42

J2ME Java 2 Micro Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

JDBC Java Database Connectivity - Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

JPA Java Persistence API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

JVM Software-Platform - Java Virtual Machine . . . . . . . . . . . . . . . . . . . . . . . . . 4

KNX Konnex-Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

LON Local Operating Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

LOS Line-Of-Sight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Lua Imperative und funktionale Skriptsprache . . . . . . . . . . . . . . . . . . . . . . . . . 30

MA Management Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Maven Software fur den Erstellungsprozess von Softwareprodukten . . . . . . . . 14

VI

Page 7: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Quelltextverzeichnis

mDNS multicast Domain Name System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

MisterHouse Open-Source Home Automation Software (Perl) . . . . . . . . . . . . . . . . . . 14

openHAB open Home Automation Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

OpenRemote Open Source Automation Platform. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14

ORM Object Relational Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

OSGi-Alliance Non-Profit-Organisation - Grundung Marz 1999 . . . . . . . . . . . . . . . . . . . . 4

OSGi-Framework Softwareplattform mit Komponentenmodell auf Basis von Java . . . . . 2

PBX Private Branch Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

POJOs Plain Old Java Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

RCP Rich Client Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

ROS Robot Operating System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

RSSI Received Signal Strength Indicator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

SDK Software Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

SHSs Step-and-Heading Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

SLF4J Simple Logging Facade for Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

SMTP Simple Mail Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

SQL Structured Query Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25

SSH Secure Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Telnet Teletype Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

TTS Text-To-Speech . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

UDP User Datagram Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31

UIs User Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

URI Uniform Resource Identifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

UX User Experience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

SMI Standard Motor Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

WAN Wide Area Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

WAPs Wireless Access Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Xbase Expression Language fur Java implementiert in Xtext. . . . . . . . . . . . . .14

XMPP Extensible Messaging and Presence Protocol . . . . . . . . . . . . . . . . . . . . . .24

Xtend flexibler und expressiver Dialekt von Java . . . . . . . . . . . . . . . . . . . . . . . . . 19

VII

Page 8: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

1 Einleitung

Im Jahre 1970 erfolgt aus der Unternehmensgrundung 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 (Comite Europeen de Nor-

malisation Electrotechnique) als europaische Norm unter der Bezeichnung EIB (Europaischer

Installationsbus) fur die EIBA (European Installation Bus Association) ratifiziert [CEN15]. Et-

wa zeitgleich zur Einfuhrung 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 Bundnis

der oben genannten Organisationen zur KNX-Association, wird bei gleichzeitiger Zusammen-

legung der Bussysteme EIB, BatiBUS und EHS, der internationale Grundstein fur die heutige

GA (Gebaudeautomatisierung bzw. Gebaudeautomation) gelegt [Ass15b]. Der daraus entstan-

dene KNX (Konnex-Bus) wird im Fruhjahr 2002 veroffentlicht und letztendlich im November

2006 als internationaler Standard (ISO/IEC 14543-3) 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 fur 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 beschrankt auf den privaten Wohnungsbau mit Einsatzbereichen aus Energieeinsparung,

Komfort und Sicherheit [Mer+10, S. 18]. Hingegen ist die GA konzentriert auf Zweckbauten, z.

B. Burohauser oder Einkaufszentren, deren Einsatzbereiche uber die der HA hinaus gehen und

zudem die Faktoren der Flexibilitat und Kommunikation der Bussysteme betrachten [Mer+10,

S. 19].

Trotz der internationalen Standardisierung weist die Interoperabilitat der Technologien, sowohl

Hard- als auch Software, Lucken auf. Dies fordert die Hersteller fur die Zusammenfuhrung der

Vorteile ihrer Kommunikationsstandards zur (Weiter-)Entwicklung neuer Vernetzungssysteme

(Gateways) auf [Gmb15a]. Da die Kosten fur Anschaffung und der Aufwand fur die Instal-

lation und die Vernetzung der Gateways quadratisch ist, verliert der Ansatz an Bedeutung.

1

Page 9: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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-Gebaudeautomation) wiederzufinden. Den Abschluss bildet die Felde-

bene - der Aktoren und Sensoren zugehorig sind [Mer+10, S. 22-26]. Die Symcon GmbH

bietet bereits mit ihrer proprietaren Software ”IP-Symcon” und dem zugehorigen 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 fur eine Open-

Source-Software (GPL v2) fur den Anwendungsbereich der GA bzw. HA geschaffen [Wil15]. Mit

openHAB (open Home Automation Bus) bietet die openHAB UG (haftungsbeschrankt) eine

Open-Source-Software (EPL) auf Basis des OSGi-Framework (Softwareplattform mit Kom-

ponentenmodell auf Basis von Java) an. Der Schwerpunkt der Entwicklung strebt neben der

herstellerubergreifenden Vernetzung zudem im aktuellen Stadium die Verbesserung der UX

(User Experience) an [Uh15u].

1.1 Aufgabenstellung

Der Auftrag des Projektes besteht in der Ausfuhrung eines realitatsnahen Szenarios der Au-

tomatisierung beim Einsatz der ”openHAB”-Software und der Vernetzung verschiedener Her-

stellerkomponenten. Zudem soll die Software im Hinblick auf umgesetzte Modularisierung und

verwendete Architekturen der OSGi-Service-Platform analysiert werden.

Fur obigen Auftrag sind folgende Teilanforderungen durchzufuhren:

• Die OSGi-Service-Platform bildet die Kernkomponente von openHAB: Neben Funktions-

weise und Architektur des OSGi-Framework sind benotigte und umgesetzte Plattform-

Restriktionen in openHAB zu klaren.

• Fur das realitatsnahe 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 fur das Szenario

verwirklicht und die Gute der Bewegungserkennung bei variierender Parametrisierung

analysiert werden.

1.2 Zielsetzung

Das Ziel des vorliegenden Projektes ist es, eine herstellerubergreifende Losung fur das Anwen-

dungsszenario der Bewegungserkennung von Personen im Rahmen der GA und HA beim Einsatz

2

Page 10: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

1 Einleitung

von openHAB auszuarbeiten. Außerdem ist die eingesetzte Hard- und Software zur Umsetzung

des Szenarios im Hinblick auf mogliche auftretende Fehler in der Erkennung zu validieren. Ab-

schließend sollen die gewonnenen Erkenntnisse in Abgrenzung zu weiteren Losungsansatzen

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 untereinan-

der. 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 Paradig-

men 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 Realitatsbezug auch die verwendete Hard- und Software naher betrachtet und eine an-

schließende Durchfuhrung stellt das Proof of Concept dar. Die Ergebnisse werden im Anschluss

in Kapitel 5 - ”Ergebnisse und Alternativen” genutzt um die eingesetzten Technologien gegen

alternative Losungsansatze 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 befurworten.

3

Page 11: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

2 Die OSGi-Service-Platform

In diesem Kapitel wird ein Uberblick der ”OSGi-Service-Platform” prasentiert. Aufgrund des

umfangreichen OSGi-Standards, der von der OSGi-Alliance (Non-Profit-Organisation - Grundung

Marz 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 Dokumen-

tation 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 naher betrachtet werden - auch die

”OSGi Service Platform Mobile Specification”, die speziell fur mobile Endgerate definiert ist

[vgl. Web+10, S. 29; Wut08, 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 Augen-

merk auf der Verwaltung, Entwicklung und Kommunikation von bzw. zwischen Services liegt.

OSGi ist zwar durch die Spezifizierung auf der JVM (Software-Platform - Java Virtual Ma-

chine) nicht sprachunabhangig, jedoch plattformunabhangig und erfreut sich deshalb großer

Beliebtheit und Anwendung rund um das Smartphone, den Automobilbereich, der Unterhal-

tungselektronik, reinen Desktop-Applikationen aber auch serverseitige Anwendungen und vor

allem der HA [vgl. Web+10, S. 1 f.; Wut08, S. 14 f.] - auf konkrete Implementierungen

von OSGi wird im Abschnitt 2.3 eingegangen. Der Vorteil und damit auch die Befurwortung

zur Nutzung des OSGi-Framework liegt in der Beurteilung als bestbewertetes dynamisches

Modulsystem im Vergleich zu Laufzeitsystemen, wie z. B. ”DDL/COM” und ”Shared Librari-

es” [Fil12, S. 68 ff.]. Die fur die Bewertung betrachteten Kriterien behandeln dazu sowohl den

Aufbau bzw. die Struktur als auch die Umsetzung der Bestandteile, die fur eine korrekte Modu-

larisierung, also das Brechen der Komplexitat einer Software durch Dekomposition in Module,

notig sind [vgl. Fil12, S. 67 f.; Wut08, 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

Page 12: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

2 Die OSGi-Service-Platform

2.1 OSGi-Framework

Das OSGi-Framework ist eine Laufzeitumgebung die einen Container fur die Softwarekom-

ponenten (Module und Dienste) bereitstellt. Neben diesen Komponenten enthalt das Frame-

work den MA (Management Agent) als zentrale Verwaltungsstelle, dessen Hauptaufgabe die

Uberwachung des Lebenszykluses der Module und deren Dienste ist [Wut08, 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 2.1.1 beschrieben. In Abschnitt 2.1.2 sind die

Services, die zur bundle-ubergreifenden Kommunikation verwendet werden, charakterisiert.

Großere Softwareprodukte tendieren mit der Zeit dazu, dasss ihre innere Struktur

mehr einem Irrgarten ahnelt 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 Abhangig-

keiten, die in Abschnitt 2.1.1.2 erortert 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-Losungen, die konkrete Implementierungen des OSGi-Framework darstellen, ge-

nannt. Der Fokus liegt auf der Vorstellung der ”Eclipse Equinox”, die als Kernkomponente der

openHAB-Software anzusehen ist.

2.1.1 Bundles

Wie bereits erwahnt, ist ein Bundle mit dem Begriff Modul gleichzusetzen und beinhaltet ne-

ben Java-Archiven, Java-Klassen und anderen Ressourcen (z. B. Icons als Bilder) ein Manifest,

in dem erganzende 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 moglich.

In einem bundle-zugehorigen Manifest ist beschrieben, welche externen Archive das Bund-

le benotigt (import), bzw. ob es seine Funktionalitat anderen Bundles zur Verfugung stellt

(export). Damit ein Bundle die benotigten Abhangigkeiten aufschlusseln kann, erhalt es vom

OSGi-Framework-Container einen eigenen Class-Loader der die benotigten 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]. Grundsatzlich unterscheidet

die Spezifikation drei Arten von Bundles:

5

Page 13: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

2 Die OSGi-Service-Platform

• Requiring Bundles [All15c, S. 66 ff.] - Requiring Bundles setzen eine direkte Kom-

munikation bzw. Verbindung mit dem Require-Mechanismus um und werden in Ab-

schnitt 2.1.1.2 detaillierter beschrieben. Der Einsatz des Mechanismus birgt die Gefahr

von statischen Abhangigkeiten 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 Auflosung 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 Bund-

les nicht den ”Import/Export”-Mechanismus (Abschnitt 2.1.1.2), sondern mussen di-

rekt dem Boot-Class-Path beigelegt werden. Zwar bieten diese Bundles framework-eigene

Services an, wie z. B. den Permission Admin Service, sollten aber nicht fur die Implemen-

tierung anwendungsspezifischer Bundles verwendet werden, um statische Abhangigkeiten

zu vermeiden.

Zudem ist das OSGi-Bundle von den IANA (Internet Assigned Numbers Authority) als gultiger

MIME-Type ”vnd.osgi.bundle” klassifiziert [Aut15].

2.1.1.1 Manifest

Das Manifest ”META-INF/MANIFEST.MF” beinhaltet eine Auflistung von Metainformatio-

nen, die ein OSGi-Bundle individuell kennzeichnen. Zudem enthalt es Informationen fur den

Lebenszyklus und die verwendete Laufzeitumgebung [Fil12, S. 73].

1: Manifest -Version: 1.0

2: Bundle -Name: openHAB Core

3: Bundle -RequiredExecutionEnvironment: J2SE -1.5

4: Bundle -Vendor: openHAB.org

5: Bundle -Version: 1.7.0. 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 Na-

mensgebung folgt keiner direkten Konvention. Sollte die Namensgebung allerdings ”schwer”

6

Page 14: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

2 Die OSGi-Service-Platform

fallen, enthalt das Bundle wahrscheinlich Funktionalitat aus semantisch unabhangigen Berei-

chen, wodurch dann die Paradigmen der OSGi-Schichtenarchitektur nicht eingehalten werden

[Fil12, S. 137]. Mit ”RequiredExecutionEnvironment” wird die minimal benotigte Laufzeitum-

gebung gekennzeichnet. Der openHAB-Core benotigt mindestens die Java Plattform in der

Standard Edition Version 5. Aufgrund der Ruckwartskompatibilitat von Java konnen dem-

nach auch hohere Versionen fur 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 Funktionalitat abgerufen wird. Ist die ”Activation Policy” nicht ange-

geben, ist sie standardmaßig auf ”directive” gesetzt und das Bundle wird direkt beim Start

der Laufzeitumgebung mit initialisiert. Fur selbst-definierte Header-Angaben, die nicht dem

OSGi-Namespace folgen, konnen diese mit dem Prefix ”x-” gekennzeichnet werden [All15c,

S. 29]. Auf Header-Angaben, die fur eine Kommunikation von Bundles benotigt werden, wird

in Abschnitt 2.1.1.2 naher eingegangen - fur Weitere sei auf die auf OSGi-Service-Platform

Core Specification [All15c, S. 26-31] verwiesen.

2.1.1.2 Import, Export und Require

Neben den in Abschnitt 2.1.1.1 erwahnten, konnen die Header-Angaben ”Export-” und ”Import-

Package” genutzt werden, um Abhangigkeiten zwischen den Bundles zu erzeugen. Um externe

Funktionalitaten anderer Bundles nutzen zu konnen, kann das Bundle diese explizit in der

Import-Anweisung auflisten. Umgekehrt wird die Export-Anweisung im Manifest angegeben,

um die eigene Funktionalitat 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 - standardmaßig wird die aktuellste Version vom MA geladen. Neben einer spezifischen

Version konnen auch Version-Ranges durch die mathematische Intervall-Notation vermerkt

werden [vgl. All15c, S. 29 f.; Fil12, S. 79; Web+10, S. 7]. Um statische Abhangigkeiten zu

vermeiden, sollten Bundles fur den Export nie die direkten Implementierungen weiterreichen,

sondern nur solche Packages angeben, die ausschließlich Schnittstellen beinhalten: Das ”Class

Filtering” ermoglicht die flexible Einschrankung 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 mogliche Zyklen in der Abhangigkeitskette der Bundles.

Mit ”Require-Bundle” konnen 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

Page 15: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

2 Die OSGi-Service-Platform

[All15c, S. 68 f.]: Fur eine dynamische Kopplung der Bundles ist somit der Import und Export

zu bevorzugen.

Abbildung 2.1: Beziehungen zwischen Bundles [Fil12, S. 74]

2.1.2 Services

A service is a normal Java object that is registered under one or more Java inter-

faces with the service registry [All15c, S. 111]

OSGi-Services sind Instanzen von POJOs (Plain Old Java Objects) die durch die ”Bund-

le Context”-Objekte von Bundles genutzt werden konnen, um eigene Services zu registrieren

(bundleContext.registerService), fremde Services zu nutzen (bundleContext.getServiceReference

und bundleContext.getService) oder sogar uber mogliche Anderungen der Services informiert

zu werden (bundleContext.addServiceListener) [All15c, S. 111 f.]. Als zentrale und bundle-

ubergreifende Stelle dient die ”Service Registry” der Verwaltung der registrierten Services und

regelt Anfragen oder Anderungen der Services uber ”Service Events”. Wie in Abbildung 2.2

dargestellt, ist es es anderen Bundles nach Instanziierung der Services moglich, auf die Schnitt-

stelle zuzugreifen und dadurch die Funktionalitat zu nutzen. Summa Summarum bedeutet dies:

OSGi lost 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 Verfugung stellen [Web+10, S. 24].

Bei Verwendung von Import und Export ermoglicht das OSGi-Framework, mit den Services

als Softwareartefakt, eine dynamische Kommunikation innerhalb der Bundles. Wenn in der

8

Page 16: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

2 Die OSGi-Service-Platform

Entwicklung eine statische Kopplung mit ”Require” umgesetzt wird, sind die Vorteile der Ser-

vices, ihrer Registry und die Reaktion auf Events mit den Listenern hinfallig [Fil12, S. 78 f.].

Einige der Events sind in Abbildung 2.5 dargestellt und sind speziell dem Lebenszyklus ei-

nes Bundles bzw. der Objektinstanz, dem Service, zuzuordnen. Alle ubrigen Events sind den

Kategorien von Fehlermanagement (z. B. ERROR, WARNING oder INFO) oder der erweiter-

ten Package-Verwaltung (z. B. PACKAGES REFRESHED oder WAIT TIMEOUT) zugeordnet

[All15c, S. 105 f.]. Der MA nutzt die Service-Registry, um auf Anderungen 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 fur unterschiedliche Anwendungsfalle

an. Im Folgenden sind die sechs interessantesten Services erwahnt: [All15d]

• Log Service - Der Log-Service besteht aus zwei Services: Der ”LogService” ermoglicht

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 ermoglicht dem Entwickler die Standard-Technologien,

wie z. B. HTTP, HTML, XML und Servlets, zu nutzen. Dieser Service ist demnach ge-

eignet, 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 (Ja-

va 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

Page 17: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

2 Die OSGi-Service-Platform

• IO Connector Service - Der IO-Connector-Service ist eine Kommunikationsinfrastruk-

tur, die auf der Implementierung der J2ME (Java 2 Micro Edition) basiert: Notwendige

Kommunikationen werden uber den URI (Uniform Resource Identifier) realisiert [All15d,

S. 191].

Bis jetzt konnen die Bundles nur die Funktionalitat von Services innerhalb ihrer Laufzeitumge-

bung nutzen. Mit Einfuhrung des OSGi-Standards 4.2 (Marz 2010) arrangiert der ”Remote

Service Admin Service” die Konnektivitat fur ”Distributed Services” externer Laufzeitum-

gebungen in einem Netzwerk [Web+10, S. 19 f.].

2.2 OSGi-Schichtenmodell

Ausgehend von den Begrifflichkeiten der vorherigen Abschnitte sind die Zusammenhange

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

zugehorigen Bundles [Fil12, S. 139].

Bundleschicht: Auch wenn in Abbildung 2.3 die Bundles als unabhangige Komponente ein-

gezeichnet sind, so konnen sie dennoch auf jede logische Schicht zugreifen und von der Le-

benszyklusschicht noch zusatzlich gesteuert werden - siehe Abbildung 2.4.

10

Page 18: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

2 Die OSGi-Service-Platform

Abbildung 2.4: Interkation Bundles und Framework-Schichten [Web+10, S. 17]

Diensteschicht: Der Diensteschicht sind alle in Abschnitt 2.1.2 erorterten Komponenten

zugeteilt. Fur 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 Zustanden festgelegt. Der MA reguliert bzw. manipuliert die Bundle-Zustande.

Abbildung 2.5: Bundle-Lebenszyklus [i.A.a. All15c, S. 86]

11

Page 19: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

2 Die OSGi-Service-Platform

Ein Bundle kann somit nach seiner Installation direkt wieder deinstalliert werden. Andern-

falls folgt auf den INSTALLED-Zustand der RESOLVED-Zustand, von dem ausgehend der

MA dann das Bundle startet und der Modulschicht als ACTIVE zur Verfugung stellt. Das

OSGi-Framework verwirklicht dadurch Hot Deployment - das Aktualisieren, Installieren und

Deinstallieren von Bundles und Services wahrend der Laufzeit.

Modulschicht: Der Modulschicht sind alle Objektinstanzen der Bundles hinterlegt. Zudem

konnen die vom Bundle benotigten Klassen uber den Class-Loader aus der Modulschicht ge-

laden werden.

Sicherheitsschicht: Die Funktionalitat 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 Tatigkeit wird an die Lebenszyklusschicht delegiert.) und ”Op-

tional” unterteilt. Die OSGi-Service-Platform unterstutzt die Authentifizierung von Programm-

code 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-ubergreifenden Wirkungsgrad zu verdeutlichen.

2.3 OSGi-Implementierungen

Die OSGi-Service-Platform ist eine Ansammlung von Spezifikationen die ein Komponenten-

system mit einer modularen Softwarearchitektur auf Basis der Programmiersprache Java be-

schreiben [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 Weiter-

entwicklung der Spezifikationen und einer jahrlichen Gebuhr von USD $ 25,000.

(2) mit Teilnahme an Experten-Zirkeln und einer jahrlichen Gebuhr von USD $ 20,000 (≥250 Beschaftigte) oder USD $ 10,000 (≤ 249 Beschaftigte).

(3) ohne Sitz im Ausschuss oder Teilnahme an Zirkeln, mit technisch-unterstutzenden Hin-

tergrund und einer jahrlichen Gebuhr von USD $ 5,000

(4) mit der Berechtigung das Logo der OSGi-Alliance auf der firmeneigenen Website zu

fuhren.

Um die Funktionalitat der OSGi-Service-Platform nutzen zu konnen, sind mehrere Varianten

denkbar. Eine Mitgliedschaft in der OSGi-Alliance mit eigener Realisierung und Implementie-

rung der Spezifikationen und anschließender Zertifizierung des Softwareproduktes - intensiv in

12

Page 20: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

2 Die OSGi-Service-Platform

der Investition von Zeit und Finanzen, oder auf bereits zertifizierte kommerzielle oder Open-

Source Losungen zugreifen - eine Mitgliedschaft ist nicht notwendig.

2.3.1 Eclipse Equinox

Eine der bekanntesten Implementierungen des OSGi-Frameworks im Bereich der Desktop-

Applikationen ist die Eclipse Equinox - in der Version 3.2 fur die OSGi-Service-Platform R4

zertifiziert [All15a]. Fur die Eclipse IDE (Integrated Development Environment) stellt die Eclip-

se Equinox, neben Texteditoren, Compiler und Debuggern, eine Kernkomponente der Anwen-

dung 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 ermoglich, mit Hilfe von

Class-Loadern anderer Bundles, Java-Ressourcen zu binden, die der eigene Class-Loader nicht

verknupfen kann. Die Buddy-Policy beschreibt, fur die Auswahl der ”Helfer-Bundles”, funf

Richtlinien [Fou15a]. Extension Points sind Bundle-Schnittstellen die nicht das Konzept der

OSGi-Services umsetzen, sondern eigens dafur Schnittstelleninformationen in einer XML-Datei

festhalten [Fou15b].

2.3.2 Sonstige

Neben der Eclipse Equinox existieren noch weitere zertifizierte Losungen [All15a]:

Kommerziell:

• Makewave Knopflerfish Pro 3 (www.makewave.com)

• ProSyst Software mBedded Server 7 (www.prosyst.com)

• Hitachi Solutions SuperJ Engine Framework V4 (www.hitachi-solutions.com)

• Samsung OSGi R4 Solution (www.samsung.com)

• KT OSGi Service Platform (KOSP) 1.0 (http://www.kt.co.kr/)

Open-Source:

• Makewave Knopflerfish (www.makewave.com)

• Apache Felix Framework 3.0.0 (http://felix.apache.org)

13

Page 21: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

3 openHAB

Mit openHAB bietet die openHAB UG (haftungsbeschrankt) - Firmengrundung am 06.01.2014,

Grundungsmitglieder: Kai Kreuzer, Thomas Eichstadt-Engelen und Victor Belov - eine Soft-

warelosung fur die GA und HA an, deren Hauptziel eine herstellerubergreifende 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 plattformunabhangig, sondern kann durch die Verwendung von der Eclipse Equinox auf

die dem OSGi-Framework (Abschnitt 2.1) zugrundeliegende Softwarearchitektur zuruckgreifen

[Uh15e]. Aus Sicht des Endanwenders verfolgt openHAB das Prinzip des ”Intranet Of Things”

- alle Endgerate sind im eigenen Netzwerk verbunden und fur 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] fur die Steuerung seiner KNX-Komponenten, entscheidet sich Kai Kreuzer im No-

vember 2009 zur Entwicklung einer eigenen Softwarelosung fur die HA unter dem Namen

”SmartKNX” - wegen evtl. Markenrechtsverletzungen ab Februar 2010 fortan openHAB ge-

nannt. Er entscheidet sich zudem explizit gegen eine Projektbeteiligung und Weiterentwick-

lung der OpenRemote (Open Source Automation Platform) [Inc15c]: Seiner Meinung nach, ist

durch die dort fortgeschrittene ”Architecture Erosion” die Umsetzung einer zukunftsweisen-

den Softwarearchitektur nur durch einen ”Rewrite” des Programmcodes zu bewerkstelligen.

Fur das Build-Management von openHAB wird Maven (Software fur den Erstellungsprozess

von Softwareprodukten) in der Version 3 und das Plugin ”Tycho” verwendet. Drools (Ru-

le Management System Solution der JBoss Community) wird anfanglich als ”Rule Engine”

eingesetzt und im Mai 2012 durch eine Kombination aus dem Quartz-Framework, der Xbase

(Expression Language fur 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 applicati-

on, 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

Page 22: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

3 openHAB

Zu dem Zeitpunkt der von Kai Kreuzer getroffenen Aussage, weist openHAB bereits eine zwei-

einhalbjahrige Entwicklung (Release Version 1.0) auf und mit dem Release Version 1.2 (April

2013) veroffentlicht die openHAB UG samtliche Implementierungen zur Kopplung der HA-

Produkte von HomeMatic, Philips Hue, DMX und Kouchbachi. Noch im selben Jahr folgen

Implementierungen fur Z-Wave, EnOcean, Fritz AHA und Tinkgerforge. Mit dem Entwick-

lungszweig (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 1.6.

3.1 Architektur

Die Abbildung 3.1 zeigt die Softwarearchitektur von openHAB und ist in drei Sektionen unter-

teilt: Die Komponenten des OSGi-Frameworks (grun), die Kernkomponenten (blau) und die

Erweiterungen (gelb) von openHAB.

Abbildung 3.1: openHAB Architektur [Uh15i, i.A.a.]

3.1.1 OSGi-Framework Komponenten

OSGi Runtime: Das Fundament der openHAB-Software in der Version 1.6.2 stellt die Eclip-

se Equinox in der Version 3.8.2 (04.02.2013) und die zugehorigen Services in der Version 3.3

15

Page 23: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

3 openHAB

dar. Damit alle anderen Architektur-Komponenten die Programmierparadigmen des OSGi-

Standards berucksichtigen, stellt jede Komponente eine Plug-in Abhangigkeit zur Eclipse

Equinox und den Services her. Mit der Equinox bietet Eclipse nicht nur ein Framework fur

den OSGi-Standard an, sondern verwirklicht eine Laufzeitumgebung mit folgenden Funktiona-

litaten [Uh15m, Kreuzer K. et al.]:

• Die Bereitstellung einer Konsole sowohl fur die Eingabe und Interpretation von Kom-

mandos 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 fur die Protokollierung der Bundle-Aktivitaten. Der ”StatsMa-

nager” verbindet die Informationen der Bundles ohne die Bundle-Registry zu beeinflussen.

• Die Verwaltung von Berechtigungen und Erweiterungen fur die Protokollierung der

Bundle-Aktivitaten. Eine Protokollierung in Abhangigkeit einzelner Berechtigungen ist

dadurch realisierbar.

• Das Aufstellen einer Trace fur eine evtl. Fehlerbeseitigung.

• Das Einhangen von zusatzlichen Funktionen mittels der Hook-Registry und der Verwal-

tung 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 fur einzelne Manifest-Elemente (”internal.core” oder ”osgi.util”).

Von den ca. 20 Standard-Services des OSGi-Standards verwendet die openHAB-Software die

folgenden funf Services:

Declarative Services: Mit den ”Declaratice Services” stellt der OSGi-Standard ein ”publish-

find-bind”-Modell fur die Verwendung der Dienste zur Verfugung. Mit dem Modell konnen

Applikationen erstellt werden, die das Arbeiten und die Kommunikation der Bundles unterein-

ander realisieren. Dabei simplifizieren die ”Declarative Services” die Verwaltung der Dienste

indem sie die Registrierung und Abhangigkeiten von anderen Diensten ubernehmen. In dem

Modell ubernimmt die ”Service Component Runtime” die Instanziierung der ”Components”

und die Kontrolle der ”Component Configuration(s)” [All15d, S. 245 f.]. Die einzelnen Klassen

bzw. Schnittstellen fur 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

Page 24: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

3 openHAB

)aktivieren und eine Protokollierung vorzunehmen. Alle ubrigen Komponenten implementieren

nur den ”Configuration Admin Service”.

Logback/SLF4J: Der ”Logback/SLF4J” - Dienst ist in [All15d, S. 5 f.] unter der Bezeich-

nung ”Log Service” wiederzufinden und wird bereits in Abschnitt 2.1.2 erortert. Die Klasse

”OSGILogListener”, als Bestandteil der Core-Komponente, implementiert den ”LogListener”

und ”LogReaderService” und dient als Adapter um die Protokolleintrage 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” ermoglicht die Kommunikation zwischen Bund-

les auf Grundlage eines ”Event-Publish-Subscribe”- Modells. Fur die Kommunikation sen-

det 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 fur 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 im-

plementiert: Die Core-Komponente stellte eine zentrale Broadcast-Einheit dar und leitet die

17

Page 25: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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” ermoglicht die Konfiguration von

installierten ”ManagedService(s)”. Damit notwendige Anderungen in der Konfiguration eines

”ManagedService” bereits vor Aktivierung durch den MA vorliegen, reagiert der ”Configu-

ration Admin Service” sofort auf eingehende Kommandos [All15d, S. 57]. In der openHAB-

Software ist der ”Configuration Admin Service” als eigenstandiges Binding (configadmin) in der

Klasse ”ConfigAdminBinding” implementiert. Bei Aufruf der ”bindingChanged”-Methode wird

die Konfiguration fur den entsprechenden ”ManagedService” angepasst [Uh15m, Eichstadt-

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 uberall dort eingesetzt wo die Bundles die Stan-

dardtechnologien wie z. B. HTTP, HTML, XML oder Servlets nutzen mochten. 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” primar in der Klasse ”RESTApplication” des REST-Bindings umgesetzt [Uh15m,

Kreuzer K.]. Fur die Realisierung nutzt openHAB den Web-Server und Servlet-Container von

Jetty in der Version 8.1.3 [Fou15c] und das Jersey Framework fur die RESTful Web-Services

in der Version 2.2.5 [Cor15] ein. Neben dem REST-Binding implementiert z. B. das Weather-

Binding den ”HttpService” und nutzt den Servlet-Container um die Wetterinformationen dar-

zustellen.

3.1.2 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 ermoglichen. Neben dieser Kernfunktionalitat 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 Ausfuhrung der ”receiveCommand”-Methode das

zum ”Wecken” entfernter Clients notwendige Paket. Ein weiterer Dienst ist die ”ItemRegis-

try”. Sie dient als zentrale Stelle um die Items (Elemente aktiver Bundles) und ihre Status

in einer ”ConcurrentHashMap” im fluchtigen Speicher der Laufzeitumgebung abzulegen. Die

Items konnen hinzugefugt, initialisiert und aus der Registry entfernt werden.

Neben den oben und in Abschnitt 3.1.1 genannten Realisierungen der OSGi-Services bietet der

openHAB-Core weitere Features an [Uh15m, Kreuzer K. et al.]:

18

Page 26: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

3 openHAB

• Der ”PersistenceManager” dient der persistenten Speicherung der Items und deren Sta-

tus in Verbindung mit einer Datenbank-Software (z. B. db4o, rrd4j, mysql und mongodb)

[Uh15n].

• Das ”AutoUpdate”-Feature ermoglicht es Bundles automatisch auf eingehende Ande-

rungen zu reagieren (openhab.core.autoupdate).

• Der ”SchedulerActivator” ist eine Erweiterung des OSGi-Bundle-Activator der in Ver-

bindung mit dem Bundle-Context steht. Um geplante Jobs rechtzeitig oder in gewissen

Zeitabstanden abzuarbeiten, verwendet die openHAB-Software den Quartz-Scheduler in

der Version 2.1.7 [Inc15e]

• Die openHAB-Skripte sind wiederverwendbare Zusammenstellungen von openHAB-Regeln

und werden in Abschnitt 3.4.1 beschrieben. Um diese Skripte auszufuhren stellt der

openHAB-Core eine Script-Engine zu Verfugung (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 2.3.0 [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” gehoren alle Funktionalitaten

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 Im-

plementierung im REST-Binding ist das ”ModelRepository” im ”PersistenceManager” und den

Klassen zur Erzeugung der Benutzeroberflache (org.openhab.ui) realisiert.

openHAB REST Service - Der ”openHAB Rest Service” ist das REST-Binding (open-

hab.io.rest) welches den OSGi-HTTP-Service implementiert.

3.1.3 openHAB Erweiterungen

openHAB Add-on Libraries: Da in [Uh15i] keine weiteren Informationen vorliegen, welche

Komponenten der openHAB-Software den ”openHAB Add-on Libraries” zugehorig sind, ist an-

zunehmen, dass die nach dem Ausschlussverfahren verbleibenden Bundles (org.openhab.io.* )

den erweiterten Bibliotheken zuzuordnen sind [Uh15m, Kreuzer K. et al.]:

19

Page 27: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

3 openHAB

• .console - Eine Schnittstelle fur eine Konsole die mithilfe des Interpreters einfache Kom-

mandos (items, send, update, status, say und >) umsetzt.

• .cv - Hier sind alle Schnittstellen der Web-basierten Echtzeitvisualisierung ”CometVisu”

wiederzufinden [May15].

• .dropbox - Ermoglicht die Nutzung des Filehosting-Dienst ”Dropbox”. Zur Realisierung

wird das Dropbox Core SDK (Software Development Kit) in der Version 1.7.3 verwendet

[Inc15a].

• .gcal - Es konnen Google Kalender Eintrage heruntergeladen und dazu genutzt werden

um mit dem Quartz-Scheduler die relevanten Aktionen durchzufuhren [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 fur Mac OS und MaryTTS die genutzt werden konnen

um openHAB mit der eigenen Stimme zu kontrollieren [Uh15c].

• .net - Dieses Paket enthalt Realisierungen um z. B. in openHAB-Skripten die Konsolen-

Kommandos oder einen HTTP-Request auszufuhren.

• .servicediscovery - Eine Realisierung des Netzwerkprotokoll mDNS (multicast Domain

Name System) bei Verwendung der JmDNS Implementierung in der Version 3.4.1 [JmD15].

• .squeezeserver - Der Squeezeserver regelt die Kommunikation zwischen der openHAB-

Software und den Netzwerk-Musikplayern ”Squeezebox” [Uh15r].

openHAB User Interfaces: Grundsatzlich bietet die openHAB UG sowohl Mobile- als auch

Desktop-UIs (User Interfaces) an. Zu den Mobile-UIs existieren fur die Betriebssysteme Andro-

id, iOS und Windows Phone eigenstandige Applikationen. Fur die Standard-Desktop-UI wird

das WebApp.Net Framework eingesetzt, ansonsten kann eine UI auch als GreenT (Sencha Ja-

vaScript Framework) oder mit CometVisu gestaltet werden [Uh15s]. Um die Gestaltung der UI

fur den Endanwender moglichst einfach zu halten, wird die Konfiguration uber die deklarativen

UI-Definitionen der Sitemaps realisiert. Die Sitemaps sind wie die Skripte in Xtext geschrie-

ben [Uh15d]. Fur die Darstellung bzw. Ubertragung der Dokumente an die Clients wird der

Servlet-Container des Webservers ”Jetty” in der Version 8.1.3 [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 anfanglich

dieses Zusammenspiel als die perfekte Funktionseinheit tituliert, ...

Xtext + Xbase + Quartz + Joda Time = Perfect Rule Engine [Kre15, 20. Mai

2012].

... stehen fur die openHAB-Software Versionen 2.x die IFTTT (If This Then That) Rezepte

als alternative Nutzung zu Auswahl [Inc15b]:

20

Page 28: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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 Imple-

mentierung eines OSGi-Bundles fur eine Technologie bzw. ein Protokoll. Derzeitig verfugt die

openHAB-Software uber mehr als 120 Bindings. Reprasentativ fur 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

Komplexitat sind in dem Diagramm keine Attribute oder Methoden dargestellt. Die ”HueBinding”-

Klasse ist die zentrale Komponente des Bindings. Sie verwirklicht die Schnittstellenfunktiona-

litat des ”HueBindingProvider” und des ”ManagedService” um die registrierten Hue-Items

(Lampen) aufzulisten und auf mitgeteilte Anderungen der Konfiguration durch den ”Configu-

ration Admin Service” zu reagieren. In der ”HueBinding”-Klasse interpretiert die ”execute”-

Methode die eingehenden Events (Licht an/aus, Lichtintensitat, Farbe), informiert den ”Event

Publisher” und nimmt die Anderungen an der Konfiguration vor [Uh15m, Hartmann R., Sche-

ring J.]. Der folgende Quelltext zeigt einen Ausschnitt der ”execute”-Methode indem die

Lichtintensitat einer Lampe reguliert wird.

1: ...

2: if (deviceConfig.getType ().equals(BindingType.brightness)) {

3: if ((bulb.getIsOn () == true) && (bulb.getIsReachable () ==

true)) {

21

Page 29: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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 Ausfuhrung des Events ist eine Plausibilitatsprufung der ”HueSettings” vorangestellt,

die moglichen Aufschluss uber eine fehl-konfigurierte bzw. nicht initialisierte Hue-Bridge gibt.

Ein Objekt der ”HueBulb”-Klasse stellt eine konkrete Lampe dar und bietet zahlreiche Metho-

den an, um die Lampen-Parameter einzustellen oder auszulesen. Die ”SsdpDiscovery”-Klasse

wird dazu verwendet, die IP-Adresse der Hue-Bridge aufzulosen. Die ”HueActivator”-Klasse

ist eine Implementierung des OSGi-Bundle-Activator und stellt eine Protokollierung fur 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 Verknupfungen (AND, OR, NAND und NOR) kann der ”openHAB

Item Provider” auch einige Aggregatfunktionen (AVG, SUM, MIN und MAX), fur Items die

einer Gruppe angehoren, ausfuhren [Uh15m, Kreuzer K., Eichstadt-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 ausfuhrbare Software fur die Betriebs-

systeme Windows, Mac OS X und Linux anzubieten, wird die Build-Management Software

Maven 3 eingesetzt. Dabei wird die Versions- und Abhangigkeitsverwaltung der Bundles in den

XML-Files (pom.xml) festgelegt [Kre15, 27. April 2008]. Letztendlich steht dem Endanwender

22

Page 30: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

3 openHAB

eine Software zu Verfugung die er in den in [Uh15h] beschrieben Schritten auf seinem Be-

triebssystem installieren kann. Die dort aufgefuhrten Addons sind die Jar-Archive der Bindings

und mussen explizit vom Endanwender installiert und konfiguriert werden. Fur 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 fur die Konfiguration der ”openHAB Runtime” genutzt werden kann. Die Funktionalitat

der Applikation ist zu vergleichen mit der eines einfachen Text-Editors der zusatzlich eine

Syntaxuberprufung, Syntaxhervorhebung und Autovervollstandigung fur die Sitemaps, Items,

Skripte und Regeln anbietet [Uh15i].

3.4 Automation

Die in Abschnitt 3.1.3 getroffenen Aussagen zur ”openHAB Automation Logic” sollen durch

eine Betrachtung der Umsetzung von Skripten, Regeln und Aktionen weitergehend verdeutlicht

werden.

3.4.1 Regeln, Skripte und Aktionen

Regeln: Die Regeln sind eine der wichtigsten Komponenten um die openHAB-Software nicht

nur als zentrale Web-basierte und herstellerubergreifende Verwaltungstelle sondern als Heim-

automatisierungssoftware zu bezeichnen. Die Regeln dienen der Automatisierung von Hard-

warekomponenten und Web-Technologien. In den Regeln wird z. B. definiert, dass Fenster

geschlossenen und Rollladen heruntergelassen werden, wenn durch die am Haus angebrach-

te Sensorik schlechtes Wetter signalisiert bzw. triggert wird. Die Regeln sind in Xtext ver-

fasst und deren Aufbau und Strukturblocke gleichen denen von Java-Dateien: 1. Import, 2.

Variablen-Deklarationen und 3. Regeln (when-then-Block). Um Regeln auszulosen bietet die

openHAB-Software drei unterschiedliche Varianten von Triggern an [Uh15p]. Dabei konnen

Regeln ausgefuhrt werden wenn...

• ... sich der Status eines Items geandert hat oder selbiges ein Kommando erhalt (item-

based.

• ... eine Uhrzeit erreicht ist oder der mit dem Quartz-Scheduler definierte Ausdruck zutrifft

(time-based).

23

Page 31: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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,

Eichstadt-Engelen T. al. teichsta].

Aktionen: Die Aktionen sind Java-Methoden deren Funktionalitat den Regeln und Skripten

zur Verfugung steht. Die openHAB-Runtime bietet bereits Aktionen an [Uh15a]:

• Die dem ”openHAB Event Bus” zugehorigen Aktionen zum Senden eines Events, ak-

tualisieren eines Item-Status und speichern oder wiederherstellen von Status eines oder

mehrerer Items.

• Alle audio-relevanten Aktionen fur die Steuerung der Lautstarke, das Abspielen von

Audio-Dateien oder Streams und die TTS-Wiedergabe.

• Und zudem Aktionen zur Protokollierung und fur die Ausfuhrung eines HTTP-Request

oder einem Befehl auf der Konsole.

Die oben aufgelisteten sind die Aktionen die nach der Installation der ”openHAB Runtime”

serienmaßig verfugbar sind. Alle weiteren Aktionen mussen vom Endanwender als Add-on

nachinstalliert werden - hierzu zahlen [Uh15a]:

• Die Aktionen um SMTP (Simple Mail Transfer Protocol) Dienste zu nutzen oder ei-

ne Kommunikation mit dem XMPP (Extensible Messaging and Presence Protocol) zu

realisieren.

• Und zudem Aktionen um Nachrichten an iOS oder Android Gerate zu schicken.

3.4.2 Jobmanagement

Fur das Jobmanagement wird der Quartz-Scheduler eingesetzt. Der Quartz-Scheduler kann

Trigger erzeugen die einem Job zugeordnet und planmaßig ausgelost werden. Fur die planmaßi-

ge Ausfuhrung 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 Ab-

schnitt 2.1.1 und 3.1.3 beschriebenen Bundles basiert:

24

Page 32: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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) konnen die Services uber die Java-Interfaces

genutzt und uber 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 moglich. Da lediglich die

Status der Items persistiert werden, ist keine Erfahrung in der SQL (Structured Query Lan-

guage) 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

aufgefuhrt und die Items-Sektion in denen die Items mit zugehoriger Strategie aufgelistet sind.

Die SQL wird in den Bindings realisert und bleibt dem Anwender verborgen. Die derzeitig

unterstutzen Datenbank-Dienste sind [Uh15n]:

• DB4o (http://www.db4o.com/)

• RRD4J (http://code.google.com/p/rrd4j/)

• MySQL (http://www.mysql.com/)

• MongoDB (http://www.mongodb.org/)

• Open.Sen.Se (http://open.sen.se/)

• InfluxDB (http://influxdb.org/)

• und JPA

In der Implementierung des MySQL-Bindings wird z. B. automatisch die Konnektivitat 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

Page 33: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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, Sjostrand H., Eichstadt-

Engelen T., Jackson C.]

Fur jedes openHAB-Item, das in der Item-Sektion aufgelistet ist, legt openHAB automatisch

eine Tabelle an, in der die Entitaten der Items als (Time, Value)-Paare gespeichert sind. Der

Endanwender hat somit keinen Einfluss auf die Tabellenstruktur oder Aufbau der Entitaten.

3.7 Sonstiges

Neben den in Abschnitt 3.1.2 erorterten 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].

Erwahnenswert ist das Astersik Framework (http://www.asterisk.org/) fur die Umsetzung

von IP PBX (Private Branch Exchange) Systemen und VoIP Gateways und das ROS (Robot

Operating System) (http://www.ros.org/).

26

Page 34: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

4 Bewegungserkennung von Personen

In Kapitel 3 wird erortert, inwieweit openHAB die Programmierparadigmen des OSGi-Standards

aus Kapitel 2 umsetzt bzw. verfolgt. Auf dieser Wissensbasis aufbauend, soll nun ein realitatsna-

hes Anwendungsszenario aus dem Bereich der Bewegungserkennung erarbeitet werden, welches

Hardwarekomponenten unterschiedlicher Hersteller einsetzt und somit eine herstellerubergrei-

fende 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 ei-

gentliche Durchfuhrung des Szenarios beschrieben. Eine detaillierte Ergebnisauswertung und

alternative Losungsansatze 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 Gegenstanden bei

den eingesetzten Technologien und Verfahren gleichermaßen anzuwenden. Neben moglichen

Anwendungsbereichen der Bewegungserkennung von Personen in Zweckbauten, wie z. B. die

Uberwachung von Arbeitnehmern in Burogebauden oder die Auswertung von Verbraucherver-

halten in Einkaufszentren, verfolgen die Einsatzbereiche im privaten Wohnungsbau eine effizi-

ente 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

Raumlichkeit das Licht automatisch an/aus geschaltet, das Eindringen von unerwunschten Per-

sonen oder ein kritischer Gesundheitszustand fruhzeitig erkannt und hilfestellende Maßnahmen

eingeleitet.

Die Erkennungssysteme fur die erwahnten Anwendungsbereiche sind in zwei Klassen zu unter-

teilen - (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 Handen, Fußen oder

am Oberkorper der Personen vorsehen. Die INSs (Inertial Navigation Systems) verwenden

neben Tragheits- und Beschleunigungssensoren auch Gyroskope und Magnetometer, die

neben der Lokalisierung auch eine Navigation ermoglichen - die SHSs (Step-and-Heading

Systems) nutzen zudem Barometer und Funkschnittstellen. Zwar liegt der Fokus der

27

Page 35: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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 sen-

sor based” Systemen. Einziger Unterschied ist, dass die vorliegende Infrastruktur nicht

erweitert, sondern auf die vorhandene Sensorik von Smartphone oder Smartwatch zuruck-

gegriffen wird - Je nach verwendeten Endgerat stehen Barometer, Bluetooth, WLAN,

GPS, Gyroskop, Beschleunigungs- und Helligkeitssensor zur Auswahl. [Iwa+13] zeigt

einen Losungsansatz der auf der Wi-Fi Sensorik beruht.

(2) device-free - Die Bewegung wird anhand von Sensoren erkannt, die nicht von Personen

mitgefuhrt werden, sondern explizit in der Raumlichkeit verbaut bzw. installiert sind.

a) vision based - Fur die Bewegungserkennung werden Bilder von hochauflosenden Kameras

ausgewertet. Die Prazision der Systeme reicht bis hin zur fingergenauen Gestenauswer-

tung [Uts+02].

b) ambient device based - Diese Systeme benotigen fest installierte Bewegungs-, oder

Prasenzmelder, werten Audio-Signale von Mikrofonen oder Daten von Piezo-Sensoren

aus. [Alw+06] beschreibt ein Verfahren zur Erkennung von gesturzten Personen beim

Einsatz von Piezo-Sensoren und deutet zudem auf eine mogliche Auswertung der Fort-

bewegung von Personen hin.

Fur (1) ist nachteilig zu erwahnen, dass - bis auf ein evtl. vorhandenes Smartphone - alle

Endgerate und Sensoren explizit fur den Anwendungsfall erworben werden und zu jeder Zeit

an der Person angebracht sein mussen - was auf Dauer eine hohe Belastung fur die Person

darstellt. Die Klasse ”device-free” besitzt neben den hohen Anschaffungskosten weitere Defi-

zite, 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 Raumlichkeiten des privaten Wohnraums begrenzt oder konnen nicht in der

Dunkelheit ausgewertet werden. Bei (1b) bedarf es zudem einer Planung vor Fertigstellung der

Lokalitat - z. B. die Piezo-Sensoren werden meist vor Montage des Fußboden installiert. Somit

ist fur die Einrichtung der obigen Systeme die vorhandene Infrastruktur zu erweitern.

Grundsatzlich konnten diese Systeme fur eine korrekte Szenariodurchfuhrung angewendet wer-

den, dennoch soll aufgrund der genannten Defizite die Klasse (2) um ”rf device based” Systeme

erganzt und fur das in diesem Kapitel beschriebene Szenario verwirklicht werden: Darunter fal-

len alle Systeme, die keine Sensorik an den Personen vorsehen, einen funkbasierten Ansatz

(Radiowellen) verfolgen und die vorhandene Infrastruktur nutzen. Die Radiowellen benotigen

keine direkte LOS zu den Personen [Kos+12, S. 181] und die Auswertung der Bewegungserken-

nung kann auf bereits installierten WAPs (Wireless Access Points) des konfigurierten WLAN

stattfinden. Stellvertretend fur die eingefuhrte Klasse stehen folgende Ansatze: In [Han+14]

wird ”WiFall” vorgestellt - ein System das den Sturz einer Person mit 87% Wahrscheinlichkeit

28

Page 36: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

4 Bewegungserkennung von Personen

erkennt und eine Fehlerrate von 18% besitzt [Han+14, S. 278]. Zwar unterscheidet die refe-

renzierte Literatur die Falltypen in Fallrichtungen, Endpositionen und Rotationen [Nou+07,

S. 1665], WiFall zeigt jedoch keine typenspezifische Auswertung die Aufschluss uber die er-

zielte Ungenauigkeit und Fehlerraten geben konnte. 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 Aus-

wirkung der menschlichen Bewegung auf die Varianz der RSSI wird in [EK+11] gezeigt. In

[Kas+12] wird die Implementierung eines Systems vorgestellt, das die Prasenz von Vehikel er-

kennt und deren Geschwindigkeit abschatzen kann. Die oben genannten Systeme sehen neben

dem zentralen Leitrechner zumeist einen Rechner fur die Auswertung der gemessenen RSSI

vor, d.h. die Analyse der Bewegungserkennung wird nicht direkt von einem WAP ubernommen.

Fur die Realisierung des Projektziels soll ein ”rf device based” System umgesetzt werden, das in

Verbindung mit openHAB ein Szenario der herstellerubergreifenden 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 fur 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 verfugt uber ein Mainboard ”UNO-3I270D-V4G-H16-00” mit

einer Intel Atom NN270 1.6Ghz 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 14.04.2

(i386). Die fur den Einsatz der openHAB-Software eingesetzte Laufzeitumgebung ist

OpenJDK-Java-7. Sowohl die openHAB-Runtime, der openHAB-Designer als auch die

zugehorigen Bindings ”org.openhab.binding.{hue, http}, org.openhab.persistence.{rrd4j,

mysql}” liegen in der Version 1.6.2 vor. Fur die Ausfuhrung der Skripte werden ”sshpass”

und die Bash-Shell genutzt.

Die erste herstellerabhangige Hardwarekomponente ist das ”Philips Hue Living-Colors Bloom”

Starter Kit [V15]:

• Hardware: Die Hue-Bridge (1xLAN) dient als Controller fur die Hue Bloom Leuchten.

29

Page 37: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

4 Bewegungserkennung von Personen

• Software: Zur Kommunikation des Controllers mit den Leuchten, implementiert das

Produkt die ZigBee Spezifikation als Erweiterung der IEEE802.15.4 Norm.

Als letzte Hardwarekomponente werden fur 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 Betriebs-

system ”Barrier Breaker” in der Version 14.07 installiert [wik15b]. Auf dem Sender wird

das Paket ”mgen” (Multi-Generator) und auf dem Receiver werden die Pakete ”tcp-

dump” (inkl. libpcap) und ”luasocket” installiert. In der Grundinstallation von OpenWrt

ist der Lua (Imperative und funktionale Skriptsprache) Interpreter verfugbar.

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 7.1.1 sind die notwendigen Zeilen fur eine openHAB und Hue-Bridge Konfiguration

aufgelistet. Die genannten Bindings sind im Ordner ”addons” hinterlegt. Fur den Start von

openHAB ist das Shell-Skript (start.sh) auszufuhren. Alternativ kann openHAB auch zeitgleich

30

Page 38: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

4 Bewegungserkennung von Personen

mit dem Systemstart von Ubuntu initialisiert werden [Uh15k]. Fur die Steuerung der Hue-

Leuchten uber die Hue-Bridge ist keine weitere Konfiguration notwendig.

[wik15b] beschreibt die Installation von OpenWrt auf den WAPs und beinhaltet die Benutzero-

berflache ”Luci”. Nach dem ersten Start der WAPs ist fur beide ein Systempasswort via Telnet

(Teletype Network) zu vergeben. Um den Zugriff mittels SSH (Secure Shell) zu ermoglichen,

mussen folgende Einstellungen vorgenommen werden:

1. Die Firewall-Regeln des WAN (Wide Area Network) -Port anpassen, d.h. sowohl einge-

hender 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 uber den WAN-Port anschließen.

Fur die Konfiguration der Funkschnittstellen sind die Konfigurationsdateien ”wireless” und

”network”, wie in Anhang 7.2.1 und 7.2.2 fur den Receiver und in Anhang 7.3.1 und 7.3.2 fur

den Sender dargestellt, anzupassen. Alternativ kann eine Konfiguration der Schnittstellen auch

uber die Benutzeroberflache erfolgen (Luci:Network/Interfaces und Network/Wifi). Letztend-

lich kommunizieren beide WAPs uber 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 Sen-

der noch uber eine virtuelle Funk-Schnittstelle im Monitor-Mode verfugt, um den eingehenden

Netzwerk-Verkehr zu analysieren.

Um die Kommunikation im Ad-hoc-Netz aufrechtzuerhalten, senden die WAPs die ”Beacon

Frames” zum Kommunikationspartner. Da fur die spatere Szenariodurchfuhrung analysiert

werden soll, inwieweit die Gute der Bewegungserkennung von der Anzahl der analysierten

Pakete abhangt, erzeugt der Sender auf Anfrage weiteren UDP (User Datagram Protocol)

Verkehr. Der Anhang 7.3.3 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” benotigt [Neh15].

Fur 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 7.1.4 dargestellt, umzusetzen.

31

Page 39: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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 Benutzeroberflache (7.4), die in funf Sektionen eingeteilt ist:

1 Steuerung: Der Verweis ”Philips Hue-Bloom Lampen” fuhrt zum Sub-Menu wo dann die

Hue-Bloom Leuchten an und ausgeschaltet werden konnen. Zudem konnen die Leuchten

auf alle Farben aus dem HSV-Farbraum gesetzt werden.

2 Profil erstellen: Diese Sektion ermoglicht dem Anwender das Messen einer Signalstarke

fur die vorliegende Raumlichkeit und die eingestellte Distanz zwischen Sender und Re-

ceiver. Standardmaßig ist die Dauer der Messung auf zehn Sekunden eingestellt. Der

Ruckgabewert ist die durch die Anzahl der uber den Zeitraum gemessenen Pakete ge-

mittelte Signalstarke und wird automatisch in ”gespeicherte Signalstarke” eingetragen.

Zudem wird die maximal und minimal gemessene Signalstarke an die Benutzeroberflache

ubermittelt. Das in Abbildung 4.2 visualisierte UML-Sequenzdiagramm behandelt diesen

Anwendungsfall.

3 Bewegung erkennen: Die dritte Sektion behandelt den Anwendungsfall der Bewegungser-

kennung. Fur die spatere Szenariodurchfuhrung ist der absolute Signalstarkenunterschied

von gespeicherter Signalstarke aus Sektion 2 und in gemessener Signalstarke aus Sekti-

on 3 individuell einstellbar. Falls der Receiver eine Signalstarke misst, die den einstellten

Grenzwert uberschreitet, wird die Signalstarke eingetragen und somit die Bewegung er-

kannt. 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 Abhangig-

keiten zwischen der Gute der Bewegungserkennung und Anzahl der gemessenen Pakete

aufzuzeigen, kann der Anwender zusatzlichen Netzwerk-Verkehr beim Sender erzeugen

- UML-Squenzdiagramm 4.4.

5 Graph: Die funfte Sektion zeigt die graphische Visualisierung der unterschiedlichen Si-

gnalstarken.

Das Ziel der Implementierung ist es, eine Bewegung anhand einer Grenzwertuberschreitung

von gemessenen Signalstarken zu erkennen und durch den Einsatz von unterschiedlichen Hard-

warekomponenten und der openHAB-Software die Machbarkeit der herstellerubergreifenden

GA bzw. HA aufzuzeigen. Im Folgenden soll die umgesetzte Implementierung anhand der

Sequenzdiagramme erortert 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 Benutzeroberflache zur Verfugung und die openHAB-Items werden durch die Regel ”In-

32

Page 40: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

4 Bewegungserkennung von Personen

itialize Items” (7.1.5) initialisiert. Sobald der Anwender die Dauer eingestellt und den Schalter

fur ”Signalstarke messen” betatigt hat, startet die Messung. Durch Betatigung andert 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

Anderung der Farbe und Lichtintensitat der beiden Leuchten signalisiert. Die eigentliche Mes-

sung wird durch die Methode ”executeCommandLine” ausgefuhrt. Die Methode ruft das im

Ordner ”configurations/scripts” abgelegte Bash-Skript ”remote.sh” (7.1.6) auf und ubergibt

die Parameter ”capture”, Dauer und Item-Namen. Im Bash-Skript wird der SSH Aufruf fur

den Receiver durchgefuhrt, 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 fur die vom Anwender eingestellte Dauer und teilt dem Leitrechner durch Verwendung

der REST-API und Aufruf der HTTP-Post-Methode die Anderung des openHAB-Items fur die

ubermittelten 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 verfugbaren Items

als XML-Datei abzurufen. Hierfur 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 Pa-

ketes ”LuaXML”, ist aber fur dem Anwendungsfall ”Profil erstellen” nicht notwendig. Obwohl

in [Uh15o] auf den Mime-Type ”application/json” hingewiesen wird, ist er bei ausgewahlter

Hard- und Software nicht verfugbar. 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

Page 41: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

4 Bewegungserkennung von Personen

Signalstarke und den Anderungen der Leuchten ein Ende der Messung signalisiert. Fur die

Visualisierung der Signalstarken in Sektion 5 werden die Signalstarken mit der Konfiguration

der Persistenz (7.1.4) gespeichert. Durch die gewahlten Strategien werden die Werte bei jeder

Anderung und jede Minute persistiert.

Bewegung erkennen: Der Anwender hat bereits ein Profil erstellt und den Grenzwert fur

den Signalstarkenunterschied eingestellt. Durch die Betatigung des Schalters ”Bewegungs-

erkennung” wird der Status des Items auf ”ON” gestellt und die Regel ”Start recognizing

movement” (7.1.5) getriggert. Die Methode ”executeCommandLine” wird ausgefuhrt und die

Parameter ”recognize”, die gespeicherte Signalstarke, der Grenzwert und die Item-Namen dem

Bash-Skript fur die Ausfuhrung des Lua-Skripts ”capturerecognition.lua” (7.2.5) auf dem Re-

ceiver ubermittelt. Wie bei dem oben erorterten Anwendungsfall nutzt das Lua-Skript die vom

”tcpdump” gesnifften Pakete und uberpruft, ob die gespeicherte Signalstarke und die derzeitig

ermittelte Signalstarke den angegebenen Grenzwert uberschreitet.

Abbildung 4.3: UML-Sequenzdiagramm - Bewegungserkennung starten und stoppen

Eine Uberschreitung wird uber die REST-API und Aufruf der HTTP-Post-Methode als neuer

Wert im openHAB-Item eingetragen. Bei Anderung des Wertes wird die Regel ”Movement

recognized” getriggert und dem Anwender eine Bewegung durch einen Farbwechsel (Grun /

Rot) der Leuchten gekennzeichnet. Das Lua-Skript fuhrt solange Berechnungen durch, bis der

Anwender den Schalter ”Bewegungserkennung” erneut betatigt und dadurch die Regel ”Stop

recognizing movement” anstoßt. Die Regel fuhrt das Bash-Skript aus, das dann den Befehl zur

Terminierung der Prozesse von ”tcpdump” und dem Lua-Interpreter auf dem Receiver auslost.

34

Page 42: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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 zusatzlichen Netzwerk-Verkehr in Form von 64 Byte

großen UDP-Paketen erzeugen. Bei Betatigung des Schalters ”UDP-Verkehr erzeugen” agiert

die Regel ”Send more packets” und fuhrt das auf dem Sender befindliche MGen-Skript (7.3.3)

aus. Das MGen-Skript startet auf der Funkt-Schnittstelle ”wlan0” einen unendlichen und pe-

riodischen UDP-Fluss and die angegebene Zieladresse - hier exemplarisch zehn Pakete pro

Sekunde, ansonsten wird die Eingabe vom Anwender berucksichtigt. Die so erzeugten UDP-

Pakete werden automatisch bei der Auswertung der Signalstarken berucksichtigt. 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 - Zusatzliche UDP-Pakete senden

Graph: Fur die graphische Visualisierung wird die rrd4j-Persistenz (7.1.4) eingesetzt. Fur eine

korrekte Visualisierung des Chart-Item ”GRSSI Chart” - eine Gruppierung der drei gemessenen

Signalstarken - ist eine Speicherung mit mindestens der ”everyMinute” -Strategie obligatorisch

[Uh15t]. Bei derzeitigem Entwicklungsstand des rrd4j-Bindings ist eine Anpassung fur eine

individuelle Achsenbeschriftung oder Skala nicht moglich.

35

Page 43: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

4 Bewegungserkennung von Personen

4.4 Aufbau und Durchfuhrung

Sowohl Aufbau als auch Durchfuhrung 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 uber Ethernet im gleichen Subnetz (10.20.114.0 24) verbunden. Dabei ist der

Abstand von Leuchten und Hue-Bridge fur eine korrekte Funktionsweise unerheblich. Der Sze-

narioaufbau ist insofern statisch, als dass lediglich der Abstand (1m, 2m, 4m, 6m und 10m) von

Sender und Receiver bei der Durchfuhrung variabel ist. Die Antennen der Router sind auf einer

Hohe von 95cm angebracht. Fur jede Distanz zwischen den WAPs ist sowohl ”Profil erstellen”

als auch ”Bewegung erkennen” fur zwei Signalleistungen (30dBm und 15dBm) durchzufuhren.

Fur die Distanzen 1-6m ist die LOS der WAPs nicht beeintrachtigt. Bei einer abschließenden

Durchfuhrung 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

Page 44: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

4 Bewegungserkennung von Personen

Um False-Positives auszuschließen, ist fur jeden Messdurchlauf nach ”Profil erstellen” fur ”Be-

wegung erkennen” eine Ruhe-Phase eingeplant, in der keine Bewegung stattfindet. Eine Steue-

rung der Benutzeroberflache erfolgt uber die Android-Applikation ”HABDroid” [Uh15j]. Nach

dieser Ruhe-Phase betritt die Testperson den Raum: Sie offnet die Tur und geht langsamen

Schrittes durch die LOS der WAPs hindurch - bis zur eingezeichneten Fensterwand, kehrt um

verlasst den Raum und schließt die Tur. Dabei ist die Messung als False-Negatives zu werten,

falls die Testperson den Raum durchschritten aber keine Grenzwertuberschreitung stattgefun-

den hat. Fur die Abbildung eines realitatsnahen Szenarios sind fur jeden Messdurchlauf weitere

WAPs in Reichweite (in- und außerhalb des Raumes) des Senders und Receivers auf dem

2,4GHz Frequenzband verfugbar. Mogliche Fehlmessungen, durch auftretende Interferenzen

mit den anderen WAPs, sind deshalb nicht ausgeschlossen. Fur die anschließende Auswertung

werden die gemessenen Daten bei jeder Anderung in der MySQL-Datenbank persistiert und

mit dem SQL-Query (7.1.4) abgefragt.

Eine korrekte Bewegungserkennung hangt somit von folgenden Parametern ab: Die Dauer fur

die Profilerstellung und somit die Anzahl der Pakete fur die Mittelwertbildung der gespei-

cherten Signalstarke, der eingestellte absolute Grenzwert fur den Signalstarkenunterschied bei

aktueller Distanz zwischen Sender und Receiver und die vom Sender und Receiver eingestellte

Signalleistung.

Die in Kapitel 5 - ”Ergebnisse und Alternativen” aufgefuhrten Ergebnisse geben Aufschluss

uber die Zusammenhange bzw. Abhangigkeiten der Parameter.

37

Page 45: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

5 Ergebnisse und Alternativen

5.1 Ergebnisse

Bei Durchfuhrung des im vorherigen Kapitel beschriebenen Szenarios, ergeben sich die in Ab-

bildung 5.1, 5.2, 5.3 und 7.14 dargestellten Ergebnisse fur insgesamt elf Messdurchlaufe. Die

erste Spalte jeder Abbildung kennzeichnet den Messdurchlauf. Die Abbildung 5.1 behandelt

den Anwendungsfall ”Profil erstellen” und berucksichtigt die Parameter fur Sichtausbreitung,

Distanz und Sendeleistung der WAPs. Fur eine Dauer von jeweils 60 Sekunden ist fur jeden

Messdurchlauf der minimale, maximale und gemittelte RSSI errechnet. Aufgrund einer unzurei-

chenden Verbindung ist bei dem neunten Messdurchlauf eine Sendeleistung von 20dBm statt

15dBm verwendet worden. Fur den elften Messdurchlauf wurde in Abgrenzung zum zehnten

Messdurchlauf der Multi-Generator mit zusatzlichen 25pps genutzt.

Abbildung 5.1: Messergebnisse fur den Anwendungsfall ”Profil erstellen”

In Abbildung 5.2 sind die Messergebnisse fur den Anwendungsfall ”Bewegung erkennen” in

der Ruhe-Phase aufgefuhrt. Die Einstellung fur den Grenzwert ist durch die Abweichung der

gemessenen RSSI aus ”Profile erstellen” zu begrunden und ist fur Ruhe- und Bewegungs-Phase

gleichgesetzt. Die False-Positives - eine falschlicherweise erkannte Bewegung in der Ruhe-Phase

38

Page 46: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

5 Ergebnisse und Alternativen

- sind die prozentualen Anteile der Grenzwertuberschreitungen fur die Anzahl der Messungen.

Fur die Messdurchlaufe #1-3 und #6 ist ein False-Positive aufgetreten. Die moglichen Er-

klarungen fur die False-Positives sind mit den Anmerkungen (Anhang 7.14) abzugleichen.

Abbildung 5.2: Messergebnisse fur den Anwendungsfall ”Bewegung erkennen” (Ruhe-Phase)

Exemplarisch fur den Messdurchlauf #2 ist der False-Positive aufgetreten, als eine Person

mit ihrem Laptop an dem Raum C060 vorbeigegangen ist. Fur die Messdurchlaufe #3 und

#6 ist auf dem Smartphone mit der HABdroid Applikation zusatzlicher 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 Grenzwertuberschreitungen bei Anzahl

der Messungen.

Abbildung 5.3: Messergebnisse fur den Anwendungsfall ”Bewegung erkennen” (Bewegungs-Phase)

39

Page 47: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

5 Ergebnisse und Alternativen

Dem Anhang 7.5 sind die Visualisierungen der Messdurchlaufe beigefugt und geben weiteren

Aufschluss uber die Abhangigkeit zwischen verwendeter Sendeleistung, Distanz und einge-

stelltem Grenzwert. Wenn auch die Messdurchlaufe #1-7 eine prazise Grenzwerteinstellung

aufweisen, waren bei Justierung des Grenzwertes fur die Messdurchlaufe #8, #10 und #11

mehr Uberschreitungen zu verzeichnen. Der Grenzwert ist die Abweichung der in ”Profil erstel-

len” gemessenen minimalen und maximalen RSSI zum gemittelten RSSI fur eine Dauer von 60

Sekunden. Bei Verwendung der mittleren quadratischen Abweichung konnten mehr Messwerte

als ”Bewegung ” erkannt werden, jedoch auch die Anzahl der False-Positives ansteigen - eine

Messung uber einen langeren Zeitraum ist obligatorisch.

Die Visualisierungen zeigen deutlich, dass fur alle Distanzen und Sendeleistungen sowohl bei

als auch eingeschrankter 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

Szenariodurchfuhrung eine herstellerubergreifende HA bzw. GA beim Einsatz von openHAB

gezeigt.

5.2 Alternative Ansatze

Die in diesem Abschnitt aufgelisteten alternativen Ansatze sollen fur das Szenario der Bewe-

gungserkennung auf bereits implementierte openHAB-Bindings fur herstellerabhangige Hard-

warekomponenten und Einsatz von Open-Source-Software hinweisen. Bei Anwendung der

Ansatze 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: http://www.eq-3.de/sensoren-detail/items/hm-sec-mdir.html

FS20:

• openHAB: FS20-Binding

• Neben openHAB-Rules und openHAB-Skripten ist keine Software erforderlich.

• Quelle: http://www.elv.de/fs20-piri-2-hr-funk-bewegungsmelder-mit-dimme

rsteuerung.html/refid/zanox/zanpid/2019358387397334016

EnOcean:

• openHAB: EnOcean-Binding

• Neben openHAB-Rules und openHAB-Skripten ist keine Software erforderlich.

• Quelle: http://shop.loxone.com/dede/enocean-funk-bewegungsmelder.html

40

Page 48: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

5 Ergebnisse und Alternativen

Variante Nr. 2 - Videoauswertung:

Microsoft Kinect:

• openHAB: REST-Binding

• Fur die Realisierung ist der ”Jnect”-Adapter und das Microsoft Kinect SDK notwendig.

• Quelle: https://code.google.com/a/eclipselabs.org/p/jnect/

Motion Detector Bricklet:

• openHAB: REST-Binding

• Fur die Realisierung ist der Einsatz von ”jmt” obligatorisch.

• Quelle: http://www.tinkerforge.com/de/doc/Software/Bricklets/MotionDete

ctor_Bricklet_Java.html

Java-Motion-Tracking:

• openHAB: REST-Binding

• Die Open-Source Software ”jmt” verwendet das Java Media Framework.

• Quelle: https://code.google.com/p/java-motion-tracking/

JMyron:

• openHAB: REST-Binding

• ”JMyron” ist eine Open-Source Bibliothek fur die Bildmanipulation und Bewegungser-

kennung.

• Quelle: http://www.silentlycrashing.net/p5/libs/jmyron/

OpenCV:

• openHAB: REST-Binding

• Mit den Algorithmen der ”OpenCV” Bibliothek ist eine Bewegung durch Abgleich der

aufgezeichneten Bilder vorstellbar.

• Quelle: http://opencv.org/

Variante Nr. 3 - Tonauswertung:

Sphinx-4:

• openHAB: REST-Binding

• Mit der ”sphinx4” Software konnen Audiosignale analysiert werden (Prasenzerkennung).

• Quelle: http://cmusphinx.sourceforge.net/wiki/tutorialsphinx4/

Variante Nr. 4 - LEAP Motion:

LEAP Motion:

• openHAB: Leap-Binding (fruhe Alpha-Phase)

• Der Leap-Motion Sensor ist fur eine Gestenerkennung bei kurzen Distanzen einsetzbar.

• Quelle: https://www.leapmotion.com/product

41

Page 49: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

6 Zusammenfassung und Fazit

Die vorherrschende Inkompatibilitat zur Interoperabilitat der herstellerabhangigen Technologi-

en aus dem Bereich der Heim- bzw. Gebaudeautomatisierung zwingt die Hersteller zur Ent-

wicklung von Hard- und Softwarelosungen. Einige dieser Losungen sind lediglich als Gateway

zweier Standards bzw. Protokolle angedacht und konnen daruber hinaus nicht mit anderen

Produkten konkurrieren. In jungster Zeit sieht der Trend der Automatisierung eine Softwa-

relosung auf dem Leitrechner vor, die alle konkurrierenden Hard- und Softwarekomponenten

vereinigen kann. Die openHAB-Software ist eine solche Losung 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 fur den IoT-Service der Wahl unverstandlich ist?

Was, wenn alle”Dinger“ mit einer einheitlichen Oberflache bedient, ein gemein-

sames Chart mit Daten bestucken, oder gemeinsamen Automatisierungsregeln fol-

gen sollen? In diesem Fall konnen Integrationsplattformen helfen, die fur diese

Problemstellungen Losungen anbieten. [EE15, 1. April 2012].

Wenn auch Thomas Eichstadt-Engelen als Mitbegrunder der openHAB UG diese Aussage sehr

umgangssprachlich formuliert, trifft sie dennoch den Kerngedanken einer zukunftswurdigen

Automatisierungsplattform: Nicht nur weil die openHAB-Software auf der Eclipse-Equinox,

als Implementierung des OSGi-Standards, aufbaut, sondern auch weil die fortgefuhrte Im-

plementierung die geforderten Programmierparadigmen achtet, ist openHAB als dynamisches

Modulsystem anzusehen. Dank der aufgelosten Programmkomplexitat durch Dekomposition

in Softwaremodule verfugt openHAB sowohl uber eine einheitliche Versionierung und Proto-

kollierung als auch uber eine Registrierung und Verwaltung von Diensten. Die verwendeten

dynamischen Abhangigkeiten der Protokollimplementierungen (openHAB-Bindings) ermogli-

chen das (de-)installieren und konfigurieren von Diensten wahrend der Laufzeit und sind somit

autark: Hot Deployment. Statische Abhangigkeiten sind nur fur die Kernkomponenten einge-

setzt.

Aufgrund einer zentralen Konfiguration fur die Hard- und Softwarekomponenten, der umgesetz-

ten Automatisierungslogik, unterteilt in Regel-, Skripte- und Jobmanagement im expressiven

42

Page 50: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

6 Zusammenfassung und Fazit

Dialekt, und der simplen SQL-Logik ist der Funktionsumfangs der openHAB-Software fur 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 zuganglicher zu gestalten.

Eine Thematik fur anknupfende Arbeiten ist demnach die Analyse der User Experience bei An-

wendung der heuristischen Evaluation, dem Cognitive Walk-Through oder den Usability-Tests.

Neben den in Kapitel 5 - ”Ergebnisse und Alternativen” gelisteten Ansatzen, kann Thema wei-

tere Projekte auch eine verteile openHAB-Automatisierung uber externe Laufzeitumgebungen

sein.

Fur das in dieser Arbeit vorgestellte und durchgefuhrte realitatsnahe Szenario gilt eine Bewe-

gungserkennung von Personen durch die Auswertung der empfangenen Signalstarke von WAPs

anhand der Beacon-Frames als plausibel und kennzeichnet eine herstellerubergreifende Auto-

matisierung beim Einsatz von openHAB. Fur diese Art der Bewegungserkennung ist vorteilhaft,

dass keine Sensorik an den Personen angebracht und die Infrastruktur nicht erweitert werden

muss.

Fur eine Produktreife in den Anwendungsbereichen der Angriffserkennung und der Gesund-

heitsvorsorge sind Messungen uber einen langeren Zeitraum abzuhalten und die Entwicklung

bis hin zur automatischen Konfiguration der WAPs fortzufuhren. Fur die Abschatzungen der

Grenzwertuberschreitungen sind andere mathematische Ausdrucke bzw. Wahrscheinlichkeits-

verteilungen anzuwenden. In [al15] wird ein mathematisches Model entwickelt, das bei Verwen-

dung der ”Kullback Leibner” Distanz und der gemessenen RSSI eine Auskunft uber die Anzahl

von Personen in der Lokalitat gibt. Storeinflusse durch evtl. Endgerate auf dem gleichen Fre-

quenzband bleiben unberucksichtigt. Zudem wird darauf hingewiesen, dass eine Auswertung

der Signalstarken fur alle Kanale des Frequenzspektrums nahezu die gleichen Ergebnisse liefert,

wie bei Auswertung der RSSI.

43

Page 51: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

7.1 Lex Uno Station - Leitrechner mit openHAB

7.1.1 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

7.1.2 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

Page 52: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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

7.1.3 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 arke messen" icon="

fire"

15: Text item=RSSI_Profile label= "gespeicherte Signalst arke:

[%.2 fdB]" icon="chart"

16: Text item=RSSI_Profile_min label="min. Signalst arke [%.2

fdB]" icon="chart"

17: Text item=RSSI_Profile_max label="max. Signalst arke [%.2

fdB]" icon="chart"

18: }

19:

45

Page 53: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

20: Frame label="Bewegung erkennen" {

21: Setpoint item=Threshold_Value label="Grenzwert fur

Signalst a 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 arke:

[%.2 fdB]" icon="chart"

24: Text item=RSSI_Threshold label="Bewegung erkannt fur

Signalst arke: [%.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

=1000

35: //Image url="http :// openhab:openhab1!@localhost :8080/

rrdchart.png?groups=GRSSI_Chart&period=h&service=rrd4j&

h=200&w=1400"

36: }

37: }

Quelltext 7.3: Konfiguration der openHAB-Sitemap

7.1.4 Konfiguration - openHAB-Persistence

1: Strategies {

2: everyMinute : "0 * * * * ?"

3: // default = everyChange

4: }

5:

6: Items {

7: RSSI_Recognition: strategy = everyChange , everyMinute

46

Page 54: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

8: RSSI_Profile: strategy = everyChange , everyMinute

9: RSSI_Threshold: strategy = everyChange , everyMinute

10: }

Quelltext 7.4: rrd4j-Persistenz fur Visualisierung der Signalstarken

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 fur Auswertung der Ergebnisse

7.1.5 Realisierung - openHAB-Rules

1: import org.openhab.core.library.types.*

2:

3: rule "Initialize Items"

4: when

5: System started

47

Page 55: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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

Page 56: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

44: Thread :: sleep(duration *1000+5000)

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

Page 57: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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 fur Reaktion auf Nutzer- und Systeminteraktion

7.1.6 Remote-Zugriff - Bash-Skript

50

Page 58: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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@10 .20.114.48 ’cd /etc/

recognition/ && tcpdump -i wlan0 -1 -e "ether src 30:

b5:c2:38:3d: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@10 .20.114.48 ’cd /etc/

recognition/ && tcpdump -i wlan0 -1 -e "ether src

30:b5:c2 :38:3d:63" | lua capturerecognition.lua ’"

$3" "$4" "$5" "$6"

20: fi

21: else

22: sshpass -p ’openhab1!’ ssh root@10 .20.114.48 ’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@10 .20.114.45 ’cd /etc/ &&

mgen input udpgen ’"$2"’.mgn ’

30: else

31: sshpass -p ’openhab1!’ ssh root@10 .20.114.45 ’kill -9 $(

pidof mgen)’

32: fi

51

Page 59: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

33: fi

34: fi

35: exit

Quelltext 7.8: Bash-Skript fur Remote-Zugriff auf Sender und Receiver

7.2 TP-Link WLAN Router - Receiver

7.2.1 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 ’192.168.1.1 ’

8: option netmask ’255.255.255.0 ’

9: option ip6assign ’60’

10:

11: config interface ’wan6’

12: option ifname ’@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 ’10.10.10.48 ’

22: option netmask ’255.255.255.0 ’

Quelltext 7.9: Ausschnitt der Netzwerk-Konfiguration

7.2.2 Konfiguration - Wireless

1: config wifi -device ’radio0 ’

2: option type ’mac80211 ’

52

Page 60: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

3: option channel ’11’

4: option hwmode ’11g’

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 ’mac80211 ’

12: option channel ’36’

13: option hwmode ’11a’

14: option path ’pci0000 :00/0000:00:00.0 ’

15: 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

7.2.3 Konfiguration - Lua Skript

1: local conf = {

2: host= "10.20.114.61",

3: port=’8080’,

4: user=’openhab ’,

5: pw=’openhab1!’,

6: }

7: return conf

Quelltext 7.11: Lua-Konfiguration

53

Page 61: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

7.2.4 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 = -100

14: 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 + 1

30: 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

Page 62: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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 - 1

48: end

Quelltext 7.12: RSSI-Profil erstellen

7.2.5 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

Page 63: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

24: str = string.sub(str ,1,string.len(str) -2)

25: calcrssi = calcrssi + str

26: cnt = cnt + 1

27: 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

7.2.6 Kommandos fur 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: -----------------------------------------------------------

7: -- HTTP.Request(POST); Parameter: url , value , value -length

8: -----------------------------------------------------------

9: 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

Page 64: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

18: return RSP ,CODE ,TR

19: end

20:

21: -------------------------------------------------------------

22: -- HTTP.Request(GET) return xml; Parmeter: url host with port

23: -------------------------------------------------------------

24: 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)

7.2.7 REST-API Kommando fur 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

Page 65: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

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

7.3.1 Konfiguration - Netzwerk

1: ...

2: config interface ’lan’

3: option force_link ’1’

4: option proto ’static ’

5: option ipaddr ’192.168.1.1 ’

6: option netmask ’255.255.255.0 ’

7: 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 ’255.255.255.0 ’

23: option ipaddr ’10.10.10.45 ’

24: ...

58

Page 66: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

Quelltext 7.16: Ausschnitt der Netzwerk-Konfiguration

7.3.2 Konfiguration - Wireless

1: config wifi -device ’radio0 ’

2: option type ’mac80211 ’

3: option channel ’11’

4: option hwmode ’11g’

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 ’mac80211 ’

12: option channel ’36’

13: option hwmode ’11a’

14: option path ’pci0000 :00/0000:00:00.0 ’

15: 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

7.3.3 Multi-Generator Skript

1: START NOW

2: INTERFACE wlan0

3: 0.0 ON 1 UDP DST 10.10.10.48/31337 PERIODIC [10 64] COUNT -1

59

Page 67: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

Quelltext 7.18: Multi-Generator Skript fur 10 Pakete/s

7.4 openHAB-GUI fur realisierte Sitemap

Abbildung 7.1: Main-Menu der Benutzeroberflache [Uh15u]

60

Page 68: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

Abbildung 7.2: Sub-Menu der Benutzeroberflache - Steuerung der Leuchten [Uh15u]

7.5 Ergebnisse und Messwertvisualisierung

Abbildung 7.3: Visualisierung fur Messdurchlauf #1

Abbildung 7.4: Visualisierung fur Messdurchlauf #2

61

Page 69: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

Abbildung 7.5: Visualisierung fur Messdurchlauf #3

Abbildung 7.6: Visualisierung fur Messdurchlauf #4

Abbildung 7.7: Visualisierung fur Messdurchlauf #5

62

Page 70: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

Abbildung 7.8: Visualisierung fur Messdurchlauf #6

Abbildung 7.9: Visualisierung fur Messdurchlauf #7

Abbildung 7.10: Visualisierung fur Messdurchlauf #8

63

Page 71: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

Abbildung 7.11: Visualisierung fur Messdurchlauf #9

Abbildung 7.12: Visualisierung fur Messdurchlauf #10

Abbildung 7.13: Visualisierung fur Messdurchlauf #11

64

Page 72: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

7 Anhang

Abbildung 7.14: Anmerkungen zu den einzelnen Messdurchlaufen

65

Page 73: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

8 Eidesstattliche Erklarung

Hiermit erklare ich an Eides Statt, dass ich die vorliegende Arbeit selbst angefertigt habe. Die

aus fremden Quellen direkt oder indirekt ubernommenen Gedanken sind als solche kenntlich

gemacht. Die Arbeit wurde bisher keiner Prufungsbehorde vorgelegt und auch noch nicht

veroffentlicht.

Peter Manheller, Sankt Augustin den 26.06.2015

66

Page 74: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Literaturverzeichnis

[al15] Depatla S. et. al. Occupancy Estimation Using Only WiFi Power Measurements.2015.url: http://www.ece.ucsb.edu/~ymostofi/papers/JSAC15_DepatlaMuralidharanMostofi.pdf (besucht am 10. 06. 2015) (zitiert auf Seite 43).

[All15a] The OSGi Alliance. Certified Products. 2015.url: http://www.osgi.org/Certification/Certified (besucht am14. 04. 2015) (zitiert auf Seite 13).

[All15b] The OSGi Alliance. Join the OSGi Alliance. 2015.url: http://www.osgi.org/Join/HomePage (besucht am 14. 04. 2015)(zitiert auf Seite 12).

[All15c] The OSGi Alliance. OSGi Service Platform Core Specification - Release 4, Version4.3 April 2011. 2015.url: https://osgi.org/download/r4v43/osgi.core-4.3.0.pdf (besuchtam 11. 04. 2015) (zitiert auf Seiten 5–12).

[All15d] The OSGi Alliance. OSGi Service Platform Service Compendium - Release 4,Version 4.3 January 2012. 2015.url: https://osgi.org/download/r4v43/osgi.cmpn-4.3.0.pdf (besuchtam 11. 04. 2015) (zitiert auf Seiten 4, 9, 10, 16–18).

[All15e] The OSGi Alliance. Technology. 2015.url: http://www.osgi.org/Technology/HomePage (besucht am14. 04. 2015) (zitiert auf Seite 12).

[Alw+06] M. Alwan, P.J. Rajendran, S. Kell, D. Mack, S. Dalal u. a. “A Smart and PassiveFloor-Vibration Based Fall Detector for Elderly”. In: Information and Communi-cation Technologies, 2006. ICTTA ’06. 2nd. Bd. 1. 2006, S. 1003–1007.(Zitiert auf Seite 28).

[Ass15a] KNX Association. KNX has become an International Standard: ISO/IEC 14543-3.2015.url: http://www.domo-energie.com/usr_file/Pdf/knx_is_international_standard.pdf (besucht am 08. 04. 2015) (zitiert auf Seite 1).

[Ass15b] KNX Association. Standardization. 2015.url: http://www.knx.org/knx-en/knx/technology/standardisation/index.php (besucht am 07. 04. 2015) (zitiert auf Seite 1).

67

Page 75: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Literaturverzeichnis

[Aut15] IANA Internet Assigned Numbers Authority. MIME-Tpe Application - vnd.osgi.bundle.2015.url: http://www.iana.org/assignments/media-types/application/vnd.osgi.bundle (besucht am 11. 04. 2015) (zitiert auf Seite 6).

[CEN15] CENELEC. CLC/TC 205 Home and Building Electronic Systems (HBES). 2015.url: http://www.cenelec.eu/dyn/www/f?p=104:110:1746994019214401::::FSP_ORG_ID,FSP_PROJECT,FSP_LANG_ID:1258281,53681,25 (besucht am07. 04. 2015) (zitiert auf Seite 1).

[Com15] KUNBUS Industrial Communication. BatiBUS - already ”history” for a long time,but still significant! 2015.url: http://www.kunbus.com/batibus.html (besucht am 07. 04. 2015)(zitiert auf Seite 1).

[Con15] MisterHouse Contributor. MisterHouse - It Knows Kung-Fu. 2015.url: http://misterhouse.sourceforge.net/ (besucht am 15. 04. 2015)(zitiert auf Seite 14).

[Cor15] Oracle Corporation. Jersey RESTful Web Services in Java. 2015.url: https://jersey.java.net/ (besucht am 15. 05. 2015) (zitiert aufSeite 18).

[EE15] Thomas Eichstadt-Engelen. Die Welt der Dinge in deiner Hand - openHAB alsIntegrationsplattform im IoT. 2015.url: https://www.innoq.com/de/articles/2012/04/internet-of-things/ (besucht am 02. 06. 2015) (zitiert auf Seite 42).

[EK+11] K. El-Kafrawy, M. Youssef und A. El-Keyi. “Impact of the human motion on thevariance of the received signal strength of wireless links”. In: Personal Indoor andMobile Radio Communications (PIMRC), 2011 IEEE 22nd International Sympo-sium on. 2011, S. 1208–1212.(Zitiert auf Seite 29).

[Fil12] U. Fildebrandt. Software modular bauen: Architektur von langlebigen Softwaresys-temen - Grundlagen und Anwendung mit OSGi und Java. Dpunkt.Verlag GmbH,2012.(Zitiert auf Seiten 4–10).

[for15] knx-user forum. Tolle Arbeit, wie geht’s weiter. 2015.url: http://knx-user-forum.de/forum/supportforen/openhab/25148-%E2%88%9A-tolle-arbeit-wie-geht-s-weiter (besucht am 20. 05. 2015)(zitiert auf Seite 24).

[Fou15a] The Eclipse Foundation. Buddy Class Loading. 2015.url: http://wiki.eclipse.org/index.php/Context_Class_Loader_Enhancements#Buddy_Class_Loading (besucht am 14. 04. 2015) (zitiert aufSeite 13).

68

Page 76: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Literaturverzeichnis

[Fou15b] The Eclipse Foundation. FAQ What are extensions and extension points? 2015.url: http://wiki.eclipse.org/FAQ_What_are_extensions_and_extension_points%3F (besucht am 14. 04. 2015) (zitiert auf Seite 13).

[Fou15c] The Eclipse Foundation. Jetty. 2015.url: http://eclipse.org/jetty/ (besucht am 15. 05. 2015) (zitiert aufSeiten 18, 20).

[Fou15d] The Eclipse Foundation. Mission Statement. 2015.url: http://www.eclipse.org/equinox/ (besucht am 14. 04. 2015) (zitiertauf Seite 13).

[Gmb15a] EnOcean GmbH. Flexible Brucke von KNX zu EnOcean. 2015.url: https://www.enocean.com/de/flexible-bruecke-von-knx-zu-enocean/ (besucht am 08. 04. 2015) (zitiert auf Seite 1).

[Gmb15b] Insta Elektro GmbH. Historie - Insta Elektro GmbH. 2015.url: http://www.insta.de/index.php?option=com_content&view=article&id=26 (besucht am 07. 04. 2015) (zitiert auf Seite 1).

[Gmb15c] OMTEC Vertriebs GmbH. Lex Uno UNO-3I270D-V4G-H16-00. 2015.url: http://www.omtec.de/embedded-server/lex-uno-uno-3i270d-v4g-h16-00/ (besucht am 02. 06. 2015) (zitiert auf Seite 29).

[Han+14] Chunmei Han, Kaishun Wu, Yuxi Wang und L.M. Ni. “WiFall: Device-free falldetection by wireless networks”. In: INFOCOM, 2014 Proceedings IEEE. 2014,S. 271–279.(Zitiert auf Seiten 27–29).

[Har13] R. Harle. “A Survey of Indoor Inertial Positioning Systems for Pedestrians”. In:Communications Surveys Tutorials, IEEE 15.3 (2013), S. 1281–1293.(Zitiert auf Seite 27).

[Inc15a] Dropbox Inc. Install Core API SDKs. 2015.url: https://www.dropbox.com/developers/core/sdks/java (besuchtam 18. 05. 2015) (zitiert auf Seite 20).

[Inc15b] IFTTT Inc. About IFTTT. 2015.url: https://ifttt.com/wtf (besucht am 18. 05. 2015) (zitiert auf Seite 20).

[Inc15c] OpenRemote Inc. OpenRemote - Open Source Automation Platform. 2015.url: http://www.openremote.org/display/HOME/OpenRemote (besuchtam 15. 04. 2015) (zitiert auf Seite 14).

[Inc15d] QuinStreet Inc. 802.11 Beacons Revealed. 2015.url: http://www.wi-fiplanet.com/tutorials/article.php/1492071(besucht am 07. 06. 2015) (zitiert auf Seite 32).

69

Page 77: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Literaturverzeichnis

[Inc15e] Terracotta Inc. Quartz Quick Start Guide. 2015.url: http://quartz- scheduler.org/documentation/quartz-

2.1.x/quick-start (besucht am 18. 05. 2015) (zitiert auf Seite 19).

[Inc15f] Terracotta Inc. Tutorial - Lesson 6: CronTrigger. 2015.url: http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/tutorial-lesson-06 (besucht am 20. 05. 2015) (zitiertauf Seite 24).

[Iwa+13] T. Iwase und R. Shibasaki. “Infra-free indoor positioning using only smartphonesensors”. In: Indoor Positioning and Indoor Navigation (IPIN), 2013 InternationalConference on. 2013, S. 1–8.(Zitiert auf Seite 28).

[JmD15] JmDNS. Idea and Concept. 2015.url: http://jmdns.sourceforge.net/ (besucht am 18. 05. 2015) (zitiert aufSeite 20).

[Jur15] Nico Jurran. c’t Magazin - Internet der Dinge, Heimautomation und Smart Homes.2015.url: http://www.heise.de/ct/ausgabe/2015-4-Internet-der-Dinge-Heimautomation-und-Smart-Homes-2521024.html (besucht am08. 04. 2015) (zitiert auf Seite 1).

[Kas+12] N. Kassem, A.E. Kosba und M. Youssef. “RF-Based Vehicle Detection and SpeedEstimation”. In: Vehicular Technology Conference (VTC Spring), 2012 IEEE 75th.2012, S. 1–5.(Zitiert auf Seite 29).

[Kos+12] A.E. Kosba, A. Saeed und M. Youssef. “RASID: A robust WLAN device-freepassive motion detection system”. In: Pervasive Computing and Communications(PerCom), 2012 IEEE International Conference on. 2012, S. 180–189.(Zitiert auf Seiten 27–29).

[Kre15] Kai Kreuzer. Java Software Architect and Home Automation Professional. 2015.url: http://kaikreuzer.blogspot.de/ (besucht am 15. 04. 2015) (zitiertauf Seiten 14, 15, 20–22, 25).

[May15] Christian Mayer. CometVisu. 2015.url: http://www.cometvisu.org/wiki/CometVisu (besucht am18. 05. 2015) (zitiert auf Seite 20).

[Mer+10] H. Merz, T. Hansemann und C. Hubner. Gebaudeautomation: Kommunikations-systeme mit EIB/KNX, LON und BACnet. Fachbuchverl. Leipzig im Carl-Hanser-Verlag, 2010.(Zitiert auf Seiten 1, 2).

70

Page 78: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Literaturverzeichnis

[Neh15] Diego Nehab. What is LuaSocket? 2015.url: http://w3.impa.br/~diego/software/luasocket/ (besucht am05. 06. 2015) (zitiert auf Seite 31).

[Nou+07] N. Noury, A. Fleury, P. Rumeau, A.K. Bourke, G.O. Laighin u. a. “Fall detection -Principles and Methods”. In: Engineering in Medicine and Biology Society, 2007.EMBS 2007. 29th Annual International Conference of the IEEE. 2007, S. 1663–1666.(Zitiert auf Seite 29).

[Ohl15] Gunther Ohland. Die Brucke zwischen den Systemen. 2015.url: http://www.funkschau.de/fileadmin/media/heftarchiv/pdf/2010/01-02/fs_1001-2_s22-s23_gebaeude.pdf (besucht am 09. 04. 2015)(zitiert auf Seite 2).

[ope15] openclipart.org. openclipart. 2015.url: https://openclipart.org/ (besucht am 21. 05. 2015) (zitiert aufSeiten 30, 36).

[QOS15] QOS.ch. Simple Logging Facade for Java (SLF4J). 2015.url: http://www.slf4j.org/ (besucht am 13. 05. 2015) (zitiert auf Seite 17).

[ubu15] ubuntuusers.de. MySQL. 2015.url: http://wiki.ubuntuusers.de/mysql (besucht am 09. 06. 2015) (zitiertauf Seite 31).

[Uh15a] openHAB UG (haftungsbeschrankt). Actions. 2015.url: https://github.com/openhab/openhab/wiki/Actions (besucht am20. 05. 2015) (zitiert auf Seite 24).

[Uh15b] openHAB UG (haftungsbeschrankt). Application Integration. 2015.url: https://github.com/openhab/openhab/wiki/Application-Integration (besucht am 21. 05. 2015) (zitiert auf Seite 26).

[Uh15c] openHAB UG (haftungsbeschrankt). Controlling openHAB with your voice. 2015.url: https://github.com/openhab/openhab/wiki/Controlling-openHAB-with-your-voice (besucht am 18. 05. 2015) (zitiert auf Seite 20).

[Uh15d] openHAB UG (haftungsbeschrankt). Explanation of Sitemaps. 2015.url: https://github.com/openhab/openhab/wiki/Explanation-of-Sitemaps (besucht am 18. 05. 2015) (zitiert auf Seite 20).

[Uh15e] openHAB UG (haftungsbeschrankt). Features. 2015.url: http://www.openhab.org/features.html (besucht am 15. 04. 2015)(zitiert auf Seite 14).

[Uh15f] openHAB UG (haftungsbeschrankt). GCal Binding. 2015.url: https://github.com/openhab/openhab/wiki/GCal-Binding(besucht am 18. 05. 2015) (zitiert auf Seite 20).

71

Page 79: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Literaturverzeichnis

[Uh15g] openHAB UG (haftungsbeschrankt). GCal Binding. 2015.url: https://github.com/openhab/openhab/wiki/GPIO-Binding(besucht am 18. 05. 2015) (zitiert auf Seite 20).

[Uh15h] openHAB UG (haftungsbeschrankt). Getting Started. 2015.url: http://www.openhab.org/gettingstarted.html (besucht am19. 05. 2015) (zitiert auf Seiten 23, 30).

[Uh15i] openHAB UG (haftungsbeschrankt). GitHub - openHAB Overview. 2015.url: https://github.com/openhab/openhab/wiki (besucht am16. 04. 2015) (zitiert auf Seiten 15, 18, 19, 21–23).

[Uh15j] openHAB UG (haftungsbeschrankt). HABDroid. 2015.url: https://github.com/openhab/openhab/wiki/HABDroid (besucht am10. 06. 2015) (zitiert auf Seite 37).

[Uh15k] openHAB UG (haftungsbeschrankt). How to configure openHAB to start auto-matically on Linux with screen. 2015.url: https://github.com/openhab/openhab/wiki/Samples-Tricks#how-to-configure-openhab-to-start-automatically-on-linux-with-

screen (besucht am 05. 06. 2015) (zitiert auf Seite 31).

[Uh15l] openHAB UG (haftungsbeschrankt). MySQL Persistence. 2015.url: https://github.com/openhab/openhab/wiki/MySQL-Persistence(besucht am 09. 06. 2015) (zitiert auf Seite 31).

[Uh15m] openHAB UG (haftungsbeschrankt). openHAB Runtime. 2015.url: https://github.com/openhab/openhab/releases/download/v1.6.2/distribution-1.6.2-runtime.zip (besucht am 13. 05. 2015) (zitiert aufSeiten V, 16–19, 21, 22, 26).

[Uh15n] openHAB UG (haftungsbeschrankt). Persistence - Introduction. 2015.url: https://github.com/openhab/openhab/wiki/Persistence (besuchtam 18. 05. 2015) (zitiert auf Seiten 19, 24, 25).

[Uh15o] openHAB UG (haftungsbeschrankt). REST-API. 2015.url: https://github.com/openhab/openhab/wiki/REST-API (besucht am08. 06. 2015) (zitiert auf Seite 33).

[Uh15p] openHAB UG (haftungsbeschrankt). Rules. 2015.url: https://github.com/openhab/openhab/wiki/Rules (besucht am20. 05. 2015) (zitiert auf Seite 23).

[Uh15q] openHAB UG (haftungsbeschrankt). Scripts - Introduction. 2015.url: https://github.com/openhab/openhab/wiki/Scripts (besucht am18. 05. 2015) (zitiert auf Seite 19).

72

Page 80: Hersteller ubergreifende Heim-/Geb audeautomatisierung ... · 1.1 Aufgabenstellung Der Auftrag des Projektes besteht in der Ausf uhrung eines realit atsnahen Szenarios der Au- tomatisierung

Literaturverzeichnis

[Uh15r] openHAB UG (haftungsbeschrankt). Squeezebox Binding. 2015.url: https://github.com/openhab/openhab/wiki/Squeezebox-Binding(besucht am 18. 05. 2015) (zitiert auf Seite 20).

[Uh15s] openHAB UG (haftungsbeschrankt). User Interfaces. 2015.url: http://www.openhab.org/features- ui.html (besucht am18. 05. 2015) (zitiert auf Seite 20).

[Uh15t] openHAB UG (haftungsbeschrankt). Using RRD4j Charts. 2015.url: https://github.com/openhab/openhab/wiki/Charts (besucht am10. 06. 2015) (zitiert auf Seite 35).

[Uh15u] openHAB UG (haftungsbeschrankt). Welcome to openHAB. 2015.url: http://www.openhab.org/index.html (besucht am 09. 04. 2015)(zitiert auf Seiten 2, 60, 61).

[Uts+02] A. Utsumi, N. Tetsutani und S. Igi. “Hand detection and tracking using pixel valuedistribution model for multiple-camera-based gesture interactions”. In: KnowledgeMedia Networking, 2002. Proceedings. IEEE Workshop on. 2002, S. 31–36.(Zitiert auf Seite 28).

[V15] Philips Electronics N. V. Philips Tischleuchte. 2015.url: http://www.philips.de/c-p/7299760PH/hue-personal-wireless-lighting-tischleuchte (besucht am 02. 06. 2015) (zitiert auf Seite 29).

[Web+10] B. Weber, P. Baumgartner und O. Braun. OSGi fur Praktiker: Prinzipien, Werk-zeuge und praktische Anleitungen auf dem Weg zur ”kleinen SOA”. Hanser, 2010.(Zitiert auf Seiten 4, 5, 7, 8, 10, 11, 13).

[wik15a] wikidevi.com. TP-LINK TL-WDR4300. 2015.url: https://wikidevi.com/wiki/TP-LINK_TL-WDR4300 (besucht am02. 06. 2015) (zitiert auf Seite 30).

[wik15b] mandrawes wiki.openwrt.org. TP-Link TL-WDR4300. 2015.url: http://wiki.openwrt.org/toh/tp-link/tl-wdr4300 (besucht am02. 06. 2015) (zitiert auf Seiten 30, 31).

[Wil15] Arno Willig. Hauptseite - Was ist FHEM? 2015.url: http://www.fhemwiki.de/wiki/Hauptseite (besucht am 09. 04. 2015)(zitiert auf Seite 2).

[Wut08] G. Wutherich. Die OSGi Service Platform: eine Einfuhrung mit Eclipse Equinox.dpunkt, 2008.(Zitiert auf Seiten 4, 5).

73