# 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 1. [Einleitung](#1-einleitung) 2. [Projektplanung](#2-projektplanung) 3. [Analyse und Bewertung](#3-analyse-und-bewertung) 4. [Systemarchitektur und Schnittstellenkonzeption](#4-systemarchitektur-und-schnittstellenkonzeption) 5. [Umsetzung](#5-umsetzung) 6. [Test und Optimierung](#6-test-und-optimierung) 7. [Projektabschluss](#7-projektabschluss) 8. [Anlagen](#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:** 1. **Direkte 3D-Drucker-Integration:** Nicht möglich (fehlende Schnittstellen) 2. **Cloud-basierte Lösung:** Ausgeschlossen (Offline-Anforderung) 3. **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:** 1. **Präsentationsschicht:** Web-Frontend (HTTPS/Port 443) 2. **Anwendungsschicht:** Flask-Backend mit REST-API 3. **Geschäftslogikschicht:** Reservierungsmanagement, Scheduler 4. **Datenhaltungsschicht:** SQLite-Datenbank 5. **IoT-Integrationsschicht:** Smart-Plug-Kommunikation 6. **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 Berechtigungen - `Printer`: 3D-Drucker-Definitionen mit Smart-Plug-Zuordnung - `Job`: Reservierungen mit Zeitfenstern und Status - `SmartPlug`: IoT-Geräte-Konfiguration und Zustandsverwaltung - `EnergyLog`: Energieverbrauchsdaten für Monitoring --- ## 5. Umsetzung ### 5.1 Implementierung der Backend-Infrastruktur **Flask-Anwendungsstruktur:** ```python # 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:** 1. **Smart-Plug-Integration:** PyP100-Bibliothek erwies sich als einzige funktionsfähige Lösung nach mehreren gescheiterten Ansätzen 2. **Thread-sichere Scheduler-Implementation:** ```python 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(...) ``` 3. **Robuste Fehlerbehandlung:** ```python @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:** ```python # 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:** ```python # 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:** ```python # 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:** ```ini [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:** ```bash # 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:** ```python # 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