18 KiB
MYP – Manage Your Printer
Vernetzte 3D-Druck-Reservierungsplattform mit IoT-Anbindung und zentraler Verwaltungsoberfläche
Dokumentation der betrieblichen Projektarbeit
Fachinformatiker für digitale Vernetzung
Prüfungsbewerber: Till Tomczak
Ausbildungsbetrieb: Mercedes-Benz AG
Prüfungstermin: Sommer 2025
Bearbeitungszeitraum: 15. April – 20. Mai 2025
Projektumfang: 35 Stunden
Inhaltsverzeichnis
- Einleitung
- Projektplanung
- Analyse und Bewertung
- Systemarchitektur und Schnittstellenkonzeption
- Umsetzung
- Test und Optimierung
- Projektabschluss
- Anlagen
1. Einleitung
1.1 Ausgangssituation und Problemstellung
Die Technische Berufsausbildungsstätte (TBA) der Mercedes-Benz AG am Standort Berlin verfügt über sechs 3D-Drucker verschiedener Hersteller (Prusa, Anycubic), die als wichtige Ressource für die praktische Ausbildung dienen. Diese Geräte weisen jedoch erhebliche technische Limitierungen auf: Sie verfügen weder über Netzwerkschnittstellen noch über einheitliche Steuerungsmöglichkeiten.
Das bestehende Reservierungssystem basierte auf einem analogen Whiteboard, was zu systematischen Problemen führte:
- Doppelbuchungen durch unkoordinierte Reservierungen
- Ineffiziente Energienutzung durch vergessene manuelle Aktivierung/Deaktivierung
- Fehlende Dokumentation der Nutzungszeiten und Verantwortlichkeiten
- Keine zentrale Übersicht über Verfügbarkeiten und Auslastung
Ein vorhandener Frontend-Prototyp des ehemaligen Auszubildenden Torben Haack bot eine moderne Benutzeroberfläche, verfügte jedoch über keine funktionsfähige Backend-Anbindung zur praktischen Nutzung.
1.2 Projektziele
Das Projekt "MYP – Manage Your Printer" zielt auf die vollständige Digitalisierung des 3D-Drucker-Reservierungsprozesses durch die Etablierung cyberphysischer Kommunikation mit den Hardwarekomponenten ab.
Primäre Ziele:
- Entwicklung einer webbasierten Reservierungsplattform
- Integration automatischer Hardware-Steuerung via IoT-Komponenten
- Implementierung einer zentralen Verwaltungsoberfläche
- Etablierung robuster Authentifizierung und Rechteverwaltung
Sekundäre Ziele:
- Optimierung der Energieeffizienz durch automatisierte Steuerung
- Bereitstellung von Nutzungsstatistiken und Monitoring
- Gewährleistung herstellerunabhängiger Lösung
- Einhaltung unternehmensinterner Sicherheitsrichtlinien
1.3 Projektabgrenzung
Im Projektumfang enthalten:
- Webportal-Entwicklung (Frontend und Backend)
- WLAN-Integration der Raspberry Pi-Plattform
- Datenbankaufbau für Reservierungsverwaltung
- IoT-Integration via Smart-Plug-Technologie
- Authentifizierung und Autorisierung
- Test der Schnittstellen und Netzwerkverbindungen
Ausgeschlossen aus dem Projektumfang:
- Direkte Kommunikation mit 3D-Druckern (fehlende Schnittstellen)
- Integration in das unternehmensweite Intranet (Zeitrestriktionen)
- Übertragung von Druckdaten oder Statusüberwachung der Drucker
- Umfangreiche Hardware-Modifikationen der bestehenden Geräte
1.4 Projektumfeld und betriebliche Schnittstellen
Das Projekt wurde im Rahmen der Ausbildung zum Fachinformatiker für digitale Vernetzung in der TBA durchgeführt. Die organisatorischen Rahmenbedingungen wurden durch konzerninternen Sicherheitsrichtlinien und IT-Governance-Prozesse geprägt.
Zentrale Schnittstellen:
- IT-Abteilung: Genehmigung von Netzwerkkonfigurationen und SSL-Zertifikaten
- Ausbildungsleitung: Fachliche Betreuung und Ressourcenbereitstellung
- Endanwender: Auszubildende und Ausbildungspersonal der TBA
- Hardware-Integration: Smart-Plug-Systeme als IoT-Gateway zu den 3D-Druckern
2. Projektplanung
2.1 Zeitplanung nach V-Modell
Die Projektplanung folgte dem V-Modell mit agilen Elementen, unterteilt in fünf Sprints à eine Woche:
Phase | Zeitraum | Aufwand | Schwerpunkt |
---|---|---|---|
Sprint 1 | 15.-19. April | 6h | Projektplanung und Analyse |
Sprint 2 | 22.-26. April | 12h | Analyse und Bewertung der Systemarchitektur |
Sprint 3 | 29. April - 3. Mai | 6h | Entwicklung der Systemarchitektur |
Sprint 4 | 6.-10. Mai | 14h | Umsetzung (Implementation) |
Sprint 5 | 13.-17. Mai | 10h | Test, Optimierung und Dokumentation |
2.2 Ressourcenplanung
Hardware-Komponenten:
- Raspberry Pi 5 (8GB RAM, 128GB Speicher) als zentrale Serverplattform
- 6× TP-Link Tapo P110 Smart-Plugs für IoT-Integration
- 19-Zoll-Serverschrank für professionelle Unterbringung
- Netzwerk-Infrastruktur (Switch, Verkabelung)
Software-Stack:
- Backend: Python 3.11, Flask 2.3, SQLAlchemy 2.0, SQLite
- Frontend: Next.js (Prototyp-Basis), TailwindCSS, JavaScript
- System: Raspbian OS, systemd-Services, OpenSSL
- IoT-Integration: PyP100-Bibliothek für Smart-Plug-Kommunikation
Kostenrahmen: Unter 600 Euro (inklusive privat finanzierter Ergänzungskomponenten)
2.3 Qualitätssicherungsplanung
Testumgebung:
- VirtualBox-basierte Entwicklungsumgebung für Backend-Tests
- Hardware-in-the-Loop-Tests mit echten Smart-Plugs
- Separate Produktionsumgebung auf Raspberry Pi
Teststrategien:
- Unit-Tests: Isolierte Tests kritischer Komponenten (85% Code-Coverage)
- Integrationstests: Schnittstellen zwischen Frontend, Backend und IoT
- Systemtests: End-to-End-Szenarien mit kompletten Anwendungsfällen
- Sicherheitstests: Penetrationstests gegen OWASP Top 10
3. Analyse und Bewertung
3.1 Bewertung der vorhandenen Systemarchitektur
Ist-Zustand:
- Frontend-Prototyp (Next.js) ohne Backend-Anbindung
- Isolierte 3D-Drucker ohne Netzwerkfähigkeit
- Analoge Reservierungsverwaltung (Whiteboard)
- Raspberry Pi 4 als ungenutzter Server
Identifizierte Defizite:
- Fehlende cyberphysische Integration
- Keine zentrale Datenhaltung
- Ineffiziente manuelle Prozesse
- Sicherheitslücken durch analoge Verwaltung
3.2 Bewertung der heterogenen IT-Landschaft
Die IT-Infrastruktur der TBA präsentierte sich als segmentierte Umgebung mit verschiedenen VLANs und Sicherheitszonen. Die 3D-Drucker verschiedener Hersteller erforderten eine herstellerunabhängige Abstraktionsebene.
Lösungsansatz: IoT-Integration über Smart-Plugs ermöglicht universelle Steuerung unabhängig vom Druckermodell durch Abstraktion auf Stromversorgungsebene.
3.3 Analyse der IT-sicherheitsrelevanten Bedingungen
Sicherheitsanforderungen:
- Keine permanente Internetverbindung
- Isoliertes Netzwerksegment für IoT-Komponenten
- Selbstsignierte SSL-Zertifikate (kein Let's Encrypt möglich)
- Compliance mit Mercedes-Benz IT-Sicherheitsrichtlinien
Implementierte Sicherheitsmaßnahmen:
- bcrypt-Passwort-Hashing (Cost-Faktor 12)
- CSRF-Schutz und Session-Management
- Rate-Limiting gegen Brute-Force-Angriffe
- Firewall-Regeln mit Port-Beschränkung
- Input-Validation nach OWASP-Standards
3.4 Anforderungsgerechte Auswahl der Übertragungssysteme
Evaluierte Optionen:
- Direkte 3D-Drucker-Integration: Nicht möglich (fehlende Schnittstellen)
- Cloud-basierte Lösung: Ausgeschlossen (Offline-Anforderung)
- Smart-Plug-Integration: Gewählte Lösung
Technische Herausforderung: TP-Link Tapo P110 verfügen über keine dokumentierte API. Reverse-Engineering mittels Wireshark-Protokollanalyse war erforderlich.
Lösung: PyP100-Python-Bibliothek implementiert das proprietäre Kommunikationsprotokoll und ermöglicht lokale Steuerung ohne Cloud-Abhängigkeit.
4. Systemarchitektur und Schnittstellenkonzeption
4.1 Gesamtsystemarchitektur
┌─────────────────┐ HTTPS ┌─────────────────┐ WLAN ┌─────────────────┐
│ Web-Client │◄────────────►│ Raspberry Pi │◄───────────►│ Smart-Plugs │
│ (Browser) │ │ MYP-Server │ │ (IoT-Layer) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
┌────▼────┐ ┌────▼────┐
│ SQLite │ │3D-Drucker│
│Database │ │(6 Geräte)│
└─────────┘ └─────────┘
4.2 Technische Systemarchitektur
Schichtenmodell:
- Präsentationsschicht: Web-Frontend (HTTPS/Port 443)
- Anwendungsschicht: Flask-Backend mit REST-API
- Geschäftslogikschicht: Reservierungsmanagement, Scheduler
- Datenhaltungsschicht: SQLite-Datenbank
- IoT-Integrationsschicht: Smart-Plug-Kommunikation
- Hardwareschicht: 3D-Drucker (stromgesteuert)
4.3 Schnittstellenkonzeption
REST-API-Design:
- Authentifizierung:
/api/auth/
(Login, Logout, Session-Management) - Benutzerverwaltung:
/api/users/
(CRUD-Operationen) - Druckerverwaltung:
/api/printers/
(Status, Konfiguration) - Reservierungen:
/api/jobs/
(Buchung, Verwaltung, Scheduling) - Monitoring:
/api/monitoring/
(Energieverbrauch, Statistiken)
IoT-Schnittstelle:
- Protokoll: HTTP/TCP über WLAN
- Authentifizierung: Session-basiert mit dynamischen Tokens
- Operationen: Power On/Off, Status-Abfrage, Energiemessung
- Fehlerbehandlung: Retry-Mechanismen, Timeout-Handling
4.4 Datenmodell
Kernentitäten:
User
: Benutzerkonten mit Rollen und BerechtigungenPrinter
: 3D-Drucker-Definitionen mit Smart-Plug-ZuordnungJob
: Reservierungen mit Zeitfenstern und StatusSmartPlug
: IoT-Geräte-Konfiguration und ZustandsverwaltungEnergyLog
: Energieverbrauchsdaten für Monitoring
5. Umsetzung
5.1 Implementierung der Backend-Infrastruktur
Flask-Anwendungsstruktur:
# Modulare Blueprint-Architektur
├── app.py # Hauptanwendung mit HTTPS-Konfiguration
├── models.py # SQLAlchemy-Datenmodelle
├── blueprints/ # Funktionale Module
│ ├── auth.py # Authentifizierung
│ ├── users.py # Benutzerverwaltung
│ ├── printers.py # Druckerverwaltung
│ └── jobs.py # Reservierungslogik
└── utils/ # Hilfsfunktionen
├── scheduler.py # Zeitgesteuerte Operationen
└── smart_plug.py # IoT-Integration
Zentrale Implementierungsherausforderungen:
-
Smart-Plug-Integration: PyP100-Bibliothek erwies sich als einzige funktionsfähige Lösung nach mehreren gescheiterten Ansätzen
-
Thread-sichere Scheduler-Implementation:
class SmartPlugScheduler:
def __init__(self):
self.scheduler = BackgroundScheduler()
self.lock = threading.Lock()
def schedule_job(self, job_id, start_time, duration):
with self.lock:
# Thread-sichere Jobplanung
self.scheduler.add_job(...)
- Robuste Fehlerbehandlung:
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
def toggle_smart_plug(plug_ip, state):
try:
plug = Tapo(plug_ip, username, password)
return plug.on() if state else plug.off()
except Exception as e:
logger.error(f"Smart-Plug-Fehler: {e}")
raise
5.2 IoT-Integration und Hardware-Steuerung
Smart-Plug-Konfiguration:
- Statische IP-Adressen: 192.168.0.100-105
- Lokale Authentifizierung ohne Cloud-Service
- Energiemonitoring für Verbrauchsoptimierung
Kommunikationsprotokoll:
# Vereinfachte Smart-Plug-Abstraktion
class SmartPlugManager:
def __init__(self, plug_configs):
self.plugs = {id: Tapo(ip, user, pass) for id, ip in plug_configs.items()}
async def control_printer(self, printer_id, action):
plug = self.plugs[printer_id]
return await plug.on() if action == 'start' else await plug.off()
5.3 Sicherheitsimplementierung
Authentifizierung und Autorisierung:
# bcrypt-Passwort-Hashing
password_hash = bcrypt.generate_password_hash(password, rounds=12)
# Session-Management mit Flask-Login
@login_required
def protected_endpoint():
return jsonify({"user_id": current_user.id})
# CSRF-Schutz
csrf.init_app(app)
Rate-Limiting:
# Brute-Force-Schutz
@limiter.limit("5 per minute")
@app.route('/api/auth/login', methods=['POST'])
def login():
# Login-Logik mit Begrenzung
5.4 Systemkonfiguration und Deployment
Systemd-Service-Konfiguration:
[Unit]
Description=MYP HTTPS Backend Service
After=network.target
[Service]
Type=simple
User=myp
WorkingDirectory=/opt/myp
ExecStart=/usr/bin/python3 app.py --production
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
SSL-Zertifikat-Management:
# Selbstsignierte Zertifikate für Offline-Betrieb
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
6. Test und Optimierung
6.1 Testdurchführung und -ergebnisse
Unit-Tests (85% Code-Coverage):
- Datenbankoperationen: Alle CRUD-Operationen erfolgreich
- API-Endpunkte: Validierung und Fehlerbehandlung getestet
- Smart-Plug-Integration: Mock-Tests für Hardware-Abstraktion
Integrationstests:
- Frontend-Backend-Kommunikation: HTTPS/REST-API vollständig funktional
- IoT-Hardware-Integration: Alle 6 Smart-Plugs erfolgreich ansteuerbar
- Scheduler-Funktionalität: Zeitgesteuerte Operationen präzise ausgeführt
Systemtests:
- End-to-End-Reservierungsszenarien: Vollständig automatisiert
- Gleichzeitige Benutzerzugriffe: Bis zu 10 parallele Sessions stabil
- Energiemonitoring: Verbrauchsdaten korrekt erfasst und visualisiert
Performance-Optimierungen:
- Hardware-Upgrade von Raspberry Pi 4 auf Pi 5 (Speicher: 4GB → 8GB)
- Datenbankindizierung für häufige Abfragen
- Caching-Strategien für Smart-Plug-Status
6.2 Sicherheitstests
Penetrationstests:
- SQL-Injection-Versuche: Erfolgreich abgewehrt durch Parameterisierung
- XSS-Angriffe: Input-Sanitization funktional
- CSRF-Attacken: Token-basierter Schutz wirksam
- Brute-Force-Tests: Rate-Limiting nach 5 Versuchen aktiv
6.3 Systemstabilität und Monitoring
Monitoring-Implementation:
# Systemüberwachung mit Logging
import logging
from logging.handlers import RotatingFileHandler
# Strukturiertes Logging für Debugging
logging.basicConfig(
handlers=[RotatingFileHandler('app.log', maxBytes=10000000, backupCount=10)],
level=logging.INFO,
format='%(asctime)s %(levelname)s %(name)s %(message)s'
)
Erkannte und behobene Probleme:
- Memory-Leaks bei lang laufenden Smart-Plug-Operationen
- Race Conditions im Scheduler bei simultanen Zugriffen
- SSL-Zertifikat-Probleme durch inkorrekte SAN-Konfiguration
7. Projektabschluss
7.1 Soll-Ist-Vergleich
Vollständig erreichte Ziele:
✅ Webbasierte Reservierungsplattform implementiert
✅ Automatische Hardware-Steuerung via IoT realisiert
✅ Zentrale Verwaltungsoberfläche bereitgestellt
✅ Robuste Authentifizierung und Rechteverwaltung
✅ WLAN-Integration der Raspberry Pi-Plattform
✅ Datenbankaufbau für Reservierungsverwaltung
✅ Test der Schnittstellen und Netzwerkverbindungen
Zusätzlich realisierte Features:
🔋 Energiemonitoring und Verbrauchsoptimierung
📊 Nutzungsstatistiken und Dashboard
🔒 Erweiterte Sicherheitsfeatures (Rate-Limiting, CSRF-Schutz)
🏗️ Kiosk-Modus für Werkstatt-Terminals
Abweichungen vom ursprünglichen Plan:
- Konsolidierung auf einen statt zwei Raspberry Pis (Kostenoptimierung)
- Hardware-Upgrade Pi 4 → Pi 5 (Performance-Anforderungen)
- Verschiebung der Intranet-Integration (Zeitrestriktionen)
7.2 Wirtschaftlichkeitsbetrachtung
Investitionskosten: < 600 Euro
Amortisation: < 6 Monate durch Energieeinsparungen
ROI: Eliminierung von Reservierungskonflikten und automatisierte Abschaltung
7.3 Nachhaltigkeit und Erweiterbarkeit
Modulare Systemarchitektur ermöglicht einfache Erweiterungen:
- Integration weiterer Gerätetypen (Lasercutter, CNC-Fräsen)
- Active Directory-Anbindung für Enterprise-Integration
- Machine Learning für Auslastungsprognosen
7.4 Projektergebnisse und Erkenntnisse
Das MYP-System transformiert erfolgreich die analoge 3D-Drucker-Verwaltung in ein modernes cyberphysisches System. Die Lösung demonstriert, wie durch kreative IoT-Integration auch legacy Hardware in moderne Systemlandschaften integriert werden kann.
Zentrale Erfolgsfaktoren:
- Pragmatische Abstraktion komplexer Hardware-Probleme
- Robuste Softwarearchitektur mit umfassender Fehlerbehandlung
- Berücksichtigung von Sicherheitsanforderungen von Projektbeginn an
Lessons Learned:
- Hardware-Kompatibilitätsprüfung vor Projektstart essentiell
- Backup-Strategien für kritische Konfigurationen unerlässlich
- Agile Anpassungsfähigkeit bei unvorhergesehenen Problemen
7.5 Formale Projektabnahme
Abnahmedatum: 2. Juni 2025
Abnehmer: Ausbildungsleitung TBA Mercedes-Benz AG
Status: Erfolgreich abgenommen und in Produktivbetrieb überführt
Bewertung der Ausbildungsleitung:
- Innovative Lösungsansätze für komplexe Integration
- Hohe technische Qualität der Implementation
- Praxistauglichkeit und Benutzerakzeptanz bestätigt
Anlagen
A1. Systemdokumentation
- Netzwerkdiagramme und Systemarchitektur
- API-Dokumentation (REST-Endpunkte)
- Datenbankschema (ER-Diagramme)
A2. Technische Dokumentation
- Installationsanleitung und Setup-Skripte
- Konfigurationsdateien (systemd, SSL, Firewall)
- Troubleshooting-Guide
A3. Testdokumentation
- Testprotokolle (Unit-, Integration-, Systemtests)
- Sicherheitstests (Penetrationstests)
- Performance-Benchmarks
A4. Benutzeroberfläche
- Screenshots der Weboberfläche
- Benutzerhandbuch
- Admin-Dokumentation
A5. Projektmanagement
- Zeiterfassung nach Projektphasen
- Kostenaufstellung
- Übergabeprotokoll
Projektstatistiken:
- Codezeilen: 9.000+ (Python/JavaScript)
- API-Endpunkte: 100+
- Testabdeckung: 85%
- Systemlaufzeit: 24/7 produktiv seit Inbetriebnahme