Verbessere MQTT-Nachrichtenverarbeitung in BambuVirtualPrinter mit erweiterten Debug-Logs und Fehlerbehandlung; aktualisiere Temperaturabfrage zur Ausgabe aktueller Daten unabhängig vom Verbindungsstatus
This commit is contained in:
parent
eb397ff7b7
commit
3690767ced
@ -269,34 +269,46 @@ class BambuVirtualPrinter:
|
||||
try:
|
||||
# Decode message and update client data
|
||||
payload = json.loads(msg.payload.decode('utf-8'))
|
||||
self._log.debug(f"MQTT message received on topic {msg.topic}: {payload.keys()}")
|
||||
self._log.debug(f"MQTT message received on topic {msg.topic}: {list(payload.keys())}")
|
||||
|
||||
# Vollständigen Payload für Debugging ausgeben
|
||||
self._log.debug(f"Full MQTT payload: {json.dumps(payload)}")
|
||||
|
||||
# Verarbeite direkt die Daten aus der MQTT-Nachricht
|
||||
if 'print' in payload:
|
||||
self._log.info(f"Processing print data with keys: {list(payload['print'].keys())}")
|
||||
self._process_print_data(payload['print'])
|
||||
|
||||
# Forward the message to pybambu for its internal state
|
||||
try:
|
||||
if hasattr(self._bambu_client, '_process_message'):
|
||||
self._bambu_client._process_message(msg.topic, payload)
|
||||
self._log.debug("Message forwarded to pybambu via _process_message")
|
||||
else:
|
||||
# Alternative Methode für pybambu
|
||||
self._update_bambu_client_state(payload)
|
||||
self._log.debug("Message processed via _update_bambu_client_state")
|
||||
except Exception as e:
|
||||
self._log.error(f"Error forwarding to pybambu: {e}")
|
||||
|
||||
# Trigger explicit update of printer info after processing print data
|
||||
self._log.debug("Triggering printer data update")
|
||||
self.new_update("event_printer_data_update")
|
||||
|
||||
if 'info' in payload:
|
||||
self._log.info(f"Processing info data with keys: {list(payload['info'].keys())}")
|
||||
if 'hms' in payload['info']:
|
||||
# Aktualisiere HMS-Fehler direkt
|
||||
try:
|
||||
if hasattr(self._bambu_client.device, 'hms'):
|
||||
self._bambu_client.device.hms.update_from_payload(payload['info']['hms'])
|
||||
self._log.debug("HMS error data updated")
|
||||
except Exception as e:
|
||||
self._log.error(f"Error updating HMS data: {e}")
|
||||
self._log.debug("Triggering HMS errors update")
|
||||
self.new_update("event_hms_errors")
|
||||
except Exception as e:
|
||||
self._log.error(f"Error processing MQTT message: {e}")
|
||||
self._log.error(f"Error processing MQTT message: {e}", exc_info=True)
|
||||
|
||||
def _process_print_data(self, print_data):
|
||||
"""Verarbeitet direkt die Druckerdaten aus der MQTT-Nachricht"""
|
||||
@ -833,13 +845,19 @@ class BambuVirtualPrinter:
|
||||
return output
|
||||
|
||||
def _processTemperatureQuery(self) -> bool:
|
||||
# includeOk = not self._okBeforeCommandOutput
|
||||
if self.is_connected:
|
||||
output = self._create_temperature_message()
|
||||
self.sendIO(output)
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
# Debug-Log hinzufügen, um zu prüfen, ob die Methode aufgerufen wird
|
||||
self._log.debug(f"Processing temperature query - connected: {self.is_connected}")
|
||||
|
||||
# Aktuelle Temperaturdaten ausgeben
|
||||
self._log.debug(f"Current temperature data: Nozzle={self._telemetry.temp[0]}/{self._telemetry.targetTemp[0]}, " +
|
||||
f"Bed={self._telemetry.bedTemp}/{self._telemetry.bedTargetTemp}")
|
||||
|
||||
# Temperaturmeldung erzeugen und senden, unabhängig von Connected-Status
|
||||
output = self._create_temperature_message()
|
||||
self._log.debug(f"Sending temperature message: {output.strip()}")
|
||||
self.sendIO(output)
|
||||
|
||||
return True
|
||||
|
||||
def close(self):
|
||||
if self._mqtt_client and self._mqtt_connected:
|
||||
|
Loading…
x
Reference in New Issue
Block a user