9.0 KiB
9.0 KiB
Steckdosenschaltzeiten System
Übersicht
Das Steckdosenschaltzeiten-System ermöglicht Administratoren eine detaillierte Kalenderübersicht aller Schaltungen der Smart Plug Steckdosen (TAPO). Das System protokolliert automatisch:
- Verbindungsstatus: Wann eine Steckdose vom Strom getrennt war
- Schaltzustände: Wann eine Steckdose ein- oder ausgeschaltet war
- Systemereignisse: Automatische Checks, manuelle Änderungen, API-Zugriffe
- Performance-Daten: Antwortzeiten, Energieverbrauch, Firmware-Versionen
Funktionen
📅 Kalenderansicht mit FullCalendar
- Moderne FullCalendar-Integration mit deutscher Lokalisierung
- Monat-, Wochen- und Tages-Ansichten
- Farbkodierte Events basierend auf Schaltungsstatus
- Interaktive Event-Details mit detaillierten Informationen
🔌 Automatisches Logging
- Kontinuierliche Überwachung aller registrierten Steckdosen
- Automatische Protokollierung bei Statusänderungen
- Integration in das bestehende Drucker-Monitor-System
📊 Administrator-Dashboard
- Dedizierte Übersicht unter
/admin/steckdosenschaltzeiten
- Verlinkt über Footer (nur für Administratoren sichtbar)
- Echtzeit-Statistiken mit modernen Karten-Design
🔍 Erweiterte Filterung
- Filter nach Drucker im Kalender
- Verschiedene Ansichtsmodi (Monat/Woche/Tag)
- Legende für bessere Übersichtlichkeit
🧹 Automatische Bereinigung
- Konfigurierbare Löschung alter Logs
- Performance-Optimierung durch Cache-Management
- Datenschutz-konforme Datenhaltung
Kalender-Features
Farbkodierung
- 🟢 Grün: Steckdose EIN (Status:
on
) - 🔴 Orange: Steckdose AUS (Status:
off
) - 🔌 Blau: Verbunden (Status:
connected
) - ❌ Rot: Getrennt (Status:
disconnected
)
Event-Details
Beim Klick auf ein Kalenderereignis werden folgende Details angezeigt:
- Zeitpunkt der Schaltung
- Drucker-Name
- Status und Quelle der Änderung
- Benutzer (bei manueller Schaltung)
- Technische Daten (Antwortzeit, Verbrauch, Spannung, Strom)
- Notizen und Fehlermeldungen
Ansichtsmodi
- Monatsansicht: Übersicht aller Schaltungen im Monat
- Wochenansicht: Detaillierte Tageszeiten sichtbar
- Tagesansicht: Stündliche Aufschlüsselung
Datenbankmodell
PlugStatusLog
- id (Primary Key)
- printer_id (Foreign Key -> Printer)
- status (String): 'connected', 'disconnected', 'on', 'off'
- timestamp (DateTime): Zeitpunkt der Statusänderung
- ip_address (String): IP der Steckdose
- power_consumption (Float): Stromverbrauch in Watt
- voltage (Float): Spannung in Volt
- current (Float): Stromstärke in Ampere
- source (String): 'system', 'manual', 'api', 'scheduler'
- user_id (Foreign Key -> User): Bei manueller Änderung
- notes (Text): Zusätzliche Notizen
- response_time_ms (Integer): Antwortzeit in Millisekunden
- error_message (Text): Fehlermeldung bei Problemen
- firmware_version (String): Firmware-Version der Steckdose
API-Endpunkte
Kalender-Daten abrufen
GET /api/admin/plug-schedules/calendar
Parameter:
- start (required): Start-Datum im ISO-Format
- end (required): End-Datum im ISO-Format
- printer_id (optional): Filter nach Drucker
Logs abrufen
GET /api/admin/plug-schedules/logs
Parameter:
- printer_id (optional): Filter nach Drucker
- status (optional): Filter nach Status
- hours (optional): Zeitraum in Stunden (Standard: 24)
- page (optional): Seite für Paginierung
- per_page (optional): Einträge pro Seite
Statistiken abrufen
GET /api/admin/plug-schedules/statistics
Parameter:
- hours (optional): Zeitraum in Stunden (Standard: 24)
Alte Logs bereinigen
POST /api/admin/plug-schedules/cleanup
Body:
{
"days": 30 // Logs älter als X Tage löschen
}
Integration
Printer Monitor Integration
Das System ist vollständig in das bestehende printer_monitor.py
integriert:
_check_outlet_status()
: Loggt jeden Status-Check_turn_outlet_off()
: Loggt Schaltbefehleinitialize_all_outlets_on_startup()
: Loggt Startup-Initialisierung
Automatisches Logging
# Beispiel: Status-Änderung loggen
PlugStatusLog.log_status_change(
printer_id=1,
status="on",
source="manual",
user_id=current_user.id,
ip_address="192.168.1.100",
response_time_ms=250,
notes="Manuell eingeschaltet über Admin-Panel"
)
Konfiguration
FullCalendar-Einstellungen
- Lokalisierung: Deutsche Sprache und Formate
- Höhe: Automatische Anpassung an Container
- Events: Asynchrones Laden vom Server
- Navigation: Vor/Zurück, Heute, Ansichtswechsel
Cache-Einstellungen
- Session-Cache: 30 Sekunden für schnelle Zugriffe
- DB-Cache: 5 Minuten für persistente Daten
- Log-Cache: Performance-optimierte Abfragen
Bereinigung
- Standard: 30 Tage alte Logs löschen
- Konfigurierbar: 1-365 Tage
- Automatisch: Über Scheduler oder manuell
Sicherheit
Zugriffskontrolle
- Nur Administratoren haben Zugriff
- CSRF-Schutz für alle Änderungen
- Login-Requirement für alle API-Endpunkte
Datenschutz
- Konfigurierbare Löschung alter Daten
- Anonymisierung nach Löschung von Druckern
- Audit-Trail für alle Änderungen
Status-Bedeutungen
Status | Bedeutung | Beschreibung | Farbe im Kalender |
---|---|---|---|
connected |
Verbunden | Steckdose ist erreichbar und antwortet | 🔌 Blau |
disconnected |
Getrennt | Steckdose ist nicht erreichbar | ❌ Rot |
on |
Eingeschaltet | Steckdose ist an - Drucker druckt aktiv | 🟢 Grün |
off |
Ausgeschaltet | Steckdose ist aus - Drucker bereit | 🔴 Orange |
Quellenarten
Source | Bedeutung | Beschreibung |
---|---|---|
system |
System | Automatische Checks durch Monitor |
manual |
Manuell | Manuelle Änderung durch Administrator |
api |
API | Programmatische Änderung über API |
scheduler |
Scheduler | Geplante Aktion durch Scheduler |
UI-Komponenten
Statistik-Karten
- Schaltungen (24h): Anzahl der Statusänderungen
- Erfolgsrate: Prozentsatz erfolgreicher Verbindungen
- Ø Antwortzeit: Durchschnittliche Reaktionszeit
- Fehlerzahl: Anzahl der Verbindungsfehler
Steuerungselemente
- Drucker-Filter: Dropdown zur Filterung nach Drucker
- Ansicht-Buttons: Wechsel zwischen Monat/Woche/Tag
- Aktualisieren: Manuelle Datenaktualisierung
- Bereinigen: Löschung alter Logs
Modal-Details
Detailansicht für Kalenderereignisse mit:
- Vollständige Event-Informationen
- Technische Parameter
- Fehlerdetails (falls vorhanden)
- Benutzernotizen
Performance
Optimierungen
- Asynchrone Kalender-Events mit Lazy Loading
- Intelligentes Caching auf mehreren Ebenen
- Paginierte Datenabfrage für große Datensätze
- Index-optimierte Datenbankabfragen
- FullCalendar-Performance-Optimierung
Monitoring-Metriken
- Durchschnittliche Antwortzeit der Steckdosen
- Fehlerrate bei Verbindungen
- Anzahl Logs pro Zeitraum
- Top-Drucker nach Aktivität
Fehlerbehebung
Häufige Probleme
FullCalendar lädt nicht
- JavaScript-Konsole auf Fehler prüfen
- CDN-Verfügbarkeit überprüfen
- Browser-Cache leeren
Kalender-Events fehlen
- API-Endpunkt
/api/admin/plug-schedules/calendar
testen - Datums-Parameter überprüfen
- Administratorberechtigung validieren
PyP100-Modul nicht verfügbar
pip install PyP100
Steckdose nicht erreichbar
- IP-Adresse überprüfen
- Netzwerkverbindung testen
- TAPO-Anmeldedaten validieren
Debug-Informationen
// Kalender-Debug im Browser
console.log(calendar.getEvents());
// API-Test
fetch('/api/admin/plug-schedules/calendar?start=2025-01-01&end=2025-01-31')
.then(r => r.json())
.then(console.log);
Wartung
Regelmäßige Aufgaben
- Wöchentlich: Logs älter als 30 Tage bereinigen
- Monatlich: Cache-Performance überprüfen
- Quartal: Datenbankgröße und Indizes optimieren
- Jährlich: FullCalendar-Version aktualisieren
Backup-Empfehlungen
- Steckdosen-Logs in reguläre Backups einbeziehen
- Export-Funktionen für langfristige Archivierung
- Disaster-Recovery-Tests durchführen
Changelog
Version 2.0.0 (Januar 2025)
- ✅ Umbenennung zu "Steckdosenschaltzeiten"
- ✅ FullCalendar-Integration implementiert
- ✅ Moderne Kalenderansicht mit deutschen Lokalisierung
- ✅ Event-Details Modal hinzugefügt
- ✅ Farbkodierte Ereignisse nach Status
- ✅ Interaktive Drucker-Filterung
- ✅ Responsive Design für mobile Geräte
- ✅ Performance-Optimierungen für Kalender-Daten
Version 1.0.0 (Januar 2025)
- ✅ Grundlegendes Monitoring-System implementiert
- ✅ Administrator-Dashboard erstellt
- ✅ API-Endpunkte entwickelt
- ✅ Integration in Printer Monitor
- ✅ Automatisches Logging aktiviert
- ✅ Footer-Link für Administratoren hinzugefügt
- ✅ Bereinigungsfunktionen implementiert
Support
Für Fragen oder Probleme:
- Logs in
/logs/printer_monitor/
prüfen - Administrator-Dashboard auf Fehler überprüfen
- Browser-Konsole auf JavaScript-Fehler prüfen
- FullCalendar-Kompatibilität validieren
- Bei persistenten Problemen System-Admin kontaktieren