Die REST-API der MSA kennenlernen

Nach dem Starten der notwendigen Programme auf dem MSA-Raspberry stellt dieser eine REST-API zur Verfügung. Diese erlaubt die Steuerung der Anlage sowie die Abfrage der Zustände von Sensoren und Aktoren. In dieser Einheit geht es darum, sich mit der API vertraut zu machen.

Durch die Arbeit mit der interaktiven Dokumentation in diesem Kapitel bereiten Sie sich darauf vor, in Zukunft die REST-API der MSA mit Python anzusteuern und komplexere Programme zu entwickeln.

Aufruf der Dokumentation auf dem Raspberry Pi

Nach dem Start des Servers auf dem Raspberry Pi, das im vorangegangenen Abschnitt gezeigt wurde, erreichen Sie eine interaktive Dokumentationswebsite auf dem MSA-RPI unter http://192.168.1.101:8000/docs. Sie sollte weitestgehend wie die folgende Abbildung aussehen:

Screenshot aus der Dokumentation der REST-API
Screenshot aus der Dokumentation der REST-API

Auslesen von Sensoren

Die REST-API der MSA kann zwei HTTP-Anfragemethoden verarbeiten: GET und POST. Einfach gesagt ist GET dafür da, Ressourcen abzufragen und POST, um diese zu verändern.

In unserem Fall fragen Sie mit GET den aktuellen Wert eines Sensors ab und mit POST ändern Sie den Zustand eines Aktors.

Folgendes Beispiel demonstriert das Abfragen des Lichtschrankensensors B1 am Anfang des Transportbandes. Wie die folgende Animation zeigt, ist das demonstrierte Vorgehen in der interaktiven Dokumentation gleichbedeutend mit der Eingabe http://192.168.1.101:8000/sensors/B1.

Demonstration, wie ein Sensor mit `GET` ausgelesen werden kann.
Demonstration, wie ein Sensor mit GET ausgelesen werden kann.

Aktiv werden

  • Probieren Sie aus, was passiert, wenn Sie diese Adresse eingeben oder anklicken!
  • Unterbrechen Sie die Lichtschranke an der MSA, um beim Abfragen einen Unterschied zu sehen.
  • Wie heißt der Datentyp, der den Zustand des Sensors ausdrückt?

Schalten von Aktoren

Das Schalten von Aktoren erfolgt analog mit der interaktiven Dokumentation, in diesem Fall das Schließen des Hauptventils Y0.

Demonstration, wie ein Aktor per `POST` geschaltet werden kann.
Demonstration, wie ein Aktor per POST geschaltet werden kann.

Auch wenn hier die URL ausgegeben wird, mit der die REST-API des Servers angesprochen wurde, ist dieses Beispiel nicht so einfach im Browser nachzustellen wie das erste. Denn POST-Befehle lassen sich nicht über die Adresseleiste des Browsers senden, dort funktioniert nur GET.

Aktiv werden

  • Was passiert, wenn Sie die Adresse http://192.168.1.101:8000/actuators/Y0 im Browser eingeben?
  • Sprechen Sie sich in der Gruppe ab, um nacheinander auch das Schalten des Motors für das Transportband auszuprobieren.

Lokale Installation zum Üben: die MSA zuhause

Um sich auch zuhause mit der REST-API beschäftigen zu können, wo Sie ja keine MSA haben, lernen Sie im Folgenden, eine Simulation der API auf Ihrem Laptop zu installieren. Dabei wird so getan, als hätte dieser auch GPIOs, was natürlich nicht stimmt. Beachten Sie also, dass die Werte, die bei einer Sensorabfrage zurückgegeben werden, stets false sind!

Python-Umgebung aktivieren

Vorausgesetzt wird, dass Sie eine aktuelle Python-Version >=3.9.x auf Ihrem Rechner haben.

Arbeitsumgebung einrichten

Für dieses Beispiel und auch alle weiteren legen Sie einen Ordner msa-lv an einem sinnvollen Ort Ihres Arbeitsrechners (nicht RPI) an.

Wechseln Sie im Terminal in das Verzeichnis und führen Sie folgende Kommandos aus:

1$ git clone https://collaborating.tuhh.de/itbh/oer/informatik/codebeispiele/materialsortieranlage/materialsortieranlage.git
2$ cd materialsortieranlage
3$ pip install -r requirements.txt
4$ uvicorn main:app --host 0.0.0.0 --reload
Unter Windows ist ein Fehler beim Installieren von RPI.GPIO vorgekommen. In diesem Fall kann die entsprechende Zeile aus der requirements.txt herausgelöscht werden, da auf dem Laptop ja auch keine GPIOs angesprochen werden. Anschließend führte der erneute Aufruf des pip-Kommandos zum Erfolg.

Die REST-API steht nun auf Ihrem Rechner zur Verfügung. Sie sollten mit einem Aufruf von http://localhost:8000/docs die Website erreichen, die oben animiert darstellt wurde.

Aktiv werden

  • Vollziehen Sie die Schritte für Sensoren und Aktoren nach, die oben gezeigt werden.

MSA-Klasse installieren

Der Entwickler der REST-API hat auch eine Klasse geschrieben, die den Zugriff auf die API mit Python stark vereinfacht. Sie können Sie wie folgt installieren:

1$ pip install git+https://collaborating.tuhh.de/itbh/oer/informatik/codebeispiele/materialsortieranlage/materialsortieranlage_user.git

Werfen Sie anschließend einen Blick in die example.py, um zu lernen, wie Sie mit der Klasse eigene Programme schreiben.

Aufgaben

Diese Aufgabe ist nur lösbar, wenn Sie Zugriff auf die MSA haben und dort die REST-API ansprechbar ist.

  1. Bestimmen Sie eine Person aus der Gruppe, die für das Starten und Stoppen des Transportbandes zuständig ist.
  2. Bitten Sie die Person, den Motor zu starten.
  3. Prüfen Sie, dass auf dem MSA-RPI der API-Server läuft.
  4. Schreiben Sie ein Programm, das abfragt, ob die Lichtschranken am Anfang und am Ende des Transportbandes reagieren. Lassen Sie dafür geeignete Gegenstände übers Band laufen.
  5. Schließen Sie zwei LEDs an Ihren Raspberry Pi an, wie im Kapitel Hardware über HTTP ansteuern beschrieben.
  6. Schalten Sie die erste LED für eine Sekunde ein, wenn ein Objekt die erste Lichtschranke passiert, und die zweite, wenn ein Objekt die zweite Lichtschranke passiert. Beachten Sie, dass Sie die Anfragen (Requests) an die API nun aus Python heraus stellen müssen.
Zurück
Weiter