Skip to content
Snippets Groups Projects
Commit 88f14b78 authored by Sebastian Böttger's avatar Sebastian Böttger
Browse files

Release version 1.0.0.0 documentation

parent 5f5b4c6f
No related branches found
No related tags found
No related merge requests found
Showing
with 3179 additions and 90 deletions
......@@ -6,7 +6,10 @@ With this software, you can controlle DMX fixture via Art-Net
## Project status
Sofwtare: DONE
Documentation: WORK IN PROGRESS
Documentation: DONE
## Issues
#1 Light control unit crashes if there are too many Art-Net packages
## Author
Sebastian Böttger
......
\acro{acn}[ACN]{Architecture for Control Networks}
\acro{app}[App]{Applikation}
\acro{csa}[CSA]{Connectivity Standards Alliance}
\acro{dmx}[DMX]{Digital Multiplex}
\acro{eeprom}[EEPROM]{Electrically Erasable Programmable Read-Only Memory}
\acro{erp}[ERP]{Enterprise-Resource-Planning}
\acro{esta}[ESTA]{Entertainment Services and Technology Association}
\acro{ifa}[IFA]{Internationale Funkausstellung}
\acro{kiwi}[KIWI]{\textbf{K}IWI~(is~an)~\textbf{I}llumination~\textbf{W}eeny~\textbf{I}nterface}
\acro{lan}[LAN]{Local Area Network}
\acro{led}[LED]{Light Emitting Diode}
\acro{sacn}[sACN]{streaming Architecture for Control Networks}
\acro{udp}[UDP]{User Datagram Protocol}
\acro{usb}[USB]{Universal Serial Bus}
\acro{wlan}[WLAN]{Wireless Local Area Network}
\ No newline at end of file
Diese Ausarbeitung befasst sich mit der Beleuchtung im Heimbereich und ihre Steuerung, die gemeinsam als Heimilluminationssystem bezeichnet werden.
Das Heimilluminationssystem besteht aus einer lokalen Lichtsteuereinheit, welche \acs{dmx}-fähige Lampen über \acs{dmx} ansteuert und einer Lichtsteuersoftware, mit dieser Kommuniziert.\par
Es wird dargestellt, dass eine netzwerkbasierte Kommunikation zwischen der Lichtsteuersoftware und der Lichtsteuereinheit vorteilhaft ist.
Diese ermöglicht eine Ortsunabhängigkeit zwischen den beiden Komponenten und die gleichzeitige Nutzung von mehreren Lichtsteuereinheiten an unterschiedlichen Orten.
Die Ausarbeitung erläutert, warum Art-Net ein geeignetes Netzwerkprotokoll für diesen Anwendungsfall ist.\par
Sie beschreibt, wie das Art-Net-Protokoll in die lokale Lichtsteuereinheit und in die Lichtsteuersoftware integriert werden kann.
Darüber hinaus erläutert die Arbeit die Konzepte hinter der Gestaltung der Benutzeroberfläche und zeigt, wie der Softwarekern der Lichtsteuersoftware mit Hilfe des Model-View-ViewModel-Entwurfsmuster mit der Benutzeroberfläche verbunden ist.\breath
Abschließend werden die aktuellen Herausforderungen durch einen Leistungsengpass der Lichtsteuereinheit beim Verarbeiten von Art-Net-Paketen und fehlerhafte Animationen und Listenaktualisierungen in der Benutzerstelle beschrieben.
\ No newline at end of file
Zum Zeitpunkt der Verfassung dieser Arbeit bestehen zwei Probleme in der aktuellen Konfiguration des Systems.
Zum einen stürzt die lokale Lichtsteuereinheit bei zu hoher Belastung durch Netzwerkpakete ab und zum anderen sind manche Animationen und Listen bei Aktualisierung der Benutzerschnittstelle fehlerhaft.
\subsection{Leistungsengpass der Lichtsteuereinheit}
\label{sec_Leistungsenpass_Lichtsteuereinheit}
Beim Dauerbetrieb der lokalen Lichtsteuereinheit ist aufgefallen, dass bei einer zu hohen Paketlast der Mikrocontroller abstürzt oder falsche Befehle ausführt.
Nach aktuellen Erkenntnissen ist dies auf eine Art von fehlerhaften Speicherzugriffen oder überlaufendem Speicher zurückzuführen.
In durchgeführten Tests, bei denen alle Paket-Typen einzeln versendet wurden, konnte ein fehlerfreies Verhalten nachgewiesen werden.
Alle Befehle werden korrekt erkannt und im erwarteten Zeitraum umgesetzt.
Auch die Befehle und Informationen, die von der lokalen Lichtsteuereinheit versendet werden, konnten mit Hilfe von WireShark auf Korrektheit überprüft und bestätigt werden.
\subsection{Grafikanimationen und Listenaktualisierungen}
\label{sec_Grafikanimationen_Listenaktualisierungen}
\begin{wrapfigure}{R}{0.42\textwidth}
\begin{center}
\vspace{-36pt}
\includegraphics[width=0.4\columnwidth] {./Medien/ThreeStageToggle.png}
\caption{Zustände des ThreeStageSwitchButtons}
\label{fig_ThreeStageSwitchButton}
\vspace{-26pt}
\end{center}
\end{wrapfigure}
Ein weiteres Problem sind Grafikanimationen von JavaFX Elementen und die Aktualisierungen von Listen.
Für die Statusanzeige einer Gruppe wird ein sogenannter ThreeStageSwitchButton verwendet.
Dieser Switch-Button hat drei Zustände: AN, AUS und MITTE.
Abbildung \ref{fig_ThreeStageSwitchButton} zeigt die drei Zustände des Switch-Buttons.
Die Position und Farbe des Switch-Buttons ist mit Hilfe eines Listeners an eine ObjectProperty des Listenelements gebunden.
Ändert sich der Status der Gruppe, so wird eine Positions- und Farbanimation vom alten Zustand zum neuen durchgeführt.
Quellcode \ref{src_ThreeStageSwitchButton} zeigt den Listener im Switch-Button-Objekt. \breath
\begin{lstlisting}[caption={Statelistener im ThreeStageSwitchButton}, label=src_ThreeStageSwitchButton]
buttonState.addListener((obs, oldState, newState) -> {
switch (newState) {
case ON:
translateAnimation.setToX(background.getWidth() - background.getArcHeight());
fillAnimation.setFromValue(oldState == State.OFF ? Color.WHITE : Color.GOLD);
fillAnimation.setToValue(Color.LIGHTGREEN);
break;
case MID:
translateAnimation.setToX((background.getWidth() - background.getArcHeight())/2);
fillAnimation.setFromValue(oldState == State.OFF ? Color.WHITE : Color.LIGHTGREEN);
fillAnimation.setToValue(Color.GOLD);
break;
case OFF:
translateAnimation.setToX(0);
fillAnimation.setFromValue(oldState == State.ON ? Color.LIGHTGREEN : Color.GOLD);
fillAnimation.setToValue(Color.WHITE);
break;
}
animation.play();
});
\end{lstlisting}
Wird der Status der Gruppe jedoch zu schnell geändert, wird die Animation nicht mehr korrekt durchgeführt.
Wird eine Gruppe z.~B. schnell hintereinander auf den Status \glqq TEILAKTIV\grqq \space und dann auf den Status \glqq ACTIV\grqq \space gesetzt, so bleibt der Switch-Button in der mittleren Position stehen.\breath
Auch bei den Aktualisierungen von Listen kommt es häufig zu Ungleichheiten zwischen der View und dem Model.
Fügt man z.~B. eine neue Lichtstimmung einer Gruppe hinzu, so kann es passieren, dass die neu erstellte Lichtstimmung mehrfach in der Gruppe angezeigt wird.
Wechselt man zwischen den Gruppen hin und her, wird beim erneuten Laden der Lichtstimmungen die Anzahl wieder korrekt angezeigt.
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
File added
%% Eigenschaften setzen
\input{einstellungen}
%% Dokument vorbereiten
\input{preambel}
\begin{document}
%% Titelseite automatisch erzeugen
%% Abstract muss noch geschrieben werden
\input{prefix}
\section{Einleitung}
\label{sec_Einleitung}
\input{Einleitung}
\pagebreak
\section{Lichtsteuerung im Heimbereich}
\label{sec_Lichtsteuerung_im_Heimbereich}
\input{Lichtsteuerung_im_Heimbereich}
\pagebreak
\section[Netzwerkkommunikationsprotokoll des Heim\-ill\-uminationssystems]{\texorpdfstring{Netzwerkkommunikationsprotokoll\\ des Heimilluminationssystems}{Netzwerkkommunikationsprotokoll des Heimilluminationssystems}}
\label{sec_Netzwerkkommunikationsprotokoll_des_Heimilluminationssystems}
\input{Netzwerkkommunikationsprotokoll_des_Heimilluminationssystems}
\pagebreak
\section{Aufbau der lokalen Lichtsteuereinheit}
\label{sec_Aufbau_der_lokalen_Lichtsteuereinheit}
\input{Aufbau_der_lokalen_Lichtsteuereinheit}
\pagebreak
\section{Aufbau der Lichtsteuersoftware}
\label{sec_Aufbau_der_Lichtsteuersoftware}
\input{Aufbau_der_Lichtsteuersoftware}
\pagebreak
\section{Aktuelle Herausforderungen}
\label{sec_Aktuelle_Herausforderungen}
\input{Aktuelle_Herausforderungen}
\pagebreak
\section{Fazit und Ausblick}
\label{sec_Fazit_und_Ausblick}
\input{Fazit_und_Ausblick}
\pagebreak
\section*{Anhang}
\addcontentsline{toc}{section}{\protect\numberline{}Anhang}
\renewcommand{\thesubsection}{\Alph{subsection}}
\appendix
\printbibliography[title={Literaturverzeichnis},heading=subbibnumbered]
\subsection{Abbildungsverzeichnis}
\vspace{-48pt}
\listoffigures
\subsection{Tabellenverzeichnis}
\vspace{-48pt}
\listoftables
\subsection{Abkürzungsverzeichnis}
\begin{acronym}\itemsep-20pt
\input{./Abkürzungen.tex}
\end{acronym}
\subsection{Quellcodeverzeichnis}
\vspace{-48pt}
\lstlistoflistings
\clearpage
\thispagestyle{withoutPageNumber}
\input{Eidesstattliche_Erklärung}
\end{document}
\ No newline at end of file
%%%%%%%%%%%%%%%%%%%
\section*{Eidesstattliche Erklärung}
%
Ich versichere, dass ich die Arbeit selbständig verfasst und keinen als die angegebenen Quellen und Hilfsmittel benutzt sowie Zitate kenntlich gemacht habe.
%
\bigskip
Die Regelungen der geltenden Prüfungsordnung zu Versäumnis, Rücktritt, Täuschung und Ordnungsverstoß habe ich zur Kenntnis genommen.
%
\bigskip
Diese Arbeit hat in gleicher oder ähnlicher Form keiner Prüfungsbehörde vorgelegen.
%
\bigskip
%Ich versichere, die von mir vorgelegte Arbeit selbstständig verfasst zu haben.
%Alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten oder nicht veröffentlichten
%Arbeiten anderer entnommen sind,
%habe ich als entnommen kenntlich gemacht.
%Sämtliche Quellen und Hilfsmittel, die ich für die Arbeit benutzt habe, sind angegeben.
%Die Arbeit hat mit gleichem Inhalt bzw. in wesentlichen Teilen noch keiner anderen Prüfungsbehörde vorgelegen.
%
\vspace{3cm}
Heiligenhaus, den
\underline{\hspace*{3cm}}
\hfill
\begin{tabular}[t]{@{}l@{}}\hline
\hspace*{2.5cm}Unterschrift\hspace*{2.5cm}
\end{tabular}
In der Vergangenheit entwickelte der Autor bereits im Rahmen des
Software-Ent\-wick\-lungs\-pro\-jekts und des Moduls \emph{Algorithmen und Datenstrukturen} eine Lichtsteuersoftware und eine Lichtsteuereinheit, die über
\ac{usb} mit der Software verbunden ist. Die Lichtsteuereinheit steuert
angeschlossene Lampen über das Protokoll \ac{dmx}-512 (vgl. \cite{ALDS} und \cite{SWEP}).\par
Die folgende Ausarbeitung stellt dar, wie die Lichtsteuersoftware mit der
Lichtsteuereinheit anstelle über \ac{usb} über ein lokales Netzwerk
kommuniziert.
\subsection{Motivation}
\label{sec_Motivation}
Die \ac{ifa} ist eine Messe, bei der Hersteller ihre neuesten Produkte und
Konzepte, unter anderem in den Bereichen Home-Entertainment, Multimedia und
Haushaltselektronik, vorstellen. Der Begriff \glqq Smart~Home\grqq\space hat
hierbei in den letzten Jahren immer mehr an Präsenz dazugewonnen. Alle Geräte sind
untereinander vernetzt, um Prozesse und Abläufe im Alltag zu optimieren. Ein
Teilbereich dieser Thematik ist die Lichtsteuerung. Die Lampe im Wohnzimmer kann
nun mit der Handy-\ac{app} eingeschaltet werden und leuchtet in der zum Film
passenden Farbe. Nachteilig an vielen Produkten im Bereich der Lichtsteuerung
ist die Bindung an den Hersteller und die singuläre Art der Steuerung. Viele
Produkte verschiedener Hersteller sind ohne weiteres nicht miteinander kompatibel, da die Kommunikationsprotokolle meist proprietär und die Spezifikationen dieser nicht immer öffentlich zugänglich sind.
Zudem ermöglichen viele \acp{app} nur das Steuern einzelner Lampen, so dass diese nicht in Kombination oder Gruppen gesteuert werden können.\breath
Das Software-Entwicklungsprojekt des Autors beschreibt, zusammen mit der
Ausarbeitung im Modul \emph{Algorithmen und Datenstrukturen}, einen Ansatz, mit dem eine Heimbeleuchtung mit Hilfe des Steuerprotokolls \ac{dmx}-512 ermöglicht wird und somit vom Hersteller unabhängig ist. Im Rahmen dieser Arbeiten wurde mit Hilfe des menschzentrierten Gestaltungsprozesses eine Nutzungsweise eines sogenannten Heimilluminationssystems ermittelt.
Auf Grundlage der ermittelten Nutzungsweise wurde eine Lichtsteuersoftware und eine Lichtsteuereinheit entwickelt. Zusammen ermöglichen diese einem Benutzer eine gruppenbasierte (Gruppe von Lampen) Lichtsteuerung von \ac{dmx}-fähigen Endgeräten.\breath
In der bisherigen Systemarchitektur kommuniziert die Lichtsteuersoftware mit der
Lichtsteuereinheit über \ac{usb}. Somit muss sich die Lichtsteuereinheit in der
Nähe des Computers befinden, auf dem die Steuersoftware ausgeführt wird, um eine
Verbindung herzustellen. Das verwendete Kommunikationsprotokoll über \ac{usb}
ist proprietär, wodurch die Nutzung von anderer Hard- oder Software erschwert
wird. Auch ist es in der bisherigen Systemarchitektur nicht möglich, mehrere
Lichtsteuereinheiten mit der Software zu verbinden.\par
Eine netzwerkbasierte Kommunikation mit Hilfe eines bereits etablierten
Protokolls zur Übertragung von \ac{dmx}-Werten ermöglicht eine Lichtsteuerung
mit mehreren, ortsunabhängigen Lichtsteuereinheiten, die sowohl mit Hard- als auch
Softwareprodukten weiterer Hersteller kombiniert werden kann.
\subsection{Aufgabenstellung und Zielsetzung}
\label{sec_Aufgabenstellung_und_Zielsetzung}
In dieser Arbeit soll das zuvor verwendete \ac{usb}-Kommunikationsprotokoll zwischen der Lichtsteuersoftware und der Lichtsteuereinheit durch ein netzwerkbasiertes Kommunikationsprotokoll ersetzt werden. Im Zuge dieser Änderungen werden Anpassungen an der Lichtsteuersoftware und Lichtsteuereinheit durchgeführt.\par
Im Software-Entwicklungsprojekt hat der Autor den Softwarekern (Programmlogik mit einer Kommandozeilen-Eingabe) separat von der Benutzerschnittstelle entwickelt. In dieser Arbeit soll mit dem Model-View-ViewModel-Entwurfsmuster eine Verbindung zwischen dem Softwarekern und der Benutzerschnittstelle erstellt werden.\par
Genau wie im Software-Entwicklungsprojekt ist die Zielgruppe dieses Systems die der Hobby- und Amateurbastler. Benutzer müssen das System um weitere Endgeräte und Systemeigenschaften erweitern können. Somit sollten möglichst offene Standards gewählt werden, die Hobby- und Amateurbastlern leicht nutzen können. \breath
Ziel dieser Arbeit ist eine Lichtsteuersoftware für den Heimbereich, die über ein standardisiertes Netzwerkprotokoll mit der Lichtsteuereinheit kommunizieren kann und eine Benutzerschnittstelle besitzt, die nach den Design- und Interaktionsprinzipien des Curriculum \texttt{CPUX-DS} und der Norm \texttt{DIN EN ISO 9241-110} gestaltet wurde.\par
Unter Beachtung des Umfangs der Arbeit wird angenommen, dass nur ein Typ von Endgerät verwendet wird. Dies setzt den Schwerpunkt der Arbeit auf die Kommunikation zwischen der Lichtsteuersoftware und den Lichtsteuereinheiten, schränkt die Funktionalität der Software aber nicht in großem Maße ein.
\subsection{Vorgehensweise und Aufbau der Arbeit}
\label{sec_Vorgehensweise_und_Aufbau_der_Arbeit}
Einleitend stellt die Arbeit in Kapitel \ref{sec_Lichtsteuerung_im_Heimbereich} die Architektur eines Heimilluminationssystems dar, damit die folgenden Themen korrekt verstanden und eingeordnet werden können. Hierbei werden das Prinzip des Steuerprotokolls \ac{dmx}-512 grundlegend erläutert und die Vorteile der Verwendung einer netzwerkbasierte Steuerung in Bezug auf das aktuelle Heimilluminationssystem begründet.\par
Weiterführend werden in Kapitel \ref{sec_Netzwerkkommunikationsprotokoll_des_Heimilluminationssystems} die Anforderungen an ein Kommunikationsprotokoll zwischen Lichtsteuersoftware und den Lichtsteuereinheiten dargestellt. Diese sind auf Grundlage der im menschzentrierten Gestaltungsprozess erarbeiteten Nutzungsanforderungen entwickelt. Anschließend werden die Protokolle \emph{Art-Net}, \emph{sACN} bzw. \emph{ANSI E1.31-2018} und MA-Net/ ETCNet dargestellt und mit den Anforderungen verglichen. Abgeschlossen wird das Kapitel mit der Evaluation und der damit verbundenen Auswahl eines Protokolls.\par
Kapitel \ref{sec_Aufbau_der_lokalen_Lichtsteuereinheit} dokumentiert die Struktur der lokalen Steuereinheit mit netzwerkbasiertem Kommunikationsprotokoll. Im Kapitel ist sowohl der Aufbau der Hardware dokumentiert, als auch die Darstellung und Erläuterung der verwendeten Datenstrukturen. Ebenfalls wird erläutert, wie das Netzwerkprotokoll in die Lichtsteuereinheit integriert ist.\par
Ergänzend dazu beschreibt Kapitel \ref{sec_Aufbau_der_Lichtsteuersoftware} die Strukturen der Lichtsteuersoftware. Das Kapitel erläutert die Zusammenhänge der Softwarearchitektur und der Datenstrukturen und stellt die verschiedenen Aspekte der Benutzerschnittstelle dar. Auch zeigt das Kapitel, wie die netzwerkbasierte Kommunikation in der Software integriert ist und wie der Softwarekern mit der Benutzerschnittstelle mit Hilfe des Model-View-ViewModel-Entwurfsmusters verbunden ist.\par
Die Herausforderungen, die bei hoher Netzwerkbelastung der Lichtsteuereinheit entstehen und bei Animationen von Grafikelementen sowie bei Aktualisierungen von Listen der Benutzeroberfläche, werden in Kapitel \ref{sec_Aktuelle_Herausforderungen} beschrieben.\par
Abschließend stellt Kapitel \ref{sec_Fazit_und_Ausblick} das Fazit zum Projekt dar und gibt einen Ausblick für weitere Optimierungen in der Zukunft.
\ No newline at end of file
Zusammenfassend lässt sich das Ergebnis dieser Arbeit als erfolgreich bezeichnen.
Im Rahmen der Arbeit wurde ein etabliertes und standardisiertes Netzwerkprotokoll ermittelt, mit dem Lampen in einem Heimilluminationssystem gesteuert werden können.
Das ermittelte Protokoll Art-Net ist in die lokale Lichtsteuereinheit und die Lichtsteuersoftware integriert.
Der Softwarekern der Lichtsteuereinheit ist mit der Benutzeroberfläche mit Hilfe des Model-View-ViewModel-Entwurfsmusters verbunden.\breath
Beim Dauerbetrieb der Lichtsteuereinheit wurden Performance-Engpässe beobachtet, die in Kapitel \ref{sec_Leistungsenpass_Lichtsteuereinheit} beschrieben sind.
Auch sind manche Animationen und Listenaktualisierungen in der Benutzeroberfläche noch fehlerhaft (siehe Kapitel \ref{sec_Grafikanimationen_Listenaktualisierungen}).\breath
Unabhängig von diesen Herausforderungen kann die Lichtsteuersoftware mit einem handelsüblichen Art-Net-Interface betrieben und zum Steuern des Heimilluminationssystems genutzt werden.
Sämtlicher Quellcode zum entwickelten Heimilluminationssystem steht unter der MIT-Lizenz und ist unter dem folgenden Link öffentlich zugänglich:
\begin{center}
\url{https://gitlab.cvh-server.de/sboettger/kiwi-home-light-control-system}
\end{center}
In der Zukunft könnten folgende Aspekte am System noch verbessert werden:
\begin{itemize}
\item Stabile Paketverarbeitung der Lichtsteuereinheit
\item Verbesserte Grafikanimation von JavaFX-Elementen
\item Korrekte Aktualisierung von Listen auf der Benutzeroberfläche
\item Speichern und Laden der aktuellen Konfiguration der Lichtsteuersoftware
\item Verbesserte Usability der Benutzeroberfläche
\begin{itemize}
\item Duplizieren von Gruppen
\item Hinweisfelder für zusätzliche Beschreibungen von Funktionen
\item Erstellen von Lichtszenen auf Grundlage der aktuell eingestellten Beleuchtung
\end{itemize}
\end{itemize}
\ No newline at end of file
Das Thema dieser Arbeit liegt im Kontext der Beleuchtung im Heimbereich.
Damit die Inhalte zur Lichtsteuereinheit und der Lichtsteuersoftware besser eingeordnet und verstanden werden können, wird im folgenden Kapitel \ref{sec_Architektur_des_Heimilluminationssystems} die grundlegende Architektur eines Heimilluminationssystems erläutert.
Bestandteil der Architektur ist das Steuerprotokoll \ac{dmx}-512, welches in Kapitel \ref{sec_DMX-512_als_Steuerprotokoll} detaillierter erklärt wird.
Aufbauend auf den Titel der Arbeit, stellt Kapitel \ref{sec_Vorteile_einer_netzwerkbasierten_Kommunikation} die Vorteile einer netzwerkbasierten Kommunikation innerhalb eines Heimilluminationssystems dar.
\subsection{Architektur des Heimilluminationssystems}
\label{sec_Architektur_des_Heimilluminationssystems}
Beleuchtungssysteme existieren in den verschiedensten Bereichen.
Eine sehr große Sparte ist zum Beispiel die Beleuchtung bei Veranstaltungen, wie Konzerten, Musicals und weiteren Events.
Diese Systeme arbeiten häufig mit sehr vielen verschiedenen Endgeräten, die eine Menge an steuerbaren Eigenschaften (Farbe, Helligkeit, Ausrichtung der Lampe, Fokus, Zoom etc.) besitzen.
Diese Endgeräte werden vielseitig eingesetzt und bei der Steuerung werden verschiedene Typen von Endgeräten miteinander kombiniert, um die passende Beleuchtung für die Veranstaltung zu erhalten.\par
Dem gegenüber stehen Beleuchtungssysteme in Industrien und Einrichtungen, wie zum Beispiel Fabrikhallen oder Schulen.
Diese Systeme steuern zentral die Lichtquellen im Gebäude und besitzen häufig Funktionen, wie zeitgesteuertes Ein- und Ausschalten von Lampen in einem bestimmten Bereich.
Die Endgeräte dieser Systeme sind meist recht simpel und besitzen nur eine Helligkeitsregelung.
Einzelne Lampen werden als Gruppe zusammengeschlossen, um diese gemeinsam zu steuern.
So werden in einer Schule zum Beispiel alle Lampen in der Mensa ab 15 Uhr ausgeschaltet.
Die Lampen in den Klassenräumen ab 18 Uhr und ab 20 Uhr leuchten nur noch einzelne Lampen in den Fluren, um die Notbeleuchtung zu gewährleisten.\breath
Die Beleuchtung im Heimbereich (vor allem im Kontext von \glqq Smart Home\grqq) nutzt Elemente aus beiden genannten Systemen.
Das Software-Entwicklungsprojekt des Autors beschreibt einen Nutzungskontext und eine Nutzungsweise für ein Beleuchtungssystem im Heimbereich, die durch den menschzentrierten Gestaltungsprozess erarbeitet wurden.
In diesem Nutzungskontext wird beschrieben, dass Lampen im Heimbereich häufig mehrere Funktionen besitzen.
Es müssen die Farbe, Helligkeit und eventuell auch Effekte, wie Blinken eingestellt werden können.
Die Steuerung dieser Lampen erfolgt gruppenweise.
Die meisten Gruppen von Lampen entsprechen realen Abgrenzungen, wie Räumen, Etagen oder sonstigen Bereichen.
Die Gruppen werden unabhängig voneinander gesteuert, so dass die Steuerung des Lichts im Wohnzimmer nicht das Licht in der Küche beeinflusst.
Innerhalb einer Gruppe werden Lampen zum einen identisch angesteuert (alle Lampen erhalten die selben Eigenschaftswerte für Farbe, Helligkeit und Effekt) und zum anderen aber auch individuell (alle Lampen erhalten eigene Eigenschaftswerte für Farbe, Helligkeit und Effekt).\par
Der letzte Aspekt des Nutzungskontexts ist die dezentrale Steuerung.
Das Licht muss dort gesteuert werden können, wo der Nutzer sich aufhält.
Somit reicht eine zentrale Steuerkonsole oder Steuersoftware nicht aus.
Der Benutzer benötigt die Möglichkeit, am aktuellen Standort eine zuvor eingestellte Konfiguration der Lampen abzurufen.
Mit Grundlage dieses Nutzungskontexts und den daraus entsprechenden Nutzungserfordernissen entsteht das sogenannte \emph{Heimilluminationssystem}.
Abbildung \ref{fig_Systemarchitektur} zeigt die Systemarchitektur des Heimilluminationssystems.
\begin{figure}[H]
\begin{center}
\includegraphics[width=\columnwidth, clip, trim=0 70pt 0 80pt]{./Medien/Systemübersicht.pdf}
\caption{Systemarchitektur eines Heimilluminationssystems}
\label{fig_Systemarchitektur}
\end{center}
\end{figure}
Das Heimilluminationssystem ist in drei ineinander verschachtelte Bereiche aufgeteilt.
Der innerste Bereich ist die \emph{Applikation}.
Bei der Applikation handelt es sich um eine Lichtsteuersoftware, mit der die Werte für die verschiedenen Lampen eingestellt und gespeichert werden können.
Beim Speichern der Werte gibt es zwei Möglichkeiten:\par
\begin{table}[H]
\begin{tabular}{lp{11,4cm}}
\textbf{Lichtstimmung} & Bei der Lichtstimmung werden allen Lampen einer Gruppe die selben Eigenschaftswerte zugewiesen. Sie kann genutzt werden, um einen Raum in einer einheitlichen Farbe und Helligkeit zu beleuchten.\\
\\
\textbf{Komposition} & Bei einer Komposition werden jeder Lampe einer Gruppe individuelle Eigenschaftswerte zugewiesen. Sie kann genutzt werden, um einen Raum präzise zu beleuchten.
\end{tabular}
\end{table}
Der nächste Bereich ist die \emph{Lichtsteuerung}.
Diese umfasst die Lichtsteuersoftware und die Lichtsteuereinheiten.
Die Lichtsteuersoftware kommuniziert mit den Lichtsteuereinheiten über ein festgelegtes Kommunikationsprotokoll.
Eine Lichtsteuereinheit hat zwei Funktionen.
Zum einem übermittelt sie mit Hilfe eines Steuerprotokolls die von der Lichtsteuersoftware festgelegten Eigenschaftswerte an die Lampen.
Zum anderen stellt sie dem Benutzer Schnellauswahltasten zur Verfügung, mit denen dieser im Vorhinein ausgewählte Lichtstimmungen oder Kompositionen einer Gruppe aktivieren oder deaktivieren kann.
Die Kombination aus Gruppe und Lichtstimmung oder Komposition heißt \emph{Preset}.\par
Der letzte Bereich ist das Heimilluminationssystem selbst.
Es umfasst die gesamte Lichtsteuerung und alle damit verbundenen Endgeräte.
Im Rahmen dieser Ausarbeitung wird nur ein Typ von Endgerät verwendet.
Hierbei beschränkt sich die Funktion des Endgerätes auf die drei Farbwerte rot, grün und blau, den Helligkeitswert und die Blinkrate.
\subsection{\acs{dmx}-512 als Steuerprotokoll}
\label{sec_DMX-512_als_Steuerprotokoll}
Das Steuerprotokoll \ac{dmx}-512 (abgekürzt auch nur \ac{dmx} genannt) wird durch die Norm \texttt{DIN 56930-2} definiert (vgl. \cite{DIN_56930-2}).
Das Protokoll dient \textit{\glqq zur Verbindung von Lichtsteuerungen und Dimmern oder anderer angeschlossener Peripherie bei professioneller Anwendung in Veranstaltungs- und Produktionsstätten, z. B. in Theatern, Mehrzweckhallen, Studios und Diskotheken\grqq}(\cite[S.1 Abschnitt 1]{DIN_56930-2}).
Das Protokoll überträgt bis zu 512 sogenannter Kanäle, die zusammen als \ac{dmx}-Universum oder \ac{dmx}-Frame bezeichnet werden.
Jeder dieser Kanäle enthält einen 8-Bit-Wert.
Den angeschlossenen Endgeräten werden Kanalbereiche zugewiesen, um über diese Kanäle die Funktionen der Endgeräte zu steuern.
Tabelle \ref{tab_Beispiel_DMX_Kanalbelegung} zeigt einen Ausschnitt einer beispielhaften Belegung eines \ac{dmx}-Universums.\breath
Vorteile des \ac{dmx}-Protokolls sind der simple Aufbau, die daraus resultierende Geräte- und Funktionsunabhängigkeit und die große Vielfalt an Produkten, die \ac{dmx} unterstützen.
Ein Kanal im Protokoll hat keine festgelegte Funktion, da die Funktionszuordnung des Kanals erst durch das Endgerät definiert wird.
Somit ist das Protokoll nicht nur auf die Steuerung von Lampen beschränkt, sondern kann auch für weitere Endgeräte genutzt werden.
Die Steuerung eines Rollladens oder einer Markise sind mögliche Anwendungsfälle.
Auch können zwei oder mehr Kanäle zusammen genutzt werden um eine höhere Auflösung als 8-Bit zu erreichen.
Nicht \ac{dmx}-fähige Endgeräte können leicht mit Hilfe eines kleinen Mikrocontrollers auf \ac{dmx} umgerüstet werden.
Dies lädt viele Hobby- und Amateurbastler dazu ein, das Protokoll für kleine Heimprojekte zu verwenden.\breath
Alternative Steuerprotokolle im Bereich von \glqq Smart Home\grqq \space sind zum Beispiel \emph{ZigBee} von der ZigBee Alliance und \emph{Matter} von der \ac{csa}.
Diese Protokolle unterstützen die Ansteuerung von zahlreichen Smart-Home-Geräten.
Allerdings haben diese Protokolle bezogen auf das Ziel dieser Ausarbeitung einige Nachteile gegenüber \ac{dmx}-512.\par
\begin{table}[H]
\begin{center}
\begin{tabular}{
C{1.5cm}
>{\raggedright}m{4cm}
>{\raggedright}m{4cm}
>{\raggedright}m{4cm}
}
\toprule
\rowcolor[gray]{.9}
\textbf{\acs{dmx}-Kanal}&
\textbf{LED-Scheinwerfer}&
\textbf{LED Moving Head}&
\textbf{4-Kanal Dimmer}
\tabularnewline\bottomrule
1&Intensität rot&&
\tabularnewline\midrule
2&Intensität grün&&
\tabularnewline\midrule
3&Intensität blau&&
\tabularnewline\midrule
4&Intensität gesamt&&
\tabularnewline\midrule
5&Blinkrate&&
\tabularnewline\midrule
6&&Intensität rot&
\tabularnewline\midrule
7&&Intensität grün&
\tabularnewline\midrule
8&&Intensität blau&
\tabularnewline\midrule
9&&Intensität gesamt&
\tabularnewline\midrule
10&&Pan&
\tabularnewline\midrule
11&&Tilt&
\tabularnewline\midrule
12&&&Intensität Kanal 1
\tabularnewline\midrule
13&&&Intensität Kanal 2
\tabularnewline\midrule
14&&&Intensität Kanal 3
\tabularnewline\midrule
15&&&Intensität Kanal 4
\tabularnewline\bottomrule
\end{tabular}
\caption{Beispielhafte Kanalbelegung eines \ac{dmx}-Universums}
\label{tab_Beispiel_DMX_Kanalbelegung}
\end{center}
\end{table}
Der Aufbau von Matter und ZigBee ist recht komplex und beinhaltet viele Mechanismen und Methoden, die es für Hobby- und Amateurbastler erschweren das Protokoll selbstständig im Heimnetz umzusetzen.
Beide Protokolle verfügen über Verschlüsselungsprinzipien und Authentifizierungsprozesse, um eine sichere Kommunikation mit vertrauenswürdigen Endgeräten zu erreichen (vgl. \cite[Kapitel~4]{ZigBee} und \cite[Kapitel~2.7]{Matter-Core}).
Allerdings werden für diese Prozesse teilweise Zertifikate benötigt, die nur von den Urhebern des Protokolls (z. B. der \ac{csa}) ausgestellt werden können (vgl. \cite[Kapitel 2.6]{Matter-Core}).
Da das \ac{dmx}-Protokoll als kabelgebundene Kette zwischen den Endgeräten aufgebaut wird, werden hierbei keine weiteren Sicherheitsprozesse benötigt.\par
Häufig geben die Protokolle auch nur den Rahmen der Kommunikation vor, aber definieren nicht genauer in welcher Weise die eigentlichen Nutzdaten übertragen werden.
Diese Struktur ist somit weiterhin herstellerabhängig und muss auch nicht öffentlich zugänglich sein (vgl. \cite[Kapitel~1.1.3]{ZigBee}).
Eine Ausnahme bildet hier Matter.
Matter definiert mit sogenannten Device-Typen und Clustern, welche Daten für welche Art von Endgerät, wie übertragen werden.
Dies ist allerdings gleichermaßen auch wieder ein Nachteil, da somit nur vom Protokoll fest definierte Gerätetypen gesteuert werden können (vgl. \cite[Kapitel 3, S. 29]{Matter-Device}).
Durch die kanalbasierte Steuerung ermöglicht es \ac{dmx}, vollkommen geräte- und funktionsunabhängig zu sein. \breath
Für diese Arbeit wird, wie in Kapitel \ref{sec_Aufgabenstellung_und_Zielsetzung} beschrieben, nur ein Typ von Endgerät verwendet.
Es handelt sich dabei um das Gerät \emph{Stairville xBrick Full-Colour Fluter 16x3W LED}.
Diese Lampe kann mit 5 \ac{dmx}-Kanälen gesteuert werden.
Die Belegung der Kanäle ist Tabelle \ref{tab_DMX_Kanalbelegung_XBrick} zu entnehmen.
\begin{table}[H]
\begin{center}
\begin{tabular}{
C{2.5cm}
>{\raggedright}m{0.5cm}
>{\raggedright}m{5cm}
}
\multicolumn{3}{c}{\textbf{\ac{dmx}-Belegung xBrick LED Fluter}}\\
\toprule
\rowcolor[gray]{.9}
\acs{dmx}-Kanal&\space&
Funktion
\tabularnewline\bottomrule
1&&Intensität rot
\tabularnewline\midrule
2&&Intensität grün
\tabularnewline\midrule
3&&Intensität blau
\tabularnewline\midrule
4&&Intensität gesamt
\tabularnewline\midrule
5&&Blinkrate
\tabularnewline\bottomrule
\end{tabular}
\caption{\ac{dmx}-Kanalbelegung der Stairville xBrick Full-Colour Fluter}
\label{tab_DMX_Kanalbelegung_XBrick}
\end{center}
\end{table}
\subsection{Vorteile einer netzwerkbasierten Kommunikation}
\label{sec_Vorteile_einer_netzwerkbasierten_Kommunikation}
Beim ursprünglichen Heimilluminationssystem wurde die Lichtsteuersoftware mit Hilfe eines proprietären Kommunikationsprotokolls über \ac{usb} mit der Lichtsteuersoftware verbunden.
Durch diese Verbindung entstehen folgende Nachteile:\par
\begin{itemize}
\item Die Lichtsteuereinheit muss sich in der Nähe des Computers befinden
\item Proprietäre Protokolle erschweren die Nutzung unterschiedlicher Hard- und Software
\item Es ist nicht möglich, mehrere Lichtsteuereinheiten mit der Software zu verbinden
\begin{itemize}
\item Dies liegt zum einen am Protokoll, aber auch an der begrenzten Anzahl der USB-Anschlüsse eines Computers
\end{itemize}
\end{itemize}
Mit der Umstellung auf ein netzwerkbasiertes Protokoll für die Kommunikation kann die Entfernung zwischen dem Computer mit der Lichtsteuersoftware und der Lichtsteuereinheit erhöht werden.
Solange die Geräte Teilnehmer des selben \ac{lan} sind, ist deren geografische Entfernung zueinander irrelevant.
Zudem ermöglicht die Topologie eines \acp{lan} das Verbinden von (fast) beliebig vielen Lichtsteuereinheiten.
\footnote{Im privatem Umfeld ist ein /24-Netz üblich, was bis zu 256 Teilnehmer in einem Netz ermöglicht.}
Die Verwendung eines bereits etablierten Standardprotokolls ermöglicht die Nutzung von weiterer Hard- und Software.\breath
Um die Sicherheit in einem \ac{lan} zu gewährleisten, helfen in diesem Fall mehrere Aspekte. Ein Teilnehmer eines \acp{lan} muss entweder mit einem Kabel angeschlossen sein, oder erhält den Zugriff über \ac{wlan}. Im Falle des Kabelanschlusses ist die Sicherheitsmaßname der physikalische Zugang zum Netzwerk.
Ist dieser nicht gegeben, so kann keine Verbindung hergestellt werden.
Im Falle einer WLAN-Verbindung kann durch die Nutzung einer geeigneten Authentifizierungsmethode sichergestellt werden, dass keine unbefugten Geräte ins Netzwerk gelangen.\par
Zusammenfassend lässt sich sagen, dass die Nutzung eines Netzwerks zur Kommunikation zwischen der Lichtsteuersoftware und Lichtsteuereinheit die genanten Nachteile der \ac{usb}-Kommunikation ausgleicht und eine sichere und sinnvolle Lösung ist.
\ No newline at end of file
\ifx\inPreamble\undefined \else
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Art der Arbeit %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ist noch im Entwurfsstadium -> fügt Wasserzeichen ein
\setbool{isEntwurf}{false}
% soll ein Abstract gezeigt werden
\setbool{showAbstract}{true}
% ist es eine normale Hausarbeit oder eine Abschlussarbeit
\setbool{isAbschlussarbeit}{true}
% falls es eine Abschlussarbeit ist, Art der Arbeit auswählen
% Bachelor-Arbeit oder Master-Arbeit
\newcommand{\artDerArbeit}{Bachelor-Arbeit}
% Abschluss, falls es eine Abschlussarbeit ist
% bspw. Bachelor of Engineering oder Master of Science
\newcommand{\abschlussgrad}{Bachelor of Engineering}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Titel der Arbeit %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\titel}{Netzwerkbasierte Lichtsteuerung\\
von DMX-fähigen Endgeräten\\
im Heimbereich}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Angaben über den Autor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Vollständiger Name
\newcommand{\autor}{Sebastian Böttger}
% Matrikelnummer
\setbool{showMatrikelnummer}{true}
\newcommand{\matrikelnummer}{--- --- ---}
% offizielle Bezeichnung des Studiengangs
\newcommand{\studiengang}{Technische Informatik KIA}
% Schwerpunkt des Studiengangs - falls nicht vorhanden, leer lassen
\newcommand{\fachsemester}{8}
\newcommand{\schwerpunkt}{}
% Der Fachbereich, in dem die Arbeit verfasst wird
\newcommand{\fachbereich}{Fachbereich Elektrotechnik und Informatik}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Angaben über die Arbeit %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Abgabedatum
\newcommand{\abgabedatum}{02. April 2024}
\newcommand{\abgabeort}{Heiligenhaus}
% Prüfer
\setbool{hasZweitenPruefer}{true}
\newcommand{\prueferEins}{Prof.~Dr.-Ing.~Christian~Weidauer}
\newcommand{\prueferZwei}{Prof.~Dr.~rer.~nat.~Peter~Gerwinski} % wenn nicht vorhanden, leer lassen
% Arbeit am CVH?
\setbool{isCVH}{true}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Literatur %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% soll für Quellen [Abc123] statt [1] verwendet werden?
\setbool{useAlphaStyle}{true}
% Name der Literatur-Datei
\newcommand{\bibFile}{Literatur.bib}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Optionale Einstellungen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Layout (Optional) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Einseitiger oder doppelseitiger Druck?
\setbool{doppelseitig}{false}
% Anklickbare Links im PDF-Dokument mit Rahmen markieren?
\setbool{linksUmrahmen}{false}
% Seitenumbruch zwischen den Verzeichnissen deaktivieren?
\setbool{verzeichnisseZusammenfassen}{false}
% Verzeichnisse im Inhaltsverzeichnis erwähnen?
\setbool{verzeichnisseImInhaltsverzeichnis}{true}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Seitenränder %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Wie breit ist der Teil, an dem die einzelnen Blätter
% mit einander verklebt/anderweitig verbunden werden?
\setlength{\bindekorrektur}{3.5cm}
% Wie viel Rand außen neben dem Text (einseitig: wie viel Rand rechts neben dem Text)
% Innerer bzw. linker Rand wird daraus automatisch berechnet
\setlength{\randAussen}{2.0cm} % 1.88 - 2.5cm (einseitig), 2.5 - 3.4cm (doppelseitig)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Sprachen (Optional) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Sprache, in der das Dokument geschrieben ist.
% Eine Liste der möglichen Sprachen finden sich in der Dokumentation zum LaTeX-Paket 'babel'
\newcommand{\hauptsprache}{ngerman}
% weitere Sprachen, auf die kurzfristig mit \selectlanguage{language} gewechselt wird.
% (wenn es mehrere sind, werden diese mit Kommata getrennt)
\newcommand{\weitereSprachen}{ngerman, english, french}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Farben (Optional) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Farbe für Design-Elemente verwenden
\setbool{useColor}{true}
% Farbmodell
% z.B. cmyk, rgb oder gray
\newcommand{\colormodel}{rgb}
% Falls das Tool eurer Druckerei Schwarz-Weiß-Seiten trotz \setbool{color}{false}
% _fälschlicherweise_ als Farbseiten erkennt (das kann ziemlich teuer werden!),
% könnt ihr hier das Farbmodell der Vorlage umstellen.
%
% So gab es schon einmal den Fall, dass eine Thesis-Druckerei die S/W-Seiten
% erst korrekt erkannt hat, wenn das (eigentlich für das Drucken ungeeignete)
% RGB-Modell verwendet wurde...
%
% Bilder und eingebundene PDFs werden durch diese Einstellung nicht geändert!
%
% Ein paar Beispiele für sinnvolle Werte:
% {cmyk} - CMYK (Cyan, Magenta, Yellow, Key) ist _das Farbmodell_ für alles was gedruckt wird.
% Jede professionelle Druckerei kann damit umgehen!
% => der Standard bei Drucksachen und daher auch in dieser Vorlage
%
% {rgb} - RGB (Red, Green, Blue) ist ein Farbmodell für Bildschirme etc.
% Im Gegensatz zum Druck mit Pigmenten (=subtraktive Farbmischung) wird
% hier mit Licht gearbeitet (Additive Farbmischung). RGB ist daher nicht
% für den Druck geeignet und wird vor dem Druckvorgang in ein anderes
% Farbmodell (z.B. CMYK) umgewandelt.
% => eigentlich falsch, wird in Einzelfällen aber von Druckereien angefordert
%
% {gray} - Wer möchte, kann auch das Farbmodell "gray" verwenden. Dann werden alle
% Farben direkt in Graustufen umgerechnet.
% In diesem Fall wird zusätzlich \setbool{useColor}{false} empfohlen.
% So wird die Darstellung von Quelltexten an die nun fehlenden Farben angepasst.
%
% Weblinks zum Thema:
% https://de.wikipedia.org/wiki/CMYK-Farbmodell
% https://de.wikipedia.org/wiki/RGB-Farbraum
% https://www.ctan.org/pkg/xcolor
\fi
\ No newline at end of file
This diff is collapsed.
%%% verschiedene Definitionen
\ifbool{useColor}{
\newcommand{\bologopdf}{Medien/BO-Logo_CVH_quer.pdf}
}{
\newcommand{\bologopdf}{Medien/BO-Logo_CVH_quer_grey.pdf}
}
% Titelseite
\input{titelseite}
\clearpage
% Text soll bei doppelseitigen Arbeiten links beginnen
\ifbool{doppelseitig}{
\ifthenelse{\isodd{\thepage}}{
% nichts
}{
\clearpage
}
}{}
% Zu Beginn römisch nummerieren
\pagenumbering{Roman}
\setcounter{page}{2}
%Abstract
\ifbool{showAbstract}{
\section*{Abstract}
\input{Abstract}
\clearpage
}{}
% Inhaltsverzeichnis
\newpage
{
\thispagestyle{plain}
\tableofcontents
\clearpage
}
% Ab hier arabisch nummerieren
\pagenumbering{arabic}
%\setcounter{page}{4}
\ No newline at end of file
\thispagestyle{empty}
\parbox[t]{5cm}{\raggedright\sffamily\fachbereich}
\begin{picture}(0.0,0.0)
\put(8.71,-1.15){
\ifbool{isCVH}{
\includegraphics[scale=0.5]{\bologopdf}
}{
\includegraphics[scale=0.5,clip,trim=216 0 0 0]{\bologopdf}
}
}
\end{picture}
\vfill
\begin{center}
\sffamily
{\Huge{\textbf{\titel}}\par}
\bigskip\bigskip
von\par
\smallskip
\Large\textbf{\autor}\par
\smallskip
\ifbool{showMatrikelnummer}{
\large{Matrikelnummer: \matrikelnummer}\par
}{}
\ifbool{isAbschlussarbeit}{
\bigskip\bigskip\bigskip
\artDerArbeit\ im Studiengang\\
\studiengang\\
zur Erlangung des akademischen Grades\\
\abschlussgrad
}{
\bigskip\bigskip\bigskip
\fachsemester. Fachsemester im Studiengang\\
\studiengang\\
}
\end{center}
\vfill
\vfill
\begin{tabular}{ll}
\sffamily
\textbf{Eingereicht am:} & \abgabeort, den \abgabedatum\\
\\
\ifbool{hasZweitenPruefer}{
\textbf{1.~Prüfer:} & \prueferEins \\
\textbf{2.~Prüfer:} & \prueferZwei
}{
\textbf{Prüfer:} & \prueferEins \\
}
\end{tabular}
\ No newline at end of file
src/lightControlSoftware/ressourcen/images/Kiwi.png

