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
if not hasattr(bambu_client, 'device'):
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:
# Wir prüfen, ob wir auf private Attribute zugreifen können
if hasattr(bambu_client, '_init_attributes'):
bambu_client._init_attributes()
self._log.debug("Initialized BambuClient attributes manually via _init_attributes")
else:
# Wenn keine _init_attributes Methode vorhanden ist, erstellen wir die grundlegenden Attribute manuell
from pybambu import BambuDevice
bambu_client.device = BambuDevice()
self._log.debug("Created device attribute manually")
# Manuell die notwendigen Attribute erstellen
bambu_client.device = type('', (), {})() # Ein leeres Objekt erstellen
# Grundlegende Attribute hinzufügen
bambu_client.device.temperature = type('', (), {
'nozzle_temp': 21.0,
'target_nozzle_temp': 0.0,
'bed_temp': 21.0,
'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:
self._log.error(f"Error initializing BambuClient: {e}", exc_info=True)