Files
Projektarbeit-MYP/backend/docs/TAPO_CONTROL.md

6.8 KiB

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

POST /tapo/control
Content-Type: application/json

{
    "ip": "192.168.1.100",
    "action": "on|off"
}

Status abfragen

GET /tapo/status/{ip}

Alle Status abrufen

GET /tapo/all-status

Automatische Erkennung

POST /tapo/discover

Verbindungstest

POST /tapo/test/{ip}

Konfiguration

Tapo-Anmeldedaten

Die globalen Tapo-Anmeldedaten werden in utils/settings.py konfiguriert:

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:

DEFAULT_TAPO_IPS = [
    "192.168.0.100",
    "192.168.0.101",
    "192.168.0.102",
    # weitere IPs...
]

Timeout-Einstellungen

TAPO_TIMEOUT = 5  # Sekunden
TAPO_RETRY_COUNT = 3  # Wiederholungsversuche

Installation & Setup

1. Abhängigkeiten installieren

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

    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

    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:

# 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

# 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)

# 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:

# 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