🎉 Updated IHK Project Documentation Markdown file for clarity and consistency 📚💄
This commit is contained in:
parent
58a7f0eb3c
commit
c55b260ebb
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user