121 lines
3.7 KiB
Markdown

# MYP - Manage Your Printer
Ein System zur Verwaltung und Steuerung von 3D-Druckern über TP-Link Tapo P110 Smart Plugs.
## Verzeichnisstruktur
Diese MYP-Installation ist wie folgt organisiert:
- **app/** - Enthält den Anwendungscode (app.py, models.py)
- **docs/** - Enthält die Dokumentation (README, Anleitungen, Fehlerbehebung)
- **install/** - Enthält Installationsskripte und Konfigurationsdateien
## Installation
Zur Installation und Konfiguration nutzen Sie bitte das Hauptinstallationsskript:
```bash
chmod +x setup_myp.sh
./setup_myp.sh
```
Das Skript führt Sie durch die verfügbaren Optionen:
1. Standardinstallation (nur MYP-Anwendung)
2. Kiosk-Modus Installation (vollautomatischer Start nach Boot)
3. Dokumentation anzeigen
## Ausführliche Dokumentation
Die vollständige Dokumentation finden Sie im `docs/`-Verzeichnis:
- Allgemeine Anleitung: [docs/README.md](docs/README.md)
- Kiosk-Modus Anleitung: [docs/KIOSK-SETUP.md](docs/KIOSK-SETUP.md)
- Fehlerbehebung: [docs/COMMON_ERRORS.md](docs/COMMON_ERRORS.md)
- Entwicklungsplan: [docs/ROADMAP.md](docs/ROADMAP.md)
## Funktionsumfang
- Benutzer- und Rechteverwaltung (Admin/User)
- Verwaltung von Druckern und Smart Plugs
- Reservierungssystem für Drucker (Zeitplanung)
- Automatisches Ein-/Ausschalten der Drucker über Smart Plugs
- Statistikerfassung für Druckaufträge
- **NEU**: Kiosk-Modus für automatischen Start auf Raspberry Pi
## Systemvoraussetzungen
- Raspberry Pi 4 (oder kompatibel)
- Python 3.11+
- Internetzugang für die Installation (danach offline nutzbar)
- TP-Link Tapo P110 Smart Plugs im lokalen Netzwerk
## Erster Start
Beim ersten Start wird eine leere Datenbank angelegt. Es muss ein erster Administrator angelegt werden:
```
POST /api/create-initial-admin
```
Mit folgendem JSON-Body:
```json
{
"email": "admin@example.com",
"password": "sicheres-passwort",
"name": "Administrator"
}
```
## API-Dokumentation
Die Anwendung stellt folgende REST-API-Endpunkte bereit:
### Authentifizierung
- `POST /auth/register` - Neuen Benutzer registrieren
- `POST /auth/login` - Anmelden (erstellt eine Session für 7 Tage)
### Drucker
- `GET /api/printers` - Alle Drucker auflisten
- `GET /api/printers/<printerId>` - Einzelnen Drucker abrufen
- `POST /api/printers` - Neuen Drucker anlegen
- `DELETE /api/printers/<printerId>` - Drucker löschen
### Jobs/Reservierungen
- `GET /api/jobs` - Alle Reservierungen abrufen
- `POST /api/jobs` - Neue Reservierung anlegen
- `GET /api/jobs/<jobId>` - Reservierungsdetails abrufen
- `POST /api/jobs/<jobId>/finish` - Job beenden (Plug ausschalten)
- `POST /api/jobs/<jobId>/abort` - Job abbrechen (Plug ausschalten)
- `POST /api/jobs/<jobId>/extend` - Endzeit verschieben
- `GET /api/jobs/<jobId>/status` - Aktuellen Plug-Status abrufen
- `GET /api/jobs/<jobId>/remaining-time` - Restzeit in Sekunden abrufen
- `DELETE /api/jobs/<jobId>` - Job löschen
### Benutzer
- `GET /api/users` - Alle Benutzer auflisten (nur Admin)
- `GET /api/users/<userId>` - Einzelnen Benutzer abrufen
- `DELETE /api/users/<userId>` - Benutzer löschen (nur Admin)
### Sonstiges
- `GET /api/stats` - Globale Statistik (Druckzeit, etc.)
- `GET /api/test` - Health-Check
## Sicherheitshinweise
- Diese Anwendung speichert alle Zugangsdaten direkt im Code und in der Datenbank.
- Die Anwendung sollte ausschließlich in einem geschützten, lokalen Netzwerk betrieben werden.
- Es wird keine Verschlüsselung für die API-Kommunikation verwendet.
## Wartung und Troubleshooting
- Die Logdatei `myp.log` enthält alle wichtigen Ereignisse und Fehler
- Die Datenbank wird in `database/myp.db` gespeichert
- Häufig auftretende Probleme und Lösungen finden sich in [COMMON_ERRORS.md](COMMON_ERRORS.md)
- Zukünftige Entwicklungspläne sind in [ROADMAP.md](ROADMAP.md) dokumentiert