# Tapo-Steckdosen-Steuerung - MYP Platform ## Übersicht Die Tapo-Steckdosen-Steuerung ist eine eigenständige Web-Interface für die direkte Kontrolle aller TP-Link Tapo-Steckdosen (P100/P110) über die MYP Platform. Diese Funktion ermöglicht es Benutzern, Smart-Steckdosen unabhängig von den Druckern zu verwalten und zu steuern. ## Features ### 🔌 Hauptfunktionen - **Live-Status-Überwachung**: Echtzeit-Status aller konfigurierten Tapo-Steckdosen - **Direkte Steuerung**: Ein- und Ausschalten einzelner Steckdosen - **Automatische Erkennung**: Suche nach neuen Tapo-Steckdosen im Netzwerk - **Batch-Operationen**: Gleichzeitiges Steuern mehrerer Steckdosen - **Verbindungstest**: Testen der Erreichbarkeit einzelner Geräte ### 🛡️ Sicherheit & Berechtigungen - **Rollenbasierte Zugriffskontrolle**: Nur Benutzer mit `CONTROL_PRINTER` Berechtigung haben Zugriff - **Admin-Funktionen**: Erweiterte Funktionen nur für Administratoren - **Audit-Logging**: Alle Aktionen werden protokolliert - **CSRF-Schutz**: Schutz vor Cross-Site Request Forgery ### 📱 Benutzeroberfläche - **Responsive Design**: Optimiert für Desktop und Mobile - **Live-Updates**: Automatische Status-Aktualisierung alle 30 Sekunden - **Moderne UI**: Glassmorphism-Design mit Dark-Mode-Unterstützung - **Intuitive Bedienung**: Einfache Ein-Klick-Steuerung ## Zugriff & Navigation ### Haupt-Dashboard ``` URL: /tapo/ Berechtigung: CONTROL_PRINTER ``` Das Haupt-Dashboard zeigt alle konfigurierten Tapo-Steckdosen mit: - Live-Status (Online/Offline, Ein/Aus) - Zugehöriger Drucker-Name - IP-Adresse - Standort-Information - Direkte Steuerungsbuttons ### Manuelle Steuerung (Admin) ``` URL: /tapo/manual-control Berechtigung: ADMIN ``` Erweiterte Funktionen für Administratoren: - Steuerung beliebiger IP-Adressen - Verbindungstests - Notaus-Funktion (alle Steckdosen ausschalten) - Status-Abfrage ohne Drucker-Zuordnung ## API-Endpunkte ### Steckdosen-Steuerung ```http POST /tapo/control Content-Type: application/json { "ip": "192.168.1.100", "action": "on|off" } ``` ### Status abfragen ```http GET /tapo/status/{ip} ``` ### Alle Status abrufen ```http GET /tapo/all-status ``` ### Automatische Erkennung ```http POST /tapo/discover ``` ### Verbindungstest ```http POST /tapo/test/{ip} ``` ## Konfiguration ### Tapo-Anmeldedaten Die globalen Tapo-Anmeldedaten werden in `utils/settings.py` konfiguriert: ```python TAPO_USERNAME = "ihr_tapo_username" TAPO_PASSWORD = "ihr_tapo_passwort" ``` ### Standard-IP-Bereiche Für die automatische Erkennung können Standard-IP-Adressen definiert werden: ```python DEFAULT_TAPO_IPS = [ "192.168.0.100", "192.168.0.101", "192.168.0.102", # weitere IPs... ] ``` ### Timeout-Einstellungen ```python TAPO_TIMEOUT = 5 # Sekunden TAPO_RETRY_COUNT = 3 # Wiederholungsversuche ``` ## Installation & Setup ### 1. Abhängigkeiten installieren ```bash pip install PyP100 ``` ### 2. Tapo-Steckdosen konfigurieren 1. Steckdosen über Tapo-App einrichten 2. Statische IP-Adressen zuweisen 3. Anmeldedaten in der Plattform konfigurieren ### 3. Drucker-Zuordnung Steckdosen werden automatisch erkannt wenn sie in den Drucker-Einstellungen konfiguriert sind: - Admin → Drucker verwalten → Drucker bearbeiten - IP-Adresse der Tapo-Steckdose eingeben ## Fehlerbehebung ### Häufige Probleme #### Steckdose nicht erreichbar 1. **Netzwerk-Verbindung prüfen** ```bash ping 192.168.1.100 ``` 2. **Tapo-App-Konfiguration überprüfen** - Steckdose in Tapo-App sichtbar? - WLAN-Verbindung stabil? - Remote-Zugriff aktiviert? 3. **Anmeldedaten verifizieren** - Username/Passwort korrekt? - Account nicht gesperrt? #### Verbindung funktioniert, aber keine Steuerung 1. **Berechtigungen prüfen** - Hat der Benutzer `CONTROL_PRINTER` Berechtigung? - Ist die Steckdose einem aktiven Drucker zugeordnet? 2. **Firewall/Router-Einstellungen** - Port 9999 (Tapo-Standard) offen? - Keine Blockierung zwischen Subnets? #### Performance-Probleme 1. **Timeout-Werte anpassen** ```python TAPO_TIMEOUT = 10 # Erhöhen bei langsamen Verbindungen ``` 2. **Anzahl gleichzeitiger Verbindungen reduzieren** 3. **WLAN-Signal der Steckdosen verbessern** ### Debug-Logging Für detaillierte Fehlermeldungen Debug-Logging aktivieren: ```python # In utils/logging_config.py TAPO_LOG_LEVEL = "DEBUG" ``` Logs finden Sie unter: ``` backend/logs/tapo_controller/tapo_controller.log ``` ## Sicherheitshinweise ### Netzwerk-Sicherheit - **VLAN-Isolation**: Tapo-Steckdosen in separates VLAN - **Firewalling**: Nur notwendige Ports öffnen - **Monitoring**: Ungewöhnliche Aktivitäten überwachen ### Zugriffskontrolle - **Starke Passwörter**: Für Tapo-Accounts verwenden - **Berechtigungen**: Minimale notwendige Rechte vergeben - **Audit-Logs**: Regelmäßig überprüfen ### Physische Sicherheit - **Steckdosen-Zugang**: Physischen Zugang beschränken - **Reset-Buttons**: Vor unbefugtem Zugriff schützen ## Erweiterte Funktionen ### Zeitgesteuerte Schaltungen ```python # Beispiel für geplante Abschaltung from utils.tapo_controller import tapo_controller import schedule def shutdown_all_outlets(): results = tapo_controller.initialize_all_outlets() print(f"Alle Steckdosen ausgeschaltet: {results}") # Jeden Tag um 22:00 alle ausschalten schedule.every().day.at("22:00").do(shutdown_all_outlets) ``` ### Energiemonitoring (P110) ```python # P110-spezifische Funktionen für Energiemessung device_info = tapo_controller._collect_device_info(p100, device_info) power_consumption = device_info.get('power_consumption') voltage = device_info.get('voltage') current = device_info.get('current') ``` ### Integration mit anderen Systemen Die API-Endpunkte können auch von externen Systemen genutzt werden: ```bash # cURL-Beispiele curl -X POST http://localhost:5000/tapo/control \ -H "Content-Type: application/json" \ -d '{"ip": "192.168.1.100", "action": "on"}' curl http://localhost:5000/tapo/status/192.168.1.100 ``` ## Best Practices ### Performance 1. **Caching nutzen**: Status-Abfragen werden automatisch gecacht 2. **Batch-Operationen**: Mehrere Steckdosen gleichzeitig steuern 3. **Timeout-Optimierung**: Für lokale Netzwerke niedrigere Werte ### Zuverlässigkeit 1. **Retry-Mechanismus**: Automatische Wiederholung bei Fehlern 2. **Fallback-Strategien**: Alternative Steuerungsmethoden vorbereiten 3. **Monitoring**: Kontinuierliche Überwachung der Verfügbarkeit ### Wartung 1. **Regelmäßige Updates**: Tapo-Firmware aktuell halten 2. **Log-Rotation**: Große Log-Dateien vermeiden 3. **Backup**: Konfigurationen sichern ## Lizenz & Credits Diese Implementierung basiert auf: - **PyP100**: Python-Library für TP-Link Tapo-Geräte - **Flask**: Web-Framework - **MYP Platform**: 3D-Druck-Management-System Entwickelt für die IHK-Abschlussprüfung 2025. --- **Autor**: MYP Development Team **Version**: 1.0.0 **Datum**: Juni 2025