From 730a6a3950b751cb9177c6cabce0e5541de0fa91 Mon Sep 17 00:00:00 2001 From: Reid 'arrdem' McKenzie Date: Mon, 19 Jun 2023 23:24:39 -0600 Subject: [PATCH] Use the bedready plugin to check if the bed is clear or occupied --- .../tentacles/src/python/tentacles/workers.py | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/projects/tentacles/src/python/tentacles/workers.py b/projects/tentacles/src/python/tentacles/workers.py index ec0024d..90f599f 100644 --- a/projects/tentacles/src/python/tentacles/workers.py +++ b/projects/tentacles/src/python/tentacles/workers.py @@ -69,6 +69,24 @@ def poll_printers(app: App, db: Db) -> None: log.info(f"Printer {printer.id} {printer.status} -> {status}") db.update_printer_status(pid=printer.id, status=status) + def _bed_clear(): + if not ( + snapshots := client._post( + "/api/plugin/bedready", json={"command": "list_snapshots"} + ) + ): + return True # Assume the bed is ready + + status = client._post( + "/api/plugin/bedready", + json={ + "command": "check_bed", + "similarity": 0.97, + "reference": snapshots[0], + }, + ) + return status.get("bed_clear", True) + printer_job = {} try: client = get_client(printer.url, printer.api_key) @@ -98,7 +116,10 @@ def poll_printers(app: App, db: Db) -> None: _set_status("connecting") elif printer_state.get("ready"): - _set_status("idle") + if _bed_clear(): + _set_status("idle") + else: + _set_status("occupied") else: raise Exception(