🎉 Updated IHK Project Documentation Markdown file for clarity and consistency 📚💄

This commit is contained in:
Till Tomczak 2025-06-03 15:19:28 +02:00
parent 58a7f0eb3c
commit c55b260ebb

View File

@ -223,433 +223,581 @@ differenziert.
## 1.3 Projektabgrenzung ## 1.3 Projektabgrenzung
Der Projektumfang wurde pragmatisch auf die Umsetzung einer Der Projektumfang wurde durchaus pragmatisch, möchte man meinen auf die praktische
funktionsfähigen Lösung fokussiert. Eine umfassende Daten- und Umsetzung einer funktionsfähigen Lösung fokussiert. Eine umfassende
Prozessanalyse wurde zugunsten der technischen Realisierung Daten- und Prozessanalyse wurde bewusst zugunsten der technischen
zurückgestellt, um ein produktiv einsetzbares System innerhalb des Realisierung zurückgestellt; diese Priorisierung ermöglichte die
Zeitrahmens von fünf Wochen fertigzustellen. Fertigstellung eines produktiv einsetzbaren Systems innerhalb des knapp
bemessenen Zeitrahmens von fünf Wochen.
Eine direkte Kommunikation mit den 3D-Druckern zur Übertragung von Eine direkte Kommunikation mit den 3D-Druckern zur Übertragung von
Druckdaten oder zur Statusüberwachung wurde aus dem Projektumfang Druckdaten oder zur Statusüberwachung wurde kategorisch aus dem
ausgeschlossen. Die fehlenden Schnittstellen der Geräte hätten Projektumfang ausgeschlossen. Die fehlenden technischen Schnittstellen
umfangreiche Hardware-Modifikationen erfordert, die weder zeitlich noch der vorhandenen Geräte hätten umfangreiche Hardware-Modifikationen
wirtschaftlich vertretbar gewesen wären. erfordert, die weder zeitlich noch wirtschaftlich vertretbar gewesen
wären ganz zu schweigen von den Garantieverlusten, die solche
Eingriffe unweigerlich nach sich gezogen hätten.
Die Integration in übergeordnete ERP-Systeme oder das unternehmensweite Ebenfalls nicht Teil des Projekts war die Integration in übergeordnete
Intranet war ebenfalls nicht Teil des Projekts. Diese Anbindungen hätten ERP-Systeme oder das unternehmensweite Intranet. Diese Anbindungen
zusätzliche Genehmigungsprozesse erfordert, die den Projektrahmen hätten zusätzliche Genehmigungsprozesse und Sicherheitsprüfungen
überschritten hätten. Stattdessen wurde eine autarke Lösung entwickelt, erfordert, die den Projektrahmen bei weitem überschritten hätten.
die alle erforderlichen Funktionen lokal bereitstellt. Stattdessen wurde eine autarke Lösung entwickelt, die alle
erforderlichen Funktionen lokal bereitstellt ein Ansatz, der sich im
Nachhinein als goldrichtig erweisen sollte.
## 1.4 Projektumfeld ## 1.4 Projektumfeld
Das Projekt wurde im Rahmen meiner Ausbildung zum Fachinformatiker für Das Projekt wurde im Rahmen meiner Ausbildung zum Fachinformatiker für
digitale Vernetzung bei der Mercedes-Benz AG durchgeführt. Die digitale Vernetzung bei der Mercedes-Benz AG durchgeführt. Die
Technische Berufsausbildungsstätte bot dabei die vorhandene Technische Berufsausbildungsstätte bot dabei die vorhandene
Infrastruktur und fachliche Unterstützung durch die Ausbildungsleitung. Infrastruktur und wenn auch manchmal zögerliche fachliche
Unterstützung durch die Ausbildungsleitung.
Die Zusammenarbeit mit Torben Haack erfolgte in Form einer sequenziellen Die Zusammenarbeit mit Torben Haack erfolgte in Form einer sequenziellen
Weiterentwicklung. Da Herr Haack seine Ausbildung bereits abgeschlossen Weiterentwicklung; ein Umstand, der sich aus der zeitlichen Versetzung
hatte und ich erst nach IHK-Zulassung mit der Projektarbeit beginnen unserer Ausbildungsphasen ergab. Da Herr Haack seine Ausbildung bereits
durfte, konnte ich auf seinen Frontend-Prototyp aufbauen und diesen zu abgeschlossen hatte und ich erst nach offizieller IHK-Zulassung mit der
einer Gesamtlösung erweitern. Projektarbeit beginnen durfte, konnte ich auf seinen Frontend-Prototyp
aufbauen und diesen zu einer Gesamtlösung erweitern eine Konstellation,
die sich als Segen und Fluch zugleich erweisen sollte.
Die organisatorischen Rahmenbedingungen wurden durch die Die organisatorischen Rahmenbedingungen wurden maßgeblich durch die
Sicherheitsrichtlinien und IT-Governance der Mercedes-Benz AG geprägt. Sicherheitsrichtlinien und IT-Governance der Mercedes-Benz AG geprägt.
Jede technische Entscheidung musste die Vorgaben bezüglich Jede technische Entscheidung musste die Vorgaben bezüglich
Netzwerksicherheit, Datenschutz und Compliance berücksichtigen. Die Netzwerksicherheit, Datenschutz und Compliance berücksichtigen. Die
Beantragung notwendiger Administratorrechte und die Genehmigung Beantragung notwendiger Administratorrechte und die Genehmigung
selbstsignierter SSL-Zertifikate erforderten umfangreiche selbstsignierter SSL-Zertifikate erforderten umfangreiche
Abstimmungsprozesse mit der IT-Abteilung. Abstimmungsprozesse mit der IT-Abteilung Prozesse, die sich teilweise
über Wochen hinzogen und meine Geduld auf eine harte Probe stellten.
## 1.5 Betriebliche Schnittstellen ## 1.5 Betriebliche Schnittstellen
Die Analyse der betrieblichen Schnittstellen offenbarte ein komplexes Die Analyse der betrieblichen Schnittstellen offenbarte ein komplexes
Geflecht von Abhängigkeiten. Das System musste mit der bestehenden Geflecht von Abhängigkeiten und Anforderungen. Primär musste das System
Netzwerkinfrastruktur der TBA harmonieren, ohne Sicherheitsrichtlinien mit der bestehenden Netzwerkinfrastruktur der TBA harmonieren, ohne
zu verletzen. Die Schnittstelle zur IT-Abteilung erwies sich als dabei Sicherheitsrichtlinien zu verletzen. Die Schnittstelle zur
kritisch, da jede Netzwerkkonfiguration und Port-Freischaltung einer IT-Abteilung erwies sich als besonders kritisch, da jede
expliziten Genehmigung bedurfte. Netzwerkkonfiguration und jede Port-Freischaltung einer expliziten
Genehmigung bedurfte ein bürokratischer Tanz, der Fingerspitzengefühl
erforderte.
Die Benutzerschnittstelle wurde so gestaltet, dass sowohl technisch Die Benutzerschnittstelle musste so gestaltet werden, dass sowohl
versierte Auszubildende als auch weniger IT-affine Nutzer das System technisch versierte Auszubildende als auch weniger IT-affine Nutzer das
intuitiv bedienen können. Dies erforderte eine Balance zwischen System intuitiv bedienen können. Dies erforderte eine Balance zwischen
Funktionsumfang und Benutzerfreundlichkeit. Funktionsumfang und Benutzerfreundlichkeit eine Balance, die nicht
immer leicht zu finden war, aber letztendlich gelang.
Die Schnittstelle zu den Smart-Plugs stellte eine besondere Besonders herausfordernd gestaltete sich die Schnittstelle zu den
Herausforderung dar. Die TAPO P110-Steckdosen von TP-Link verfügten über Smart-Plugs. Die ursprüngliche Annahme, dass sich die TAPO P110-Steckdosen
eine proprietäre, undokumentierte API, die erheblichen von TP-Link problemlos integrieren lassen würden, erwies sich als
Reverse-Engineering-Aufwand erforderte. erstaunlich naiv. Die proprietäre API der Geräte war nicht nur
undokumentiert, sondern geradezu verschleiert ein Umstand, der
erheblichen Reverse-Engineering-Aufwand erforderte und mich in die
Tiefen der Netzwerkanalyse führte.
## 1.6 Analyse der IT-sicherheitsrelevante Bedingungen ## 1.6 Analyse der IT-sicherheitsrelevante Bedingungen
Die Sicherheitsanalyse offenbarte multiple Herausforderungen. Das System Die Sicherheitsanalyse offenbarte multiple Herausforderungen, die es zu
musste in einem isolierten Netzwerksegment betrieben werden, ohne die bewältigen galt. Das System musste in einem isolierten Netzwerksegment
Funktionalität einzuschränken. Die Anforderung, keine permanente betrieben werden, ohne dabei die Funktionalität einzuschränken. Die
Internetverbindung zu etablieren, schloss Cloud-basierte Lösungen aus Anforderung, keine permanente Internetverbindung zu etablieren, schloss
und schränkte die Auswahl geeigneter Smart-Plugs erheblich ein. Cloud-basierte Lösungen kategorisch aus ein Umstand, der die Auswahl
geeigneter Smart-Plugs erheblich einschränkte und mich zu kreativen
Lösungsansätzen zwang.
Die Authentifizierung und Autorisierung wurde robust implementiert, ohne Die Authentifizierung und Autorisierung musste robust implementiert
die Benutzerfreundlichkeit zu beeinträchtigen. Die Entscheidung für werden, ohne die Benutzerfreundlichkeit zu beeinträchtigen ein
klassisches Dilemma der IT-Sicherheit. Die Entscheidung für
bcrypt-basiertes Password-Hashing mit einem Cost-Faktor von 12 stellte bcrypt-basiertes Password-Hashing mit einem Cost-Faktor von 12 stellte
einen vernünftigen Kompromiss zwischen Sicherheit und Performance dar. einen vernünftigen Kompromiss zwischen Sicherheit und Performance auf
dem ressourcenbeschränkten Raspberry Pi dar.
Besondere Aufmerksamkeit erforderte die Absicherung der API-Endpunkte. Besondere Aufmerksamkeit erforderte die Absicherung der API-Endpunkte.
Jeder Endpunkt wurde gegen gängige Angriffsvektoren wie SQL-Injection, Jeder Endpunkt musste gegen gängige Angriffsvektoren wie SQL-Injection,
Cross-Site-Scripting und CSRF-Attacken geschützt. Die Implementierung Cross-Site-Scripting und CSRF-Attacken geschützt werden. Die
eines Rate-Limiting-Mechanismus verhindert Brute-Force-Angriffe auf die Implementierung eines Rate-Limiting-Mechanismus verhindert zudem
Authentifizierungsschnittstelle. Brute-Force-Angriffe auf die Authentifizierungsschnittstelle eine
Maßnahme, die sich später als weitsichtig erweisen sollte.
## 1.7 Darstellung der vorhandenen Systemarchitektur ## 1.7 Darstellung der vorhandenen Systemarchitektur
Die vorgefundene Systemarchitektur bestand aus isolierten Komponenten Die vorgefundene Systemarchitektur wenn man sie denn überhaupt so
ohne Integration. Die 3D-Drucker operierten als Insellösungen, verbunden nennen möchte bestand aus isolierten Komponenten ohne jegliche
nur durch ihre physische Nähe und das gemeinsame Whiteboard. Der Integration. Die 3D-Drucker operierten als Insellösungen, verbunden
lediglich durch ihre physische Nähe und das gemeinsame Whiteboard. Der
Frontend-Prototyp von Torben Haack existierte als Docker-Container auf Frontend-Prototyp von Torben Haack existierte als Docker-Container auf
einem Entwicklungsserver, ohne Anbindung an reale Funktionen. einem Entwicklungsserver, ohne Anbindung an reale Daten oder Funktionen
ein digitales Potemkinsches Dorf, wenn man so will.
Die Netzwerkinfrastruktur der TBA basierte auf einem segmentierten Die Netzwerkinfrastruktur der TBA basierte auf einem segmentierten
Ansatz mit verschiedenen VLANs für unterschiedliche Geräteklassen. Die Ansatz mit verschiedenen VLANs für unterschiedliche Geräteklassen. Die
3D-Drucker waren mangels Netzwerkfähigkeit nicht in diese Struktur 3D-Drucker waren mangels Netzwerkfähigkeit nicht in diese Struktur
integriert. Ein Raspberry Pi 5 mit 8 GB RAM und 128 GB Speicher sollte integriert. Der bereitgestellte Raspberry Pi 4 (der sich später als
als zentrale Plattform für das MYP-System dienen. unterdimensioniert erweisen und durch einen Pi 5 ersetzt werden sollte)
fungierte als zentrale Plattform für das MYP-System.
Die Analyse ergab, dass eine grundlegende Neukonzeption der Architektur Die Analyse ergab, dass eine grundlegende Neukonzeption der Architektur
erforderlich war. Die Lösung musste die isolierten Komponenten zu einem erforderlich war. Die Lösung musste die isolierten Komponenten zu einem
kohärenten System verbinden, ohne die bestehenden Sicherheitsrichtlinien kohärenten System verbinden, ohne dabei die bestehenden
zu verletzen. Der gewählte Ansatz über Smart-Plugs stellte einen Sicherheitsrichtlinien zu verletzen. Der gewählte Ansatz die Steuerung
eleganten Kompromiss zwischen technischer Machbarkeit und praktischem über Smart-Plugs stellte einen eleganten Kompromiss zwischen
Nutzen dar. technischer Machbarkeit und praktischem Nutzen dar; eine Lösung, die in
ihrer Simplizität genial war.
# 2. Projektplanung # 2. Projektplanung
## 2.1 Terminplanung ## 2.1 Terminplanung
Die Projektplanung folgte einem agilen Ansatz nach Scrum-Prinzipien. Die Die Projektplanung folgte einem agilen Ansatz nach Scrum-Prinzipien
Gesamtprojektdauer von fünf Wochen (15. April bis 20. Mai 2025) wurde in eine Entscheidung, die sich angesichts der zahlreichen Unwägbarkeiten
fünf einwöchige Sprints unterteilt, wobei jeder Sprint spezifische Ziele als goldrichtig erweisen sollte. Die Gesamtprojektdauer von fünf Wochen
verfolgte. (15. April bis 20. Mai 2025) wurde in fünf einwöchige Sprints
unterteilt, wobei jeder Sprint seine eigenen Herausforderungen und
ja auch Überraschungen bereithielt.
### Sprint 1 (15.-19. April 2025) ### Sprint 1 (15.-19. April 2025)
Der erste Sprint widmete sich der Analyse des bestehenden Prototyps und Der erste Sprint widmete sich der Analyse des bestehenden Prototyps und
der Definition der Erweiterungspunkte. Die Evaluierung der der Definition der Erweiterungspunkte. Die Evaluierung der
Frontend-Codebasis offenbarte eine solide Struktur. Die Spezifikation Frontend-Codebasis offenbarte eine solide, wenn auch stellenweise
der erforderlichen API-Endpunkte gestaltete sich umfangreicher als überkomplexe Struktur. Die Spezifikation der erforderlichen
erwartet über 100 Endpunkte wurden identifiziert. Der kritische API-Endpunkte gestaltete sich umfangreicher als erwartet über 100
Meilenstein war die Etablierung der Kommunikation mit den Smart-Plugs, Endpunkte wurden identifiziert, was mich zunächst erschaudern ließ. Der
was zunächst mit der PyP100-Bibliothek scheiterte. kritische Meilenstein dieses Sprints war die erfolgreiche Etablierung
der Kommunikation mit den Smart-Plugs über die PyP100-Bibliothek; ein
Vorhaben, das zunächst kläglich scheiterte.
### Sprint 2 (22.-26. April 2025) ### Sprint 2 (22.-26. April 2025)
Im zweiten Sprint lag der Fokus auf dem Aufbau der Im zweiten Sprint lag der Fokus auf dem Aufbau der
Backend-Infrastruktur. Die Beantragung der erforderlichen Backend-Infrastruktur. Die Beantragung der erforderlichen
Administratorrechte erwies sich als zeitaufwändig. Parallel begannen die Administratorrechte erwies sich als bürokratischer Marathon durch die
ersten Experimente mit Wireshark, um das Kommunikationsprotokoll der Instanzen der Mercedes-Benz AG. Parallel dazu begannen die ersten
Smart-Plugs zu entschlüsseln, da die PyP100-Bibliothek nicht Experimente mit Wireshark, um das Kommunikationsprotokoll der
funktionierte. Smart-Plugs zu entschlüsseln eine Notwendigkeit, die sich aus der
mangelhaften Dokumentation der PyP100-Bibliothek ergab und mich in die
Rolle eines digitalen Detektivs drängte.
### Sprint 3 (29. April - 3. Mai 2025) ### Sprint 3 (29. April - 3. Mai 2025)
Der dritte Sprint sollte die Integration von Frontend und Backend Der dritte Sprint sollte die Integration von Frontend und Backend
realisieren. Die Verbindung zwischen den Komponenten scheiterte realisieren. Stattdessen mutierte er zu einer Woche der technischen
Herausforderungen: Die Verbindung zwischen den Komponenten scheiterte
wiederholt, die genehmigten SSL-Zertifikate gingen durch einen wiederholt, die genehmigten SSL-Zertifikate gingen durch einen
Neuinstallationsprozess verloren, und die Einarbeitung in die unglücklichen Neuinstallationsprozess verloren (ein Moment, der mich
die Wichtigkeit von Backups lehrte), und die Einarbeitung in die
unternehmensspezifischen Implementierungen von GitHub OAuth und npm unternehmensspezifischen Implementierungen von GitHub OAuth und npm
erforderte zusätzliche Zeit. verschlang wertvolle Zeit.
### Sprint 4 (6.-10. Mai 2025) ### Sprint 4 (6.-10. Mai 2025)
Ursprünglich für Optimierungen vorgesehen, wurde dieser Sprint zur Ursprünglich für Optimierungen vorgesehen, wandelte sich dieser Sprint
Entwicklung einer Full-Stack-Notlösung umfunktioniert. Der Zeitdruck zur Rettungsmission. Der Zeitdruck erzwang pragmatische Entscheidungen
erzwang pragmatische Entscheidungen. In intensiven Coding-Sessions wurde und die Konzentration auf essenzielle Funktionen. In marathonartigen
die Grundfunktionalität implementiert. Coding-Sessions wurde die Grundfunktionalität implementiert nicht
unbedingt elegant, aber funktional; ein klassischer Fall von "done is
better than perfect".
### Sprint 5 (13.-17. Mai 2025) ### Sprint 5 (13.-17. Mai 2025)
Der finale Sprint diente der Fehlerbehebung und Systemstabilisierung. Der finale Sprint diente der Fehlerbehebung und Systemstabilisierung.
Die geplanten Schulungen wurden auf die Nach-Projektphase verschoben. Die ursprünglich geplanten Schulungen fielen dem Zeitdruck zum Opfer.
Stattdessen wurde an kritischen Bugfixes gearbeitet und die Stattdessen wurde fieberhaft an kritischen Bugfixes gearbeitet und die
Projektdokumentation erstellt. Projektdokumentation erstellt letztere teilweise in nächtlichen
Sessions, begleitet von übermäßigem Koffeinkonsum.
## 2.2 Ressourcenplanung ## 2.2 Ressourcenplanung
Die Ressourcenplanung gestaltete sich als Balanceakt zwischen Die Ressourcenplanung gestaltete sich als Balanceakt zwischen
technischen Anforderungen und budgetären Beschränkungen. Die technischen Anforderungen und budgetären Beschränkungen. Die
Hardware-Ausstattung wurde sorgfältig ausgewählt. Hardware-Ausstattung wurde sorgfältig und doch pragmatisch
ausgewählt.
Als zentrale Serverplattform diente ein Raspberry Pi 5 mit 8 GB RAM und Als zentrale Serverplattform diente zunächst ein Raspberry Pi 4 mit 4 GB
128 GB Speicher. Der ursprünglich geplante Raspberry Pi 4 erwies sich RAM eine Entscheidung, die sich schnell als Fehlkalkulation
als zu leistungsschwach für das ressourcenintensive Next.js-Frontend. herausstellte. Performance-Tests zeigten, dass das ressourcenhungrige
Next.js-Frontend die kleine Platine an ihre Grenzen brachte; ein
digitaler David gegen Goliath, nur dass David diesmal unterlag. Der
kurzfristige Wechsel auf einen Raspberry Pi 5 mit 8 GB RAM und 128 GB
Speicher löste die Performance-Probleme, verursachte aber zusätzliche
Kosten und was schwerer wog Zeitverzug.
Die sechs TP-Link Tapo P110 Smart-Plugs bildeten das Herzstück der Die sechs TP-Link Tapo P110 Smart-Plugs bildeten das Herzstück der
Hardware-Lösung. Jedes Gerät erhielt eine statische IP-Adresse im Hardware-Lösung. Jedes Gerät erhielt eine statische IP-Adresse im
Bereich 192.168.0.100 bis 192.168.0.106. Die proprietäre API erforderte Bereich 192.168.0.100 bis 192.168.0.106 eine scheinbar triviale
erheblichen Reverse-Engineering-Aufwand mittels Wireshark. Konfiguration, die sich später als entscheidend für die Systemstabilität
erweisen sollte. Die ursprüngliche Annahme, dass sich diese Geräte
problemlos integrieren lassen würden, erwies sich als optimistisch; die
proprietäre API erforderte erheblichen Reverse-Engineering-Aufwand
mittels Wireshark.
Zur professionellen Unterbringung der Hardware wurde ein Zur professionellen Unterbringung der Hardware wurde ein
19-Zoll-Serverschrank beschafft. Ergänzende Komponenten wie 19-Zoll-Serverschrank beschafft. Die internen Beschaffungsprozesse der
Lüftereinheiten und Kabelmanagement-Systeme wurden aus privaten Mitteln Mercedes-Benz AG erwiesen sich jedoch als so langwierig, dass ergänzende
finanziert, um eine professionelle Präsentation zu gewährleisten. Komponenten wie Lüftereinheiten und Kabelmanagement-Systeme aus eigener
Tasche finanziert wurden eine Investition in die professionelle
Präsentation des Projekts, die mir wichtig war.
Die Software-Architektur basierte auf Open-Source-Technologien: Python Die Software-Architektur basierte vollständig auf
3.11, Flask 2.3, SQLAlchemy 2.0 und SQLite. Diese Technologieauswahl Open-Source-Technologien: Python 3.11 als Programmiersprache, Flask 2.3
gewährleistete Unabhängigkeit von proprietären Lösungen und erfüllte die als Web-Framework, SQLAlchemy 2.0 für die Datenbankabstraktion und
Offline-Anforderung des Projekts. SQLite als Datenbanksystem. Diese Technologieauswahl gewährleistete
nicht nur Unabhängigkeit von proprietären Lösungen, sondern erfüllte
auch die strikte Offline-Anforderung des Projekts ein Umstand, der
sich als Segen erwies.
## 2.3 Planung der Qualitätssicherung ## 2.3 Planung der Qualitätssicherung
Das Qualitätssicherungskonzept orientierte sich am V-Modell. Für jede Das Qualitätssicherungskonzept orientierte sich am V-Modell eine
Entwicklungsphase wurden korrespondierende Testaktivitäten definiert. klassische, aber bewährte Herangehensweise. Für jede Entwicklungsphase
wurden korrespondierende Testaktivitäten definiert, wobei die Realität
diese saubere Trennung oft genug konterkarierte.
Auf Unit-Test-Ebene wurden alle kritischen Komponenten isoliert Auf Unit-Test-Ebene wurden alle kritischen Komponenten isoliert
getestet. Datenbankoperationen, API-Eingabevalidierung und getestet. Die Datenbankoperationen, API-Eingabevalidierung und
Kernfunktionen der Reservierungsverwaltung durchliefen umfangreiche Kernfunktionen der Reservierungsverwaltung durchliefen umfangreiche
Testszenarien. Besondere Aufmerksamkeit galt der Testszenarien. Besondere Aufmerksamkeit galt der
Smart-Plug-Kommunikation mit simulierten Netzwerkausfällen und Smart-Plug-Kommunikation, für die spezielle Testfälle entwickelt wurden
Timeout-Situationen. einschließlich simulierter Netzwerkausfälle und Timeout-Situationen;
Szenarien, die sich später als prophetisch erweisen sollten.
Die Integrationstests gestalteten sich komplex. Das Zusammenspiel Die Integrationstests gestalteten sich komplexer als erwartet. Das
zwischen Backend und Smart-Plugs erwies sich als fehleranfällig bei Zusammenspiel zwischen Backend und Smart-Plugs erwies sich als
gleichzeitigen Zugriffen. Systematische Tests mit verschiedenen fehleranfällig, insbesondere bei gleichzeitigen Zugriffen. Die
Eingabedaten deckten mehrere Sicherheitslücken auf, die nachträglich systematischen Tests mit verschiedenen Eingabedaten einschließlich
geschlossen wurden. bewusst invalider und potenziell schädlicher Inputs deckten mehrere
Sicherheitslücken auf, die nachträglich geschlossen werden mussten; ein
demütigender, aber lehrreicher Prozess.
Systemtests bildeten komplette Anwendungsszenarien ab. Ein typischer Systemtests bildeten komplette Anwendungsszenarien ab. Ein typischer
Testfall umfasste Benutzeranmeldung, Reservierungserstellung, Testfall umfasste die Benutzeranmeldung, Reservierungserstellung,
automatische Druckeraktivierung und anschließende Deaktivierung. Die automatische Druckeraktivierung zur geplanten Zeit und die anschließende
zeitliche Präzision der Schaltungen wurde dabei besonders überwacht. Deaktivierung. Die zeitliche Präzision der Schaltungen kritisch für
die Benutzerzufriedenheit wurde dabei besonders überwacht.
Performance-Tests offenbarten die Limitierungen des ursprünglich Performance-Tests auf der Zielplattform offenbarten die bereits
geplanten Raspberry Pi 4. Der Wechsel auf den Pi 5 löste diese Probleme. erwähnten Limitierungen des Raspberry Pi 4. Der Wechsel auf den Pi 5
Die finale Konfiguration bewältigte simultane Zugriffe mehrerer Nutzer löste diese Probleme, erforderte aber eine Wiederholung aller Tests. Die
und parallele Smart-Plug-Operationen ohne Einbußen. finale Konfiguration bewältigte selbst simultane Zugriffe mehrerer
Nutzer und parallele Smart-Plug-Operationen ohne nennenswerte Einbußen
ein Triumph der Optimierung.
## 2.4 Bewertung der heterogenen IT-Landschaft ## 2.4 Bewertung der heterogenen IT-Landschaft
Die IT-Landschaft der TBA präsentierte sich als heterogene Umgebung mit Die IT-Landschaft der TBA präsentierte sich als bunter Flickenteppich
verschiedenen Technologien. Die 3D-Drucker stammten von unterschiedlichen verschiedenster Technologien und Standards. Die 3D-Drucker stammten von
Herstellern mit inkompatiblen Steuerungssystemen. Das Netzwerk war in unterschiedlichen Herstellern mit inkompatiblen Steuerungssystemen. Das
multiple VLANs segmentiert. Netzwerk war in multiple VLANs segmentiert, wobei die Dokumentation
dieser Struktur bestenfalls als lückenhaft bezeichnet werden konnte
ein digitales Labyrinth ohne Ariadnefaden.
Die Herausforderung bestand darin, eine einheitliche Lösung für diese Die Herausforderung bestand darin, eine einheitliche Lösung für diese
heterogene Umgebung zu entwickeln. Der Ansatz über Smart-Plugs heterogene Umgebung zu entwickeln. Der Ansatz über Smart-Plugs erwies
abstrahierte die Unterschiede zwischen den Druckern auf die einfachste sich hier als Glücksgriff er abstrahierte die Unterschiede zwischen
Ebene: Stromversorgung. Diese Vereinfachung ermöglichte eine universelle den Druckern auf die simpelste mögliche Ebene: Strom an oder aus. Diese
Lösung, unabhängig vom Druckermodell. radikale Vereinfachung ermöglichte eine universelle Lösung, die
unabhängig vom Druckermodell funktionierte; ein Paradebeispiel für das
KISS-Prinzip in Aktion.
Die Integration in die bestehende Netzwerkinfrastruktur erforderte Die Integration in die bestehende Netzwerkinfrastruktur erforderte
diplomatisches Geschick. Die IT-Abteilung bestand auf strikter diplomatisches Geschick. Die IT-Abteilung bestand auf strikter
Segmentierung. Die Lösung ein dediziertes IoT-Subnetz für das Segmentierung, was die Kommunikation zwischen Komponenten
MYP-System stellte einen akzeptablen Kompromiss dar. verkomplizierte. Die Lösung ein dediziertes IoT-Subnetz für das
MYP-System stellte einen akzeptablen Kompromiss dar, der sowohl
Sicherheitsbedenken als auch funktionale Anforderungen berücksichtigte.
## 2.5 Anforderungsgerechte Auswahl der Übertragungssysteme ## 2.5 Anforderungsgerechte Auswahl der Übertragungssysteme
Die Auswahl der Übertragungssysteme wurde durch die Die Auswahl der Übertragungssysteme wurde maßgeblich durch die
Sicherheitsanforderungen bestimmt. Cloud-basierte Lösungen schieden aus. Sicherheitsanforderungen bestimmt. Cloud-basierte Lösungen schieden
Die Entscheidung für lokale HTTP/HTTPS-Kommunikation mit kategorisch aus, was die Optionen erheblich einschränkte. Die
selbstsignierten Zertifikaten war pragmatisch und effektiv. Entscheidung für lokale HTTP/HTTPS-Kommunikation mit selbstsignierten
Zertifikaten war pragmatisch, aber effektiv eine Notlösung, die zur
Dauerlösung wurde.
Die Kommunikation mit den Smart-Plugs erfolgte über das proprietäre Die Kommunikation mit den Smart-Plugs erfolgte über das proprietäre
TP-Link-Protokoll. Die anfänglichen Versuche mit der offiziellen TP-Link-Protokoll, das auf HTTP basiert. Die anfänglichen Versuche, die
Cloud-API scheiterten an den Sicherheitsrichtlinien. Die lokale API der offizielle Cloud-API zu nutzen, scheiterten an den
Geräte erforderte erheblichen Reverse-Engineering-Aufwand. Sicherheitsrichtlinien. Die Entdeckung, dass die Geräte auch eine lokale
API anboten, war ein Durchbruch allerdings einer, der erheblichen
Reverse-Engineering-Aufwand erforderte.
Mit Wireshark analysierte ich den Netzwerkverkehr der TAPO-App. Die Hier kam Wireshark ins Spiel; mein digitales Stethoskop, wenn man so
Erkenntnis, dass ein Session-Key erforderlich war, der sich bei jeder will. Zusammen mit der TAPO-App analysierte ich den Netzwerkverkehr, um
Anmeldung änderte, verkomplizierte die Integration. Nach tagelangen das Kommunikationsprotokoll zu entschlüsseln. Die Erkenntnis, dass ein
Experimenten fand ich ein alternatives Python-Modul auf GitHub, das die Session-Key erforderlich war, der sich bei jeder Anmeldung änderte,
lokale Kommunikation ermöglichte und die Session-Key-Problematik elegant verkomplizierte die Integration erheblich. Zunächst versuchte ich,
löste. diesen Key manuell abzufangen und in meine Anwendung zu integrieren
ein Ansatz, der funktionierte, aber offensichtlich nicht praxistauglich
war.
Nach tagelangen Experimenten und zahllosen Fehlversuchen stieß ich auf
ein alternatives Python-Modul, das die lokale Kommunikation mit den
TAPO-Geräten ermöglichte. Dieses Modul versteckt in den Tiefen von
GitHub löste die Session-Key-Problematik elegant und ermöglichte eine
stabile Integration; ein Fund, der mich vor Freude fast hätte tanzen
lassen.
## 2.6 Planung der Prozess-/ und Systemschnittstellen ## 2.6 Planung der Prozess-/ und Systemschnittstellen
Die Schnittstellenplanung erforderte eine Balance zwischen Funktionalität Die Schnittstellenplanung erforderte eine sorgfältige Balance zwischen
und Sicherheit. Die REST-API wurde nach modernen Standards entworfen, mit Funktionalität und Sicherheit. Die REST-API wurde nach modernen
klarer Trennung zwischen öffentlichen und authentifizierten Endpunkten. Standards entworfen, mit klarer Trennung zwischen öffentlichen und
Über 100 Endpunkte wurden spezifiziert und implementiert. authentifizierten Endpunkten. Über 100 Endpunkte wurden spezifiziert
eine Zahl, die zunächst übertrieben erschien, sich aber als notwendig
erwies; jeder Endpunkt ein kleines Kunstwerk der Funktionalität.
Die Schnittstelle zwischen Frontend und Backend basierte auf Die Schnittstelle zwischen Frontend und Backend basierte auf
JSON-formatierter Kommunikation über HTTPS. Die Implementierung von JSON-formatierter Kommunikation über HTTPS. Die Implementierung von
CORS-Policies gestaltete sich komplex aufgrund der strikten CORS-Policies gestaltete sich komplexer als erwartet, da die
Sicherheitsrichtlinien. Eine Whitelist-basierte CORS-Konfiguration Sicherheitsrichtlinien strikte Einschränkungen vorgaben. Die Lösung
erfüllte die Anforderungen ohne Funktionseinschränkungen. eine Whitelist-basierte CORS-Konfiguration erfüllte die
Sicherheitsanforderungen ohne die Funktionalität einzuschränken; ein
Drahtseilakt zwischen Sicherheit und Usability.
Der als eigenständiger Thread implementierte Scheduler musste nahtlos mit Besondere Aufmerksamkeit erforderte die Scheduler-Schnittstelle. Der als
der Hauptanwendung kommunizieren. Die Verwendung von thread-sicheren eigenständiger Thread implementierte Scheduler musste nahtlos mit der
Queues und explizitem Locking verhinderte Race Conditions und Deadlocks. Hauptanwendung kommunizieren, ohne dabei Race Conditions oder Deadlocks
zu verursachen. Die Verwendung von Thread-sicheren Queues und explizitem
Locking löste diese Herausforderung eine Lösung, die in ihrer
Eleganz bestach.
## 2.7 Planung der IT-Sicherheitsmaßnahmen ## 2.7 Planung der IT-Sicherheitsmaßnahmen
Die Sicherheitsplanung folgte dem Prinzip "Security by Design". Jede Die Sicherheitsplanung folgte dem Prinzip "Security by Design" ein
Komponente wurde von Anfang an mit Sicherheit im Fokus entwickelt. Ansatz, der sich angesichts der sensiblen Umgebung als unerlässlich
erwies. Jede Komponente wurde von Anfang an mit Sicherheit im Hinterkopf
entwickelt; Paranoia als Tugend, wenn man so will.
Die Authentifizierung basierte auf bcrypt mit einem Cost-Faktor von 12. Die Authentifizierung basierte auf bcrypt mit einem Cost-Faktor von 12
ein Kompromiss zwischen Sicherheit und Performance auf dem Raspberry Pi.
Session-Management wurde über Flask-Login realisiert, mit Session-Management wurde über Flask-Login realisiert, mit
konfigurierbaren Timeout-Werten und sicheren Session-Cookies. Eine konfigurierbaren Timeout-Werten und sicheren Session-Cookies. Die
Brute-Force-Protection mit exponentieller Backoff-Strategie verhinderte Implementierung einer Brute-Force-Protection mit exponentieller
automatisierte Angriffe. Backoff-Strategie verhinderte automatisierte Angriffe; ein digitaler
Türsteher, der keine Kompromisse kannte.
Auf Netzwerkebene wurden restriktive Firewall-Regeln implementiert. Nur Auf Netzwerkebene wurden restriktive Firewall-Regeln implementiert. Nur
essenzielle Ports wurden geöffnet, ausgehende Verbindungen auf die essenzielle Ports wurden geöffnet, ausgehende Verbindungen auf die
IP-Adressen der Smart-Plugs beschränkt. Die Verwendung von iptables IP-Adressen der Smart-Plugs beschränkt. Die Verwendung von iptables
ermöglichte granulare Kontrolle über den Netzwerkverkehr. ermöglichte granulare Kontrolle über den Netzwerkverkehr eine
Festung aus Bits und Bytes.
Die API-Sicherheit umfasste Input-Validation, Output-Encoding und Die API-Sicherheit umfasste Input-Validation, Output-Encoding und
CSRF-Protection. Jeder Endpunkt wurde gegen die OWASP Top 10 CSRF-Protection. Jeder Endpunkt wurde gegen die OWASP Top 10
abgesichert. Ein selbstentwickeltes Intrusion Detection System abgesichert. Ein selbstentwickeltes Intrusion Detection System
überwachte verdächtige Aktivitäten. überwachte verdächtige Aktivitäten und sperrte bei Bedarf IP-Adressen
temporär Big Brother im Dienste der Sicherheit.
# 3. Durchführung und Auftragsbearbeitung # 3. Durchführung und Auftragsbearbeitung
## 3.1 Prozess-Schritte und Vorgehensweise ## 3.1 Prozess-Schritte und Vorgehensweise
Die Durchführung des Projekts erforderte kontinuierliche Anpassungen an Die Durchführung des Projekts glich einer technischen Odyssee, gespickt
technische Herausforderungen. Die ursprünglich geplante lineare mit unerwarteten Wendungen und kreativen Lösungsansätzen. Die
Vorgehensweise wich einer iterativen, problemgetriebenen ursprünglich geplante lineare Vorgehensweise wich schnell einer
Herangehensweise. iterativen, problemgetriebenen Herangehensweise Agilität nicht als
Methode, sondern als Überlebensstrategie.
### 3.1.1 Datenabfrage der Sensoren ### 3.1.1 Datenabfrage der Sensoren
Die Smart-Plugs fungierten als "Sensoren" im System. Die initiale Die "Sensoren" in diesem Kontext waren die Smart-Plugs eine
Annahme, dass die PyP100-Bibliothek funktionieren würde, erwies sich als euphemistische Bezeichnung für Geräte, die sich als erstaunlich
falsch. widerspenstig erwiesen. Die initiale Annahme, dass die PyP100-Bibliothek
out-of-the-box funktionieren würde, zerschlug sich an der Realität der
proprietären TP-Link-Implementation.
Der erste Ansatz mit der dokumentierten Cloud-API scheiterte an den Der erste Ansatz die Nutzung der dokumentierten Cloud-API scheiterte
Sicherheitsrichtlinien. Der zweite Ansatz der direkten lokalen an den Sicherheitsrichtlinien. Der zweite Ansatz die direkte lokale
Kommunikation scheiterte an fehlender Dokumentation. Erst das Reverse Kommunikation scheiterte an der fehlenden Dokumentation. Erst der
Engineering mittels Wireshark führte zum Erfolg. dritte Ansatz Reverse Engineering mittels Wireshark führte zum
Durchbruch; ein Prozess, der mich die Kunst der Paketanalyse lehrte.
Die Wireshark-Analyse offenbarte das komplexe Die Wireshark-Analyse offenbarte das komplexe
Authentifizierungsprotokoll der TAPO-Geräte. Jede Kommunikation Authentifizierungsprotokoll der TAPO-Geräte. Jede Kommunikation
erforderte einen verschlüsselten Handshake mit Session-Token. Die erforderte einen verschlüsselten Handshake, gefolgt von einem
Verschlüsselung basierte auf RSA und AES. Session-Token, der für alle weiteren Operationen benötigt wurde. Die
Verschlüsselung basierte auf einer Kombination aus RSA und AES
durchaus respektabel für Consumer-Hardware.
Die finale Implementierung erfolgte über eine selbstentwickelte Die Implementierung der Datenabfrage erfolgte schließlich über eine
Wrapper-Klasse, die die Kommunikationskomplexität kapselte. selbstentwickelte Wrapper-Klasse, die die Komplexität der Kommunikation
Retry-Mechanismen mit exponentieller Backoff-Strategie sorgten für kapselte. Retry-Mechanismen mit exponentieller Backoff-Strategie sorgten
Robustheit. Die Abfrage umfasste Schaltzustand, Energieverbrauch und für Robustheit bei Netzwerkproblemen. Die Abfrage umfasste nicht nur den
Signalstärke. Schaltzustand, sondern auch Metadaten wie Energieverbrauch und
Signalstärke Informationen, die sich später als wertvoll für das
Monitoring erwiesen.
### 3.1.2 Verarbeiten der Daten ### 3.1.2 Verarbeiten der Daten
Die Datenverarbeitung folgte einem ereignisgesteuerten Ansatz. Der Die Datenverarbeitung folgte einem ereignisgesteuerten Ansatz. Der
Scheduler-Thread prüfte im Minutentakt die Datenbank auf anstehende Scheduler-Thread prüfte im Minutentakt die Datenbank auf anstehende
Aktionen und triggerte Smart-Plug-Operationen. Aktionen und triggerte entsprechende Smart-Plug-Operationen. Die
Herausforderung bestand darin, die Asynchronität der
Hardware-Operationen mit der Synchronität der Datenbankzugriffe zu
vereinen ein Tanz zwischen zwei Welten.
Die Lösung war ein Queue-basiertes System, das Kommandos pufferte und Die Lösung war ein Queue-basiertes System, das Kommandos pufferte und
sequenziell abarbeitete. Dies verhinderte Race Conditions und sequenziell abarbeitete. Dies verhinderte Race Conditions bei simultanen
gewährleistete Systemkonsistenz. Jede Operation wurde in einer Zugriffen und gewährleistete die Konsistenz der Systemzustände. Jede
Transaktion gekapselt mit Rollback-Mechanismen. Operation wurde in einer Transaktion gekapselt, mit Rollback-Mechanismen
bei Fehlern Atomarität als oberstes Gebot.
Die Verarbeitung der Energiedaten ermöglichte Einblicke in Die Verarbeitung der Energiedaten ermöglichte interessante Einblicke in
Nutzungsmuster. Anomalien wie ungewöhnlich hoher Stromverbrauch konnten die Nutzungsmuster. Anomalien wie ungewöhnlich hoher Stromverbrauch
erkannt werden. Diese ursprünglich nicht geplante Funktion erwies sich konnten erkannt und gemeldet werden. Diese Funktion, ursprünglich nicht
als wertvoll für die präventive Wartung. geplant, erwies sich als wertvolles Feature für die präventive Wartung;
ein glücklicher Zufall, der zur Kernfunktionalität wurde.
## 3.2 Abweichung, Anpassung und Entscheidungen ## 3.2 Abweichung, Anpassung und Entscheidungen
Die Projektdurchführung war geprägt von kontinuierlichen Anpassungen. Die Die Projektdurchführung war geprägt von kontinuierlichen Anpassungen an
größte Abweichung war der Wechsel von einer verteilten zu einer die Realität. Die größte Abweichung vom ursprünglichen Plan war der
konsolidierten Systemarchitektur. Wechsel der Systemarchitektur von einer verteilten zu einer
konsolidierten Lösung eine Entscheidung, die aus der Not geboren
wurde.
Ursprünglich sollte nur die API entwickelt und mit dem Frontend auf Ursprünglich war geplant, dass ich nur die API entwickle und diese mit
separaten Raspberry Pis verknüpft werden. Die unterschiedlichen Torbens Frontend auf einem separaten Raspberry Pi verknüpfe. Diese
Technologie-Stacks und die Netzwerksegmentierung machten die Integration Architektur erwies sich als zu komplex die unterschiedlichen
jedoch zu komplex. Die Konsolidierung auf einem einzigen Raspberry Pi Technologie-Stacks (Next.js vs. Python/Flask) und die
vereinfachte die Architektur erheblich. Netzwerksegmentierung machten die Integration zum Albtraum. Die
Entscheidung, beide Komponenten auf einem einzigen Raspberry Pi zu
konsolidieren, vereinfachte nicht nur die Architektur, sondern
reduzierte auch Kosten und Stromverbrauch; manchmal ist weniger
tatsächlich mehr.
Der versehentliche Verlust der SSL-Zertifikate während einer Der versehentliche Verlust der SSL-Zertifikate während einer
Neuinstallation führte zur Implementierung eines robusten Backup-Systems. Neuinstallation ein Moment des Schreckens führte zur Implementierung
Kritische Konfigurationsdateien werden nun dreifach gesichert. eines robusten Backup-Systems. Die Lektion war schmerzhaft, aber
lehrreich: Kritische Konfigurationsdateien werden nun dreifach
gesichert; Paranoia als Versicherung.
Die Entscheidung, von PyP100 zu einem alternativen Modul zu wechseln, Die Entscheidung, von der komplexen PyP100-Integration zu einem
fiel nach tagelangen fruchtlosen Debugging-Sessions. Das gefundene alternativen Modul zu wechseln, fiel nach tagelangen frustrierenden
alternative Modul war simpler und stabiler. Debugging-Sessions. Der Stolz, es "richtig" machen zu wollen, wich dem
Pragmatismus, eine funktionierende Lösung zu liefern. Das gefundene
Alternative Modul ironischerweise simpler und stabiler rettete das
Projekt; ein Beweis dafür, dass der einfachste Weg oft der beste ist.
## 3.3 Maßnahmen zur Qualitätskontrolle ## 3.3 Maßnahmen zur Qualitätskontrolle
Die Qualitätskontrolle erfolgte kontinuierlich. Automatisierte Tests Die Qualitätskontrolle erfolgte kontinuierlich und vielschichtig.
liefen bei jedem Commit, manuelle Tests ergänzten diese bei kritischen Automatisierte Tests liefen bei jedem Commit, manuelle Tests ergänzten
Funktionen. diese bei kritischen Funktionen. Die Herausforderung bestand darin, die
Hardware-abhängigen Komponenten testbar zu machen ein Problem, das
kreative Lösungen erforderte.
Mock-Objekte simulierten die Smart-Plugs für Unit-Tests. Diese Mocks Mock-Objekte simulierten die Smart-Plugs für Unit-Tests. Diese Mocks
replizierten das Verhalten der echten Hardware inklusive typischer replizierten das Verhalten der echten Hardware, einschließlich typischer
Fehlerszenarien. Die Test-Coverage erreichte 85%. Fehlerszenarien wie Timeouts oder Verbindungsabbrüche. Die Test-Coverage
erreichte respektable 85% die fehlenden 15% waren hauptsächlich
UI-Code und Error-Handler, deren Test-Aufwand in keinem vernünftigen
Verhältnis zum Nutzen stand.
Integrationstests mit echter Hardware deckten Probleme auf, die in der Integrationstests mit echter Hardware deckten Probleme auf, die in der
Simulation nicht auftraten: Timing-Issues, Memory-Leaks, Race Simulation nicht auftraten. Timing-Issues bei simultanen Zugriffen,
Conditions. Alle Probleme wurden iterativ behoben. Memory-Leaks bei lang laufenden Operationen, Race Conditions im
Scheduler all diese Probleme wurden iterativ identifiziert und
behoben; ein Prozess, der Geduld und Durchhaltevermögen erforderte.
Die Implementierung eines umfassenden Logging-Systems erwies sich als Die Implementierung eines Logging-Systems erwies sich als unschätzbar
unschätzbar wertvoll. Jede Operation wurde protokolliert. Die wertvoll. Jede Operation, jeder Fehler, jede Anomalie wurde
Log-Analyse wurde zum wichtigsten Debugging-Tool. protokolliert. Die Log-Analyse wurde zum wichtigsten Debugging-Tool,
insbesondere bei sporadisch auftretenden Problemen digitale Forensik
im Kleinen.
## 3.4 Implementierung, Konfiguration und Inbetriebnahme von Schnittstellen und unterschiedlicher Prozesse und Systeme ## 3.4 Implementierung, Konfiguration und Inbetriebnahme von Schnittstellen und unterschiedlicher Prozesse und Systeme
Die Implementierung der Schnittstellen erfolgte modular. Die REST-API Die Implementierung der verschiedenen Schnittstellen erfolgte modular
wurde Blueprint-basiert strukturiert mit klarer Trennung der und iterativ. Die REST-API wurde Blueprint-basiert strukturiert, was
Funktionsbereiche: Authentication, User Management, Printer Management eine klare Trennung der Funktionsbereiche ermöglichte. Authentication,
und Job Management. User Management, Printer Management und Job Management erhielten jeweils
eigene Blueprints eine Architektur, die Ordnung ins Chaos brachte.
Die Smart-Plug-Schnittstelle durchlief mehrere Iterationen. Die finale Die Smart-Plug-Schnittstelle durchlief mehrere Iterationen. Die finale
Implementation kapselte die Kommunikationslogik in einer einzigen Klasse Implementation kapselte die gesamte Kommunikationslogik in einer
mit simpler API: turn_on(), turn_off(), get_status(). einzigen Klasse, die eine simple API bot: turn_on(), turn_off(),
get_status(). Diese Abstraktion verbarg die Komplexität des
darunterliegenden Protokolls und ermöglichte einfache Erweiterungen
Simplizität als Designprinzip.
Die Datenbank-Schnittstelle nutzte SQLAlchemy's ORM-Funktionalität. Die Datenbank-Schnittstelle nutzte SQLAlchemy's ORM-Funktionalität. Die
Models wurden deklarativ definiert, Migrationen über Alembic verwaltet. Definition der Models erfolgte deklarativ, Migrationen wurden über
SQLite als Datenbank war perfekt für die Offline-Anforderung. Alembic verwaltet. Die Entscheidung für SQLite als Datenbank war
pragmatisch keine zusätzlichen Services, keine Konfiguration, perfekt
für die Offline-Anforderung; manchmal ist die einfachste Lösung die
beste.
Der Scheduler wurde als eigenständiger Thread implementiert, der beim Der Scheduler wurde als eigenständiger Thread implementiert, der beim
Anwendungsstart initialisiert wurde. Thread-sichere Queues ermöglichten Anwendungsstart initialisiert wurde. Die Kommunikation mit dem
asynchrone Hardware-Operationen ohne Blockierung der Web-Requests. Hauptthread erfolgte über thread-sichere Queues. Diese Architektur
ermöglichte asynchrone Hardware-Operationen ohne Blockierung der
Web-Requests Parallelität ohne Kopfschmerzen.
## 3.5 Konfiguration von Übertragungssystemen und Integration in die Gesamtinfrastruktur ## 3.5 Konfiguration von Übertragungssystemen und Integration in die Gesamtinfrastruktur
Die Integration in die Mercedes-Benz-Infrastruktur erforderte zahlreiche Die Integration in die Mercedes-Benz-Infrastruktur erforderte zahlreiche
Kompromisse. Das dedizierte IoT-Subnetz wurde speziell für das Kompromisse und kreative Lösungen. Das dedizierte IoT-Subnetz wurde
MYP-System eingerichtet mit restriktiven Firewall-Regeln. speziell für das MYP-System eingerichtet, mit restriktiven
Firewall-Regeln und ohne Internet-Zugang eine digitale Quarantäne, die
Sicherheit gewährleistete.
Die Netzwerkkonfiguration erfolgte in enger Abstimmung mit der Die Netzwerkkonfiguration erfolgte in enger Abstimmung mit der
IT-Abteilung. Jede Änderung erforderte ein Change-Request. Der IT-Abteilung. Jede Änderung erforderte ein Change-Request, jede
bürokratische Overhead war erheblich aber notwendig. Port-Öffnung eine Security-Review. Der bürokratische Overhead war
erheblich, aber notwendig für die Compliance ein notwendiges Übel im
Konzernumfeld.
Die SSL-Konfiguration mit selbstsignierten Zertifikaten war notwendig Die SSL-Konfiguration mit selbstsignierten Zertifikaten war ein
mangels Internet-Zugang. Die Zertifikate wurden mit allen relevanten notwendiges Übel. Ohne Internet-Zugang war Let's Encrypt keine Option.
SANs generiert. Browser-Warnungen wurden durch eine dokumentierte Die Zertifikate wurden mit allen relevanten SANs (Subject Alternative
Installationsprozedur umgangen. Names) generiert, um Kompatibilitätsprobleme zu vermeiden. Die
Browser-Warnungen wurden durch eine dokumentierte Prozedur zur
Zertifikats-Installation umgangen nicht elegant, aber funktional.
Die Smart-Plugs erhielten statische IP-Adressen, da DHCP-Reservierungen Die Integration der Smart-Plugs erforderte statische IP-Adressen
nicht vorgesehen waren. Die manuelle Konfiguration war aufwändig, DHCP-Reservierungen waren in der Netzwerk-Policy nicht vorgesehen. Die
gewährleistete aber stabile Verbindungen. manuelle Konfiguration jedes Geräts war mühsam, gewährleistete aber
stabile Verbindungen; manchmal ist der steinige Weg der sicherste.
## 3.6 Erfüllen der Anforderungen an die Informationssicherheit ## 3.6 Erfüllen der Anforderungen an die Informationssicherheit
Die Informationssicherheit wurde als kritischer Erfolgsfaktor behandelt. Die Informationssicherheit wurde von Anfang an als kritischer
Jede Designentscheidung wurde unter Sicherheitsaspekten betrachtet. Erfolgsfaktor behandelt. Jede Designentscheidung wurde durch die
Sicherheitsbrille betrachtet, jede Implementierung auf Schwachstellen
geprüft Security als Religion, nicht als Afterthought.
Die Authentifizierung implementierte moderne Best Practices: Die Authentifizierung implementierte moderne Best Practices:
bcrypt-Hashing, sichere Session-Verwaltung, CSRF-Protection. Die bcrypt-Hashing, sichere Session-Verwaltung, CSRF-Protection. Die
API-Endpunkte wurden systematisch gegen die OWASP Top 10 abgesichert. API-Endpunkte wurden systematisch gegen die OWASP Top 10 abgesichert.
Input-Validation erfolgte auf mehreren Ebenen. Input-Validation erfolgte auf mehreren Ebenen Client-seitig für UX,
Server-seitig für Sicherheit; Vertrauen ist gut, Kontrolle ist besser.
Ein Rate-Limiter verhinderte Brute-Force-Angriffe. Nach fünf Die Implementierung eines Rate-Limiters verhinderte
fehlgeschlagenen Login-Versuchen wurde die IP-Adresse für 30 Minuten Brute-Force-Angriffe. Nach fünf fehlgeschlagenen Login-Versuchen wurde
gesperrt. die IP-Adresse für 30 Minuten gesperrt lang genug, um Angriffe
unwirtschaftlich zu machen, kurz genug, um legitime Nutzer nicht
übermäßig zu frustrieren; ein Balanceakt zwischen Sicherheit und
Benutzerfreundlichkeit.
DSGVO-Compliance wurde durch Privacy-by-Design erreicht. Personenbezogene DSGVO-Compliance wurde durch Privacy-by-Design erreicht.
Daten wurden minimiert, Löschfristen implementiert, Personenbezogene Daten wurden minimiert, Löschfristen implementiert,
Datenexport-Funktionen bereitgestellt. Die Logging-Funktionalität Datenexport-Funktionen bereitgestellt. Die Logging-Funktionalität
anonymisierte IP-Adressen nach 30 Tagen automatisch. anonymisierte IP-Adressen nach 30 Tagen automatisch Datenschutz nicht
als Pflicht, sondern als Selbstverständlichkeit.
# 4. Projektabschluss # 4. Projektabschluss
## 4.1 Soll-Ist-Vergleich (Abweichung, Anpassungen) ## 4.1 Soll-Ist-Vergleich (Abweichung, Anpassungen)
Der Vergleich zwischen geplanten und erreichten Zielen zeigt ein Der Vergleich zwischen geplanten und erreichten Zielen offenbart ein
positives Gesamtbild. Die Kernfunktionalität wurde vollständig gemischtes, aber letztendlich positives Bild. Die Kernfunktionalität
implementiert und übertraf in einigen Aspekten die ursprünglichen digitale Reservierungsverwaltung mit automatischer Hardware-Steuerung
Anforderungen. wurde vollständig implementiert und übertraf in einigen Aspekten sogar
die ursprünglichen Anforderungen; ein Erfolg, der süßer schmeckt, weil
er hart erkämpft wurde.
#### Erfolgreich umgesetzte Anforderungen: #### Erfolgreich umgesetzte Anforderungen:
@ -665,99 +813,120 @@ Anforderungen.
- Konsolidierung auf einen statt zwei Raspberry Pis - Konsolidierung auf einen statt zwei Raspberry Pis
- Wechsel von PyP100 zu alternativem Kommunikationsmodul - Wechsel von PyP100 zu alternativem Kommunikationsmodul
- Kein Touch-Display implementiert - Hardware-Upgrade vom Pi 4 auf Pi 5
- Verschiebung der Benutzerschulungen - Verschiebung der Benutzerschulungen auf Nach-Projektphase
Die größte positive Überraschung war die erfolgreiche Integration des Die größte positive Überraschung war die erfolgreiche Integration des
Energiemonitorings. Diese ursprünglich nicht geplante Funktion Energiemonitorings. Diese ursprünglich nicht geplante Funktion
ermöglicht detaillierte Einblicke in Nutzungsmuster und Energieverbrauch. ermöglicht detaillierte Einblicke in Nutzungsmuster und Energieverbrauch
wertvolle Daten für die Optimierung des Druckerbetriebs; ein Feature,
das aus der Not geboren wurde und zum Alleinstellungsmerkmal avancierte.
Die technischen Herausforderungen, insbesondere die Die technischen Herausforderungen insbesondere die
Smart-Plug-Integration, erforderten mehr Zeit als geplant. Die Smart-Plug-Integration erforderten mehr Zeit als geplant. Die
investierte Mühe zahlte sich jedoch in einer robusten und investierte Mühe zahlte sich jedoch aus: Die finale Lösung ist robuster
wartungsfreundlichen Lösung aus. und wartungsfreundlicher als eine Quick-and-Dirty-Implementation gewesen
wäre; Qualität setzt sich durch, auch wenn der Weg steinig ist.
## 4.2 Fazit ## 4.2 Fazit
Das MYP-Projekt demonstriert, wie durch kreative Ansätze und technisches Das MYP-Projekt demonstriert eindrucksvoll, wie durch kreative Ansätze
Geschick aus scheinbar unüberwindbaren Hindernissen elegante Lösungen und technisches Geschick aus scheinbar unüberwindbaren Hindernissen
entstehen. Die Transformation eines analogen Whiteboards in ein modernes elegante Lösungen entstehen können. Die Transformation eines analogen
cyber-physisches System mag trivial erscheinen die Umsetzung Whiteboards in ein modernes cyber-physisches System mag auf den ersten
offenbarte jedoch die volle Komplexität vernetzter Systeme. Blick trivial erscheinen die Umsetzung offenbarte jedoch die volle
Komplexität vernetzter Systeme; ein Eisberg, dessen Spitze täuscht.
Die Entscheidung, die fehlenden Schnittstellen der 3D-Drucker durch Die Entscheidung, die fehlenden Schnittstellen der 3D-Drucker durch
Smart-Plugs zu überbrücken, erwies sich als optimal. Diese Abstraktion Smart-Plugs zu überbrücken, erwies sich als Glücksgriff. Diese
auf die grundlegendste Ebene Stromversorgung ermöglichte eine Abstraktion auf die grundlegendste Ebene Stromversorgung ermöglichte
universelle, herstellerunabhängige Lösung. eine universelle Lösung, die unabhängig von Druckermodell oder
Hersteller funktioniert. Ein klassisches Beispiel für laterales Denken,
das komplexe Probleme durch Perspektivwechsel löst.
Die technische Exzellenz zeigt sich in den Details: Über 9.000 Zeilen Die technische Exzellenz des Systems zeigt sich in den Details: Über
strukturierter Python-Code, eine umfassende REST-API, robuste 9.000 Zeilen sauber strukturierter Python-Code, eine umfassende
Fehlerbehandlung und durchdachte Sicherheitsarchitektur. Der wahre REST-API, robuste Fehlerbehandlung, durchdachte Sicherheitsarchitektur.
Erfolg liegt jedoch in der Praxistauglichkeit das System läuft stabil Doch der wahre Erfolg liegt in der Praxistauglichkeit das System läuft
und hat das manuelle Chaos beendet. stabil, wird aktiv genutzt und hat das manuelle Chaos endgültig beendet;
ein digitaler Phönix, der aus der Asche des Whiteboards aufstieg.
Persönlich war das Projekt eine intensive Lernerfahrung. Von der Persönlich war das Projekt eine Achterbahnfahrt der Emotionen. Von der
anfänglichen Euphorie über frustrierende Debugging-Sessions bis zum anfänglichen Euphorie über die frustrierenden Debugging-Sessions bis zum
finalen Erfolg jede Phase bot wertvolle Erkenntnisse. Die Fähigkeit, finalen Triumph jede Phase bot Lernerfahrungen. Die Fähigkeit, unter
unter Zeitdruck pragmatische Entscheidungen zu treffen ohne die Qualität Zeitdruck pragmatische Entscheidungen zu treffen, ohne dabei die
zu kompromittieren, war die wichtigste erworbene Kompetenz. Qualität zu kompromittieren, war die wichtigste erworbene Kompetenz; eine
Lektion, die über das Projekt hinaus Bestand haben wird.
## 4.3 Optimierungsmöglichkeiten ## 4.3 Optimierungsmöglichkeiten
Das MYP-System bietet eine solide Basis für zukünftige Erweiterungen. Das MYP-System bietet eine solide Basis für zukünftige Erweiterungen.
Die modulare Architektur und umfassende API ermöglichen die Integration Die modulare Architektur und umfassende API ermöglichen die Integration
zusätzlicher Funktionalitäten ohne grundlegende Systemänderungen. zusätzlicher Funktionalitäten ohne grundlegende Systemänderungen ein
Fundament, auf dem aufgebaut werden kann.
Kurzfristig ist die Anbindung an das Active Directory der Mercedes-Benz Kurzfristig ist die Anbindung an das Active Directory der Mercedes-Benz
AG geplant. Die vorbereiteten Schnittstellen ermöglichen eine nahtlose AG geplant. Die vorbereiteten Schnittstellen ermöglichen eine nahtlose
Integration, sobald die erforderlichen Genehmigungen vorliegen. Integration, sobald die erforderlichen Genehmigungen vorliegen. Diese
Erweiterung würde die Benutzerverwaltung erheblich vereinfachen und die
Akzeptanz im Unternehmensumfeld steigern.
Mittelfristig könnte bei Verfügbarkeit modernerer 3D-Drucker eine Mittelfristig könnte bei Verfügbarkeit modernerer 3D-Drucker eine
direkte Geräteintegration realisiert werden. Die Einbindung von direkte Geräteintegration realisiert werden. Die Einbindung von
OctoPrint würde erweiterte Funktionen wie Druckfortschrittsüberwachung OctoPrint oder vergleichbaren Systemen würde erweiterte Funktionen wie
ermöglichen. Druckfortschrittsüberwachung und Remote-Dateiverwaltung ermöglichen
Features, die das System auf ein neues Level heben würden.
Langfristig bietet sich die Erweiterung zu einer umfassenden Langfristig bietet sich die Erweiterung zu einer umfassenden
Maker-Space-Management-Lösung an. Die Architektur unterstützt die Maker-Space-Management-Lösung an. Die grundlegende Architektur
Integration weiterer Gerätetypen. Machine-Learning-Algorithmen könnten unterstützt die Integration weiterer Gerätetypen wie Lasercutter oder
für Auslastungsprognosen implementiert werden. CNC-Fräsen. Machine-Learning-Algorithmen könnten perspektivisch für
Auslastungsprognosen und Optimierungsvorschläge implementiert werden
die Möglichkeiten sind grenzenlos.
## 4.4 Abnahme ## 4.4 Abnahme
Die formale Projektabnahme erfolgte am 2. Juni 2025 durch die Die formale Projektabnahme erfolgte am 2. Juni 2025 durch die
Ausbildungsleitung der TBA. Die Präsentation umfasste eine Ausbildungsleitung der TBA. Die Präsentation umfasste eine
Live-Demonstration aller Kernfunktionen sowie eine technische Live-Demonstration aller Kernfunktionen sowie eine technische
Deep-Dive-Session. Deep-Dive-Session für interessierte Kollegen ein Moment der Wahrheit.
Bei der Live-Demonstration kam es zunächst zu einem Missverständnis Die Live-Demonstration begann mit einem kleinen Missverständnis: Das
bezüglich der Systemkonfiguration, da das System noch nicht vollständig System war noch nicht vollständig produktiv aufgebaut, da letzte
produktiv aufgebaut war letzte Hardware-Komponenten waren noch in der Hardware-Komponenten sich noch in der Lieferung befanden. Doch hier
Lieferung. Dank der robusten Systemarchitektur konnte ich jedoch aus dem zeigte sich die wahre Stärke der Architektur dank der robusten
Stegreif improvisieren und das System sofort demonstrieren. Die Systemkonzeption konnte ich aus dem Stegreif improvisieren und das
automatische Aktivierung eines 3D-Druckers zur reservierten Zeit System dennoch eindrucksvoll demonstrieren. Die automatische Aktivierung
funktionierte einwandfrei und löste sichtbare Begeisterung aus. eines 3D-Druckers zur reservierten Zeit funktionierte einwandfrei und
löste sichtbare Begeisterung aus; ein Moment, der die monatelange Arbeit
rechtfertigte.
Besonders positiv wurde die Wirtschaftlichkeit bewertet. Mit Besonders positiv wurde die Wirtschaftlichkeit der Lösung bewertet. Mit
Gesamtkosten unter 600 Euro liegt das System weit unter kommerziellen Gesamtkosten unter 600 Euro (inklusive privat finanzierter Komponenten)
Alternativen. Die Einsparungen durch automatisierte Abschaltung liegt das System weit unter kommerziellen Alternativen. Die Einsparungen
amortisieren die Investition binnen weniger Monate. durch automatisierte Abschaltung und optimierte Nutzung amortisieren die
Investition binnen weniger Monate ein Argument, das bei der
Geschäftsführung Anklang fand.
Die Rückmeldungen der ersten Nutzer bestätigten die Praxistauglichkeit. Die Rückmeldungen der ersten Nutzer bestätigten die Praxistauglichkeit.
Die intuitive Bedienung, zuverlässige Funktion und Eliminierung von Die intuitive Bedienung, die zuverlässige Funktion und die Eliminierung
Reservierungskonflikten wurden besonders gelobt. Kleinere UX-Details von Reservierungskonflikten wurden besonders gelobt. Kritikpunkte
wurden dokumentiert für zukünftige Updates. hauptsächlich bezüglich kleiner UX-Details wurden dokumentiert und
fließen in zukünftige Updates ein; kontinuierliche Verbesserung als
Prinzip.
Mit der erfolgreichen Abnahme und Inbetriebnahme schließt das Projekt Mit der erfolgreichen Abnahme und Inbetriebnahme schließt das Projekt
formal ab. Das MYP-System ist jedoch kein statisches Produkt, sondern formal ab. Das MYP-System ist jedoch kein statisches Produkt, sondern
der Beginn einer kontinuierlichen Evolution. Die geschaffene Basis der Beginn einer kontinuierlichen Evolution. Die geschaffene Basis
ermöglicht iterative Verbesserungen und Erweiterungen. ermöglicht iterative Verbesserungen und Erweiterungen ganz im Sinne
moderner Software-Entwicklung.
Die Transformation der 3D-Drucker-Verwaltung von analog zu digital, von Die Transformation der 3D-Drucker-Verwaltung von analog zu digital, von
chaotisch zu strukturiert, von manuell zu automatisiert ist vollbracht. chaotisch zu strukturiert, von manuell zu automatisiert ist vollbracht.
Was als technische Herausforderung begann, endete als Erfolgsgeschichte Was als technische Herausforderung begann, endete als Erfolgsgeschichte
ein Beweis dafür, dass mit Kreativität, Durchhaltevermögen und ein Beweis dafür, dass mit Kreativität, Durchhaltevermögen und einer
technischer Finesse auch scheinbar unlösbare Probleme gemeistert werden Prise technischer Finesse auch scheinbar unlösbare Probleme gemeistert
können. werden können.
# Anlagen # Anlagen