809 KiB

package view.test;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class TestUI extends Application{
protected final PropertyChangeSupport propertySupport = new PropertyChangeSupport(this);
private PropertyChangeListener fixtureListener;
public void addPropertyChangeListener(PropertyChangeListener listener) {
propertySupport.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertySupport.removePropertyChangeListener(listener);
}
public void printText(String text) {
System.out.println(text);
}
public TestUI() {
this.fixtureListener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
if(event.getPropertyName().equals("Test")) {
if((boolean) event.getNewValue()) {
printText("True");
} else {
printText("False");
}
}
}
};
}
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
ObservableList<String> options = FXCollections.observableArrayList(
"Option 1",
"Option 2",
"Option 3"
);
ComboBox<String> comboBox = new ComboBox<>(options);
comboBox.setOnAction(event -> {
propertySupport.firePropertyChange("Test", true, false);
});
Button buttonAnmelden = new Button("Anmelden");
buttonAnmelden.setOnAction(event -> {
this.addPropertyChangeListener(fixtureListener);
});
Button buttonAbmelden = new Button("Abmelden");
buttonAbmelden.setOnAction(event -> {
this.removePropertyChangeListener(fixtureListener);
});
Pane root = new Pane();
HBox hBox = new HBox(comboBox, buttonAnmelden, buttonAbmelden);
root.getChildren().add(hBox);
Scene scene = new Scene(root);
stage.setMinWidth(800);
stage.setMinHeight(625);
stage.setScene(scene);
stage.show();
}
}
#include <iostream>
int main()
{
std::cout << "Hello World" << std::endl;
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment