# MYP Druckerverwaltungssystem **Manage Your Printer** - Mercedes-Benz Werk 040 Berlin Vollständige 3D-Drucker Verwaltungsplattform mit Smart-Plug-Technologie ## 🎯 System-Übersicht **MYP (Manage Your Printer)** ist ein System zur **zentralen Verwaltung und Steuerung von 3D-Druckern mittels Smart-Plug-Technologie**. Es digitalisiert den Reservierungsprozess für mehrere 3D-Drucker und ermögligt eine **automatisierte Schaltung der Drucker über WLAN-Steckdosen (TP-Link Tapo P110)**. ### 🔑 Kernfunktionen #### **Benutzer- und Rechteverwaltung** - **Registrierung, Login und Rollenkonzept** (Admin/Benutzer) - **Administrierende** können Drucker und Nutzer verwalten - **Standard-Benutzer** können Reservierungen anlegen und Druckjobs verwalten #### **Drucker- und Auftragsmanagement** - **Zentrales Reservierungssystem** für Zeitfenster-Buchungen - **Automatische Drucker-Schaltung**: Einschalten zum Reservierungsstart, Ausschalten nach Ende - **Herstellerunabhängig**: Keine direkte Kommunikation mit 3D-Druckern - ausschließlich Stromsteuerung über Smart-Plug-Steckdosen - **Einfache Integration**: Keine Eingriffe in die Druckerhardware erforderlich #### **Statistikerfassung** - **Protokollierung** von Nutzungszeiten und abgeschlossenen Druckaufträgen - **Auswertungen** (z.B. Gesamtdruckzeit pro Zeitraum) - **Analytics-Dashboard** für Effizienzanalysen #### **Offline-Fähigkeit & Kiosk-Modus** - **Autonomer Betrieb** ohne Internetzugang nach Installation - **Raspberry Pi Kiosk-Modus**: Vollbild-Dashboard vor Ort - **Touch-Interface** für aktuelle Druckerbelegungen und Systemstatus ## 📋 Projektarchitektur Dieses Repository enthält **zwei sich ergänzende Projektarbeiten** für die IHK-Abschlussprüfung: ### 🏗️ **Backend-System** (Till Tomczak) - **KERN-INFRASTRUKTUR** - **Entwickler**: Till Tomczak - **Fachrichtung**: Fachinformatiker für digitale Vernetzung - **Technologie**: **Flask-basiertes Backend in Python** mit **SQLite-Datenbank** - **Verantwortung**: Hardware-Integration, REST-APIs und cyber-physische Vernetzung ### 📊 **Frontend-System** (Torben Haack) - **BENUTZEROBERFLÄCHE & ANALYTICS** - **Entwickler**: Torben Haack - **Fachrichtung**: Fachinformatiker für Daten- und Prozessanalyse - **Technologie**: **Next.js-basierte Webanwendung** mit erweiterten Analytics - **Verantwortung**: Moderne Web-UI, Datenvisualisierung und Benutzerfreundlichkeit ## 🏗️ Technische Architektur ### Cyber-Physische Lösung ``` ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐ │ Frontend-Server │◄──►│ Backend-Server │◄──►│ Raspberry Pi │ │ (Port 3000) │ │ (Port 443/5000) │ │ (Smart-Plugs) │ │ Torben Haack │ │ Till Tomczak │ │ Till Tomczak │ │ │ │ │ │ │ │ • Next.js App │ │ • Flask REST-API │ │ • TP-Link Tapo P110 │ │ • Analytics UI │ │ • SQLite Database │ │ • Hardware Control │ │ • PWA-Features │ │ • Smart-Plug API │ │ • Kiosk Interface │ │ • HTTPS Client │ │ • HTTPS Server │ │ • Offline Operation │ │ • Export Functions │ │ • Session Management│ │ • Touch Interface │ └─────────────────────┘ └─────────────────────┘ └─────────────────────┘ ``` ### Kommunikations-Architektur - **RESTful API**: Backend kommuniziert mit Frontend und externen Diensten - **HTTPS-Verschlüsselung**: Selbstsignierte Zertifikate für sichere Übertragung - **Progressive Web App (PWA)**: Offline-Funktionalität im Browser - **Smart-Plug-Integration**: Lokale WLAN-Steuerung ohne Cloud-Abhängigkeit ## 🚀 Schnellstart ### Backend-System (Hardware & APIs) ```bash # Backend-Server automatisch installieren (Till Tomczaks System) cd backend sudo ./setup.sh # Konsolidiertes Setup-Skript # Oder manuell für Development python app.py ``` ### Frontend-System (Web-Interface) - NEU: Automatische Installation ```bash # Frontend-Server automatisch installieren (Torben Haacks System) cd frontend sudo ./setup.sh # Konsolidiertes Setup-Skript mit Mercedes SSL # Oder manuell für Development pnpm install pnpm db # Datenbank einrichten pnpm dev # Development-Server ``` ### Vollständiges System ```bash # Backend (API-Server) cd backend && sudo ./setup.sh # Frontend (Web-Interface mit HTTPS) cd frontend && sudo ./setup.sh ``` ## 🌐 Systemzugriff ### Produktions-URLs (Nach Setup-Skript Installation) - **Frontend (HTTPS)**: `https://m040tbaraspi001.de040.corpintra.net` (Torben Haacks Frontend) - **Frontend (Lokal)**: `https://localhost` (Fallback-Zugang) - **API-Backend**: `https://192.168.0.105:443/api` (Till Tomczaks APIs) - **Kiosk-Modus**: `https://192.168.0.105:443` (Lokales Touch-Interface) ### Development-URLs - **Frontend (Dev)**: `http://localhost:3000` (Development-Server) - **Backend (Dev)**: `http://localhost:5000` (Development-API) ### Standard-Anmeldedaten - **Benutzername**: `admin` - **Passwort**: `admin123` ### SSL-Zertifikate (Mercedes) Nach der automatischen Installation sind selbstsignierte Mercedes-Zertifikate verfügbar: - **Domain**: `m040tbaraspi001.de040.corpintra.net` - **Organisation**: Mercedes-Benz AG - **Abteilung**: IT-Abteilung - **Standort**: Stuttgart, Baden-Württemberg - **Gültigkeit**: 365 Tage ## 📁 Projektstruktur & Integration ``` Projektarbeit-MYP/ ├── backend/ # 🏗️ KERN-INFRASTRUKTUR (Till Tomczak) │ ├── app.py # Flask REST-API Server │ ├── models.py # SQLite-Datenbank & Business Logic │ ├── utils/ # Smart-Plug Integration (TP-Link Tapo P110) │ ├── templates/ # Kiosk-Mode Web-Interface │ ├── static/ # PWA-Assets für Offline-Betrieb │ └── systemd/ # Raspberry Pi Service-Integration ├── ├── frontend/ # 📊 WEB-INTERFACE (Torben Haack) │ ├── src/app/ # Next.js Haupt-Anwendung │ ├── src/components/ # React UI-Komponenten │ ├── src/lib/api/ # Backend-REST-API-Integration │ └── src/lib/analytics/ # Statistik-Algorithmen ├── ├── docs/ # 📚 Gemeinsame Dokumentation └── README.md # Diese Datei ``` ## 🎯 Funktions-Aufgabenteilung ### Backend-Verantwortlichkeiten (Till Tomczak) - ✅ **Smart-Plug-Steuerung**: TP-Link Tapo P110 WLAN-Steckdosen - ✅ **Automatische Drucker-Schaltung**: Zeitgesteuerte Ein-/Ausschaltung - ✅ **REST-API-Bereitstellung**: Vollständige API für alle Drucker-Operationen - ✅ **Cyber-physische Vernetzung**: IT-System ↔ Hardware-Integration - ✅ **SQLite-Datenbank**: Benutzer, Drucker, Jobs, Statistiken - ✅ **HTTPS-Server**: Selbstsignierte Zertifikate und Session-Management - ✅ **Raspberry Pi Integration**: Systemd-Services und Kiosk-Modus - ✅ **Offline-Fähigkeit**: Autonomer Betrieb ohne Internet ### Frontend-Verantwortlichkeiten (Torben Haack) - ✅ **Moderne Web-UI**: React-basierte Benutzeroberfläche - ✅ **Progressive Web App**: Offline-Funktionalität im Browser - ✅ **Advanced Analytics**: Interaktive Charts und Datenvisualisierung - ✅ **Reporting-System**: PDF/Excel-Export und automatisierte Berichte - ✅ **Responsive Design**: Optimiert für Desktop, Tablet und Mobile - ✅ **Backend-API-Integration**: Nahtlose REST-API-Anbindung - ✅ **Statistik-Auswertungen**: Nutzungsanalysen und Trend-Analysen - ✅ **Benutzerfreundlichkeit**: Intuitive Workflows für alle Stakeholder ## 🔗 API-Integration & Kommunikation ### Backend-REST-Endpunkte (Till Tomczak) ```typescript // Drucker-Management GET /api/printers // Alle Drucker abrufen POST /api/printers // Neuen Drucker hinzufügen PUT /api/printers/{id} // Drucker aktualisieren DELETE /api/printers/{id} // Drucker löschen // Reservierungs-Management GET /api/jobs // Alle Reservierungen abrufen POST /api/jobs // Neue Reservierung erstellen PUT /api/jobs/{id}/finish // Reservierung beenden DELETE /api/jobs/{id} // Reservierung abbrechen // Smart-Plug-Steuerung (TP-Link Tapo P110) POST /api/plugs/{id}/on // Drucker einschalten POST /api/plugs/{id}/off // Drucker ausschalten GET /api/plugs/{id}/status // Plug-Status abfragen // Statistiken & Analytics GET /api/stats // Nutzungsstatistiken GET /api/reports // Report-Daten für Analytics ``` ### Frontend-Integration (Torben Haack) ```typescript // Backend-API Client - Konfiguriert für separaten Server export class MYPApiClient { constructor(baseURL: string = 'https://192.168.0.105:443/api') { this.baseURL = baseURL; } async getPrinters() { return fetch(`${this.baseURL}/printers`).then(r => r.json()); } async getJobs() { return fetch(`${this.baseURL}/jobs`).then(r => r.json()); } async getStats() { return fetch(`${this.baseURL}/stats`).then(r => r.json()); } } // API-Konfiguration mit Fallback-URLs export const API_BASE_URL = { primary: 'https://192.168.0.105:443', fallbacks: [ 'https://192.168.0.105', 'https://raspberrypi' ] }; ``` ## 🖥️ Deployment-Szenarien ### Szenario 1: Automatische Produktions-Installation (Neu - Empfohlen) ```bash # Backend-Server (Raspberry Pi oder Linux-Server) cd backend sudo ./setup.sh # Automatische Installation mit Kiosk-Modus # Frontend-Server (separater Server oder gleicher Server) cd frontend sudo ./setup.sh # Automatische Installation mit HTTPS auf Port 443 ``` ### Szenario 2: Separate Server (Manuell) ```bash # Backend-Server (z.B. Raspberry Pi oder Linux-Server) cd backend sudo systemctl start myp-https.service # Frontend-Server (z.B. Node.js-Server oder Cloud-Deployment) cd frontend npm run build && npm start ``` ### Szenario 3: Docker-Deployment ```yaml # docker-compose.yml services: backend: build: ./backend ports: ["5000:5000", "443:443"] frontend: build: ./frontend ports: ["80:80", "443:443"] environment: - NEXT_PUBLIC_API_URL=http://backend:5000/api ``` ### Szenario 4: Raspberry Pi Kiosk (Lokal) ```bash # Vollständige Kiosk-Installation (Backend + Frontend) cd backend && sudo ./setup.sh # Backend mit Kiosk-Interface cd frontend && sudo ./setup.sh # Frontend mit HTTPS-Server ``` ## 🔧 Konfiguration & Environment ### Backend-Konfiguration (.env) ```env # Flask-Server Einstellungen FLASK_HOST=0.0.0.0 FLASK_PORT=5000 SSL_ENABLED=true DATABASE_URL=sqlite:///myp.db # Smart-Plug Konfiguration (TP-Link Tapo P110) TAPO_USERNAME=your-tapo-email TAPO_PASSWORD=your-tapo-password # Kiosk-Modus KIOSK_MODE=true OFFLINE_MODE=true ``` ### Frontend-Konfiguration (.env.local) ```env # Frontend-Server Einstellungen - HTTPS mit Mercedes SSL NEXT_PUBLIC_API_URL=https://192.168.0.105:443 DATABASE_URL=file:./db/frontend.db # SSL-Zertifikat Handling für selbstsignierte Zertifikate NODE_TLS_REJECT_UNAUTHORIZED=0 # Analytics-Features ENABLE_ADVANCED_ANALYTICS=true CHART_REFRESH_INTERVAL=30000 # Production HTTPS (Nach Setup-Skript) HTTPS_ENABLED=true SSL_CERT_PATH=/etc/ssl/certs/myp/frontend.crt SSL_KEY_PATH=/etc/ssl/certs/myp/frontend.key ``` ## 📊 Features im Überblick ### Backend-Features (Till Tomczak) - Cyber-Physische Integration - **TP-Link Tapo P110 Integration**: Lokale WLAN-Steckdosen-Steuerung - **Automatische Zeitsteuerung**: Drucker Ein-/Ausschaltung nach Reservierung - **Herstellerunabhängigkeit**: Keine direkten Drucker-Eingriffe erforderlich - **Flask REST-APIs**: Vollständige CRUD-Operationen - **SQLite-Datenbank**: Lokale Datenpersistenz ohne externe Abhängigkeiten - **HTTPS-Verschlüsselung**: Selbstsignierte Zertifikate - **Offline-Betrieb**: Vollständig autonomer Betrieb ohne Internet - **Raspberry Pi Kiosk**: Touch-optimiertes Dashboard vor Ort ### Frontend-Features (Torben Haack) - Moderne Web-Oberfläche - **Progressive Web App**: Offline-Funktionalität im Browser - **React 18 + Next.js 14**: Moderne, performante Web-Technologien - **Analytics-Dashboard**: Recharts-Visualisierungen für Nutzungsstatistiken - **Responsive Design**: Optimiert für alle Endgeräte (Desktop/Tablet/Mobile) - **Real-time Updates**: Live-Synchronisation mit Backend-APIs - **Export-Funktionen**: PDF/Excel-Reports für Management-Analysen - **Benutzerfreundlich**: Intuitive Workflows für alle Stakeholder ## 🛠️ Entwicklung ### Backend-Entwicklung (Till Tomczak) ```bash cd backend python -m venv venv source venv/bin/activate # Linux/Mac pip install -r requirements.txt python app.py --debug ``` ### Frontend-Entwicklung (Torben Haack) #### Automatische Installation (Empfohlen) ```bash cd frontend sudo ./setup.sh # Interaktives Setup-Menü ``` #### Manuelle Entwicklung ```bash cd frontend pnpm install pnpm db:migrate pnpm dev ``` #### Frontend-Setup-Skript Features Das neue `frontend/setup.sh` bietet: - **Vollständige Installation**: Docker, SSL-Zertifikate, Caddy Reverse Proxy - **Mercedes SSL-Zertifikate**: Selbstsignierte Zertifikate für `m040tbaraspi001.de040.corpintra.net` - **Automatischer HTTPS-Server**: Verfügbar auf Port 443 (nicht 3000) - **Systemd-Integration**: Automatischer Start beim Boot - **Interaktives Menü**: 1. Vollständige Frontend-Installation 2. SSL-Zertifikate neu generieren 3. Service-Status prüfen 4. Beenden ### Integration testen ```bash # Backend-APIs testen curl http://localhost:5000/api/printers # Frontend mit HTTPS (nach Setup-Skript) curl -k https://m040tbaraspi001.de040.corpintra.net/health curl -k https://localhost/health ``` ## 📚 Dokumentation ### Backend-Dokumentation (Till Tomczak) - [`backend/README.md`](backend/README.md) - Hardware-Setup & API-Dokumentation - [`backend/docs/`](backend/docs/) - Raspberry Pi Konfiguration & Smart-Plug-Integration ### Frontend-Dokumentation (Torben Haack) - [`frontend/README.md`](frontend/README.md) - UI-Entwicklung & Analytics - [`frontend/docs/`](frontend/docs/) - Component-Library & PWA-Features ### Gemeinsame Dokumentation - [`docs/myp_documentation.md`](docs/myp_documentation.md) - Vollständige Projektdokumentation - [`docs/DEPLOYMENT.md`](docs/DEPLOYMENT.md) - Production-Deployment-Guide ## 🤝 Projektphilosophie ### Cyber-Physische Vernetzung MYP stellt eine **cyber-physische Lösung** dar, die **IT-System (Reservierungsplattform) und Hardware (Smart-Plugs und Drucker) eng vernetzt**. Das System überbrückt die digitale und physische Welt durch intelligente Automatisierung. ### Komplementäre Expertisen - **Till Tomczak**: Spezialist für Hardware-Integration und cyber-physische Vernetzung - **Torben Haack**: Spezialist für Frontend-Entwicklung und Datenanalyse ### Gemeinsame Ziele - **Digitalisierung**: Modernisierung des Reservierungsprozesses - **Automatisierung**: Zeitgesteuerte Hardware-Steuerung ohne manuelle Eingriffe - **Benutzerfreundlichkeit**: Intuitive Bedienung für alle Stakeholder - **Effizienz**: Optimierte Ressourcennutzung und Energieeinsparung ## 👥 Entwicklerteam ### Till Tomczak - **Backend-Infrastruktur & Hardware-Integration** - **Cyber-Physische Systeme**: Smart-Plug-Integration und Hardware-Steuerung - **System-Architektur**: Flask-APIs und SQLite-Datenbank-Design - **DevOps**: Raspberry Pi Services und Produktions-Deployment - **Offline-Systeme**: Autonomer Betrieb ohne Internet-Abhängigkeiten ### Torben Haack - **Frontend-Entwicklung & Analytics** - **Progressive Web Apps**: Moderne Browser-Technologien und Offline-Features - **User Interface**: React-Komponenten und responsive Design - **Datenvisualisierung**: Charts, Dashboards und Analytics - **API-Integration**: Nahtlose Backend-Anbindung und Real-time Updates ## 📄 Lizenz Dieses Projekt wurde für den internen Gebrauch bei Mercedes-Benz entwickelt. --- **Backend-System**: Till Tomczak (Cyber-Physische Vernetzung & Hardware-Integration) **Frontend-System**: Torben Haack (Progressive Web App & Analytics) **Architektur**: Microservices mit REST-API-Integration **Technologie**: Flask + SQLite (Backend) + Next.js + React (Frontend) **Hardware**: Raspberry Pi + TP-Link Tapo P110 Smart-Plugs **Entwickelt für**: Mercedes-Benz Werk 040 Berlin MYP