projekt:python_fastapi1
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| projekt:python_fastapi1 [2026/02/21 11:54] – torsten.roehl | projekt:python_fastapi1 [2026/02/21 13:22] (aktuell) – gelöscht torsten.roehl | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Python FASTAPI ====== | ||
| - | [[raspberry_pi: | ||
| - | |||
| - | |||
| - | //In diesem Projekt wird auf dem Raspberry Pi eine Weboberfläche mit FastAPI erstellt, über die eine LED-Ampel geschaltet und die Temperatur eines DS18B20 angezeigt werden kann. Die Anwendung ist im lokalen Netzwerk erreichbar, sodass LEDs und Temperatursensor bequem über einen Webbrowser im LAN gesteuert und überwacht werden können.// | ||
| - | ====== Überblick ====== | ||
| - | * Voraussetzungen | ||
| - | * Software | ||
| - | * Konfiguration | ||
| - | |||
| - | ====== Details ====== | ||
| - | |||
| - | ===== Voraussetzungen ===== | ||
| - | |||
| - | ==== ENV ==== | ||
| - | |||
| - | <note important> | ||
| - | **Aktivierung der Python-Environment: | ||
| - | |||
| - | Alle weiteren Schritte erfolgen mit der aktivierten Python-Umgebung. | ||
| - | |||
| - | < | ||
| - | source ~/ | ||
| - | </ | ||
| - | |||
| - | </ | ||
| - | |||
| - | Anschließend werden FastAPI und Uvicorn installiert: | ||
| - | |||
| - | <code bash> | ||
| - | pip install fastapi uvicorn | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | **FastAPI / Uvicorn** | ||
| - | |||
| - | * **FastAPI** | ||
| - | * stellt das Web-Framework bereit, mit dem die Webseiten und Routen programmiert werden. | ||
| - | * **Uvicorn** | ||
| - | * startet die Anwendung und sorgt dafür, dass sie im Browser erreichbar ist. | ||
| - | </ | ||
| - | |||
| - | ==== Projektstruktur ==== | ||
| - | |||
| - | '' | ||
| - | |||
| - | < | ||
| - | course_web/ | ||
| - | |── data/ | ||
| - | | | ||
| - | └── src/ | ||
| - | ├── app.py | ||
| - | ├── core/ | ||
| - | │ | ||
| - | │ | ||
| - | └── html/ | ||
| - | ├── led.html | ||
| - | ├── history.html | ||
| - | └── temp.html | ||
| - | </ | ||
| - | |||
| - | ==== Temperaturverlauf: | ||
| - | |||
| - | Die Messwerte des Temperaturverlaufs werden in der Datei '' | ||
| - | Die Datei wird automatisch angelegt, sobald die Aufzeichnung gestartet wird. | ||
| - | |||
| - | < | ||
| - | **Format der Datei '' | ||
| - | |||
| - | Jede Zeile enthält Zeitstempel und Temperatur, getrennt durch ein Semikolon: | ||
| - | |||
| - | '' | ||
| - | |||
| - | Beispiel: | ||
| - | '' | ||
| - | </ | ||
| - | |||
| - | ==== Apache2 Startseite ==== | ||
| - | |||
| - | Im Verzeichnis des Apache2-Webservers (''/ | ||
| - | Beim Aufruf der **IP-Adresse des Raspberry Pi im Browser** wird diese Startseite geladen, über die anschließend das gewünschte Projekt ausgewählt werden kann. | ||
| - | |||
| - | <note tip> | ||
| - | **Tip** | ||
| - | |||
| - | Bevor die neue '' | ||
| - | |||
| - | <code bash> | ||
| - | sudo mv / | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | <code html / | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ | ||
| - | < | ||
| - | |||
| - | < | ||
| - | |||
| - | <ul> | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | < | ||
| - | </ul> | ||
| - | |||
| - | </ | ||
| - | </ | ||
| - | </ | ||
| - | |||
| - | ==== Hardware ==== | ||
| - | |||
| - | Die Hardware, also die LED-Ampel und der Temperatursensor, | ||
| - | |||
| - | ===== Software ===== | ||
| - | |||
| - | Im folgenden Abschnitt werden die für die Webanwendung benötigten Python- und HTML-Dateien vorgestellt. | ||
| - | Dazu gehören die Hardware-Anbindung über GPIO und den Temperatursensor, | ||
| - | |||
| - | < | ||
| - | **Temperaturverlauf (History)** | ||
| - | |||
| - | Der Temperaturverlauf erweitert das bestehende Projekt um eine einfache Protokollierung der Messwerte. | ||
| - | |||
| - | * Die Aufzeichnung kann über den Browser gestartet und gestoppt werden. | ||
| - | * Die Messwerte werden in '' | ||
| - | * Die Anzeige im Browser liest diese Datei und stellt den Verlauf grafisch dar. | ||
| - | * Die Aufzeichnung läuft im Hintergrund, | ||
| - | </ | ||
| - | |||
| - | ==== API ==== | ||
| - | |||
| - | Die Datei '' | ||
| - | Für den Temperaturverlauf wird diese API um einfache Methoden zur Speicherung, | ||
| - | |||
| - | <code python / | ||
| - | # bestehender Code unverändert | ||
| - | </ | ||
| - | |||
| - | ==== HTML ==== | ||
| - | |||
| - | === LED === | ||
| - | |||
| - | <code html / | ||
| - | <!-- unverändert --> | ||
| - | </ | ||
| - | |||
| - | === Temperature === | ||
| - | |||
| - | <code html / | ||
| - | <!-- unverändert --> | ||
| - | </ | ||
| - | |||
| - | === History === | ||
| - | |||
| - | Die Seite '' | ||
| - | |||
| - | * Start – beginnt die Aufzeichnung | ||
| - | * Stop – beendet die Aufzeichnung | ||
| - | * Reset – löscht die gespeicherten Messwerte | ||
| - | * Intervall – legt fest, in welchem Abstand neue Werte gespeichert werden | ||
| - | * Diagramm – zeigt den gespeicherten Verlauf grafisch | ||
| - | |||
| - | <code html / | ||
| - | <!-- Inhalt siehe Projektdatei --> | ||
| - | </ | ||
| - | |||
| - | ==== FASTAPI APP ==== | ||
| - | |||
| - | Die Datei '' | ||
| - | Zusätzlich wird beim Start der Anwendung der Hintergrund-Mechanismus zur Temperaturaufzeichnung aktiviert. | ||
| - | |||
| - | <code python / | ||
| - | # bestehender Code + History-Routen | ||
| - | </ | ||
| - | |||
| - | ===== Konfiguration ===== | ||
| - | |||
| - | In diesem Abschnitt wird die Einbindung der FastAPI-Anwendung in den Apache-Webserver sowie die Einrichtung als '' | ||
| - | |||
| - | ==== Apache Proxy ==== | ||
| - | |||
| - | In der Datei ''/ | ||
| - | |||
| - | <code bash> | ||
| - | ProxyPreserveHost On | ||
| - | |||
| - | ProxyPass | ||
| - | ProxyPassReverse /led http:// | ||
| - | |||
| - | ProxyPass | ||
| - | ProxyPassReverse /temp | ||
| - | |||
| - | ProxyPass | ||
| - | ProxyPassReverse / | ||
| - | ProxyPass | ||
| - | ProxyPassReverse / | ||
| - | </ | ||
| - | |||
| - | === Aktivieren === | ||
| - | |||
| - | <code bash> | ||
| - | sudo a2enmod proxy | ||
| - | sudo a2enmod proxy_http | ||
| - | sudo systemctl restart apache2 | ||
| - | </ | ||
| - | |||
| - | ==== Systemd ==== | ||
| - | |||
| - | Die Service-Datei wird unter ''/ | ||
| - | |||
| - | <code bash> | ||
| - | sudo systemctl daemon-reload | ||
| - | sudo systemctl enable course_web | ||
| - | sudo systemctl start course_web | ||
| - | sudo systemctl status course_web | ||
| - | </ | ||
| - | |||
| - | ==== Test Temperaturverlauf ==== | ||
| - | |||
| - | <code bash> | ||
| - | tail -n 20 / | ||
| - | </ | ||
projekt/python_fastapi1.1771674886.txt.gz · Zuletzt geändert: von torsten.roehl
