From 9e9faf726d9a8178d84400227209bf647433d0f4 Mon Sep 17 00:00:00 2001 From: zkk <1007518571@qq.com> Date: Tue, 29 Oct 2024 16:19:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=96=AD=E7=94=B5=E7=BB=AD?= =?UTF-8?q?=E6=89=93=E5=8A=9F=E8=83=BD=E7=9A=84=E4=BF=9D=E5=AD=98=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/moonraker.conf | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/config/moonraker.conf b/config/moonraker.conf index 3f08d19..1545a91 100644 --- a/config/moonraker.conf +++ b/config/moonraker.conf @@ -51,14 +51,38 @@ on_press: on_release: {% do call_method("machine.device_power.post_device", device="Printer", action="toggle") %} -[button estop] +[button power_outage] type: gpio pin: ^!gpiochip4/gpio19 debounce_period: .01 minimum_event_time: 0 on_press: - {% do call_method("printer.emergency_stop") %} - {% do call_method("machine.shutdown") %} + {% set query_objs = {"print_stats": ["state"], "gcode_move": ["gcode_position"], "virtual_sdcard": ["file_path"]} %} + {% set status = call_method("printer.objects.query", objects=query_objs) %} + {% do call_method("printer.emergency_stop") %} + {% set data = status | tojson | fromjson %} + {% set print_state = data['status']['print_stats']['state'] %} + # Judging the printer status + {% if print_state | string == 'printing' or print_state | string == 'paused' %} + {% set x_position = data['status']['gcode_move']['gcode_position'][0] %} + {% set y_position = data['status']['gcode_move']['gcode_position'][1] %} + {% set z_position = data['status']['gcode_move']['gcode_position'][2] %} + {% set filepath = data['status']['virtual_sdcard']['file_path'] %} + {% set filename = filepath.split('/')[-1] %} + # save position + {% do call_method("printer.gcode.script", script="SAVE_VARIABLE VARIABLE=power_resume_x VALUE=" + x_position | string) %} + {% do call_method("printer.gcode.script", script="SAVE_VARIABLE VARIABLE=power_resume_y VALUE=" + y_position | string) %} + {% do call_method("printer.gcode.script", script="SAVE_VARIABLE VARIABLE=power_resume_z VALUE=" + z_position | string) %} + # save file + {% do call_method("printer.gcode.script", script="SAVE_VARIABLE VARIABLE=filepath VALUE=\"'" + filepath | string + "'\"") %} + {% do call_method("printer.gcode.script", script="SAVE_VARIABLE VARIABLE=last_file VALUE=\"'" + filename | string + "'\"") %} + # save interrupt + {% do call_method("printer.gcode.script", script="SAVE_VARIABLE VARIABLE=was_interrupted VALUE=True") %} + {% else %} + {% do call_method("printer.gcode.script", script="SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False") %} + {% endif %} + # shutdown + {% do call_method("machine.shutdown") %} [update_manager] channel: dev