4.9 KiB
4.9 KiB
Tapo-Integration Implementation - MYP System
🎯 Implementierte Funktionalitäten
1. TapoStatusManager - Zentrale Status-Verwaltung
Der neue TapoStatusManager
in backend/utils/tapo_status_manager.py
bietet:
Die 3 Status-Zustände:
on
- Steckdose eingeschaltet (grün)off
- Steckdose ausgeschaltet (grau)unreachable
- Steckdose nicht erreichbar (rot)
Hauptfunktionen:
# Status eines Druckers abrufen
status = tapo_status_manager.get_printer_status(printer_id)
# Status aller Drucker abrufen
all_status = tapo_status_manager.get_all_printer_status()
# Steckdose steuern
success, msg = tapo_status_manager.control_plug(printer_id, "on"|"off")
# Automatische Job-Steuerung
tapo_status_manager.check_and_control_for_jobs()
2. Automatische Steckdosen-Steuerung
Die automatische Steuerung wurde in den JobScheduler
integriert:
- Job startet: Steckdose wird automatisch eingeschaltet
- Job endet: Steckdose wird automatisch ausgeschaltet
- Fehlerbehandlung: Jobs werden trotzdem gestartet/beendet, auch wenn Steckdose nicht erreichbar
3. API-Endpunkte
Drucker-Status (/api/printers/status
)
{
"success": true,
"printers": [
{
"id": 1,
"name": "3D-Drucker 1 - Halle A",
"plug_status": "on|off|unreachable",
"plug_reachable": true|false,
"has_plug": true,
"status_display": {
"text": "An|Aus|Nicht erreichbar",
"color": "green|gray|red",
"icon": "power|power-off|exclamation-triangle"
},
"current_job": {...},
"next_job": {...}
}
]
}
4. Kalender-Integration für Admins
Die Kalender-Events enthalten für Admins erweiterte Informationen:
event = {
"id": "job_123",
"title": "Druckauftrag XYZ",
"extendedProps": {
"plugStatus": "on|off|unreachable",
"plugReachable": true|false,
"statusDisplay": {
"text": "An",
"color": "green",
"icon": "power"
}
},
"tooltip": "Job: XYZ\nDrucker: 1\nSteckdose: An\n✓ Steckdose erreichbar"
}
5. Die 6 Standard-Drucker
Die folgenden 6 Drucker sind standardmäßig konfiguriert:
-
3D-Drucker 1 - Halle A (Prusa MK3S+)
- IP: 192.168.1.101
- Steckdose: 192.168.1.201
-
3D-Drucker 2 - Halle A (Prusa MK3S+)
- IP: 192.168.1.102
- Steckdose: 192.168.1.202
-
3D-Drucker 3 - Halle B (Ultimaker S5)
- IP: 192.168.1.103
- Steckdose: 192.168.1.203
-
3D-Drucker 4 - Halle B (Ultimaker S5)
- IP: 192.168.1.104
- Steckdose: 192.168.1.204
-
3D-Drucker 5 - Labor (Formlabs Form 3)
- IP: 192.168.1.105
- Steckdose: 192.168.1.205
-
3D-Drucker 6 - Werkstatt (Markforged X7)
- IP: 192.168.1.106
- Steckdose: 192.168.1.206
🧪 Test-Skripte
test_printer_setup.py
Interaktives Skript zum Einrichten und Testen der Drucker:
cd backend
python scripts/test_printer_setup.py
test_tapo_integration.py
Umfassende Pytest-Suite für alle Funktionalitäten:
cd backend
python -m pytest tests/test_tapo_integration.py -v
🔧 Konfiguration
Umgebungsvariablen
# In .env oder als Systemvariablen
TAPO_USERNAME=admin@email.com
TAPO_PASSWORD=secure_password
Drucker-Konfiguration
Jeder Drucker benötigt:
plug_ip
- IP-Adresse der Tapo-Steckdoseplug_username
- Tapo-Account-Benutzernameplug_password
- Tapo-Account-Passwort
📊 Status-Darstellung
UI-Komponenten
- Drucker-Übersicht: Zeigt alle 6 Drucker mit aktuellem Status
- Kalender: Erweiterte Tooltips mit Steckdosen-Status für Admins
- Admin-Dashboard: Übersicht über alle Steckdosen-Stati
Status-Farben
- 🟢 Grün: Steckdose eingeschaltet
- ⚪ Grau: Steckdose ausgeschaltet
- 🔴 Rot: Steckdose nicht erreichbar
🚀 Verwendung
Manueller Test der Steckdosen
- Als Admin einloggen
- Zu "Tapo-Steuerung" navigieren
- Drucker auswählen und "Ein/Aus" klicken
Automatische Steuerung
- Job erstellen mit Start- und Endzeit
- System schaltet Steckdose automatisch ein/aus
- Status wird im Kalender angezeigt
🔒 Sicherheit
- Nur Admins können Steckdosen manuell steuern
- Passwörter werden verschlüsselt gespeichert
- Fehlerhafte Steckdosen blockieren keine Jobs
📝 Logging
Alle Steckdosen-Operationen werden geloggt:
- In
PlugStatusLog
Tabelle - In
logs/tapo_controller/*.log
- In
logs/tapo_status_manager/*.log
⚠️ Fehlerbehandlung
- Steckdose nicht erreichbar: Job läuft trotzdem
- Falsches Passwort: Fehlermeldung in UI
- Netzwerkfehler: Automatischer Retry nach 30 Sekunden
🎯 Nächste Schritte
- Dashboard-Widget für Echtzeit-Status
- Energieverbrauch-Tracking (wenn von Tapo unterstützt)
- Automatische Fehler-Benachrichtigungen per E-Mail
- Zeitbasierte Steckdosen-Profile (z.B. Nachtabschaltung)