GT ideas

From
Jump to navigation Jump to search

Grundsätzliches

Sollten Sie sich für eines der Themen interessieren, dann geht es wie folgt los/weiter:

  • Orientierungsgespräch mit dem Ansprechpartner (der entweder selbst zum Betreuer wird, oder einen Betreuer zuweist).
  • Expose anfertigen und dem Betreuer übergeben (siehe Wie schreibt man ein Expose?, Ein Beispiel)
  • Wird das Expose vom Betreuer nicht akzeptiert, kann es maximal einmal nachgebessert werden. Wird es auch danach nicht akzeptiert, findet keine Betreuung statt.
  • Wird das Expose akzeptiert,
    • wird vom Betreuer umgehend eine Wiki-Seite für die Abschlussarbeit angelegt. Diese enthält einen Link zum Expose, Informationen zum aktuellen Stand der Arbeit (insbesondere Meilensteine/Deadlines) und am Ende die Arbeit als PDF.
    • wird zeitnah in Vortrag im HotTopics-Seminar gehalten, in dem das Vorhaben vorgestellt wird (ca. 30 Minuten).
    • wird innerhalb von 1 Monat ein Zweitgutachter identifiziert und dessen Zustimmung zur Übernahme der Begutachtung eingeholt.
    • Spätestens einen Monat nachdem das Expose akzeptiert wurde (2 Monate bei Master/Diplomarbeiten) wird die Abschlussarbeit bei Frau Lindner / Frau Weber offiziell angemeldet. Ab da beginnt die in der Studienordnung festgesetzte Frist zu laufen, die den spätesten Abgabezeitpunkt regelt.


BA (Heimautomatisierung) Anspruchsvolles Binding für OpenHAB implementieren

Ziel der Arbeit ist es, ein "anspruchsvolles" Bindung für OpenHAB zu implementieren. Vorschlag: Überarbeitung (Neuimplementierung) des Robonect-Bindings, so dass

  • die volle Funktionalität von Robonect in OpenHAB verfügbar wird
  • die Push-Funktionalität von Robonect genutzt wird (so dass Geräte/Netzwerk nicht durch ständiges Polling belastet werden)
  • die Zugangsdaten für Robonect sicher(er) in der Konfiguration gespeichert werden

Voraussetzungen

  • Programmierung in Java (fortgeschritten)
  • Einarbeitung in OpenHAB
  • Einarbeitung in Robonect
  • Einarbeitung in MQTT, HTTP/Rest-API

Es wäre wünschenswert, wenn das Ergebnis der OpenHAB-Community als Open Source zur Verfügung gestellt werden könnte.

Ansprechpartner: Jens-Peter Redlich


vergeben (Mark Spitzner): BA (Heimautomatisierung) Anwesenheitssimulation in OpenHAB

Ziel ist es, die Events in einem OpenHab Heimautomatisierungssytem über einen längeren Zeitraum aufzuzeichnen und mit deren Hilfe eine Anwesenheitssimulation zu ermöglichen. Eine Anwesenheitssimmulation wird aktiv, wenn niemand im Objekt (Haus, Wohnung) anwesend ist. Sie soll nach außen sichtbare Ereignisse selbsttätig auslösen, so dass der sich einem externen Beobachter ergebende Eindruck sich nicht von dem unterscheidet, den er haben könnte, wenn jemand anwesend wäre. Um einen guten Eindruck bekommen, was im Wohnbjekt normalerweise passiert, können Events des OpenHab aufgezeichnet werden. Die Anwesenheitssimmulation ist jedoch sinnvoll anzupassen,

  • z.B. an den Sonnenauf/untergang. So sollen Lampen erst dann ein/ausgeschaltet werden, wenn es entsprechend der tatsächlichen Tageslänge angebracht wäre
  • z.B. an die Lichtintensität. So sollen Lampen abhängig von der Frage geschaltet werden, ob es draußen gerade hell/bewölkt ist
  • z.B. an das Wetter. So sollen Jalousien nur dann heruntergefahren werden, wenn (a) keine Sturmgefahr besteht und (b) die Sonne scheint und eine Überhitzung der Zimmer zu befürchten wäre.

