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
- Steckdosen über Tapo-App einrichten
- Statische IP-Adressen zuweisen
- 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
-
Netzwerk-Verbindung prüfen
ping 192.168.1.100
-
Tapo-App-Konfiguration überprüfen
- Steckdose in Tapo-App sichtbar?
- WLAN-Verbindung stabil?
- Remote-Zugriff aktiviert?
-
Anmeldedaten verifizieren
- Username/Passwort korrekt?
- Account nicht gesperrt?
Verbindung funktioniert, aber keine Steuerung
-
Berechtigungen prüfen
- Hat der Benutzer
CONTROL_PRINTER
Berechtigung? - Ist die Steckdose einem aktiven Drucker zugeordnet?
- Hat der Benutzer
-
Firewall/Router-Einstellungen
- Port 9999 (Tapo-Standard) offen?
- Keine Blockierung zwischen Subnets?
Performance-Probleme
-
Timeout-Werte anpassen
TAPO_TIMEOUT = 10 # Erhöhen bei langsamen Verbindungen
-
Anzahl gleichzeitiger Verbindungen reduzieren
-
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
- Caching nutzen: Status-Abfragen werden automatisch gecacht
- Batch-Operationen: Mehrere Steckdosen gleichzeitig steuern
- Timeout-Optimierung: Für lokale Netzwerke niedrigere Werte
Zuverlässigkeit
- Retry-Mechanismus: Automatische Wiederholung bei Fehlern
- Fallback-Strategien: Alternative Steuerungsmethoden vorbereiten
- Monitoring: Kontinuierliche Überwachung der Verfügbarkeit
Wartung
- Regelmäßige Updates: Tapo-Firmware aktuell halten
- Log-Rotation: Große Log-Dateien vermeiden
- 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