2025-05-26 08:25:46 +02:00

3.9 KiB

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:

    git clone <repository-url>
    cd myp-platform
    
  2. Python-Abhängigkeiten installieren:

    cd backend/app
    pip install -r requirements.txt
    
  3. Node-Abhängigkeiten installieren und CSS bauen:

    npm install
    npm run build:css
    
  4. Datenbank initialisieren:

    python init_db.py
    
  5. Server starten:

    # 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

# 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.