Lösung: Krisenmanagement mit dem Internet-of-Things bewältigen
Kriesenmanagement - Version 1
Wichtig ist, dass die Einrückungen unbedingt genau so eingehalten werden!
Um benötigte Ressourcen laden zu können und um später eine WiFi Verbindung herzustellen oder mit dem M5Stack zu kommunizieren zu können, wird folgender Code benötigt.
Sowie die Zeile 11 um den Hintergrund des M5Stacks auf schwarz setzten zu können.

Erstellt zwei Labels, um die IP- Adresse auf dem M5Stack Bildschirm auszugeben.

Um den Pb.-Hub verwenden zu können, muss der M5Stack mit ihm kommunizieren können. Dazu wird die im folgenden Abbild dargestellte Zeile 17 verwendet.
Damit auch der ENV Sensor verwendet werden kann, muss dieser ebenfalls initialisiert werden, dazu werden die Codezeilen 19-22 benötigt.

Wie im vorherigen Schritt müssen auch der PIR Sensor und die beiden Laser Komponenten im Programm initialisiert werden.
Dazu werden für den PIR Sensor die Zeilen 24 und 25 und für den TX und RX Laser die Zeilen 27-34 benötigt.

Mittels dieser Methode ist es möglich, durch das Drücken des A Knopfes diese Informationen weiterzuleiten.
Mittels dieser Methode ist es möglich, durch das Drücken des B Knopfes diese Informationen weiterzuleiten.

Mittels dieser Methode ist es möglich, durch das Drücken des C Knopfes diese Informationen weiterzuleiten.

In den folgenden Schritten wird näher auf die webServer() Methode eingegangen.
Die Methode, um den Webserver zu erstellen, definiert zusätzlich auf die Ausgabe in einem JSON Format.
Als nächstes wird eine While-Schleife erzeugt, welche ausgeführt wird, solange nicht zuvor ein Fehler geworfen wurde.
Diese wird hier zunächst als ganze abgebildet und danach in den nächsten Schritten noch näher erläutert. Auch jetzt ist es sehr wichtig, auf die richtigen Einrückungen zu achten, da das Programm ansonsten nicht funktioniert.
Wie zuvor erwähnt ist ein While true notwendig, da sich dieser Code immer wieder wiederholt, bis ein Fehler geworfen wird.
Danach folgt ein “try”, welches dazu da ist, einen fehleranfälligen Programmcode auszuprobieren, und später weiter unten bei Bedarf einen geworfenen Fehler wieder einzufangen:
(Aufgefangen wird ein Fehler davon gegebenenfalls in Zeile 133, weshalb sich das try und das catch auf der selben Einrückungsebene befinden müssen )
Als nächstes wird im try überprüft, ob die Laserbarriere durchbrochen wurde. Ist i >0, so wurde sie durchbrochen, andernfalls nicht.
Um den Benutzer eine Meldung darüber liefern zu können, wird das Label laserRead mit einer Nachricht “wurde durchbrochen” bzw. “wurde nicht durchbrochen” ausgestattet.
Als nächstes werden die Env-Variablen initialisiert mit den vom Env Sensor gemessenen Werte für Temperatur, Luftdruck und Luftfeuchtigkeit.
Danach ist es wichtig zu überprüfen, ob überhaupt eine Verbindung mit dem Wlan gelungen ist, da ansonsten keine Kommunikation zwischen den Geräten stattfinden kann.
Sollte keine Verbindung stattgefunden haben, so wird versucht, sich erneut mit dem Wlan zu connecten. Andernfalls geht es mit dem Programmcode beim else weiter.
Im Falle einer aufrechten Wlan-Verbindung, ist eine Server-Verbindung aufzubauen:
Nun wird überprüft, ob die Serververbindung funktioniert hat.
Ist dies der Fall, so wird der Code fortgeführt, indem überprüft wird, ob die Daten von den Units auf den Link ‘/api/v1.0/level’ übermittelt wurden:
Wurden die Daten übermittelt, so wird der Text für die Applikation vorgegeben und mittels json-Labels erstellt. Darunter fallen beispielsweise der gepresste Button, die Temperatur, der Luftdruck und die Luftfeuchtigkeit:
Danach wird überprüft, ob sich etwas im Raum bewegt.
Ist dies der Fall, so wird der Text auf der Applikation upgedatet.
Wenn nicht, so bleibt der Text bei “herrscht Ruhe”:
Darunter wird der Laser und dessen Status als json-Label ausgegeben und anschließend der Applikation mittels Server übermittelt:
Sollte die Serververbindung aus Step 7.6 fehlgeschlagen sein, so muss ein Fehlercode übermittelt werden, damit die Applikation und der Benutzer weiß, dass etwas schief gegangen ist.
Das else befindet sich auf der selben Einrückungsebene wie das if request aus Step 7.6!
In Step 7.1 wurde erwähnt, dass die Wahrscheinlichkeit besteht, einen Fehler zu bekommen, weshalb es wichtig ist, den Code mittels “try – catch” zu umrunden.
Sollte nun ein Fehler geworfen werden, ist auch noch der “catch-Teil” des “try”-Blocks nötig.
Auf der selben Einrückungsebene, wie das “try” aus dem Schritt 7.1, soll nun ein “catch” geschrieben werden, welches den Fehler auffängt:
In diesem Fall wird nur “ERR” für “Error” ausgegeben.
Als Abschluss muss noch die Verbindung geschlossen werden:
Nun (außerhalb der While Schleife) wird noch die oben erstellte Funktion “webServer” aufgerufen, wonach das Programm fertig ist:
Video
Kriesenmanagement - Version 2
Wichtig ist, dass die Einrückungen unbedingt genau so eingehalten werden!
Um benötigte Ressourcen laden zu können und um später eine WiFi Verbindung herzustellen oder mit dem M5Stack zu kommunizieren zu können, wird folgender Code benötigt.
Sowie die Zeile 11 um den Hintergrund des M5Stacks auf schwarz setzten zu können.

