Files
Projektarbeit-MYP/backend/docs/tapo-integration-implementation.md

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:

  1. 3D-Drucker 1 - Halle A (Prusa MK3S+)

    • IP: 192.168.1.101
    • Steckdose: 192.168.1.201
  2. 3D-Drucker 2 - Halle A (Prusa MK3S+)

    • IP: 192.168.1.102
    • Steckdose: 192.168.1.202
  3. 3D-Drucker 3 - Halle B (Ultimaker S5)

    • IP: 192.168.1.103
    • Steckdose: 192.168.1.203
  4. 3D-Drucker 4 - Halle B (Ultimaker S5)

    • IP: 192.168.1.104
    • Steckdose: 192.168.1.204
  5. 3D-Drucker 5 - Labor (Formlabs Form 3)

    • IP: 192.168.1.105
    • Steckdose: 192.168.1.205
  6. 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-Steckdose
  • plug_username - Tapo-Account-Benutzername
  • plug_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

  1. Als Admin einloggen
  2. Zu "Tapo-Steuerung" navigieren
  3. Drucker auswählen und "Ein/Aus" klicken

Automatische Steuerung

  1. Job erstellen mit Start- und Endzeit
  2. System schaltet Steckdose automatisch ein/aus
  3. 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

  1. Dashboard-Widget für Echtzeit-Status
  2. Energieverbrauch-Tracking (wenn von Tapo unterstützt)
  3. Automatische Fehler-Benachrichtigungen per E-Mail
  4. Zeitbasierte Steckdosen-Profile (z.B. Nachtabschaltung)