Voraussetzungen

  • Grundlegendes Verständnis von KNX
  • Programmierung in Java (fortgeschritten)
  • Einarbeitung in OpenHAB

Ansprechpartner: Jens-Peter Redlich

BA oder MA (Heimautomatisierung) Automatisierte Erstellung (und Ausführung) von "Plänen" in der Heimautomatisierung

  • Erfassung von aktuellen Umgebungsparametern und von Prognosen für selbige, z.B. Umgebungstemperatur, Niederschlag, Wind, Wasserbedarf von Pflanzen (abschätzbar aus Temperatur und Wind), Wuchsgeschwindigkeit von z.B. Rasen (abschätzbar aus Temperatur und Niederschlag).
  • Erfassung von Zielgrößen des Nutzers, z.B. gewünschte Zimmertemperatur (zu bestimmten Zeiträumen), gewünschtes Lüftungsvolumen
  • Erstellen (und Aktualisieren) von Plänen, um die Zielgrößen zu erreichen

Voraussetzungen

  • Programmierung in Java (fortgeschritten)
  • Einarbeitung in OpenHAB

Ansprechpartner: Jens-Peter Redlich

(reserviert bis 1.12.2019 für A.Toth) BA: (Programming Paradigms) Concurrent Programming in Rust und Go - Performance vergleichen

