Lösung Komponenten mittels App Inventor
Nachdem nun die Oberfläche der App kreiert wurde, muss die Funktionalität der App noch erstellt werden. Zuerst muss auch die Block-Ansicht rechts oben umgestellt werden. Danach müssen alle nachfolgenden Blöcke nachgebaut werden. Die Farben der Blöcke sind ein Hinweis darauf, in welcher Meta-Kategorie dieser Block zu finden ist.
Variablen initialisieren
Dort sollten nun die nachfolgenden Variablen erstellt werden:
Die Zahlen, welche fĂĽr light_rx_input bzw. humidity notwendig sind, sind unter “Math” zunfinden, die false-Operationen fĂĽr bspw. light_rx_crit unter “Logic”, die Strings wie fĂĽr serverURL unter “Text” und die leeren Listen wie fĂĽr dataList unter “Lists”.
Zu aller erst mĂĽssen Variablen erstellt und initialisiert werden.Â
Variablen sind unter dem Reiter “Blocks” zu finden:
Dort sollten nun die nachfolgenden Variablen erstellt werden:Â
Die Zahlen, welche fĂĽr light_rx_input bzw. humidity notwendig sind, sind unter “Math” zunfinden, die false-Operationen fĂĽr bspw. light_rx_crit unter “Logic”, die Strings wie fĂĽr serverURL unter “Text” und die leeren Listen wie fĂĽr dataList unter “Lists”.Â
Â
Als nächstes muss eine Kondition für die Komponente liveCheckBox angelegt werden, welche Ausgelöst wird, sobald die Check Box geklickt wird. Dies ist nötig, damit die App per live Überwachung Veränderungen des Zustandes mittracken kann, wie etwa eine Bewegung im Raum, die Störung der Barriere oder einem Temperatur- bzw. Luftunterschied.
Zu finden ist dieser Block innerhalb der liveCheckBox:
autoRefresh kann unter den Variablen gesetzt werden, indem im Dropdown Menü der entsprechende Name ausgewählt wird:
Die liveCheckBox wird wieder innerhalb der Blöcke fĂĽr diese Komponente auf checked gesetzt.Â
Sobald die Applikation gestartet wird, ist ein Screen zu sehen. Wird dieser initialisiert – also ständig -, so soll die liveCheckBox automatisch auf jenen Wert gesetzt werden, welcher zuvor ausgewählt wurde. Dies muss mittels auto-refresh ständig ĂĽberprĂĽft werden, damit es zu keine Verzögerungen kommt. Auch die Methoden serverUrl und readData mĂĽssen zyklisch neu geladen werden, um live Daten ablesen zu können.Â
Um nun zu wissen, wie regelmäßig die Daten aktualisiert werden müssen, benötigt man die Methode timerClock.
Nun muss auch noch bestimmt werden, was mit der Applikation geschieht, wenn ein Fehler geworfen wird. Um es möglichst unkompliziert zu halten, wird die Applikation einfach beendet, sobald ein Error auftritt.
Tritt nun ein Fehler auf, so wird auch das autoRefresh auf false gesetzt, nachdem dies bei einer beendeten Applikation nicht mehr benötigt wird. Auch die liveCheckBox wird auf falsch gesetzt, und es soll eine Fehlermeldung auf dem Endgerät angezeigt werden.Â
Â
Als nächstes wird eine Funktion fĂĽr den goButton geschrieben, welche ausgelöst wird, sobald der Button gedrĂĽckt wird. Dabei solle die vorhin erstellte Methode readData und die richtige serverUrl aufgerufen werden. Danach wird der Status des goButtons ĂĽberprĂĽft. Ist dieser “Off”, so wird er zunächst auf “On” gesetzt, wonach eine Verbindung mit der bereits initierten server Url hergestellt wird. Von diesem Server werden die Daten ausgelesen.Â
Sollte der Status des goButtons auf “On” sein, so wird er lediglich auf “Off” gesetzt.Â
In der nächsten Abbildung wird die readData() Methode gezeigt, welche als einzige einen Unterschied aufweist, je nachdem welche Version verwendet wird. Für die Version 1 muss nichts verändert werden. Für die Version 2 ist es notwendig, den Text mit „The light in your room was turned on“ mit dem Text „The barrier was broken.“ zu ersetzen. Dafür wird der Text per Drag and Drop verschoben.
Um die Daten lesen zu können wird erst die globale Server Url auf die am Anfang festgelegte Url gesetzt. Danach wird diese Url auch im Web aufgerufen.Â
Als nächstes, in der if-Bedingung, werden die erhaltenen Daten der Units abgelesen und verwertet. Als erstes wird geprĂĽft, ob die Luftfeuchtigkeit, welche vom Motionsensor gemessen wurde, ĂĽber 30 ist. Gleichzeitig muss auch die Variable humCrit auf falsch gesetzt sein. Ist dies der Fall, so wird eine Warnung ausgesendet, dass die Luftfeuchtigkeit zu hoch ist, und humCrit wird auf true gesetzt.Â
Sollte die Luftfeuchtigkeit (wieder) kleiner-gleich 30 sein, so wird humCrit auf false gesetzt.Â
Die nächste If ĂĽberprĂĽft, ob die Lichtschranke durchbrochen wurde, dabei wird gecheckt, ob light_rx_input gleich 1 ist und light_rx_crit false ist.Â
Auch hier wird wieder eine Warnung ausgesendet, während light_rx_crit wieder angepasst wird.Â
Zu guter Letzt wird bestimmt, welcher Text in der Applikation angezeigt werden soll. DafĂĽr muss erst sicher gestellt werden, dass eine stabile Verbindung zum Server besteht, weshalb der responseCode abgeprĂĽft wird. 200 steht dabei fĂĽr OK. Danach wird die globale dataList mit den erhaltenen Daten befĂĽllt.Â
Mobile Applikation - Ăśberblick
Das Krisenmanagementsystem weist die im Abschnitt Vorbereitung fĂĽr das Programm beschriebenen Komponenten, Units und Codes auf. Eine Beschreibung wie die Applikation funktioniert wird in der Abbildung rechts gezeigt.