7.9 KiB

Mercedes-Benz TBA Marienfelde - 3D-Drucker Management System

Übersicht

Ein umfassendes Management-System für 3D-Drucker in der Mercedes-Benz Technischen Berufsausbildung (TBA) Marienfelde. Das System ermöglicht die zentrale Verwaltung, Überwachung und Steuerung von 3D-Druckern und deren Stromversorgung.

Hauptfunktionen

🖨️ Drucker-Management

  • Zentrale Verwaltung aller 3D-Drucker
  • Echtzeit-Statusüberwachung
  • Druckjob-Verwaltung und -Scheduling
  • Benutzer- und Rechteverwaltung

NEU: Steckdosen-Test-System

Sichere Testfunktion für Ausbilder und Administratoren zur Steuerung der Druckerstromversorgung:

  • Sicherheitsprüfungen: Automatische Warnungen bei aktiven Druckjobs
  • Risikobewertung: Intelligente Analyse basierend auf Stromverbrauch und Gerätestatus
  • Force-Modus: Notfallsteuerung mit erweiterten Sicherheitsabfragen
  • Audit-Trail: Vollständige Protokollierung aller Testaktivitäten
  • Echtzeit-Monitoring: Live-Status aller konfigurierten Steckdosen

Zugriff: /socket-test (nur für Administratoren)

📊 Monitoring & Analytics

  • Live-Dashboard mit Druckerstatus
  • Energieverbrauchsüberwachung
  • Statistiken und Berichte
  • Fehlerprotokollierung

👤 Benutzer-System

  • Rollenbasierte Zugriffskontrolle
  • Gastanfragen für externe Nutzer
  • Admin-Bereich für Systemverwaltung
  • Session-Management mit automatischem Logout

Technische Spezifikationen

Backend

  • Framework: Flask (Python)
  • Datenbank: SQLite mit WAL-Modus
  • ORM: SQLAlchemy
  • Authentifizierung: Flask-Login
  • API: RESTful JSON-API

Frontend

  • Framework: Vanilla JavaScript + Tailwind CSS
  • Design: Mercedes-Benz Corporate Design
  • Responsive: Mobile-first Design
  • Interaktion: AJAX-basierte Real-time Updates

Hardware-Integration

  • Steckdosen: TP-Link Tapo P110 Smart Plugs
  • Protokoll: PyP100 für Tapo-Kommunikation
  • Netzwerk: Lokales Subnetz für Geräte-Kommunikation

Installation

Voraussetzungen

  • Python 3.8+
  • Node.js 16+ (für Frontend-Build)
  • Netzwerkzugang zu den Steckdosen

Setup

# Repository klonen
git clone <repository-url>
cd backend

# Python-Abhängigkeiten installieren
pip install -r requirements.txt

# Frontend-Abhängigkeiten installieren
npm install

# CSS kompilieren
npm run build-css

# Datenbank initialisieren
python -c "from models import init_database; init_database()"

# Anwendung starten
python app.py

Erste Schritte

  1. Admin-Account erstellen: Beim ersten Start wird automatisch ein Admin-Account erstellt
  2. Drucker hinzufügen: Über das Admin-Panel Drucker und Steckdosen konfigurieren
  3. Benutzer verwalten: Weitere Benutzer und Rollen zuweisen
  4. Steckdosen testen: Über /socket-test die neue Testfunktionalität nutzen

Konfiguration

Umgebungsvariablen

# Grundkonfiguration
SECRET_KEY=<sicherheitsschlüssel>
DATABASE_PATH=database/app.db
ENVIRONMENT=production

# Steckdosen-Konfiguration
TAPO_USERNAME=<steckdosen-benutzername>
TAPO_PASSWORD=<steckdosen-passwort>

Drucker-Steckdosen-Zuordnung

Jeder Drucker kann mit einer Steckdose verknüpft werden:

  • IP-Adresse der Steckdose
  • Benutzername/Passwort für Authentifizierung
  • MAC-Adresse für eindeutige Identifikation

Sicherheit

Zugriffskontrolle

  • CSRF-Schutz für alle Formulare
  • Session-basierte Authentifizierung
  • Rollenbasierte Berechtigungen (Admin/User)
  • Automatisches Session-Timeout

Steckdosen-Sicherheit

  • Risikobewertung vor jeder Aktion
  • Automatische Warnungen bei aktiven Jobs
  • Force-Modus nur mit expliziter Bestätigung
  • Vollständige Audit-Logs aller Aktionen

API-Dokumentation

Steckdosen-Test-Endpunkte

GET /api/printers/test/socket/{printer_id}

Detaillierter Status einer Steckdose mit Sicherheitsbewertung

