From eb8d1e58ed4c374df41fda925bf531125e5609c5 Mon Sep 17 00:00:00 2001 From: ruipeng <1041589370@qq.com> Date: Sat, 29 Mar 2025 17:49:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=BC=80=E9=97=A8=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- moonraker/components/klippy_apis.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/moonraker/components/klippy_apis.py b/moonraker/components/klippy_apis.py index 6e190c9..46db7fd 100644 --- a/moonraker/components/klippy_apis.py +++ b/moonraker/components/klippy_apis.py @@ -143,10 +143,30 @@ class KlippyAPI(APITransport): script = f'SDCARD_PRINT_FILE FILENAME="{filename}"' if wait_klippy_started: await self.klippy.wait_started() - await self.run_gcode("_START_PRINT_BASE") - logging.info(f"Requesting Job Start, filename = {filename}") - ret = await self.run_gcode(script) - self.server.send_event("klippy_apis:job_start_complete", user) + try: + result = await self.query_objects({"gcode_button _door_detection": None}, None) + state = result['gcode_button _door_detection']['state'] + except (KeyError, TypeError): + logging.error("Failed to retrieve 'gcode_button _door_detection' state from query result.") + state = None + try: + func = await self.query_objects({"save_variables": None}, None) + res = func['save_variables']['variables']['door_detect'] + except (KeyError, TypeError): + logging.error("Failed to retrieve 'save_variables' state from query result.") + state = None + if state == None or state == "PRESSED" or res == "Disabled": + start_gcode = "_START_PRINT_BASE" + else: + start_gcode = "_DOOR_START_PRINT_BASE" + ret = await self.run_gcode(start_gcode) + if start_gcode == "_START_PRINT_BASE": + logging.info(f"Requesting Job Start, filename = {filename}") + ret = await self.run_gcode(script) + self.server.send_event("klippy_apis:job_start_complete", user) + else: + logging.info("Door is opening, canceling print job.") + self.server.send_event("klippy_apis:cancel_requested", user) return ret async def pause_print(