Was müssen wir nun tun, damit die Daten, die wir über die Webseiten abrufen können, in der App angezeigt werden? Wir müssen die Webseiten mit der App aufrufen!

Das wird mit entsprechenden Bausteinen im MIT App Inventor erreicht. Zum Lesen der Daten wird der Web-Baustein verwendet, der unter der Kategorie "Verbindung" zu finden ist. Zieht ihn genau so, wie ihr es mit den anderen Bausteinen getan habt, in das dargestellte Gerät. Wundert euch nicht, dass er nicht auf dem Display zu sehen ist, er gehört zu den nicht sichtbaren Bausteinen. Diese werden unterhalb des Geräts aufgelistet.

Bevor wir mit dem Baustein programmieren, sodass er uns die gewünschten Webseiten aufruft, brauchen wir noch einen Weiteren, der gleich dafür benutzt werden wird, die Anfragen periodisch zu wiederholen. Das ist der "Uhr"-Baustein, zu finden bei den Sensoren. Zieht auch in in das Gerät hinein, er erscheint genauso wie zuvor der "Web"-Baustein bei den nicht sichtbaren Komponenten.

Für die Programmierung müsst ihr nun über den Button oben rechts in die "Blöcke"-Ansicht wechseln. Hier seht ihr erstmal eine leere weiße Fläche, die darauf wartet, von euch gefüllt zu werden.

Das erreicht ihr, wie auch bei der Erstellung der Oberfläche, indem ihr Blöcke in die Fläche zieht. Ihr könnt wieder aus Kategorien auf der linken Seite des Bildschrims auswählen. Wenn ihr auf eine klickt, öffnet sich die Auswahl der Bausteine, so wie im Bild beispielhaft zu sehen. Unterhalb der Kategorien seht ihr eine Liste aller Bausteine, die ihr bei der Erstellung der Oberfläche verwendet habt. Diese Liste war auch schon beim "Designer" auf der rechten Seite zu sehen. Zu jedem dieser Elemente gibt es nämlich auch wieder verschiedene Steuerungsmöglichkeiten, die wir uns gleich zu Nutze machen werden.

Ich habe zum Anzeigen meiner Daten zum Systemdruck beispielhaft eine Bezeichnung "SystemdruckBezeichnung", die anzeigt, um welche Daten es sich handelt, und eine "SystemdruckDatenBezeichnung" erstellt, die die tatsächlichen Daten beinhalten wird. Jetzt müss genau dieses Feld mit den Daten von der zugehörigen Webseite gefüllt werden. Doch wie machen wir das?

Die Idee ist es, die Webseite in einem festen Intervall aufzurufen. Die Webseite schickt dann die Daten zurück und wir schreiben sie in das leere Textfeld. Dazu muss zuerst die Uhr konfiguriert werden. Die Uhr hat einen Zeitgeber integriert, der in einem bestimmten Intervall schlägt. Wir können dann auf den Schlag der Uhr die Webseite aufrufen. Das Intervall wird über den Befehl im Bild unten eingestellt. Wir setzen es auf 1000 ms, sodass später einmal pro Sekunde die Webseite aufgerufen wird. Zieht dafür einfach den entsprechenden Block unter "Uhr 1" in die weiße Fläche. Die Zahl bekommt ihr aus der Kategorie "Mathematik". Standardmäßig ist das eine 0, durch Anklicken könnt ihr den Wert verändern. Die Zahl fügt ihr wie ein Puzzelstück an den anderen an.

Außerdem muss der Web-Baustein konfiguriert werden. An ihn muss die richtige URL gegeben werden, sodass die Webseite, dessen Daten wir haben wollen, tatsächlich auch aufgerufen wird. Die Adresse ist die der SPS, an der ihr arbeitet, als Unterpfad wird "/awp//" und der Name der Webseite, die eure Daten hält, ausgewählt. Es ergibt sich bei mir beispielhaft folgendes:


Jetzt muss auf den Zeitgeber reagiert werden. Wählt dafür den Baustein "Wenn Uhr1.Zeitgeber" mache". In ihn können weitere Befehle eingefügt werden, die immer dann ausgeführt werden, wenn der Zeitgeber schlägt. Hier muss nun eine Anfrage an die URL ausgeführt werden. Das macht ihr mit dem Baustein "aufrufen Web1.hole":

Die Webseite schickt daraufhin ihre Daten zurück. Ist das geschehen, können mit dem Baustein "Wenn Web1.TextErhalten" genau wie beim Schlag des Zeitgebers Befehle ausgeführt werden. Diese Befehle müssen jetzt den erhaltenen Text in das dafür vorgesehene Textfeld schreiben. Klick auf die bei euch dafür vorgesehene Bezeichnung, wählt den Befehl "setze BeispielBezeichnung.Text auf" und fügt ihn in den Web-Block ein. Jetzt könnten wir direkt die Antwort der Webseite an den Block anfügen, um sie in die Bezeichnung zu schreiben. Doch dann würde die Einheit fehlen!

Um das zu verhindern, wird die Antwort mit weiterem Text zusammengefügt. Der weitere Text beinhaltet ein Leerzeichen und die jeweilige Einheit. Das Verbinden erreicht ihr durch den Block "verbinde" der Kategorie "Text", der zwei verschiedene Texte zu einem verschmilzt, wobei der untere der beiden an den oberen angehängt wird. Der obere der beiden auszuwählenden Textbausteine ist die Antwort des Webseitenaufrufs, die ihr erhaltet, in dem ihr beim "Wenn Web1.TextErhalten"-Baustein auf das Feld "AntwortInhalt" klickt. Insgesamt ergibt sich in meinem Fall der Baustein im Bild:

Fertig! Wiederholt den ganzen Prozess nochmal mit den anderen Webseiten, dann ist alles vollständig. Ihr könnt den gleichen Uhr-Baustein benutzen, wenn ihr nicht verschiedene Daten verschieden häufig abfragen wollt, aber ihr braucht für jede Webseite einen eigenen Web-Baustein, damit ihr ihnen verschiedene URLs zuordnen könnt.

Es sollten nun immer wieder aktuelle Daten zu den Variablen angezeigt werden. Um das Ganze ausprobieren zu können, müsst ihr euch allerdings mit dem WLAN Access Point eurer Anlage verbinden, da vom öffentlichen WLAN der BBS aus nicht auf das Anlagennetz zugegriffen werden kann. Das Verbinden geschieht, wie bei allen anderen Netzwerken auch, über die WLAN Einstellungen eures Smartphones. Im Anlagennetz ist leider die Verbindung mit dem Companion nicht möglich. Daher müsst ihr, bevor ihr euch mit dem Access Point verbindet, bei "Erzeugen" einen QR-Code für .apk-Datei scannen und die App so auf das Smartphone herunterladen.

Zuletzt geändert: Montag, 12. Juli 2021, 12:47