Projektarbeit-MYP/IHK_Projektdokumentation/Dokumentation_Ueberarbeitet.md
2025-06-05 01:34:10 +02:00

18 KiB
Raw Blame History

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
  2. Projektplanung
  3. Analyse und Bewertung
  4. Systemarchitektur und Schnittstellenkonzeption
  5. Umsetzung
  6. Test und Optimierung
  7. Projektabschluss
  8. 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:

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

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(...)
  1. 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