\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}