Software-Entwicklung

Vor dem eigentlichen Beginn der Software-Enntwicklung musste ein Git-Repository erstellt werden, damit alle an der Entwicklung beteiligt werden konnten. Der Code, das Readme, das Benutzerhandbuch, die 3D-Modelle und die Entwicklung aller genannten Punkte können dort eingesehen werden. Zu finden ist das Repository unter https://github.com/25EE19/semesterproject . Zur Nachvollziehbarkeit der Autoren werden hier die Namen aufgeschlüsselt: Waldemar Kempel (WKStudent), Daniel Merzo (DanielMerzo), Fynn Vincent Mammen (FVMammen) und Benjamin Mikhal Grabbert (25EE19). Den fünften Autor haben wir zu Testzwecken angelegt.

Um eine Alarmanlage zu konstruieren und Software dafür zu entwickeln, unterteilt man vorerst die einzelnen Funktionen in Teilfunktionen. Zuerst werden der Magnetschalter und die Leuchtdiode eingerichtet, dafür wird beiden Bauteilen jeweils ein digitaler Output zugeordnet. Im folgenden Schritt wird eine Variable namens „Chip-ID“ für den RFID-Chip angelegt, diese muss durch eine Umrechnung von einer HEXA-Zahl in einer Dezimalzahl umgeformt werden.

Nachdem alle Bauteile im Code funktionsfähig hinterlegt und die dazugehörigen Bibliotheken eingebunden sind, werden die Parameter vom Nutzer eingestellt. D.h. es wird ein Topic für den Publisher und Subcriber der MQTT-Funktionen angelegt, die SSID und das Passwort des Netzwerkes eingepflegt und eine Verbindung zu einem MQTT-Server, in diesem Fall dem Server der Universität, aufgebaut.

Anschließend werden drei Methoden entwickelt, die die jeweiligen Zustände der Alarmanlage darstellen. In der Methode „Alarm-Methode“ wird der Pieper auf „HIGH“ gestellt, sprich ein Signalton ertönt, wenn die Verbindung des Magnetschalters unterbrochen ist. Wenn dann ein autorisierter RFID-Chip erkannt wird, schalten sich die Leuchtdiode und der Pieper aus und durch die „client.publish-Methode“ wird der Status „1“ via MQTT an Node-Red übermittelt.

In der Methode „activateSystem“ schaltet sich die Alarmanlage ein, wenn der RFID-Chip erkannt wird und der gespeicherte Code bzw. die gespeicherte Dezimalzahl mit der Chip-ID übereinstimmt. Des Weiteren fängt die Leuchtdiode an zu leuchten und der Status „2“ wird als Wert durch die „client.publish-Methode“ an Node-Red übermittelt.

Die Methode „checkSystem“ ermöglicht bei einer eingeschalteten Alarmanlage die Verbindung des Magnetschalters zu überprüfen. Außerdem kann ein möglicher Alarm für 30 Sekunden ausgesetzt werden, wenn der RFID-Chip an die Platine gehalten wird und die Dezimalzahl übereinstimmt.

Damit die Daten bzw. die Zahlenwerte, welche über MQTT an Node-Red gesendet werden, einen Nutzen besitzen, werden diese dort “übersetzt” und mit einem Telegram-Bot an das Endgerät des Nutzers oder der Nutzerin weitergesendet.

Um Node-Red nutzen zu können, wird eine Instanz benötigt, welche entweder von der Universität bereitgestellt wird oder durch die Installation von Node-Red auf dem eigenen Computer generiert wird. In den folgenden Abbildungen werden alle nötigen Konfigurationen in Node-Red und das Erstellen eines Telegram-Bots erklärt:

Abb. 1: Einrichrung des Nodes “mqtt in” / Verbindung vom Mikrocontroller über MQTT mit Node-Red aufbauen.

Im ersten Schritt wird der Knoten „mqtt-in“ verwendet, welcher als violettes Rechteck dargestellt wird. Der grüne Knoten gibt die ankommenden Daten in der Debugleiste (Das Symbol des Käfers, oben rechts in der Leiste) aus (debug-node).

Abb. 2: Einrichrung des Nodes “mqtt in” / Verbindung vom Mikrocontroller zum Server der Universität aufbauen / Topic benennen.

Im zweiten Schritt muss das hinterlegte Topic, welches im Code „Alarmanlage“ gennannt wird, eingegeben werden. Welches Qualitäts- oder Servicelevel (QoS) hinterlegt wird, ist nicht relevant für den weiteren Verlauf.

Nachdem das Topic abonniert ist, müssen weitere Eigenschaften bearbeitet werden, wie z.B. das Anwählen und der Zugriff auf den Server. Dafür klickt man auf das Symbol des Stiftes, welches sich am Ende der Zeile für die Servereinstellungen befindet.

Abb. 3: Einrichrung des Nodes “mqtt in” / Verbindung vom Mikrocontroll zum Server der Universität aufbauen.

Dort müssen die Server-Daten und der Port eingetragen werden, welche im Code hinterlegt sind.

  • Server: mqtt.iot.informatik.uni-oldenburg.de
  • Port: 2883

Abschließend müssen unter dem Reiter “Sicherheit”, das Passwort und die Erkennungsdaten vom Server hinterlegt werden. Diese werden aus sicherheitstechnischen Gründen nicht offenbart bzw. dargestellt.

Abb. 4: Zusätzliche Nodes herunterladen / Palette verwalten.

