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:

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.

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
.

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
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-lehre
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 git@collaborating.tuhh.de:cjw5024/materialsortieranlage.git
2$ cd materialsortieranlage
3$ git checkout mockgpio
4$ pip install -r requirements.txt
5$ uvicorn main:app --host 0.0.0.0 --reload
Die REST-API steht nun auf Ihrem Rechner zur Verfügung. Sie sollten mit einem Aufruf von http://0.0.0.0: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.
Aufgaben
Diese Aufgabe ist nur lösbar, wenn Sie Zugriff auf die MSA haben und dort die REST-API ansprechbar ist.
- Bestimmen Sie eine Person aus der Gruppe, die für das Laufen des Transportbandes zuständig ist.
- Bitten Sie die Person, den Motor zu starten.
- 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.
Beachten Sie, dass Sie die Anfragen (Requests) an die API nun aus Python heraus stellen müssen.
Diese Aufgabe ist nur lösbar, wenn Sie Zugriff auf die MSA haben und dort die REST-API ansprechbar ist. Außerdem benötigen Sie einen eigenen Raspberry Pi im Netzwerk. Diese Aufgabe baut auf der vorangegangenen auf.
- Schließen Sie zwei LEDs an Ihren Raspberry Pi an, wie im Kapitel Hardware über HTTP ansteuern beschrieben, und starten Sie eine dazu passende Flask-Anwendung, mit der Sie die LEDs über HTTP ansteuern können.
- Verbinden Sie den Zugriff auf die MSA-API mit dem Zugriff auf die Flask-API auf Ihrem Raspberry Pi: Schalten Sie die erste LED für eine Sekunde ein, wenn ein Objekt die erste Lichtschranke passiert, und die zweite, wenn ein Objekt diese passiert.