\chapter{Software}
Die Software, die verwendet wird, teilt sich in (?) Teile auf:
\begin{itemize}
\item Auslesen der Sensoren, Aufbereiten der Daten und allgemeine Steuerung (main.sh)
\item Steuern des Displays
\item Endauswertung
\item Webinterface
\item sonstiges
\end{itemize}

\section{main.sh}
\label{sec:main.sh}

Das wichtigste Programm ist das Bash-Script \textit{main.sh}. Mithilfe eines Bash-Scriptes können Programme automatisiert gestartet und ihre Ausgaben ausgewertet werden.
Die Datei beginnt mit einem \textit{Shebang} (auch \textit{Magic Line}) genannt. Diese Zeile sagt dem Betriebssystem, womit die Datei ausgeführt werden soll.
\codeline{main.sh}{bash}{1}
Die folgenden Zeilen geben allgemeine Einstellungen an und definieren später gebrauchte Variablen. Man kann den Pfad zum Webserver, auf dem das Webinterface liegt, angeben. In Zeile 6 und 7 werden die Zugangsdaten für Pushbullet aus einer anderen Datei ausgelesen. Die Zeilen 8-10 geben die Pins an, an denen die LEDs angeschlossen sind. In Zeile 11-13 wird die grüne LED eingeschaltet, um zu zeigen, dass das Programm läuft.
\code{main.sh}{bash}{2}{13}
Zeile 14 bis 26 kümmern sich um Parameter, die an das Programm übergeben werden. Mit \enquote{-d} kann die letzte Aufzeichnung überschrieben werden und mit \enquote{-h} wird ein kurzer Info-Text angezeigt.
 
\begin{lstlisting}[language=bash,style=terminal]
lukas@kinderzimmer:~$ main.sh -h
-d csv-Datei leeren 
für weitere Informationen siehe http://winkler.kremszeile.at/ oder https://github.com/Findus23/Umweltdatenmessung

\end{lstlisting}
\code{main.sh}{bash}{14}{26}
Alles, was nun folgt, wird unendlich wiederholt, bis das Programm beendet wird. 
\code{main.sh}{bash}{27}{28}
In den folgenden drei Zeilen wird die aktuelle Uhrzeit und Datum in drei verschiedenen Formaten für drei verschiedene Zwecke.
\begin{table}[h]
	\centering
	\begin{tabulary}{\textwidth}{C|C|C}
		Code & Beispiel & Verwendung \\
		\hline
		\hline
		\%Y/\%m/\%d\ \%H:\%M:\%S & 2014/11/23 16:47:50 & Format zum Abspeichern in \gls{CSV} \\
		\hline
		\%d.\%m\ \%H:\%M:\%S & 23.11 16:47:50 & einfach lesbares Format für Display \\
		\hline
		\%d.\%m.\%y\ \%H:\%M:\%S & 23.11.2014 & einfaches, exaktes Format für Webinterface \\
	\end{tabulary}
	\caption{Datumsformate}
\end{table}


\code{main.sh}{bash}{29}{31}
\codeline{main.sh}{bash}{32}