Im dritten Arbeitsschritt wird ein Telegram-Bot erstellt, dafür müssen vorher die Applikationen / Nodes heruntergeladen werden. Um diese zu erhalten, klickt man auf die drei Striche oben rechts in der Menüleiste und nutzt den Punkt „Palette verwalten“.

Abb. 5: Download der Telegram-Nodes.

In dem Reiter öffnet sich eine Benutzeroberfläche, in der man nach „Installierten Nodes“ schauen kann und unter dem Punkt „Installation“, ist es möglich neue zu installieren. Dort sucht man nach „node-red-contrib-telegrambot“ und installiert dieses Node-Paket.

Abb. 6: Erstellen eines Telegram-Bots.

Sobald die Installation in Node-Red erfolgreich abgeschlossen ist, wird die Telegram-App im weiteren Verlauf genutzt. Dort sucht man nach dem Namen „BotFather“, klickt auf diesen und drückt oben rechts neben der Suchfunktion (Symbol ist eine Lupe) auf „Start“.

Anschließend wählt man den Hyperlink aus, der unterhalb von „About Telegram bots“ steht.

Abb. 7: Erstellen eines Telegram-Bots.

Danach wählt man das Hashtag „/newbot“ aus und erstellt somit einen neuen Bot.

Abb. 8: Die Benennung des Telegram-Bots / Erhalt des Tokens.

Damit der Telegram-Bot wiedergefunden werden kann, muss dieser benannt werden, sprich die Vergabe eines Namens ist notwendig. Wenn dieser Punkt erfüllt ist, erhält der Ersteller ein Token, der an der geschwärzten Position der Nachricht steht.

Das Token muss kopiert werden, um die weiteren Arbeitsschritte und Funktionen erfüllen zu können.

Abb. 9: Einrichten des Telegramchats mit dem Bot.

Alle Telegram-Funktionen lassen sich unter den Nodes wiederfinden. Dort wählt man den „receiver“ aus und richtet den, mit einem Doppelklick ein.

Abb. 10: Receiver einstellen und den jeweiligen Telegram-Bot zuordnen mithilfe des Tokens.

Zum Einrichten werden der Name des Bots und das Token benötigt, dieses wird aus sicherheitstechnischen Gründen verschleiert.

Abb. 11: Einrichten des Nodes “Sender” und die Zuordnung des Telegram-Bots.

Als weitere Funktion, wählt man anschließend neben dem „receiver“ noch den „sender“ aus, dieser wird ebenfalls nach demselben Schema eingerichtet, sprich der Bot-Name muss hinterlegt werden.

Abb. 12: Deploy der Nodes als Vorbereitung für due Ermittlung der “ChatId”.

Der „receiver“ und der „sender“ müssen miteinander verbunden werden und eine Übernahme durch den Punkt „deploy“, der oben rechts in der Menüleiste steht, muss stattfinden. Dann kann die Kommunikation über Node-Red und der Telegram-App erfolgen.

Dieser Schritt muss stattfinden, damit die „ChatId“ ermittelt werden kann und im weiteren Verlauf die versendeten Daten vom Mikrocontroller zugeordnet werden können.

Abb. 13: Testversuch / Kommunikation zwischen Node-Red und dem Telegramchat.

Anschließen wird der Name des Telegram-Bots in der Telegram-App gesucht und man klickt wieder auf den Punkt „Starten“.  Dort versendet man Textnachrichten, um die Kommunikation zu prüfen.

Abb. 14: Vollständige Abbildung des Systems.

Wenn der vorherige Schritt funktioniert, wählt man unter den Nodes, den Oberpunkt „Funktion“ aus und rekonstruiert die Verbindungen der jeweiligen oben abgebildeten Symbole nach.

Abb. 15: Eigenschaften des Nodes “switch” selektieren / Zuordnung der empfangen Daten für den jeweiligen Payload-Kanal.

In der Funktion „switch“ werden zwei Operatoren festgehalten, in dem man auf „hinzufügen“ klickt und beide Operatoren auf dieselbe Eigenschaft „==“ namens „gleich“ stellt. Als Payload wird eine „1“ im ersten Operator eingetragen und im zweiten, eine „2“. Diese beide Zahlenwerte dienen zur Unterscheidung der jeweiligen eingehenden Signale, die vom Mikrocontroller an die Funktion „mqtt in“ verschickt und an „switch“ weitergeleitet werden.

Abb. 16: Payload bestimmen und ChadId zuordnen / Funktion mit den jeweiligen Parametern schreiben.
Abb. 17: Payload bestimmen und ChadId zuordnen / Funktion mit den jeweiligen Parametern schreiben.

In den beiden „function“-Symbolen, wird wie in der obigen Abbildung der Payload definiert und mit der vorher ermittelten „chatId“ eine Zuordnung des Chatkanals deklariert.

Die Zahl „1“ erhält den Inhalt / Content:

  • “Der Alarm wurde aktiviert, jemand versucht bei Ihnen einzubrechen.”

Die Zahl „2“ erhält den Inhalt / Content:

  • “Die Alarmanlage ist scharf geschaltet.”
Abb. 18: Funktionsfähiges System / Datenempfang und Weitergabe über Node-Red an ein Telegramchat.

Abschließend müssen alle Symbole wie in der obigen Abbildung angegeben, verbunden werden. Sobald das System deployed wurde und der Mikrocontroller die ersten Signale übermittelt, wird die Funktion „mqtt in“ den Zahlenwert an „switch“ weiterleiten, dort wird entschieden, welcher Wert, welche Funktion wiederspiegelt und anschließend wird die richtige Nachricht an die Funktion „Telegram sender“ übermittelt, der diese an den Telegram-Bot schickt.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*