POST /api/printers/test/socket/{printer_id}/control

Steckdose für Tests ein-/ausschalten mit Sicherheitsprüfungen

GET /api/printers/test/all-sockets

Übersicht aller Steckdosen mit Zusammenfassung

Vollständige API-Dokumentation: docs/STECKDOSEN_TEST_DOKUMENTATION.md

Projektstruktur

backend/
├── app.py                 # Hauptanwendung
├── models.py             # Datenmodelle
├── requirements.txt      # Python-Abhängigkeiten
├── blueprints/          # Modulare Routen
│   ├── printers.py      # Drucker-Management (inkl. Steckdosen-Tests)
│   ├── users.py         # Benutzerverwaltung
│   ├── guest.py         # Gastanfragen
│   └── calendar.py      # Terminplanung
├── templates/           # HTML-Templates
│   ├── base.html        # Basis-Template
│   ├── socket_test.html # Steckdosen-Test-Interface
│   └── ...
├── static/              # Statische Dateien
├── utils/               # Hilfsfunktionen
├── config/              # Konfigurationsdateien
├── docs/                # Dokumentation
│   └── STECKDOSEN_TEST_DOKUMENTATION.md
└── database/            # Datenbankdateien

Wartung

Regelmäßige Aufgaben

  • Backup der Datenbank erstellen
  • Log-Rotation für Speicherplatz-Management
  • Steckdosen-Konnektivität prüfen
  • Updates für Sicherheits-Patches

Monitoring

  • Anwendungs-Logs in logs/ Verzeichnis
  • Datenbank-Größe und Performance überwachen
  • Netzwerk-Verbindungen zu Steckdosen prüfen

Support

Fehlerbehebung

  1. Logs prüfen: logs/app/ für Anwendungsfehler
  2. Netzwerk testen: Erreichbarkeit der Steckdosen prüfen
  3. Datenbank-Status: SQLite-Datei auf Korruption prüfen

Häufige Probleme

  • Steckdose nicht erreichbar: IP-Adresse und Netzwerk prüfen
  • Admin-Zugriff verweigert: Benutzerrolle in Datenbank kontrollieren
  • Session-Timeout: Einstellungen in config/settings.py anpassen

Entwicklung

Lokale Entwicklung

# Development Server
export FLASK_ENV=development
python app.py

# CSS Watch Mode
npm run watch-css

# Tests ausführen
python -m pytest tests/

Deployment

Das System läuft produktiv in der Mercedes-Benz TBA Marienfelde und ist für Windows-Umgebungen optimiert.

Changelog

Version 1.1 (2025-01-05)

  • NEU: Steckdosen-Test-System für Administratoren
  • 🔒 Sicherheit: Erweiterte Risikobewertung und Warnungen
  • 📊 Monitoring: Live-Status aller Steckdosen
  • 📝 Audit: Vollständige Protokollierung aller Testaktivitäten
  • 🎨 UI: Dedizierte Steckdosen-Test-Oberfläche

Version 1.0

  • Grundlegendes Drucker-Management-System
  • Benutzer- und Rechteverwaltung
  • Dashboard und Monitoring
  • Gastanfragen-System

Lizenz

Internes Projekt der Mercedes-Benz AG für die TBA Marienfelde.


Entwickelt für: Mercedes-Benz Technische Berufsausbildung Marienfelde
Letzte Aktualisierung: 2025-01-05
Version: 1.1

Kürzlich behobene Probleme

Shutdown- und Cleanup-Verbesserungen

Problem: Die Anwendung hatte Probleme beim ordnungsgemäßen Herunterfahren mit hängenden Prozessen und inkonsistenten Zuständen.

Lösung: Implementierung eines zentralen Shutdown-Managers mit:

  • Koordiniertes Shutdown: Alle Komponenten werden in der richtigen Reihenfolge gestoppt
  • Timeout-Management: Verhindert hängende Cleanup-Operationen
  • Prioritäts-basierte Ausführung: Kritische Komponenten werden zuerst gestoppt
  • Robuste Fehlerbehandlung: Einzelfehler stoppen nicht das gesamte Shutdown
  • Plattform-spezifisch: Optimiert für Windows und Unix/Linux

Technische Details:

  • Neuer utils/shutdown_manager.py koordiniert alle Cleanup-Operationen
  • Queue Manager, Scheduler und Datenbank-Cleanup werden zentral verwaltet
  • Reduzierte Shutdown-Zeit von >30s auf <10s in normalen Fällen
  • Detaillierte Logs für besseres Debugging

Dokumentation: Siehe docs/SHUTDOWN_VERBESSERUNGEN.md für vollständige Details.