Go ist eine Programmiersprache, die für ihre Fähigkeit zur nebenläufigen (concurrent) Programmausführung oft gelobt wird; insbesondere weil sich daraus ein Performance-Gewinn auf Mehr-CPU-Systemen ergibt. Zur Demonstration wird oft das "Sieve of Eratostheneson" (https://play.golang.org/p/9U22NfrXeq) verwendet. Rust ist eine Programmiersprache, die von sich behauptet, ebenfalls sehr performanten Code zu ermöglichen (der zusätzlich noch "sicher" ist, z.B. im Hinblick auf die Speicherverwaltung). Ziel der Arbeit ist es, die Leistungsfähogkeit beider Sprachen/Laufzeitsysteme zu vergleichen und insbesondere die Implementation in Rust zu optimieren, so dass sie die Go-Variante schlagen kann (falls das möglich ist).

Ansprechpartner: Jens-Peter Redlich

MA (Heimautomatisierung) Integration von KNX und OpenHAB (1)

Integration von KNX-Systemen in OpenHAB, indem eine KNX-Beschreibung in eine (möglichst) äquivalente OpenHAB-Beschreibung überstetzt wird. Gesucht wird ein Werkzeug, mit diem diese Übersetzung beschrieben werden kann.

Voraussetzungen

  • Einarbeitung in KNX (fortgeschritten)
  • Programmierung in Java (fortgeschritten)
  • Einarbeitung in OpenHAB (fortgeschritten)

Ansprechpartner: Jens-Peter Redlich


MA (Heimautomatisierung) Integration von KNX und OpenHAB (2)

Integration von KNX-Systemen in OpenHAB, indem eine OpebnHAB-Systembeschreibung in eine (von ETS5 importierbare) KNX-Projektdatei überstezt wird. Im Ergebnis erscheinen die in OpenHAB (in Java) implmentierten Objekte im KNX-System wie KNX-Geräte und können über die ETS5 parametriert werden.

Voraussetzungen

  • Einarbeitung in KNX (fortgeschritten)
  • Programmierung in Java (fortgeschritten)
  • Einarbeitung in OpenHAB (fortgeschritten)

Ansprechpartner: Jens-Peter Redlich


MA (IT-Security) JavaCard als Sicherer Schlüsselspeicher

Es soll ein SmartCard-basierter Schlüsselspeicher für eine große Anzahl AES-Schlüssel erschaffen werden, der einen sicheren Schlüsselimport, eine sichere externe Schlüsselspeicherung (key wrapping) und eine Benutzung bereits geladener oder wieder importierter gewrappter Schlüssel für Berechnung von AES-CCM und AES-CMAC ermöglicht, wenn diese Funktion durch eine Authentisierung freigeschaltet wurde. Eimal im Klartext importierte Schlüssel sonnen die SmartCard nie wieder im Klartext verlassen. Ziel ist eine Sichere Schlüsselspeicherung für KNX-Data-Secure. Optional kann die Funktionalität auch auf die sichere Schlüsselspeicherung und Benutzung anderer Schlüssel (z.B. ECC) ausgedehnt werden. Die Implementierung soll auf einer JavaCard erfolgen.

Voraussetzungen:

  • Kenntnisse IT-Sicherheit Grundlagen
  • Basiskenntnisse zu ISO7816
  • Java-Programmierung

Links:

Ansprechpartner: Wolf Müller


MA (IT-Security) KNXD und KNX-IP-Secure

knxd ist eine offene Implementierung für ein KNX-Gateway oder KNX-Router. In der Regel erfolgt die Kommunikation über IP-Pakete auf der einen Seite und andererseits über ein KNX-Modem auf der anderen Seite. Bislang wird der Standard KNX-IP-Secure noch nicht unterstützt. Machen Sie sich mit dem Standard gemäß KNX Application Note 159/13 v03 vertraut und versuchen Sie die Unterstützung in das knxd-Projekt zu integrieren.

Voraussetzungen:

  • Kenntnisse IT-Sicherheit-Grundlagen
  • C++-Programmierung
  • Basiswissen Betrienssysteme/Administration

Links:

Ansprechpartner: Wolf Müller


MA (Modellbasierte Softwareentwicklung) Prozessbasierte, diskrete Simulation in Rust

In diesem Masterarbeitsthema geht es um die Implementation einer Rust-Bibliothek für prozessorientierte, diskrete Simulatoren, vergleichbar mit dem älteren ODEMx für C++.

Dazu sind Konzepte zur Umsetzung aktiver Klassen, der Erzeugung hochwertiger Zufallszahlen, der systematischen Sammlung statistischer Messgrößen sowie deren anpassbare Ausgabe zu entwickeln und umzusetzen. Darüber hinaus müssen wesentliche Synchronisationsstrukturen wie Prozesswarteschlangen, Kanäle, beschränkte und unbeschränkte abstrakte und konkrete Ressourcen implementiert werden. Im Gegensatz zu ODEMx wünschen wir uns die Möglichkeit, nicht nur auf zeitbasierte Ereignisse, sondern auch auf zustandsbasierte Ereignisse warten zu können sowie die Umsetzung von Intraprozessparallelität.

Wichtiger Teil der Arbeit ist auch die Dokumentation, Unit-Tests und Benchmarks typischer Szenarien im Vergleich mit alternativen Lösungen wie ODEMx und SLX.

Ansprechpartner: Dorian Weber


BA (Modellbasierte Softwareentwicklung) Programmierung von eingebetteten Geräten

Dieses Bachelorarbeitsthema soll überblicksartig die Programmierung von eingebetteten Geräten wie Mikrocontrollern, Raspberry-Pi und/oder Grafikkarten (CUDA/OpenCL) in den jeweils dafür üblichen Sprachen (Lua, Python, Rust, C) erklären und für verschiedene Anwendungsfälle miteinander vergleichen.

Dafür wählt man initial eines oder mehrere eingebettete Geräte aus, beschreibt für die unterstützten Quellsprachen die Werkzeugkette vom Quellcode bis zum ausgebrachten Binärartefakt anhand eines typischen Beispiels und vergleicht anschließend die Komplexität der unterschiedlichen Ansätze bezüglich selbstgewählter und begründeter Kriterien.

Ansprechpartner: Dorian Weber