Verbessere die Initialisierung des BambuClient-Geräteattributs, indem grundlegende Attribute manuell erstellt werden; erweitere Fehlerbehandlung bei der Initialisierung.

This commit is contained in:
Manuel Weiser 2025-03-02 11:32:48 +01:00
parent 92e11cdbf3
commit 9358533ce8

View File

@ -455,17 +455,34 @@ class BambuVirtualPrinter:
# da die connect()-Methode ein Callback als Parameter erwartet # da die connect()-Methode ein Callback als Parameter erwartet
if not hasattr(bambu_client, 'device'): if not hasattr(bambu_client, 'device'):
self._log.debug("BambuClient has no device attribute, initializing manually") self._log.debug("BambuClient has no device attribute, initializing manually")
# Statt bambu_client.connect() zu verwenden, initialisieren wir die Attribute direkt # Statt eine BambuDevice-Klasse direkt zu importieren oder connect() zu verwenden,
# initialisieren wir die grundlegenden Attribute anders
try: try:
# Wir prüfen, ob wir auf private Attribute zugreifen können # Manuell die notwendigen Attribute erstellen
if hasattr(bambu_client, '_init_attributes'): bambu_client.device = type('', (), {})() # Ein leeres Objekt erstellen
bambu_client._init_attributes()
self._log.debug("Initialized BambuClient attributes manually via _init_attributes") # Grundlegende Attribute hinzufügen
else: bambu_client.device.temperature = type('', (), {
# Wenn keine _init_attributes Methode vorhanden ist, erstellen wir die grundlegenden Attribute manuell 'nozzle_temp': 21.0,
from pybambu import BambuDevice 'target_nozzle_temp': 0.0,
bambu_client.device = BambuDevice() 'bed_temp': 21.0,
self._log.debug("Created device attribute manually") 'target_bed_temp': 0.0,
'chamber_temp': 21.0,
})()
bambu_client.device.print_job = type('', (), {
'gcode_state': 'IDLE',
'gcode_file': '',
'mc_percent': 0,
'mc_remaining_time': 0,
})()
bambu_client.device.hms = type('', (), {
'errors': {'Count': 0},
'update_from_payload': lambda x: None
})()
self._log.debug("Created device attributes manually")
except Exception as e: except Exception as e:
self._log.error(f"Error initializing BambuClient: {e}", exc_info=True) self._log.error(f"Error initializing BambuClient: {e}", exc_info=True)