Erstellt zwei Labels, um die IP- Adresse auf dem M5Stack Bildschirm auszugeben.

Um den Pb.-Hub verwenden zu können, muss der M5Stack mit ihm kommunizieren können. Dazu wird die im folgenden Abbild dargestellte Zeile 17 verwendet.
Damit auch der ENV Sensor verwendet werden kann, muss dieser ebenfalls initialisiert werden, dazu werden die Codezeilen 19-22 benötigt.

Wie im vorherigen Schritt müssen auch der PIR Sensor und die Licht Komponente im Programm initialisiert werden.
Dazu werden für den PIR Sensor die Zeilen 24 und 25 und für das Licht die Zeilen 27 und 28 benötigt.
Mittels dieser Methode ist es möglich, durch das Drücken des A Knopfes diese Informationen weiterzuleiten.
Mittels dieser Methode ist es möglich, durch das Drücken des B Knopfes diese Informationen weiterzuleiten.

Mittels dieser Methode ist es möglich, durch das Drücken des C Knopfes diese Informationen weiterzuleiten.

In den folgenden Schritten wird näher auf die webServer() Methode eingegangen.
Die Methode, um den Webserver zu erstellen, definiert zusätzlich auf die Ausgabe in einem JSON Format.
Als nächstes wird eine While-Schleife erzeugt, welche ausgeführt wird, solange nicht zuvor ein Fehler geworfen wurde.
Diese wird hier zunächst als ganze abgebildet und danach in den nächsten Schritten noch näher erläutert. Auch jetzt ist es sehr wichtig, auf die richtigen Einrückungen zu achten, da das Programm ansonsten nicht funktioniert.
Wie zuvor erwähnt ist ein While true notwendig, da sich dieser Code immer wieder wiederholt, bis ein Fehler geworfen wird.
Danach folgt ein “try”, welches dazu da ist, einen fehleranfälligen Programmcode auszuprobieren, und später weiter unten bei Bedarf einen geworfenen Fehler wieder einzufangen:
(Aufgefangen wird ein Fehler davon gegebenenfalls in Zeile 133, weshalb sich das try und das catch auf der selben Einrückungsebene befinden müssen )
Als nächstes werden die Env-Variablen initialisiert mit den vom Env Sensor gemessenen Werte für Temperatur, Luftdruck und Luftfeuchtigkeit.
Danach ist es wichtig zu überprüfen, ob überhaupt eine Verbindung mit dem Wlan gelungen ist, da ansonsten keine Kommunikation zwischen den Geräten stattfinden kann.
Sollte keine Verbindung stattgefunden haben, so wird versucht, sich erneut mit dem Wlan zu connecten. Andernfalls geht es mit dem Programmcode beim else weiter.
Im Falle einer aufrechten Wlan-Verbindung, ist eine Server-Verbindung aufzubauen:
Nun wird überprüft, ob die Serververbindung funktioniert hat.
Ist dies der Fall, so wird der Code fortgeführt, indem überprüft wird, ob die Daten von den Units auf den Link ‘/api/v1.0/level’ übermittelt wurden:
Wurden die Daten übermittelt, so wird der Text für die Applikation vorgegeben und mittels json-Labels erstellt. Darunter fallen beispielsweise der gepresste Button, die Temperatur, der Luftdruck und die Luftfeuchtigkeit:
Nun wird überprüft, ob das Licht an- oder ausgeschaltet ist.
Danach wird überprüft, ob sich etwas im Raum bewegt.
Ist dies der Fall, so wird der Text auf der Applikation upgedatet.
Wenn nicht, so bleibt der Text bei “herrscht Ruhe”:
Darunter wird der Laser und dessen Status als json-Label ausgegeben und anschließend der Applikation mittels Server übermittelt:
Sollte die Serververbindung aus Step 7.5 fehlgeschlagen sein, so muss ein Fehlercode übermittelt werden, damit die Applikation und der Benutzer weiß, dass etwas schief gegangen ist.
Das else befindet sich auf der selben Einrückungsebene wie das if request aus Step 7.6!
In Step 7.1 wurde erwähnt, dass die Wahrscheinlichkeit besteht, einen Fehler zu bekommen, weshalb es wichtig ist, den Code mittels “try – catch” zu umrunden.
Sollte nun ein Fehler geworfen werden, ist auch noch der “catch-Teil” des “try”-Blocks nötig.
Auf der selben Einrückungsebene, wie das “try” aus dem Schritt 7.1, soll nun ein “catch” geschrieben werden, welches den Fehler auffängt:
In diesem Fall wird nur “ERR” für “Error” ausgegeben.
Als Abschluss muss noch die Verbindung geschlossen werden:
Nun (außerhalb der While Schleife) wird noch die oben erstellte Funktion “webServer” aufgerufen, wonach das Programm fertig ist: