diff --git a/.gitignore b/.gitignore index ab11b21..12ccc03 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,9 @@ *.blg *.toc *.tdo -latex/auto/ +*/auto/ +*.el *.zip *.pdf -!latex/*.pdf \ No newline at end of file +!expose/*.pdf +!paper/*.pdf \ No newline at end of file diff --git a/paper/images/generic-company-logo.png b/paper/images/generic-company-logo.png new file mode 100644 index 0000000..2aecfbb Binary files /dev/null and b/paper/images/generic-company-logo.png differ diff --git a/paper/main.tex b/paper/main.tex index 7b737c8..cbc04df 100755 --- a/paper/main.tex +++ b/paper/main.tex @@ -30,11 +30,12 @@ numbers=noenddot, \pagestyle{headings} % lebender Kolumnentitel %% Deutsche Anpassungen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\usepackage[ngerman]{babel} +\usepackage[english]{babel} +% \usepackage[ngerman]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[section]{placeins} %bessere Kontrolle über Grafiken -\usepackage{lmodern} %Type1-Schriftart für nicht-englische Texte +% \usepackage{lmodern} %Type1-Schriftart für nicht-englische Texte \usepackage{url} \usepackage{textcomp} \usepackage{paralist} @@ -210,14 +211,14 @@ numbers=noenddot, %% Erzeugung von Verzeichnissen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagenumbering{Roman} -\section*{Autorenreferat} +\section*{Abstract} \label{sec:abstract} -\input{sections/abstract} +% \input{sections/abstract} -%\include{danksagung} +%\include{acknowlegements} -\newpage -\tableofcontents % Inhaltsverzeichnis +% \newpage +\tableofcontents % Table of Contents %\addcontentsline{toc}{section}{\listfigurename} \newpage \listoftodos[TODOs] @@ -243,7 +244,7 @@ numbers=noenddot, \change[inline]{improve glossary \url{https://en.wikibooks.org/wiki/LaTeX/Glossary}} -\input{glossar.tex} +% \input{../glossar.tex} \listoffigures \lstlistoflistings{Quellcodeverzeichnis} @@ -294,30 +295,30 @@ numbers=noenddot, %% \label{sec:motivation} %% \input{sections/motivation} -\newpage -\section{Foundation} +% \newpage +\section{Basics} \label{sec:basics} -\input{sections/basics} +% \input{sections/basics} -\newpage +% \newpage \section{Requirements} \label{sec:requirements} -\input{sections/requirements} +% \input{sections/requirements} %% \newpage %% \section{Werkzeuge und Bibliotheken} %% \input{sections/tools_libs} -\newpage +% \newpage \section{Concept} \label{sec:concept} -\input{sections/concept} +% \input{sections/concept} \section{Analysis, Tests and Decisions} \label{sec:ana-test-decision} -\input{sections/analysis_test_decision} +% \input{sections/analysis_test_decision} -\newpage +% \newpage \section{Conclusion and Future Work} \input{sections/conclusion} @@ -334,12 +335,11 @@ numbers=noenddot, \appendix % suppress page number in toc for parts \addtocontents{toc}{\cftpagenumbersoff{part}} -%\pagenumbering{Alph} - %Seitennummerierung fortlaufend -\addpart{Anhang} +%\pagenumbering{Alph} %Seitennummerierung fortlaufend +\addpart{Appendix} \pagenumbering{Roman} \setcounter{page}{2} % Seitennummerierung fortlaufend -\input{sections/appendix} +% \input{sections/appendix} %\include{selbststaendigkeitserklaerung} diff --git a/paper/references.bib b/paper/references.bib index 41f8a19..be0657d 100644 --- a/paper/references.bib +++ b/paper/references.bib @@ -38,10 +38,18 @@ booktitle = {Proceedings of the 6th {EAI} International Conference on Smart Objects and Technologies for Social Good} } -@misc{Ouanounou2020secureLoRa, - author = {Emmanuel Ouanounou}, - title = {{LoRaWAN \& MQTT: What to Know When Securing Your IoT Network}}, - howpublished = "\url{https://www.cyberark.com/resources/threat-research-blog/lorawan-mqtt-what-to-know-when-securing-your-iot-network}", - year = {2020}, - note = "[Online; letzter Zugriff 18.11.2020]" +@misc{pngkeyGenericCompany, + author = {PNGkey.com}, + title = {{Generic Branding - Generic Company Logo Png}}, + howpublished = "\url{https://www.pngkey.com/png/detail/141-1417312_generic-branding-generic-company-logo-png.png}", + year = {2021}, + note = "[Online; accessed 2021-03-05]" +} + +@misc{pngkeyGenericCompany, + author = {PNGkey.com}, + title = {{Generic Branding - Generic Company Logo Png}}, + howpublished = "\url{https://www.pngkey.com/png/detail/141-1417312_generic-branding-generic-company-logo-png.png}", + year = {2021}, + note = "[Online; accessed 2021-03-05]" } \ No newline at end of file diff --git a/paper/sections/conclusion.tex b/paper/sections/conclusion.tex new file mode 100644 index 0000000..da95d65 --- /dev/null +++ b/paper/sections/conclusion.tex @@ -0,0 +1,42 @@ +% Fazit + Ausblick + +Die vorliegende Arbeit hat zwei moderne Prokolle zur föderierten +Echtzeitkommunikation und dem Internet der Dinge vorgestellt. +LoRaWAN und Matrix wurden grundlegend erklärt um Komponenten, Architektur und +Arbeitsweise zu verstehen. + +% In \fullref{sec:solutions} wurden Ansätze dargelegt, um Kommunikation mit Matrix über \ac{LoRaWAN} zu ermöglichen. + +% \begin{itemize} +% \item{chirpstack ist zu kompliziert für rein lokale simulation!??!?} +% \item{meshsim war nicht im zeitlichen Rahmen zum Laufen zu kriegen} +% \item{blog posts veraltet, software inkompatibel zum aktuellen STand!?} +% \item{nicht mehr unterstützter Anwendungsfall, in bearbeitungszeit nicht möglich sich komplett einzuarbeiten} +% \end{itemize} + +% Resultat: Zeitaufwand komplett verschätzt + +% \improvement[inline]{was hat nach jetziger Sicht auch noch Sinn?} + +% Matrix low-bandwidth mode hat schon gute Vorarbeit geleistet.\improvement{schöner erklären} +% Insbesondere die Kombination CoAP mit CBOR für kleinere Payloads, Flate $+$ Noise für +% effiziente Verschlüsselung und Anpassungen für UDP geben einen guten Ansatz. + +% dieser könnte weiter verfolgt werden + +% hardware projects: https://www.hackster.io/erictsai/lora-tooth-small-ble-sensors-over-wifi-lora-gateways-0aa109 + +% more: https://www.adafruit.com/?q=lora&sort=BestMatch + +% 'officially proposed' 868 mhz lora<->RPi shield from TTN: https://shop.imst.de/wireless-modules/lora-products/8/ic880a-spi-lorawan-concentrator-868-mhz +% \section{Schlussbetrachtung} + +% Aufgrund des zeitlichen Rahmens der vorliegenden Forschungsarbeit im Modul PTI09440 waren praktische Experimente nicht umsetzbar. + +% \begin{itemize} +% \item[]{Idee war praktische Umsetzung} +% \item[]{Meshsim und p2p waren allerdings nur Demo Showcases} +% \item[]{nicht gewartete Software als Neueinsteiger macht sich anstrengend} +% \item[]{der Hardware part bei LoRaWAN müsste wohl auch getestet werden... +% kostet aber fett kohle (anschaffung! instandhaltung weniger problematisch)} +% \end{itemize} \ No newline at end of file diff --git a/paper/sections/introduction.tex b/paper/sections/introduction.tex new file mode 100755 index 0000000..a5c4234 --- /dev/null +++ b/paper/sections/introduction.tex @@ -0,0 +1,37 @@ +% Introduction +\improvement[inline]{Motivation, Arbeitsziele} + + Laut einem Beschluss der \ac{EU} soll angestrebt werden, mit Umwelt-, Verkehrs- + und Gesundheitsdaten möglichst offen umzugehen %\cite{openDataEUabout}: + + \begin{quote} +\glqq just try to be fancy and get a clickbait-like quote in here\grqq + \end{quote} + + In der Ära von \emph{Cloud Computing} und dem \ac{IoT} + wird ein zunehmender Anteil von Daten %\improvement{needs citation} + abseits von Rechenzentren von günstigen, speicherarmen, + energieeffizienten Sensoren erfasst. + Für die Verarbeitung und Auswertung ist es notwendig, die Daten an einen Ort + mit ausreichender Speicherkapazität und Rechenleistung zu + übertragen %(siehe Abb. \ref{fig:schema-dataflow}). + Der zuverlässige Transport ist zentrale Voraussetzung um ein Datawarehouse zu ermöglichen. + + % \begin{figure} + % \centering + % \includegraphics[width=0.85\textwidth]{images/schema-dataflow.png} + % \caption[Schema Übertragungswege]{Schema Übertragungswege} + % \label{fig:schema-dataflow} + % \end{figure} + + +% \newpage +\subsection{Motivation} + + +% \newpage +\subsection{Central Question} + + +% \newpage +\subsection{Content of Paper} \ No newline at end of file diff --git a/paper/sections/solutions.tex b/paper/sections/solutions.tex new file mode 100644 index 0000000..94d603f --- /dev/null +++ b/paper/sections/solutions.tex @@ -0,0 +1,123 @@ +% lösungsansätze +% Mit welchen Methoden soll das Problem bearbeitet werden? + +Im vorherigen Abschnitt wurden die Architektur und Komponenten von LoRaWAN und +Matrix eingeführt. +In diesem Abschnitt werden Lösungsmöglichkeiten für die Kombination der beiden +Prokotolle beschrieben. + +\subsection{Server im low-bandwidth Modus} + +% \begin{figure} +% \centering +% \includegraphics[width=0.8\textwidth]{images/solution-ulb.png} +% \caption[Matrix mit CoAP-Proxy und Chirpstack]{Matrix low-bandwidth mode mit CoAP-Proxy und +% Chirpstack\protect} +% \label{fig:matrix-ulb-chirpstack} +% \end{figure} + +Wie in \ref{subsub:matrix_stateoftech} beschrieben, wurde 2019 ein +\emph{low-bandwidth Modus} für Matrixserver experimentell umgesetzt. +Eine Variante einen Matrixserver Daten über LoRaWAN übertragen zu lassen, könnte +man den Server im low-bandwidth Modus betreiben und den daran angeschlossenen +\ac{CoAP}-Proxy als Application mit dem \emph{Application Server} des Chirpstack +verknüpfen (siehe Abb.\ref{fig:matrix-ulb-chirpstack}). + +Dafür könnten die bestehenden Softwarekomponenten mit entsprechender +Konfiguration wiederverwendet werden. +Die prototypischen Impelemntierungen sowohl im Matrixserver als auch dem +CoAP-Proxy müssten ausgebaut und gewartet werden. + +\subsection{Matrix Bridge als LoRaWAN Applikation} + +% \begin{figure} +% \centering +% \includegraphics[width=0.8\textwidth]{images/solution-bridge.png} +% \caption[Matrix Bridge LoRa mit CoAP-Proxy und Chirpstack]{Matrix Bridge +% LoRa mit CoAP-Proxy und +% Chirpstack\protect} +% \label{fig:matrix-bridge-lora} +% \end{figure} + +Eine Alternative wäre die Entwicklung einer Matrix Bridge für das LoRaWAN +Protokoll. +Diese kann über einen CoAP Proxy mit dem \emph{Application Server} des +Chirpstack verknüpft werden (siehe Abb.\ref{fig:matrix-bridge-lora}). + +Für die Umsetzung könnten Ideen und Implementierungsansätze des +\emph{low-bandwidth Modus} wiederverwendet werden. +Vorteil an dieser Variante ist, dass bestehende Matrixserver keiner Änderung +bedürfen, sondern die Übertragung mittels LoRaWAN von einem registierten Client +übernommen wird. +Eine solche Bridge erfordert weniger Wartungsaufwand. +Außerdem kann durch Beitreten und Verlassen von Räumen explizit diese ausgewählt +werden, welche relevant für die Übertragung über die LoRaWAN Verbindung +stattfinden soll. + + % Mit Hilfe der Kombination von \emph{Meshsim} und \emph{CoAP-Proxy} werden zwei + % Matrix-Applikationsserver installiert und verknüpft. + + % Der Chirpstack wird zum Aufbau einer privaten Experimentierplattform und + % Simulation einer LoRaWAN Umgebung genutzt. + + % Durch möglichst minimale Anpassung an den jeweiligen Softwarekomponenten sollen + % Matrix-Anwendungsdaten über das simulierte LoRaWAN Netzwerk übertragen werden. + % % - p2p matrix https://matrix.org/blog/2020/06/02/introducing-p-2-p-matrix/ + % over https://libp2p.io/ + +Ein weiterer Aspekt ist die Art der Datenübertragung im LoRaWAN Funknetzwerk. + +% \newpage +\subsection{bidirektionale Verbindung mit Geräteklasse C} + +Die Kombination aus LoRaWAN Gateway und Endknoten kann so gewählt werden, dass +einer der im Verbund teilnehmenden Matrixserver die Rolle das Netzwerkservers +übernimmt und mittels Chirpstack an ein LoRaWAN Hardware Gateway angeschlossen. +Alle anderen Matrixserver werden an Endknoten angeschlossen. + +Diese Endknoten müssen zwangsweise als Klasse C Geräte konfiguriert werden, +sodass sie ständig Daten vom Gateway empfangen können. +Die Datenübertragung um LoRaWAN findet somit bidirektional (Gateway->Endknoten +und Endknoten->Gateway) statt. + +% \improvement[inline]{in welchen Fällen ist das günstig?} + +% architecture: https://www.chirpstack.io/project/architecture/ + +% based on https://github.com/brocaar/chirpstack-docker + +% \begin{itemize} +% \item{run the stack twice} +% \item{connect them either with a packet forwarder or the gateway bridge} +% \item{Whats the smallest easiest thing to test this???} +% % \item{connect both application servers with a dendrite/synapse each} +% \end{itemize} + +% node simulation (+server, monitor): +% - simulation https://github.com/devlaam/lora_simulator/tree/master/src/main/scala + +\subsection{unidrektionale Verbindung} + +Eine unidirektionale Funkverbindung mit Endknoten der Klasse A oder B könnte +alternativ umgesetzt werden. +In dieser Variante würde jeder Matrixserver mit einem Chirpstack verknüpft und +jeder Chirpstack erhält ein Gateway und einen Endknoten. +Die Endknoten werden ausschließlich zum Versenden von Daten genutzt. +Die Gateways ausschließlich zum Empfang von Daten. +Das bedeutet beide Geräte übertragen die Daten jeweils unidirektional. + +%\impvement[inline]{welche funktechnischen problem können hier auftreten?} + +In dieser Konstellation können einfachere Endknoten (Klasse A oder B statt +Klasse C) genutzt werden, jedoch benötigt jeder teilnehmende Matrixserver auch +ein LoRaWAN Hardware Gateway. +% Uni- oder Bidirektional?\cite{pop2017does} + +% \subsection{libp2p} + + % kritik: libp2p zwar 2020, aber für unseren anwendungsfall nicht möglich, da + % service discovery/rendevouz server über lorawan in diesem rahmen nicht + % umgesetzt werden kann (und existiert noch nicht) + + % will not work because of service/server discovery impossible without IP based + % relay/rendevouz server diff --git a/paper/title.tex b/paper/title.tex new file mode 100755 index 0000000..417b22e --- /dev/null +++ b/paper/title.tex @@ -0,0 +1,44 @@ +\begin{titlepage} +\pdfbookmark[1]{Title Page}{title} + +\begin{center} + \includegraphics[scale=0.25]{images/generic-company-logo.png} + + \vspace{1cm} + \begin{huge} + Master Thesis + \end{huge} + + \begin{LARGE} + Title of the thesis + \end{LARGE} + + \vspace{1.4cm} + \begin{large} + Surname, First Name + \end{large} + + % \vspace{0.5cm} + + born on \today \\ + \vspace{1cm} + + Studiengang Master Informatik + + \vspace{0.7cm} + Your institution \\ + Your Faculty \\ + Your Research Group + + \vspace{2.7cm} + \begin{tabular}{l l} + \textbf{Adviser} & \textbf{Institution} \\ +% \hline + Prof. Dr. Awesome Teacher & Institution 1\\ + M.Sc. Another Mentor & Institution or Company \\ + \\ + \\ + Deadline: & \today + \end{tabular} +\end{center} +\end{titlepage}