Skip to content

Commit 20fd121

Browse files
Add comprehensive debug logging to trace MQTT data flow
- Log printer_data object ID at each step (client → api → coordinator) - Log current_status and print_info.status when status is assigned - Log whether attributes exist when returned - This will help diagnose why entities show 'Unknown' despite successful parsing The logging will show if the same printer_data object is being used throughout the chain, or if there's a disconnection in the data flow.
1 parent 467d742 commit 20fd121

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

custom_components/elegoo_printer/api.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,16 @@ async def async_get_status(self) -> PrinterData:
403403
404404
""" # noqa: E501
405405
self.printer_data = await self.client.get_printer_status()
406+
status = (
407+
self.printer_data.status.current_status
408+
if self.printer_data.status
409+
else None
410+
)
411+
self._logger.debug(
412+
"async_get_status() got printer_data (id: %s, status: %s)",
413+
id(self.printer_data),
414+
status,
415+
)
406416
return self.printer_data
407417

408418
async def async_get_attributes(self) -> PrinterData:
@@ -665,6 +675,16 @@ async def async_get_printer_data(self) -> PrinterData:
665675
await self.async_get_print_history()
666676
await self.async_get_current_task()
667677
self.printer_data.calculate_current_job_end_time()
678+
status = (
679+
self.printer_data.status.current_status
680+
if self.printer_data.status
681+
else None
682+
)
683+
self._logger.debug(
684+
"async_get_printer_data() returning printer_data (id: %s, status: %s)",
685+
id(self.printer_data),
686+
status,
687+
)
668688
return self.printer_data
669689

670690
async def _setup_proxy_if_enabled(self, printer: Printer) -> Printer | None:

custom_components/elegoo_printer/mqtt/client.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,16 @@ async def get_printer_status(self) -> PrinterData:
367367
The latest printer status information.
368368
369369
"""
370+
status = (
371+
self.printer_data.status.current_status
372+
if self.printer_data.status
373+
else None
374+
)
375+
self.logger.debug(
376+
"get_printer_status() returning printer_data (id: %s, status: %s)",
377+
id(self.printer_data),
378+
status,
379+
)
370380
return self.printer_data
371381

372382
async def get_printer_attributes(self) -> PrinterData:
@@ -381,6 +391,12 @@ async def get_printer_attributes(self) -> PrinterData:
381391
The latest printer attributes information.
382392
383393
"""
394+
has_attrs = self.printer_data.attributes is not None
395+
self.logger.debug(
396+
"get_printer_attributes() returning (id: %s, has attributes: %s)",
397+
id(self.printer_data),
398+
has_attrs,
399+
)
384400
return self.printer_data
385401

386402
async def set_printer_video_stream(self, *, enable: bool) -> None:
@@ -782,7 +798,15 @@ def _status_handler(self, data: dict[str, Any]) -> None:
782798
)
783799
self.logger.debug("PrinterStatus.from_json() succeeded")
784800
self.printer_data.status = printer_status
785-
self.logger.debug("Assigned printer_data.status successfully")
801+
print_info_status = (
802+
printer_status.print_info.status if printer_status.print_info else None
803+
)
804+
self.logger.debug(
805+
"Assigned printer_data.status (id: %s, status: %s, print_info: %s)",
806+
id(self.printer_data),
807+
printer_status.current_status,
808+
print_info_status,
809+
)
786810
except Exception:
787811
self.logger.exception("Exception in _status_handler")
788812

0 commit comments

Comments
 (0)