From 9358533ce80f76a82951f04b7a9862f6068ee398 Mon Sep 17 00:00:00 2001 From: Manuel Weiser Date: Sun, 2 Mar 2025 11:32:48 +0100 Subject: [PATCH] =?UTF-8?q?Verbessere=20die=20Initialisierung=20des=20Bamb?= =?UTF-8?q?uClient-Ger=C3=A4teattributs,=20indem=20grundlegende=20Attribut?= =?UTF-8?q?e=20manuell=20erstellt=20werden;=20erweitere=20Fehlerbehandlung?= =?UTF-8?q?=20bei=20der=20Initialisierung.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../printer/bambu_virtual_printer.py | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/octoprint_bambu_printer/printer/bambu_virtual_printer.py b/octoprint_bambu_printer/printer/bambu_virtual_printer.py index cc4b855..44efc36 100644 --- a/octoprint_bambu_printer/printer/bambu_virtual_printer.py +++ b/octoprint_bambu_printer/printer/bambu_virtual_printer.py @@ -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)