# 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/` - 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