Flask auf der Serverseite

Flask ist ein so genanntes Microframework. Darunter lässt sich eine Art Baukasten verstehen, mit dem man schnell zum Ziel kommt - jedenfalls schneller, als wenn man alles von Grund auf neu programmieren würde. Aus Sicht der Didaktik wäre es natürlich besser, alles von Grund auf neu zu programmieren. Aber die Zeit ist oft begrenzt, um alle relevanten Webtechnologien anzusprechen und auszuprobieren. Außerdem repräsentiert Flask eine moderne Art der Webprogrammierung, die Sie kennen sollten.

Aktualisierung des Betriebssystems

Sollten Sie es bisher noch nicht getan haben: Jetzt ist der Zeitpunkt, einmal das gesamt Betriebssystem auf den neusten Stand zu bringen. In der Regel dauert das bei einem Raspberry Pi 4 ca. 10 Minuten.

1$ sudo apt-get update
2$ sudo apt-get upgrade

Installation von Flask

Es gibt viele verschiedene Wege, Flask zu installieren. Auf einem aktuellen Raspberry (2024) ist Flask schon installiert, allerdings veraltet. Weitere Möglichkeiten sind in der Dokumentation von Flask erklärt.

Damit Sie mit der neusten Version arbeiten können, lernen Sie zunächst, eine virtuell Python-Umgebung einzurichten. Sie können beliebig viele solcher Umgebungen einrichten und darin verschiedene Python-Version und -Pakete verwenden.

Virtuelle Umgebung einrichten

Legen Sie zunächst einen Ordner Codeprojekte an und wechseln Sie in diesen. Eine neue virtuelle Umgebung erhalten Sie mit folgenden Befehlen:

1$ sudo apt install python3-full # Vollversion von Python3 installieren
2$ python3 -m venv . # Virtuelle Python-Umgebung im aktuellen Verzeichnis einrichten
3$ ./bin/python --version # Python-Version der virtuellen Umgebung ausgeben
4$ ./bin/pip --version # Pip-Version der virtuellen Umgebung ausgeben

Installation von Flask in der virtuellen Umgebung

Auf einem Raspberry PI ist Flask schon vorinstalliert, allerdings in einer veralteten Version. Führen Sie daher folgendes Kommando in der virtuellen Umgebung aus. Damit die Pfade stimmen, müssen Sie im Ordner Codeprojekte sein:

1$ ./bin/pip install flask 

Installation notwendiger Python-Pakete

Um die GPIOs ansteuern zu können, müssen in der virtuellen Umgebung noch die folgenden Pakete installiert werden:

1$ ./bin/pip install pigpio lgpio gpiozero

Minimal-Applikation mit Flask

Um Flask auszuprobieren, legen Sie eine erste Datei an, mit der Sie die Welt begrüßen - so gehört es sich. Sollten Ordner nicht vorhanden sein, legen Sie diese mit mkdir an.

$ cd Codeprojekte/
$ mkdir helloflask
$ cd helloflask/

In dem neu erstellten Ordner legen Sie mit dem Editor nano eine Datei an:

1$ nano app.py

Nachdem sich der Editor geöffnet hat, schreiben wir den folgenden Python-Code hinein.

 1#!/usr/bin/env python3
 2
 3# Importieren der notwendigen Module
 4from flask import Flask
 5# Definieren einer Variable, die die aktuelle Datei zum Zentrum
 6# der Anwendung macht.
 7app = Flask(__name__)
 8
 9# Festlegen einer Route für die Homepage. Der String in den Klammern
10# bildet das URL-Muster ab, unter dem der folgende Code ausgeführt
11# werden soll.
12@app.route('/')
13def hello_world():
14    return 'Hello, World!'
15
16if __name__ =='__main__':
17    app.run(host="0.0.0.0", debug=True)

Mit STRG+X verlassen Sie den Editor. Die Frage, ob Sie speichern wollen, beantworten Sie mit Ja und stimmen auch dem Namen zu.

Flask-App starten

Flask besitzt einen eingebauten Webserver, der während der Entwicklung benutzt werden kann. Das bedeutet, dass Ihre paar Codezeilen mit wenigen Befehlen im Netz verfügbar gemacht werden können! Folgendes muss dafür auf der Kommandozeile eingegeben werden:

1$ ../bin/python -m flask run --host=0.0.0.0

Das Terminal sollte ausgeben, dass ein Webserver auf Port 8000 gestartet wurde.

Aufrufen der Webseite im Browser

Abschließend kann unsere App von einem Browser aus aufgerufen werden. Das klappt auch vom Smartphone, wenn Sie damit im selben Netz sind!

http://[IP-Adresse des RPI]:5000

Wie geht’s weiter?

Nachdem Sie nun eine Anwendung haben, die Anfragen (requests) annimmt und eine Antwort (response) zurückschickt, können Sie sich darum kümmern, Daten aus dem Request zu verarbeiten. Lesen Sie dazu weiter auf der Seite Request-Daten mit Flask auswerten.

Weiter