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

509 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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