Files
Projektarbeit-MYP/backend/app/README.md
2025-05-26 08:25:46 +02:00

127 lines
3.9 KiB
Markdown

# MYP Platform - 3D-Drucker Reservierungssystem
Ein Reservierungssystem für 3D-Drucker, das automatisch TP-Link Tapo P110 Smart Plugs steuert, um die Stromversorgung von Druckern basierend auf den reservierten Zeitslots zu verwalten.
## Features
- Reservierung von 3D-Druckern für bestimmte Zeiträume
- Automatische Steuerung der TP-Link Tapo P110 Smart Plugs
- Echtzeit-Überwachung von laufenden Druckaufträgen
- Administrationsbereich für Druckerverwaltung
- Benutzerauthentifizierung und Autorisierung
- Statistiken zu Druckaufträgen und Materialverbrauch
- Dark Mode für eine angenehme Nutzung bei schlechten Lichtverhältnissen
- Responsive Design für verschiedene Gerätegrößen
## Technologie-Stack
- **Backend**: Python 3.11 mit Flask
- **Frontend**: HTML/CSS/JavaScript mit Tailwind CSS
- **Datenbank**: SQLite mit SQLAlchemy ORM
- **Authentifizierung**: Flask-Login
- **Hardware-Integration**: PyP100 für Tapo Smart Plug Steuerung
- **Automatisierung**: Integrierter Job-Scheduler für Drucker-Steuerung
## Systemanforderungen
- Python 3.11+
- Node.js und npm (für Tailwind CSS)
- Netzwerkzugang zu TP-Link Tapo P110 Smart Plugs
- Unterstützte Betriebssysteme: Linux, Windows, macOS
## Installation
1. **Repository klonen**:
```bash
git clone <repository-url>
cd myp-platform
```
2. **Python-Abhängigkeiten installieren**:
```bash
cd backend/app
pip install -r requirements.txt
```
3. **Node-Abhängigkeiten installieren und CSS bauen**:
```bash
npm install
npm run build:css
```
4. **Datenbank initialisieren**:
```bash
python init_db.py
```
5. **Server starten**:
```bash
# Standardstart
python app.py
# Oder mit spezifischem Port (empfohlen)
python app.py --port=5000
```
## API Endpunkte
| Methode | Endpunkt | Beschreibung |
|---------|------------------------|--------------------------------------------------------|
| GET | /api/jobs | Gibt alle Jobs (für Admins) oder eigene Jobs zurück |
| GET | /api/jobs/active | Gibt alle aktiven Druckaufträge zurück |
| GET | /api/jobs/{id} | Gibt Details zu einem bestimmten Job zurück |
| POST | /api/jobs | Erstellt eine neue Druckerreservierung |
| GET | /api/printers | Gibt alle verfügbaren Drucker zurück |
## Scheduler
Das System enthält einen eingebauten Scheduler, der automatisch:
- Drucker einschaltet, wenn ein Auftrag beginnt
- Drucker ausschaltet, wenn ein Auftrag endet
- Den Status von Druckern aktualisiert
- Die Auftragsstatistiken sammelt
## Konfiguration
Die Konfiguration erfolgt über die Datei `config/settings.py`. Wichtige Einstellungen umfassen:
- Datenbankpfad
- Tapo-Zugangsdaten
- Drucker-Konfigurationen
- Logging-Einstellungen
- Webserver-Einstellungen
## CSS-System
Die Anwendung nutzt Tailwind CSS für das Styling mit separaten Dateien für Light- und Dark-Mode.
### Tailwind Build
```bash
# CSS bauen
npm run build:css
# CSS im Watch-Modus (für Entwicklung)
npm run watch:css
```
## Sicherheit
- Nur angemeldete Benutzer können Druckaufträge erstellen
- Nur Besitzer eines Druckauftrags können diesen verwalten
- Nur Administratoren haben Zugriff auf alle Jobs und Systemeinstellungen
- Passwörter werden mit bcrypt gesichert
## Fehlerbehandlung und Logging
Das System führt detaillierte Logs in folgenden Kategorien:
- App-Log (allgemeine Anwendungslogs)
- Auth-Log (Authentifizierungsereignisse)
- Jobs-Log (Druckauftragsoperationen)
- Printer-Log (Druckerstatusänderungen)
- Scheduler-Log (Automatisierungsaktionen)
- Error-Log (Fehlerprotokollierung)
## Entwicklung
Diese Anwendung ist für den Offline-Betrieb konzipiert und verwendet keine externen CDNs.
Weitere Informationen zur Entwicklungsumgebung finden Sie in der `TAILWIND_SETUP.md`.