Für die Anzeige der Messdaten standen zwei Optionen zur Auswahl. Die erste Option ist die Anzeige der Daten über ein NodeRed-Dashboard. Die zweite Option ist die Anzeige der Daten über eine Webseite. Da die Kenntnisse der Mitglieder der Projektgruppe mit MQTT und dem NodeRed-Dashboard relativ eingeschränkt sind und einige Gruppenmitglieder bereits Erfahrung in der Entwicklung von Webseiten haben, wurde entschieden die Messdaten auf einer Webseite darzustellen. Zudem ermöglicht dies, den Server ohne WLAN-Verbindung über einen Lokalhost laufen zu lassen. Die Webseite wird auf einem Webserver gehostet, der über dem Mikrocontroller läuft.

Für die Speicherung der Webseite wurde zunächst der Flash-Speicher des Arduinos genutzt. Die Speicherung wurde mit einer Demo-Seite getestet, da die Webseite, auf der die Daten später angezeigt werden, zu diesem Zeitpunkt noch in Entwicklung war.

Damit der Server die Messdaten regelmäßig aktualisiert, wird von der Webseite das Konzept “AJAX” verwendet. AJAX steht für „Asynchronous JavaScript And XML“ und ist ein Konzept das asynchrone Datenübertragungen ermöglicht. Mithilfe von AJAX können einzelne Daten auf der Webseite aktualisiert werden, ohne die gesamte Webseite dafür neu laden zu müssen.

Nachdem die Datenanzeige und -aktualisierung implementiert wurden und die Test-Seite vollständig funktionierte, wurde die Technik der Test-Seite auf die fertiggestellte Webseite zu übertragen. Dabei trat das erste Problem in der Entwicklung des Webservers auf. Es ist möglich, mehrere Webseiten auf einem Arduino mittels Sketch-Speicher zu speichern, allerdings ist der Sketch-Speicher der Hardware nur 4 MB groß und somit zu klein für alle benötigten Dateien.

Für die Lösung des Problems wurden zwei Lösungsmöglichkeiten gefunden. Die erste Option ist die Speicherung der Daten auf einer SD-Karte. Die zweite Option ist die Speicherung der Daten auf dem Flash-Speicher mit dem Dateisystem „SPIFFS“ (SPI Flash Filing System). Für die Verwendung einer SD-Karte wird ein anderer Mikrocontroller benötigt, da sich der Mikrocontroller nicht mit einer SD-Karte verbinden lässt. Zudem ist die Entwicklung der Hardware schon abgeschlossen, weshalb sich gegen die Nutzung einer SD-Karte und für die Nutzung von SPIFFS entschieden wurde.

Mithilfe von SPIFFS können die benötigten Dateien auf den Arduino hochgeladen werden. Dadurch werden die Dateien der Webseite getrennt vom Quellcode des Sensors und des Servers gespeichert. Damit der Server auf die Dateien der Webseite zugreifen kann, musste noch eine Möglichkeit gefunden werden den Dateizugriff zu ermöglichen.

Da sich der gleichzeitige Zugriff auf mehrere Dateien im Arduino-Dateisystem nicht problemlos mit einem synchronen Webserver realisieren lässt, wurde der Webserver zu einem asynchronen Webserver abgeändert. Dadurch können gleichzeitig auf mehrere Dateien im Arduino-Dateisystem zugegriffen, sowie die angezeigten Daten mittels AJAX aktualisiert werden. Zudem können bei Erweiterungen des Projekts, beispielsweise durch die Anzeige von weiteren Daten, weitere Methoden basierend auf den bereits implementierten Methoden hinzugefügt werden, ohne größere Änderungen am Quellcode durchzuführen.

Die Daten werden regelmäßig vom Webserver aktualisiert

Zum Ende der Serverentwicklung ist noch ein weiteres Problem aufgetreten. Um die Verbindungsdaten bei einem Netzwerkwechsel nicht ändern zu müssen, wurde der Wifi-Manager aus dem Winterprojekt verwendet. Dieser gerät allerdings in Konflikt mit einigen Inhalten der Bibliotheken des asynchronen Webservers. Da kein passender Ersatz für den Wifi-Manager gefunden wurde, musste der Wifi-Manager aus dem Quellcode entfernt und die Verbindungsdaten über entsprechende Variablen gespeichert werden. Dadurch müssen die Verbindungsdaten bei einem Wechsel der Netzwerke manuell angepasst werden. Damit bei einem Netzwerkwechsel nicht der Quellcode nach den Variablen durchsucht werden muss, wurden die benötigten Variablen in die Klasse “WiFiConnection.h” ausgelagert.

Categories:

Tags:

No responses yet

Leave a Reply

Your email address will not be published. Required fields are marked *

*