3.3 KiB

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:

pip install -r requirements.txt
  1. Anwendung starten:
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):

chmod +x setup.sh
./setup.sh

Detaillierte Anweisungen finden sich in der Kiosk-Setup Anleitung.

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:

{
  "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
  • Zukünftige Entwicklungspläne sind in ROADMAP.md dokumentiert