# MYP - Manage Your Printer Ein System zur Verwaltung und Steuerung von 3D-Druckern über TP-Link Tapo P110 Smart Plugs. ## 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 ## Installation ### Standardinstallation 1. Repository klonen oder Dateien auf den Raspberry Pi kopieren 2. Abhängigkeiten installieren: ```bash pip install -r requirements.txt ``` 3. Anwendung starten: ```bash python app.py ``` Die Anwendung läuft dann unter http://localhost:5000 oder unter der IP-Adresse des Raspberry Pi. ### Kiosk-Modus Installation Für den vollautomatischen Start im Kiosk-Modus (z.B. für IHK-Prüfungen): ```bash chmod +x setup.sh ./setup.sh ``` Detaillierte Anweisungen finden sich in der [Kiosk-Setup Anleitung](KIOSK-SETUP.md). ## 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/` - Einzelnen Drucker abrufen - `POST /api/printers` - Neuen Drucker anlegen - `DELETE /api/printers/` - Drucker löschen ### Jobs/Reservierungen - `GET /api/jobs` - Alle Reservierungen abrufen - `POST /api/jobs` - Neue Reservierung anlegen - `GET /api/jobs/` - Reservierungsdetails abrufen - `POST /api/jobs//finish` - Job beenden (Plug ausschalten) - `POST /api/jobs//abort` - Job abbrechen (Plug ausschalten) - `POST /api/jobs//extend` - Endzeit verschieben - `GET /api/jobs//status` - Aktuellen Plug-Status abrufen - `GET /api/jobs//remaining-time` - Restzeit in Sekunden abrufen - `DELETE /api/jobs/` - Job löschen ### Benutzer - `GET /api/users` - Alle Benutzer auflisten (nur Admin) - `GET /api/users/` - Einzelnen Benutzer abrufen - `DELETE /api/users/` - 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