Skip to content
Snippets Groups Projects
Commit c8568d77 authored by Frederic Aust's avatar Frederic Aust
Browse files

Kapitel M2M-Kommunikation fertig gestellt

parent 038f8804
No related branches found
No related tags found
1 merge request!6Added a documentation
......@@ -218,6 +218,39 @@ timestamp = {2021-09-26}
timestamp = {2021-03-24}
}
@Online{mqtt,
author = {MQTT},
title = {{MQTT Homepage}},
url = {https://mqtt.org/},
note = {Datum des Zugriffs: 28.09.2021},
timestamp = {2021-09-28}
}
@Online{mqttexplorer,
author = {Thomas Nordquist},
title = {{MQTT Explorer Homepage}},
url = {https://mqtt-explorer.com/},
note = {Datum des Zugriffs: 29.09.2021},
timestamp = {2021-09-29}
}
@Online{mqttwildcards,
author = {IBM Corporation},
title = {{MQTT Client - Subscription wildcards Documentation}},
url = {https://www.ibm.com/docs/en/ibm-mq/7.5?topic=SSFKSJ_7.5.0/com.ibm.mq.javadoc.doc/WMQMQxrCClasses/wildcard.html},
note = {Datum des Zugriffs: 29.09.2021},
timestamp = {2021-09-29}
}
@Online{pahomqtt,
author = {Roger Light},
title = {{paho-mqtt Documentation}},
url = {https://pypi.org/project/paho-mqtt/}},
note = {Datum des Zugriffs: 29.09.2021},
timestamp = {2021-09-29}
}
@Online{rsapgp,
author = {Jeff Petters},
title = {{What is PGP Encryption and How Does It Work?}},
......
......@@ -129,6 +129,67 @@ Mit dem Berechtigungssystem aus Abschnitt \ref{sec:mods_allowlist} wurde die Mö
\section{M2M-Kommunikation}
\label{sec:mods_m2m}
Unter \ac{M2M}-Kommunikation wird die automatische Kommunikation zwischen zwei Maschinen, meistens Computern, verstanden. Dies kann als 1 zu 1, 1 zu n oder auch n zu n Beziehung realisiert werden. Als Beispiel für eine M2M-Kommunikation wird eine \ac{MQTT} Schnittstelle implementiert.
MQTT ist ein weit verbreitetes Protokoll \cite{mqtt}, welches nicht für Echtzeitkommunikation, sondern für sporadische Statusmeldungen in Netzwerken geschaffen wurde bei denen der Datendurchsatz gering ist oder die Verbindung nicht konstant aufrechterhalten wird. Dadurch können stromsparende IoT-Lösungen realisiert werden, da keine konstante Internetverbindung notwendig ist. \\
Bei MQTT kommunizieren Clients nicht direkt miteinander, sondern senden Ihre Daten an einen Server (Broker) und bekommen Daten vom Broker zugeschickt. Das Senden von Daten an den Broker wird "'publishen"' genannt. Diese werden einem "'topic"' zugeordnet und darauf können sich andere MQTT Clients "'subscriben"'. Beim subscriben bekommen die Clients die Daten vom Broker zugesendet, welche unter dem subscribten topic gepublished wurden. Dadurch kann die Kommunikation bidirektional oder unidirektional realisiert werden.
Im Signalbot wir ein Client mit der Bibliothek \lstinline[breaklines=true]|paho.mqtt.client|\cite{pahomqtt}, Welche unter der EPL V1.0 Lizenz steht, erzeugt. Dieser Client läuft während der gesamten Laufzeit des Signalbots in einem eigenen Task.
\begin{figure}[H]
\begin{lstlisting}
def mqtt_client():
client2 = mqtt.Client()
client2.on_message = on_mqtt_message
client2.username_pw_set(MQTT_USER, MQTT_PWD)
client2.connect(MQTT_IP, MQTT_PORT, MQTT_TIMEOUT)
client2.subscribe("test/temperature")
client2.loop_forever()
\end{lstlisting}
\caption{Signalbot MQTT Client % Hier Quelle
\label{fig:signalbotMqttClient}}
\end{figure}
Für die Initialisierung des Clients wird sowohl ein User, als auch ein Passwort für die Authorisierung benötigt, um den Datenverkehr abzusichern. Über die \lstinline[breaklines=true]|subscribe()| Funktion hönnen beliebige topics subscribed werden. Sobald in einem Daten gepublished werden, wird die Callback-Funktion \lstinline[breaklines=true]|on_mqtt_message| aufgerufen und dort werden die Daten verarbeitet.
\begin{figure}[H]
\begin{center}
\includegraphics[width=1\textwidth]{mqttPubSub.png}
\caption{Eingesetzte MQTT Architektur
\label{fig:mqttpubsub}}
\end{center}
\end{figure}
In der Grafik \ref{fig:mqttpubsub} ist die für dieses Projekt umgesetzte Architektur zu sehen, um den Anwendungsfall zu testen. Dabei wird im Signalbot ein MQTT client erstellt, welche das topic \lstinline[breaklines=true]|test/temperature| subscribed. Wann immer Daten unter diesem topic gepublished werden, wird eine Nachricht mit dem Wert und topic an einen Signalaccount gesendet. Zu Kontrolle der Kommunikation werden mit dem Programm MQTT Explorer \cite{mqttexplorer} sämtliche topics subscribed, welche mit \lstinline[breaklines=true]|test/| beginnen. Dafür wird mit das Wildcard \cite{mqttwildcards} \lstinline[breaklines=true]|\#| verwendet, welches ein Platzhalter für sämtliche topics und sub-topics ist die in diesem Fall mit \lstinline[breaklines=true]|test/| beginnen.
\begin{figure}[H]
\begin{center}
\includegraphics[width=0.6\textwidth]{mqttexplorerpub.png}
\caption{Senden von Testnachrichten via MQTT Explorer
\label{fig:mqttexplorererpub}}
\end{center}
\end{figure}
Wird eine Nachricht als Test über den MQTT Explorer an das im Signalbot abonierte topic gesendet \ref{fig:mqttexplorererpub}, registriert der Signalbot dies innerhalb kürzester Zeit und leitet die Informationen über das Signal-Protokoll weiter an einen hinterlegten Account \ref{fig:mqttsubrecv}.
\begin{figure}[H]
\begin{center}
\includegraphics[width=0.4\textwidth]{mqttsubrecv.png}
\caption{Empfang der MQTT Nachricht via Signal
\label{fig:mqttsubrecv}}
\end{center}
\end{figure}
Dies stellt ein PoC dar und kann wie in \ref{sec:fazit_ausblick} erwähnt einen industriellen Einsatz bekommen. Dabei wäre die Benachrichtigung bei Events oder Grenzwertabweichungen per Signal, für eine schnelle Reaktio,n denkbar. Für dieses Projekt wurde der Status und die Temperatur eines 3D Druckers als Datenquelle \ref{fig:mqttsubrecv3dprinter} verwendet. Dadurch kann eine Benachrichtigung versendet werden, sobald ein Druck beendet wurde.
\begin{figure}[H]
\begin{center}
\includegraphics[width=0.4\textwidth]{mqttsubrecv3dprinter.png}
\caption{Empfang des 3D Drucker Status als MQTT Nachricht via Signal
\label{fig:mqttsubrecv3dprinter}}
\end{center}
\end{figure}
\section{Weitere Funktionalitäten}
......
docs/_img/mqttPubSub.png

2.13 KiB

docs/_img/mqttexplorerpub.png

4.6 KiB

docs/_img/mqttsubrecv.PNG

2.44 KiB

docs/_img/mqttsubrecv3dprinter.png

9.93 KiB

......@@ -2366,8 +2366,12 @@
<bcf:citekey order="20">requests</bcf:citekey>
<bcf:citekey order="21">bs</bcf:citekey>
<bcf:citekey order="22">schedule</bcf:citekey>
<bcf:citekey order="23">fourfours</bcf:citekey>
<bcf:citekey order="24">sympy</bcf:citekey>
<bcf:citekey order="23">mqtt</bcf:citekey>
<bcf:citekey order="24">pahomqtt</bcf:citekey>
<bcf:citekey order="25">mqttexplorer</bcf:citekey>
<bcf:citekey order="26">mqttwildcards</bcf:citekey>
<bcf:citekey order="27">fourfours</bcf:citekey>
<bcf:citekey order="28">sympy</bcf:citekey>
</bcf:section>
<!-- SORTING TEMPLATES -->
<bcf:sortingtemplate name="none">
......
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment