🛠️ "Implementiere TP-Link Tapo P110 Unterstützung für Druckerüberwachung und -steuerung"

- Aktualisiere die `check_printer_status()` Funktion zur Verwendung des PyP100-Moduls für die Tapo-Steckdosen.
- Füge neue API-Endpunkte hinzu: `test-tapo` für die Verbindungstests einzelner Drucker und `test-all-tapo` für Massentests.
- Verbessere die Fehlerbehandlung und Logging für Tapo-Verbindungen.
- Aktualisiere die Benutzeroberfläche, um den Datei-Upload als optional zu kennzeichnen.
- Implementiere umfassende Tests für die Tapo-Verbindungen in `debug_drucker_erkennung.py` und verbessere die Validierung der Konfiguration in `job_scheduler.py`.
This commit is contained in:
2025-05-29 21:19:30 +02:00
parent da1d531c16
commit de1b87f833
8 changed files with 585 additions and 178 deletions

View File

@@ -594,7 +594,7 @@
<svg class="w-5 h-5 mr-2 text-mercedes-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"/>
</svg>
3D-Datei hochladen
3D-Datei hochladen (optional)
</h3>
<div id="file-upload-container">
@@ -743,8 +743,8 @@
email: false,
printer_id: false,
duration_min: false,
reason: false,
file: false
reason: false
// file wurde entfernt da es optional ist
};
let isSubmitting = false;
@@ -827,7 +827,7 @@ document.addEventListener('DOMContentLoaded', function() {
}
selectedFile = file;
validationState.file = true;
// validationState.file = true; // Entfernt, da Upload optional ist
showFilePreview(file);
updateFormValidation();
@@ -913,7 +913,7 @@ document.addEventListener('DOMContentLoaded', function() {
function removeFile() {
selectedFile = null;
validationState.file = false;
// validationState.file = false; // Entfernt, da Upload optional ist
const previewContainer = document.getElementById('file-preview');
const uploadContent = document.getElementById('upload-content');
@@ -1175,10 +1175,11 @@ document.addEventListener('DOMContentLoaded', function() {
return;
}
if (!selectedFile) {
showAdvancedMessage('Bitte wählen Sie eine Datei aus.', 'error');
return;
}
// Datei ist jetzt optional - keine Validierung mehr erforderlich
// if (!selectedFile) {
// showAdvancedMessage('Bitte wählen Sie eine Datei aus.', 'error');
// return;
// }
isSubmitting = true;
showLoadingState();
@@ -1190,7 +1191,11 @@ document.addEventListener('DOMContentLoaded', function() {
formData.append('printer_id', document.getElementById('printer_id').value);
formData.append('duration_min', document.getElementById('duration_min').value);
formData.append('reason', document.getElementById('reason').value.trim());
formData.append('file', selectedFile);
// Datei nur anhängen, wenn eine ausgewählt wurde
if (selectedFile) {
formData.append('file', selectedFile);
}
// Add CSRF token
const csrfToken = document.querySelector('meta[name="csrf-token"]')?.getAttribute('content');