In this course, students learn how to design software and program various subsystems in the Internet of Things. This includes programming microcontrollers, building an IoT cloud architecture and web development.
The programming of microcontrollers is done with Arduino, the IoT cloud architecture is implemented with Microsoft Azure and the creation of a graphical user interface happens in the form of a website. This imparts knowledge of the entire IoT chain as well as the dependencies and communication options, such as REST APIs or MQTT, in this area.
Das System besteht insgesamt aus 3 verschiedenen Docker Containern. Davon zwei proprietäre Anwendungen, eine MongoDB und eine HiveMQ Umgebung.
Diese stellen die grundlegende Umgebung zur Verfügung, um Nachrichten zwischen dem ESP 8266 und dem Mobilen Endgerät zu senden und diese Öffnungs- und Schließungsnachrichten in einer Datenbank zu speichern.
Der dritte Container stellt die Node.JS Umgebung zur Verfügung und ist die letztlich entwickelte Anwendung.
Hierbei wird mithilfe von Express.js ein Webserver erstellt, welcher die statischen Dateien im SRC Ordner zur Verfügung stellt.
Die Client Javascript Datei baut über einfache fetch Methoden eine Verbindung mit dem Webserver auf und liefert mit dem fetch(/init) Befehl direkt den aktuellen Stand des Schlosses zurück.
Der Befehl fetch(/openLock) sendet den Befehl zum Öffnen des Schlosses, sowie der Befehl fetch(/closeLock), um das Schloss zu schließen.
Nachdem die GET Calls des Clients am Backend angekommen sind, werden diese an den HiveMQ MQTT Broker als Event gesendet, um anschließend vom ESP8266, welcher dieses triggerLock Event subscribed hat zu empfangen und darauffolgend den vorhandenen Servo Motor in die dementsprechende Position zu rücken.
Der ESP8266 besitzt einen eigenen WiFi Chip worüber dieser sich über den vereinfachten Access Point mit einem WLan verbinden lässt, daraufhin wird der vorhandene Code ausgeführt.
Wird von Seiten des ESP8266 über das vorhandene PinPad das richtige Passwort eingegeben, so gibt dieser die Öffnung des Schlosses beim verbundenen Servomotor frei und published eine Open- oder auch Close-Message mit dem Event “LockEvent” an den MQTT Broker.
Diese Nachricht wird vom MQTT Client auf dem Node.JS Server durch die korrekte Subscription wahrgenommen und dementsprechend erfolgt auch hier ein richtiger Datenbankeintrag. Beim nächsten Aktualisieren der Website erfolgt eine korrekte Darstellung der letzten Öffnungen und Schließungen.
Interface
Das Interface auf der Website ist schlicht und einfach dargestellt, lediglich zwei Schlösser, eines offen und eines geschlossen, um die jeweilige funktion darzustellen.
Darunter sieht man die zuletzt ausgeführten Aktionen des Schlosses.
Bei der Ausführung des Öffnens und Schließens bemerkt man einen zeitlichen Versatz der Animation des aktiven Zustands, daran bemerkt man die Dauer, welche für den Datenbankeintrag notwendig ist. Dies ist als Feedback für das Funktionieren der Anwendung hilfreich.
Das Interface des Schlosses selbst ist nicht komplizierter aufgebaut.
Zu sehen ist lediglich ein PinPad zur Eingabe und das Schloss selbst.
Wird am PinPad die korrekte Pin eingegeben, so wird das Schloss direkt geöffnet, welches als Feedback ausreichend ist.
Ausblick
Im aktuellen Stand kann man lediglich ein einzelnes Schloss ansteuern, welches verbunden ist.
Desweiteren ist auch das Passwort des Schlosses fest in der Software der ESP Anwendung integriert.
Es wäre durchaus nützlich, eine Registrierung weiter Schlösser zu Implementieren oder auch eine Änderung des Passworts zu implementieren.
Ebenfalls wäre ein dauerhaft mobiles Schloss denkbar, wobei eine Mobilfunkverbindung mit SIM Karte oder ein LoRa Modul notwendig wäre.
Hinterlasse einen Kommentar