🎉 Improved backend structure & optimizations 🛠️
This commit is contained in:
@@ -13,6 +13,7 @@ Autor: Till Tomczak - Mercedes-Benz TBA Marienfelde
|
||||
Datum: 2025-06-19 (Komplett-Neuschreibung für Backend-Kontrolle)
|
||||
"""
|
||||
|
||||
import os
|
||||
import time
|
||||
import socket
|
||||
import threading
|
||||
@@ -30,10 +31,12 @@ except ImportError:
|
||||
PyP110 = None
|
||||
TAPO_AVAILABLE = False
|
||||
|
||||
# Entwicklungsumgebung-Erkennung
|
||||
DEVELOPMENT_MODE = os.getenv('MYP_ENV', 'development') == 'development' or 'WSL' in os.uname().release
|
||||
|
||||
# MYP Models & Utils
|
||||
from models import get_db_session, Printer, PlugStatusLog
|
||||
from utils.logging_config import get_logger
|
||||
import os
|
||||
|
||||
# Logger
|
||||
hardware_logger = get_logger("hardware_integration")
|
||||
@@ -71,6 +74,9 @@ class DruckerSteuerung:
|
||||
|
||||
if not TAPO_AVAILABLE:
|
||||
hardware_logger.warning("⚠️ PyP100 nicht verfügbar - Simulation-Modus aktiv")
|
||||
|
||||
if DEVELOPMENT_MODE:
|
||||
hardware_logger.info("🚧 Entwicklungsumgebung erkannt - Erweiterte Simulation aktiviert")
|
||||
|
||||
# ===== KERN-STEUERUNGS-FUNKTIONEN =====
|
||||
|
||||
@@ -350,9 +356,9 @@ class DruckerSteuerung:
|
||||
|
||||
def _steckdose_schalten(self, ip: str, einschalten: bool) -> bool:
|
||||
"""Schaltet eine Tapo-Steckdose ein oder aus"""
|
||||
if not TAPO_AVAILABLE:
|
||||
hardware_logger.warning(f"⚠️ Simulation: Steckdose {ip} würde {'eingeschaltet' if einschalten else 'ausgeschaltet'}")
|
||||
return True # Simulation immer erfolgreich
|
||||
if not TAPO_AVAILABLE or DEVELOPMENT_MODE:
|
||||
hardware_logger.info(f"🔄 {'DEVELOPMENT' if DEVELOPMENT_MODE else 'SIMULATION'}: Steckdose {ip} würde {'eingeschaltet' if einschalten else 'ausgeschaltet'}")
|
||||
return True # Simulation/Development immer erfolgreich
|
||||
|
||||
# Zuerst Netzwerk-Erreichbarkeit prüfen
|
||||
if not self._erweiterte_netzwerk_prüfung(ip):
|
||||
@@ -409,6 +415,11 @@ class DruckerSteuerung:
|
||||
if not drucker.plug_ip:
|
||||
return 'unknown'
|
||||
|
||||
# Development-Modus: Simuliere wechselnden Status für Demo
|
||||
if DEVELOPMENT_MODE:
|
||||
import random
|
||||
return random.choice(['online', 'offline'])
|
||||
|
||||
# Ping-Test zur Steckdose
|
||||
if self._ping_test(drucker.plug_ip):
|
||||
return 'online'
|
||||
@@ -514,9 +525,13 @@ class DruckerSteuerung:
|
||||
"""
|
||||
hardware_logger.debug(f"🔍 Prüfe Steckdosen-Status: {ip}" + (f" (Drucker ID: {printer_id})" if printer_id else ""))
|
||||
|
||||
if not TAPO_AVAILABLE:
|
||||
# Legacy-Format: (reachable, status)
|
||||
return (True, 'online')
|
||||
if not TAPO_AVAILABLE or DEVELOPMENT_MODE:
|
||||
# Development/Simulation: Zufälligen Status für Demo
|
||||
import random
|
||||
if DEVELOPMENT_MODE:
|
||||
return (True, random.choice(['on', 'off']))
|
||||
else:
|
||||
return (True, 'online')
|
||||
|
||||
# Zuerst Netzwerk-Erreichbarkeit prüfen
|
||||
if not self._erweiterte_netzwerk_prüfung(ip):
|
||||
@@ -720,8 +735,8 @@ class DruckerSteuerung:
|
||||
"""
|
||||
hardware_logger.debug(f"🔴 Schalte Steckdose aus: {ip}" + (f" (Drucker ID: {printer_id})" if printer_id else ""))
|
||||
|
||||
if not TAPO_AVAILABLE:
|
||||
hardware_logger.info(f"🔄 SIMULATION: Steckdose {ip} ausgeschaltet")
|
||||
if not TAPO_AVAILABLE or DEVELOPMENT_MODE:
|
||||
hardware_logger.info(f"🔄 {'DEVELOPMENT' if DEVELOPMENT_MODE else 'SIMULATION'}: Steckdose {ip} ausgeschaltet")
|
||||
return True
|
||||
|
||||
try:
|
||||
@@ -763,8 +778,8 @@ class DruckerSteuerung:
|
||||
"""
|
||||
hardware_logger.debug(f"🟢 Schalte Steckdose ein: {ip}" + (f" (Drucker ID: {printer_id})" if printer_id else ""))
|
||||
|
||||
if not TAPO_AVAILABLE:
|
||||
hardware_logger.info(f"🔄 SIMULATION: Steckdose {ip} eingeschaltet")
|
||||
if not TAPO_AVAILABLE or DEVELOPMENT_MODE:
|
||||
hardware_logger.info(f"🔄 {'DEVELOPMENT' if DEVELOPMENT_MODE else 'SIMULATION'}: Steckdose {ip} eingeschaltet")
|
||||
return True
|
||||
|
||||
try:
|
||||
|
Reference in New Issue
Block a user