From f55d040567845acca6ecd945aa3d4039b6de4474 Mon Sep 17 00:00:00 2001 From: heimbsle69869 Date: Wed, 4 Sep 2019 20:36:22 +0200 Subject: [PATCH] Add Latex files for projectarbeit bericht --- bericht/lennart/images/laptop.png | Bin 0 -> 3795 bytes bericht/lennart/images/muc.png | Bin 0 -> 18056 bytes bericht/lennart/images/pc.png | Bin 0 -> 16020 bytes bericht/lennart/images/pub_sub_arch.tex | 85 ++++++ bericht/lennart/images/pub_sub_flow.tex | 32 +++ bericht/lennart/images/server.png | Bin 0 -> 79484 bytes bericht/lennart/main.tex | 346 ++++++++++++++++++++++++ bericht/lennart/notes | 9 + bericht/lennart/references.bib | 26 ++ 9 files changed, 498 insertions(+) create mode 100644 bericht/lennart/images/laptop.png create mode 100644 bericht/lennart/images/muc.png create mode 100644 bericht/lennart/images/pc.png create mode 100644 bericht/lennart/images/pub_sub_arch.tex create mode 100644 bericht/lennart/images/pub_sub_flow.tex create mode 100644 bericht/lennart/images/server.png create mode 100644 bericht/lennart/main.tex create mode 100644 bericht/lennart/notes create mode 100644 bericht/lennart/references.bib diff --git a/bericht/lennart/images/laptop.png b/bericht/lennart/images/laptop.png new file mode 100644 index 0000000000000000000000000000000000000000..240f74d4234c9cdad5deca27c47869c9e724eda8 GIT binary patch literal 3795 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 literal 0 HcmV?d00001 diff --git a/bericht/lennart/images/muc.png b/bericht/lennart/images/muc.png new file mode 100644 index 0000000000000000000000000000000000000000..173988c88ae84e33d1857ec98cdb83ea035ee11e GIT binary patch literal 18056 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 Y@~02^iTz!g04a3pr0I#mW9R?;KltIi#sB~S literal 0 HcmV?d00001 diff --git a/bericht/lennart/images/pc.png b/bericht/lennart/images/pc.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b5606658280f6524513007e5367da8f23fe503 GIT binary patch literal 16020 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 literal 0 HcmV?d00001 diff --git a/bericht/lennart/images/pub_sub_arch.tex b/bericht/lennart/images/pub_sub_arch.tex new file mode 100644 index 0000000..cf41e83 --- /dev/null +++ b/bericht/lennart/images/pub_sub_arch.tex @@ -0,0 +1,85 @@ +% Tikz File mqtt_pub_sub.tex +\documentclass{standalone} +\usepackage{tikz} +\usepackage{graphicx} + +\begin{document} +\begin{tikzpicture} + %\draw[help lines] (-7,-5) grid (7,5); + + % Broker + \draw (0,0) circle (2); + \node[] at (0,-1.5) (broker) {\textbf{Broker}}; + \node[inner sep=0pt] (broker_pc) at (0,0) + {\includegraphics[width=0.1\textwidth]{images/pc.png}}; + + % Publisher + \pgfmathsetmacro\xl{-6}; + \pgfmathsetmacro\xr{-3}; + \pgfmathsetmacro\w{(\xl+\xr)}; + \pgfmathsetmacro\y{6}; + + % Text + \node[] at (\w/2,-\y/2-0.25) (pubs) {\textbf{MQTT Clients}}; + + % Images + \node[inner sep=0pt] (laptop) at (\w/2,\y/3) + {\includegraphics[width=0.1\textwidth]{images/laptop.png}}; + + \node[inner sep=0pt] (mcu) at (\w/2,\y/3-\y/3) + {\includegraphics[width=0.1\textwidth]{images/muc.png}}; + + \node[inner sep=0pt] (pc) at (\w/2,\y/3-\y/3-\y/3) + {\includegraphics[width=0.1\textwidth]{images/pc.png}}; + + \draw (\xl-0.25, \y/2-0.25) -- (\xl-0.25, -\y/2+0.25); % left + \draw (\xl, \y/2) arc (90:180:0.25); % top left + \draw (\xl, \y/2) -- (\xr, \y/2); % top + \draw (\xr+0.25, \y/2-0.25) arc (0:90:0.25); % top right + \draw (\xr+0.25, \y/2-0.25) -- (\xr+0.25, -\y/2+0.25); % right + \draw (\xr, -\y/2) arc (270:360:0.25); % bottom right + \draw (\xl,-\y/2) -- (\xr,-\y/2); % bottom + \draw (\xl-0.25, -\y/2+0.25) arc (180:270:0.25); % bottom left + + % Subscriber + \pgfmathsetmacro\xl{3} + \pgfmathsetmacro\xr{6} + \pgfmathsetmacro\w{(\xl+\xr)}; + \pgfmathsetmacro\y{6} + + \node[] at (\w/2,-\y/2-0.25) (subs) {\textbf{MQTT Clients}}; + + % Images + \node[inner sep=0pt] (server) at (\w/2,\y/3-1) + {\includegraphics[width=0.1\textwidth]{images/server.png}}; + + \node[inner sep=0pt] (sub_mcu) at (\w/2,\y/3-3) + {\includegraphics[width=0.1\textwidth]{images/muc.png}}; + + \draw (\xl-0.25, \y/2-0.25) -- (\xl-0.25, -\y/2+0.25); % left + \draw (\xl, \y/2) arc (90:180:0.25); % top left + \draw (\xl, \y/2) -- (\xr, \y/2); % top + \draw (\xr+0.25, \y/2-0.25) arc (0:90:0.25); % top right + \draw (\xr+0.25, \y/2-0.25) -- (\xr+0.25, -\y/2+0.25); % right + \draw (\xr, -\y/2) arc (270:360:0.25); % bottom right + \draw (\xl,-\y/2) -- (\xr,-\y/2); % bottom + \draw (\xl-0.25, -\y/2+0.25) arc (180:270:0.25); % bottom left + + % arrows + \draw[ultra thick, ->] (mcu) -- (broker_pc); + \draw[ultra thick, ->] (laptop) -- (broker_pc); + \draw[ultra thick, ->] (pc) -- (broker_pc); + \draw[ultra thick, ->] (sub_mcu) -- (broker_pc); + + \draw[dashed, ultra thick, <-] (server) -- (broker_pc); + \draw[dashed, ultra thick, ->] (broker_pc.10) to (sub_mcu.north west); + + % legend + \draw[dashed, ultra thick, ->] (-4,-4) -- (-1,-4); + \node[] (Sub) at (-2.5,-4.25) {Subscribe}; + + \draw[ultra thick, ->] (1,-4) -- (4,-4); + \node[] (Pub) at (2.5,-4.25) {Publish}; + +\end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/bericht/lennart/images/pub_sub_flow.tex b/bericht/lennart/images/pub_sub_flow.tex new file mode 100644 index 0000000..6ef1a72 --- /dev/null +++ b/bericht/lennart/images/pub_sub_flow.tex @@ -0,0 +1,32 @@ +% Tikz File mqtt_pub_sub.tex +\documentclass{standalone} +\usepackage{tikz} +\usepackage{graphicx} + +\begin{document} +\begin{tikzpicture} + %\draw[help lines] (-7,-5) grid (7,5); + + \pgfmathsetmacro\pub{-4}; + \pgfmathsetmacro\bro{0}; + \pgfmathsetmacro\sub{4}; + \pgfmathsetmacro\y{4}; + + \draw[ultra thick] (\pub,\y/2) -- (\pub,\y/-2); + \draw[ultra thick] (\bro,\y/2) -- (\bro,\y/-2); + \draw[ultra thick] (\sub,\y/2) -- (\sub,\y/-2); + + \draw[ultra thick, ->] (\sub,1) -- (\bro, 1); + \draw[ultra thick, <-] (\sub,-1) -- (\bro, -1); + \draw[ultra thick, ->] (\pub,0) -- (\bro, 0); + + \node at (\pub, \y/2+0.2) {Publisher}; + \node at (\bro, \y/2+0.2) {Broker}; + \node at (\sub, \y/2+0.2) {Subscriber}; + + \node at (\sub/2, 1.2) {Subscribe (topic)}; + \node at (\pub/2, 0.2) {Publish (topic, info)}; + \node at (\sub/2, -0.8) {Publish (topic, info)}; + +\end{tikzpicture} +\end{document} \ No newline at end of file diff --git a/bericht/lennart/images/server.png b/bericht/lennart/images/server.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb400fe3e1081838339518e65cc88ec0be8d339 GIT binary patch literal 79484 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%0DveWGVKsDUw40d3c| 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 Y@KR?pGcoV7|2?gNu89uf-lLfR2StxqQUCw| literal 0 HcmV?d00001 diff --git a/bericht/lennart/main.tex b/bericht/lennart/main.tex new file mode 100644 index 0000000..b6b7e6a --- /dev/null +++ b/bericht/lennart/main.tex @@ -0,0 +1,346 @@ +\documentclass[11pt,a4paper,ngerman]{article} +\usepackage[utf8]{inputenc} + +\title{Projektarbeit} +%%Präsenzerkennung im Rahmen einer custom Smart Home Umgebung +\author{Lennart Heimbs} +\date{August 2019} + +\usepackage[a4paper, right=2cm, top=2cm, left=3cm, bottom=3cm]{geometry} +\usepackage{natbib} +\usepackage{graphicx} +%\usepackage{acronym} +\usepackage{listings} +\usepackage[utf8]{inputenc} +\usepackage{xcolor} +\usepackage{realboxes} +\usepackage{xpatch} +\usepackage{standalone} +\usepackage{tikz} +\usepackage[ngerman]{babel} +\usepackage{float} + + +\definecolor{codegreen}{rgb}{0,0.6,0} +\definecolor{codegray}{rgb}{0.5,0.5,0.5} +\definecolor{codepurple}{rgb}{0.58,0,0.82} +\definecolor{backcolour}{rgb}{0.95,0.95,0.92} + +\lstdefinestyle{listingstyle}{ + backgroundcolor=\color{backcolour}, + commentstyle=\color{codegreen}, + keywordstyle=\color{magenta}, + numberstyle=\tiny\color{codegray}, + stringstyle=\color{codepurple}, + basicstyle=\ttfamily\footnotesize, + breakatwhitespace=false, + breaklines=true, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2 +} + +\lstset{style=listingstyle} +\def\inline{\lstinline[basicstyle=\ttfamily\footnotesize]} + +\makeatletter +\xpretocmd\lstinline{\Colorbox{backcolour}\bgroup\appto\lst@DeInit{\egroup}}{}{} +\makeatother + +\begin{document} + +\maketitle + +\section{Projektthema} +Präsenzerkennung im Labor im Rahmen einer Smart Home Umgebung + +\paragraph{} +In der Projektarbeit wird zunächst eine individuelle Smart Home Umgebung aufgesetzt. Innerhalb dieser Umgebung sollen diverse kommerzielle, sowie eigens Entwickelte Sensoren Nutzbar sein. Die Kontrolle der Sensoren und Aktoren soll über eine Web-Oberfläche hochschulintern möglich sein. + +\paragraph{} +Anhand der Sensoren soll anschließend ein System zur Erkennung und Zählung von anwesenden Personen im Labor entwickelt werden, um einen Überblick über die Auslastung des Raumes zu erhalten. +Dabei wird ein kommerzieller Sensor für die Präsenzerkennung mit dem im Rahmen der Projektarbeit entwickelten Erkennungssystem und einer Kamera verglichen. + +\newpage + +\section{Einleitung} +\paragraph{} +Intelligente Heimüberwachung und -automatisierung gewinnt stetig an Bedeutung in einer zunehmend vernetzten Gesellschaft. +Jüngste Fortschritte in der Mikrocomputertechnik, deren Kosten und Kabellosen Netzwerken machen es immer erschwinglicher für Privatpersonen ihr eigenes Heim mit Sensoren zu Überwachen. +Neben Bewegungssensoren für die Außenbeleuchtung oder Überwachungskameras gibt es heute eine Vielzahl an Möglichkeiten der Heimüberwachung und -automatisierung. \\ +So kann man zum Bielspiel steuerbare Rolläden zusammen mit Temperatur-, Lichtintensitäts- und weiteren Sensoren nutzen um Rolläden automatisch hoch, bzw herunter fahren zu können. + +\paragraph{} +Aus diesen Möglichkeiten der Steuerung und Datenerfassung durch Sensoren ist ein breiter Markt an Systemen entstanden, die Technik für das Smart Home bereitstellen. +Diese Technik gliedert sich allgemein in drei Gerätekategorien: + +\begin{itemize} + \item Sensoren, die zur Erfassung von physikalischen Umweltdaten dienen + \item Aktoren, die zur interaktion mit der Umwelt dienen + \item Eine Steuerzentrale, auch Gateway genannt, welche gesammelte Daten darstellt und anhand dieser Daten Aktoren steuert +\end{itemize} + +Das Zusammenspiel dieser drei Geräte stellt die Intelligenz des Smart Home Systems dar.\\ +Auf dem Markt wird die Anzahl solcher Systeme immer größer, was sich in einer besseren Auswahl für den Konsumenten auswirkt. +Allerdings sind diese Systeme in der Regel geschlossene Systeme, die ein eigenes Ökosystem benutzen und nur mit Geräten eines Herstellers funktionieren. +Beispielhaft für ein solches geschlossenes System ist Homematic von der Firma eQ-3. +Der Hersteller ist einer der Marktführer im Bereich Smart Home in Europa und bietet mit Homematic und dem neuen System Homematic IP zwei umfangreiche Smart Home Systeme an. +Ein Nachteil ist jedoch, dass die Homematic Sensoren und Aktoren nur mit der hauseigenem Smart Home Zentrale (Central Control Unit, CCU) betrieben werden können.\\ +Aufgrund von zum Teil deutlichen Preisunterschieden zwischen verschiedenen Herstellern ist es allerdings wünschenswert diese miteinander kombinieren zu können. +Zusätzlich ist es möglich eigene Sensoren sehr preiswert zu entwickeln, die wiederum nicht mit den kommerziellen Sensoren kommunizieren können. +Aus diesem Grund ist ein Ziel dieser Projektarbeit ein Smart Home System aufzusetzen, welches es möglich macht eine Vielzahl verschiedener Produkte verschiedener Hersteller, sowie selbstgebaute Sensoren zu verwenden. +Um die Funktionalität dieses Systems zu testen wird anschließend ein Homematic IP Sensor zur Präsenzerkennung mit eigens entwickelten Sensoren zur Anwesenheitserkennung von Personen im Labor verglichen. + +\newpage + +\section{Smart Home Umgebung} +\label{blog} +Den Startpunkt des Projekts stellt der Blogeintrag ``Homematic mit node-red über homegear'' \citep{mayer2017smarthomesetup} dar, in dem eine Smart Home Struktur basierend auf einem Raspberry Pi beschrieben wird. +Im Folgendem wird das Aufsetzen der Gateway unter Berücksichtigung des Blogartikels beschrieben. + +\subsection{Hardware} +%Für die Hardware der Gateway bietet sich ein Einplatinencomputer wie der Raspberry Pi an. +%Er ist für den Dauereinsatz geeignet, verfügt über ein vollwertiges Linux-Betriebssystem in der Form von Raspbian Stretch und stellt die nötigen Schnittstellen um Funkantennen für die Sensoren/Aktoren anzuschließen zur Verfügung. + +Für die Hardware der Gateway wird der Einplatinencomputer \textit{Raspberry Pi} aufgrund seiner guten Verfügbarkeit und günstigen Preises gewählt. +Da die Gateway im Dauereinsatz betrieben wird, wird das Betriebssystem \textit{Raspbian Stretch lite} gewählt. + +Das Betriebssystem basiert auf der Linux-Distribution \textit{Debian Stretch}, ist speziell für den Betrieb auf einem Raspberry Pi konfiguriert und verzichtet auf eine Desktop Umgebung, wodurch weniger Speicher und Rechenleistung benötigt wird. +Die Installation des Betriebssystems erfolgt über die bereits auf dem Raspberry Pi vorinstallierte Installationsanwendung \textit{NOOBS}, welche das Betriebssystem herunterlädt und installiert. + +\paragraph{} +\label{funkmodul} +Um mit Sensoren von kommerziellen Herstellern kommunizieren zu können wird zusätzlich ein Funkmodul benötigt. +Üblicherweise werden dabei die ISM-Bänder 433MHz und 868MHz verwendet. +Da Homematic as 868MHz-Band zur Kommunikation nutzt, wird der Bausatz \textit{HM-MOD-RPI-PCB} von dem Hersteller ELV verwendet. +Das Funkmodul wird auf die GPIO-Pins des Raspberry Pis gesteckt und benutzt das UART-Protokoll um mit dem Raspberry Pi zu kommunizieren. +% raspi-config section hier um modul zu aktivieren +Ist das Modul einmal aktiviert, ist es Einsatzfähig. + +\subsection{Netzwerk} +Die Netzwerkkonfiguration des Projekets birgt zwei Herausforderungen: +\begin{enumerate} + \item Erreichbarkeit der Gewonnenen Daten, beziehungsweise Steuerung der Aktoren über das Hochschulintranet + \item Kommunikation der Selbsgebauten Sensoren mit der Gateway über WLAN +\end{enumerate} +Die Erreichbarkeit der Daten wird sichergestellt, indem der Raspberry Pi dauerhaft über LAN an das Hochschulnetz angeschlossen ist. Zudem benötigt er eine bekannte statische IP-Adresse um auf die Daten zugreifen zu können. +Die statische IP-Adresse wird eingestellt, indem die Datei \inline{/etc/dhcpcd.conf} folgender Abschnitt für den LAN-Adapter eingefügt wird: +\label{staticIP} +\begin{lstlisting} +interface eth0 + static ip_address=141.75.33.126/24 + static routers=10.1.1.1 + static domain_name_servers=10.1.1.1 +\end{lstlisting} + +Um die später beschriebenen selbstgebauten Sensoren über WLAN mit dem Gateway kommunizieren zu lassen, wurde zunächst versucht, das Hochschulnetzwerk \textit{Eduroam} zu werenden. +Da dieses jedoch die Sicherheitskonfiguration WPA2 Enterprise nutzt und dieses auf dem benutzten Mikrocontroller \textit{ESP8266} nicht unterstützt wird, muss ein alternatives WLAN-Netzwerk genutzt werden. +Als Lösung wurde die Funktionalität des Raspberry Pis genutzt, als WLAN-Accesspoint zu dienen. +Der Raspberry Pi, der per LAN mit dem Hochschulnetzwerk verbunden ist, spannt somit ein unabhängiges, lokales WLAN-Netzwerk auf, welches die WPA2-PSK Verschlüsselung benutzt, die auch von dem ESP8266 unterstützt wird. + + +\subsubsection{Raspberry Pi als Accesspoint} +Realisiert wird der Accesspiont durch die Softwarepakete \textit{hostapd} und \textit{dnsmasq}, welche durch folgendes Kommando installiert werden: +\begin{lstlisting}[language=bash] +sudo apt install dnsmasq hostapt +\end{lstlisting} +Danach werden beide Pakete für die Konfigurationsphase deaktiviert: +\begin{lstlisting} +sudo systemctl stop dnsmasq +sudo systemctl stop hostapd +\end{lstlisting} + + +\subsubsection{Raspberry Pi als Server} +Da das Netzwerk als Server agieren soll, wird dem Raspberry Pi eine statische IP-Adresse zugewiesen. Dazu wird in der Datei \inline{/etc/dhcpcd.conf} der WLAN-Adapter \inline{wlan0} folgendermaßen konfiguriert: +\begin{lstlisting} +interface wlan0 + static ip_address=192.168.252.1/8 + nohook wpa_supplicant +\end{lstlisting} +Um die Änderungen zu übernehmen wird der dhcp daemon neu gestartet: +\begin{lstlisting} +sudo service dhcpcd restart +\end{lstlisting} + +\subsubsection{DHCP Server Konfigurieren} +Damit die Verbindung des ESP8266 mit dem Raspberry Pi unkompliziert abläuft wird ein DHCP Server eingerichtet. +Dazu wird folgende Konfiguration in die Datei \inline{/etc/dnsmasq.conf} geschrieben: +\begin{lstlisting} +interface=wlan0 +dhcp-range=192.168.252.2,192.168.252.20,255.255.255.0,24h +\end{lstlisting} +Somit werden IP-Adressen für die Microkontroller automatisch vergeben.\\ +Anschließend startet man den DHCP Server: \inline{sudo systemctl reload dnsmasq}. + +\subsubsection{Accesspoint Konfigurieren} +Zur Konfiguraiton des Accesspoints wird die Datei \inline{/etc/hostapd/hostapd.conf} beschrieben.\\ +Wichtig dabei ist eine geeignete SSID und ein geeignetes Passwort für das Netzwerk. +\begin{lstlisting} +interface=wlan0 +driver=nl80211 +ssid=smartroom +hw_mode=g +channel=7 +wmm_enabled=0 +macaddr_acl=0 +auth_algs=1 +ignore_broadcast_ssid=0 +wpa=2 +wpa_passphrase=smarthome +wpa_key_mgmt=WPA-PSK +wpa_pairwise=TKIP +rsn_pairwise=CCMP +\end{lstlisting} +Anschließend muss der Accesspoint Software noch die Konfigurationsdatei in der Datei\\ +\inline{/etc/default/hostapd} bekannt gemacht werden: +\begin{lstlisting} +DAEMON_CONF="/etc/hostapd/hostapd.conf" +\end{lstlisting} + +\subsubsection{Starten des Accesspoints} +Nun muss nur der Accesspoint gestartet werden: +\begin{lstlisting} +sudo systemctl unmask hostapd +sudo systemctl enable hostapd +sudo systemctl start hostapd +\end{lstlisting} + + +\subsection{Software} +Der Aufbau der Smart Home Umgebung auf dem Raspberry Pi gliedert sich in drei Ebenen: +\begin{itemize} + \item Präsentations- und Logik-ebene + \item Kommunikations-ebene + \item Interface-ebene +\end{itemize} +Diese Ebenen werden jeweils über bestimmte Softwarepakete realisiert, die auf dem Raspberry Pi installiert und konfiguriert werden müssen. +Die Präsentations- und Logik-ebene dient dabei zur Programmierung der Logik und Darstellung der Erfassten Daten beziehungsweise zur Steuerung der Aktoren. +Die Kommunikations-ebene ist die Schnittstelle zwischen der Präsentations- und Logik-ebene zur Interface-ebene. +Sie stellt sicher, dass die beiden Ebenen jeweils verlässlich strukturierte Daten erhalten. +Zusätzlich dient sie als Schnittstelle zu den Mikrocontrollern über den WLAN-Accesspoint. +Die Interface-ebene zu guter letzt dient dem anbinden der kommerziellen Sensoren und Aktoren. + +Im Folgenden wird die Funktion, Installation und Konfiguration der einzelnen Ebenen\\ +genauer erläutert und beschrieben. + +\subsection{Präsentations- und Logik-ebene} +Die Logik unserer Smart Home Umgebung wird durch die Software \textit{node-red} realisiert, die Präsentation der Daten und die Steuerung der Aktoren durch das die Node-Red Erweiterung \textit{node-red-dashboard}. + +\subsubsection{node-red} +Node-red ist ein auf der Plattform node.js basierendes und in JavaScript geschriebenes grafisches Entwicklungswerkzeug. +Es ist speziell entwickelt um Hardware, APIs und Dienste mittels eines Baukasten Prinzips miteinander zu verbinden. +Somit ist es ideal für dieses Projekt um die Informationen der Sensoren zu sammeln, auszuwerten und darauf basierend Entscheidungen zu treffen. + +Die Installation von node-red ist dank eines von Seiten des Herstellers bereitgestellten Installationsskriptes sehr einfach. +Das Skript wird mittels folgendem Befehl heruntergeladen, ausgeführt und führt anschließend den Nutzer Schritt für Schritt durch die Installation: +\begin{lstlisting} +bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered) +\end{lstlisting} +Nach erfolgter Installation kann node-red mit den folgenden Kommandos automatisch ausgeführt werden: +\begin{lstlisting} +sudo systemctl enable nodered.service +sudo service nodered start +\end{lstlisting} +Die Entwicklungsumgebung ist ab diesem Zeitpunkt unter der in \ref{staticIP} auf Seite \pageref{staticIP} genannten IP-Adresse und dem Port 1880 erreichbar: \inline{https://141.75.33.126:1880}. + +\subsubsection{node-red-dashboard} +Das node-red-dashboard ist eine Erweiterung für node-red. +Es wird nach erfolgter node-red Installation über den Befehl \inline{npm i node-red-dashboard} installiert. +Das Dashboard ist ab dem Zeitpunkt unter dem Port 1883 erreichbar: \inline{https://141.75.33.126:1883}. +% node-red und das node-red-dashboard werden näher in Kapitel \ref{node-red} auf Seite \pageref{node-red} erklärt. + +\subsection{Netzwerkebene} +Auf Netzwerkebene wurde das Internet der Dinge-Protokoll \emph{MQTT} mit der Software \emph{Mosquitto} gewählt. + +\paragraph{Message Queue Telemetry Transport (MQTT)} ist ein Maschine-zu-Maschine (M2M) Nachrichtenprotokoll, entworfen nach dem Publish/Subscribe-Modell (pub/sub). +Es baut auf einem zugrundeliegendem TCP/IP Netzwerk auf und wurde speziell für M2M und mobile Anwendungen entwickelt. +Das Publish/Subscribe-Modell basiert auf einem \emph{Broker}, der ähnlich wie ein Server die zentrale Anlaufstelle der Netzwerks ist und für die Verteilung der Nachrichten zuständig. +Neben dem Broker gibt es beliebig viele \emph{Subscriber} und \emph{Publisher}. +Ein Subscriber empfängt bestimmte Nachrichten vom Broker, ein Publisher sendet Nachrichten an den Broker. In Abbildung \ref{fig:pub_sub_arch} gibt es drei Geräte die ausschließlich Daten an den Broker senden, einen Server, der nur Daten vom Broker empfängt und einen Mikrocontroller, der sowohl Daten sendet, als auch empfängt. + +\begin{figure}[hb] + \centering + \includestandalone[width=.75\textwidth]{images/pub_sub_arch} + \caption{Die Architektur von MQTT} + \label{fig:pub_sub_arch} +\end{figure} + +Das Senden der Daten an den Broker wird veröffentlichen \emph{(publish)} genannt, möchte ein Client Daten empfangen, muss er diese abonnieren \emph{(subscribe)}. +Jedes Gerät kann Daten unter beliebigen \emph{Topics} veröffentlichen oder abonnieren, dabei ist diese Topic für jede individuelle Nachricht fest. +Die Organisation der Daten übernimmt der Broker, wie in Abbildung \ref{fig:pub_sub_flow} gezeigt. +%Anhand der Topics werden die beim Broker eintreffenden Nachrichten weitergeleitet. +%wird jeder Nachricht vom Publisher eine feste Topic zugeordnet. +%In der Regel publishen Sensoren ihre aufgenommenen Daten und Aktoren Statusmeldungen. +%Ebenso kann jedes Gerät beliebig viele Topics abonnieren, was subscriben genannt wird. +% +\begin{figure}[ht] + \centering + \includestandalone[width=.75\textwidth]{images/pub_sub_flow} + \caption{Der Publish/Subscribe Prozess von MQTT} + \label{fig:pub_sub_flow} +\end{figure} + +Ein Client sendet eine Abonnement-Nachricht an den Broker. +Der Broker registriert diese und leitet von nun an jede Nachricht mit der entsprechenden Topic an den Client mit dem Abonnement weiter. +Abonniert zum Beispiel der Server aus Abbildung \ref{fig:pub_sub_arch} die Topic \inline{/ohm/bb/104/sensor}, registriert dies der Broker. +Veröffentlicht nun ein Sensor Daten unter der selben Topic, gehen diese zunächst beim Broker ein, der die Daten dann sofort an alle Abonnenten dieser Topic weiterleitet. + +\paragraph{Mosquitto} eine Open-Source Implementation des MQTT-Protokolls und wird in diesem Projekt aufgrund der einfachen Verfügbarkeit als Debian-Paket benutzt. +Es ist ein Projekt der Eclipse Foundation und da die Software in C geschrieben ist, sehr weitreichend erhältlich. +Installiert wird das Paket auf dem Raspberry Pi mit dem Befehl: +\begin{lstlisting} +sudo apt install mosquitto +\end{lstlisting} +Dadurch werden die drei Teile des Mosquitto-Projektes installiert: Der \inline{mosquitto} Server, die \inline{mosquitto_sub} und \inline{mosquitto_pub} Anwendungen und ein MQTT-C/C++-Bibliothek-Wrapper, der hier aber nicht benutzt wird. +Um den Mosquitto Server zu starten werden die folgenden Kommandos benötigt: +\begin{lstlisting} +sudo systemctl enable mosquitto +sudo systemctl start mosquitto +\end{lstlisting} +Von nun an ist der Mosquitto Broker über die IP-Adresse des Raspberry Pis und mit dem Port 1883 erreichbar. +Um die Funktionalität zu testen können die Anwendungen \inline{mosquitto_sub} und \inline{mosquitto_pub} genutzt werden: +Mit Hilfe des Befehls +\begin{lstlisting} +mosquitto_sub -t 'test/topic' -v +\end{lstlisting} +kann man testweise eine Topic abonnieren und mit dem Befehl +\begin{lstlisting} +mosquitto_pub -t 'test/topic' -m 'hello world' +\end{lstlisting} +eine Testnachricht abschicken. Kommt die Nachricht in dem \inline{mosquitto_sub}-Fenster an, ist der MQTT-Broker einsatzbereit. + +\subsection{Interface-ebene} +Die letzte Ebene dient der Kommunikation mit den kommerziellen Sensoren. +Da jeder Hersteller von Smart Home Geräten sein eigenes Protokoll benutzt um mit seinen Geräten zu kommunizieren, wird hier Software, die in der Lage ist verschiedene Protokolle zu sprechen, mit Hardware - also den Funk-Sendern und -Empfängern gekoppelt. +%Dazu wird das in \ref{funkmodul} auf Seite \pageref{funkmodul} erwähnte Funkmodul benutzt. +%Es bedient die entsprechenden Funk Kanäle der Sensoren und Aktoren, benötigt aber noch Software um die Protokolle der verschiedenen Hersteller verstehen zu können. + +\subsubsection{Homegear} +Die in dem Blogartikel von Patrik Mayer in Kapitel \ref{blog} auf Seite \pageref{blog} genutzte Software um mit verschiedenen Aktoren und Sensoren zu kommunizieren ist \emph{homegear}. +Homegear ist ein Open-Source Programm um Internet der Dinge Geräte zentral zu kontrollieren und managen. +Dazu spricht es eine Vielzahl an Protokollen diverser Hersteller wie Homematic, Intertechno, Philips Hue und Sonos, und unterstützt auch das MQTT-Protokoll. +Homegear ist dabei in der Lage sowohl als komplette Smart Home Umgebung inklusive Interface zu dienen als auch als bloße Schnittstelle die die Verbindung mit den kommerziellen Geräten übernimmt und die Daten über HTTP, MQTT oder anderwertig weiterleitet. +Um die Flexibilität der Umgebung zu erhöhen wird homegear hier nur als Schnittstelle genutzt. + +Homegear selbst besteht aus dem Homegear-Grundmodul, welches die grundlegende Funktionalität bereitstellt und weiteren spezifischen Modulen, die die verschiedenen Hersteller/Protokolle bedienen. +Installiert auf dem Raspberry Pi wird das Grundmodul über das Offizielle Repository: +\begin{lstlisting} +apt install apt-transport-https +wget https://apt.homegear.eu/Release.key && apt-key add Release.key && rm Release.key +echo 'deb https://apt.homegear.eu/Raspbian/ stretch/' >> /etc/apt/sources.list.d/homegear.list +apt update +apt install homegear homegear-nodes-core homegear-management +\end{lstlisting} + + + + +\bibliographystyle{plain} +\bibliography{references} +\end{document} diff --git a/bericht/lennart/notes b/bericht/lennart/notes new file mode 100644 index 0000000..caa524b --- /dev/null +++ b/bericht/lennart/notes @@ -0,0 +1,9 @@ +# aussicht +-scalability: die ebenen auf verschiedenen geräten realisieren + (eg Interface sendet über netzwerk nachrichten an broker, der nachrichten an nodered weiterleitet etc) + +# auswertung +-schaubild des nachrchten flows + (pivccu->broker,mcu->broker,broker->node-red, node-red->broker->pivccu) + +-PORTS richtig stellen (mosquitto/node-red/node-red-dashboard) \ No newline at end of file diff --git a/bericht/lennart/references.bib b/bericht/lennart/references.bib new file mode 100644 index 0000000..8d09113 --- /dev/null +++ b/bericht/lennart/references.bib @@ -0,0 +1,26 @@ +@book{adams1995hitchhiker, + title={The Hitchhiker's Guide to the Galaxy}, + author={Adams, D.}, + isbn={9781417642595}, + url={http://books.google.com/books?id=W-xMPgAACAAJ}, + year={1995}, + publisher={San Val} +} + +@misc {bendel2019smarthome, + author = "Prof. Dr. Oliver Bendel", + title = "Smart Home", + year = "2019", + month = "Januar", + howpublished = {https://wirtschaftslexikon.gabler.de/definition/smart-home-54137/version-368820}, + note = "[Online; aufgerufen 07-08-2019]" +} + +@misc {mayer2017smarthomesetup, + author = "Patrik Mayer", + title = "Homematic mit node-red über homegear", + year = "2017", + month = "Juli", + howpublished = {https://allgeek.de/2017/07/09/homematic-mit-node-red-ueber-homegear/}, + note = "[Online; aufgerufen 27-08-2019]" +} \ No newline at end of file