Softwareentwicklung

Arduino

Der erste Schritt war die Recherche der Informationen des Bewegungssensors HC-SR501, welchen wir für unser Projekt benutzen werden. Daraus haben sich dann die ersten Libaries und die ersten Ansätze für die Implementierung des Bewegungssensor erschlossen. Der nächste Schritt war somit das Einbauen des Bewegungssensors in den Code und eine Ausgabe auf dem seriellen Monitor der Arduino IDE zu erhalten. Nachdem dies erfolgreich war, stand die Verbind des WLANs an. Dazu wurde eine weitere Internetrecherche betrieben als auch sich ein weiteres Mal mit den Codes der Vorlesungen beschäftigt. Die Ergebnisse der Recherche, waren zum einen eine neue Libarie (ESP822WiFi) und zum anderen eine Implementierung zur Verbindung mit dem WLAN, sprich eine setup_wifi() Methode und zwei Konstanten zum Speichern der SSID und des WLAN-Passwortes.

MQTT

Als nächstes stand die Implementierung zum Daten Austausch an. Hier traten Probleme auf, die den Arbeitsprozess das erste Mal richtig ins Stocken geraten ließen. Der erste Ansatz bestand darin über einen http-Client diesen Daten Austausch zu ermöglichen. Jedoch funktionierte dies eine lange Zeit nicht und jegliche Internetrecherche sowie Lösungsansätze brachten nichts bis festgestellt wurde, dass der Endpoint eine Variable zu wenig nutzte. Dennoch wurde die Idee mit dem http-Client verworfen und sich der aus der Vorlesung bekannten MQTT Verbindung gewidmet. Auch hier wurde sich zuerst mit dem Code aus der Vorlesung befasst und Teile der MQTT Implementierung wurden übernommen und überarbeitet. Zu diesem Zeitpunkt haben Bewegungssensor, WLAN-Verbindung und die Überprüfung der MQTT Verbindung funktioniert. Die MQTT Verbindung selbst allerdings noch nicht. Auch hier wurde wieder sehr viel Zeit in die Problemlösung investiert. Dazu wurde alles noch einmal überprüft als auch mit anderen Beispielen aus dem Internet verglichen und dennoch konnte der Fehler nicht gefunden werden. Mit Hilfe wurde nach einiger Zeit festgestellt, dass beim Herstellen der Verbindung nicht die Variable des MQTT-Server-Ports genutzt wird, sondern die Port-Zahl selbst, welche als erste Ziffer eine 1 war aber eine 2 hätte sein müssen. Nach Beheben dieses Fehlers hat dann auch die Verbindung zu MQTT funktioniert.

Node Red

Bevor Node Red in Betrieb genommen wurde, kam die Idee auf ein Testprogramm zu schreiben, um zwischendrin immer mal wieder die Lampenfunktion testen zu können. Jedoch musste vorher ein wenig Zeit in Node Reds Funktionsweise investiert werden, da diese noch unbekannt war. Schließlich wurde eine Bibliothek für Phillips Hue installiert, somit konnte die Bridge als auch die Hue LED in Node Red eingebunden werden. Auch von hier aus wurde die Verbindung zum MQTT-Server hergestellt. Des Weiteren wurden Blöcke zum Filtern, Publishen und Subscriben eingebaut.

Überarbeitung der Hauptfunktion

Die Lampe geht aktuell bei Bewegung an und aus. Geplant war jedoch, dass die Lampe nach dem Erkennen von Bewegung an geht und dann erst wieder aus, wenn ein weiteres Mal Bewegung erkannt wird. Dies wurde dann mit ein paar generellen Verbesserungen und Anpassungen, im Code implementiert.