-
Notifications
You must be signed in to change notification settings - Fork 1
OctoKlipper
Steven De George SR edited this page May 11, 2024
·
8 revisions
Notes here on getting everything setup for using Klipper in OctoPrint
Make sure your OctoKlipper plugin is installed and working.
To make OctoTouchController (OctoTC) work for OctoKlipper you need to add some common macros to your printer.cfg file. These are:
- PAUSE
- RESUME
- CANCEL_PRINT
- M600
- G29 (optional if you have auto bed leveling)
Code follows below:
[pause_resume]
#recover_velocity: 50.
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
# Parameters
{% set z = params.Z|default(10)|int %} ; z hop amount
{% if printer['pause_resume'].is_paused|int == 0 %}
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE={z} ; set z hop variable for reference in resume macro
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=etemp VALUE={printer['extruder'].target} ; set hotend temp variable for reference in resume macro
########################################################################################
# Unrem when using a filament sensor and change the name from 'filament_sensor' to your
# filament sensor name. Also see RESUME macro below
#SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=0 ; disable filament sensor
########################################################################################
SAVE_GCODE_STATE NAME=PAUSE ; save current print position for resume
BASE_PAUSE ; pause print
{% if (printer.gcode_move.position.z + z) < printer.toolhead.axis_maximum.z %} ; check that zhop doesn't exceed z max
G91 ; relative positioning
G1 Z{z} F900 ; raise Z up by z hop amount
{% else %}
{ action_respond_info("Pause zhop exceeds maximum Z height.") } ; if z max is exceeded, show message and set zhop value for resume to 0
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE=0
{% endif %}
G90 ; absolute positioning
G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_minimum.y+5} F6000 ; park toolhead at front center
SAVE_GCODE_STATE NAME=PAUSEPARK ; save parked position in case toolhead is moved during the pause (otherwise the return zhop can error)
M104 S0 ; turn off hotend
SET_IDLE_TIMEOUT TIMEOUT=43200 ; set timeout to 12 hours
{% endif %}
[gcode_macro RESUME]
rename_existing: BASE_RESUME
variable_zhop: 0
variable_etemp: 0
gcode:
# Parameters
{% set e = params.E|default(2.5)|int %} ; hotend prime amount (in mm)
{% if printer['pause_resume'].is_paused|int == 1 %}
########################################################################################
# Unrem when using a filament sensor and change the name from 'filament_sensor' to your
# filament sensor name. Also see PAUSE macro above
#SET_FILAMENT_SENSOR SENSOR=filament_sensor ENABLE=1 ; enable filament sensor
########################################################################################
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value
{% if etemp > 0 %}
M109 S{etemp|int} ; wait for hotend to heat back up
{% endif %}
RESTORE_GCODE_STATE NAME=PAUSEPARK MOVE=1 MOVE_SPEED=100 ; go back to parked position in case toolhead was moved during pause (otherwise the return zhop can error)
G91 ; relative positioning
M83 ; relative extruder positioning
{% if printer[printer.toolhead.extruder].temperature >= printer.configfile.settings.extruder.min_extrude_temp %}
G1 Z{zhop * -1} E{e} F900 ; prime nozzle by E, lower Z back down
{% else %}
G1 Z{zhop * -1} F900 ; lower Z back down without priming (just in case we are testing the macro with cold hotend)
{% endif %}
RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=60 ; restore position
BASE_RESUME ; resume print
{% endif %}
[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value
CLEAR_PAUSE
########################################################################################
# unrem below if you use an SD card
#SDCARD_RESET_FILE
########################################################################################
PRINT_END
BASE_CANCEL_PRINT
[gcode_macro M600]
gcode:
PAUSE ; call the PAUSE macro
[gcode_macro G29]
gcode:
# optional: if you have auto bed leveling use this
# or call your own custom macro from here
BED_MESH_CLEAR
G28
M117 Heating the bed
M140 S60
M190 S60
M117 Calibrating...
BED_MESH_CALIBRATE
SAVE_CONFIG
G1 X0 Y0 Z5 F4000
M117 All done
Once you have added these to your printer.cfg file you can change the Octoprint printer GCode scripts.
All of this was taken from https://ellis3dp.com/Print-Tuning-Guide/articles/useful_macros/pause_resume_filament.html#cancel and adapted to what works for me and should work for you too. If you really want to tune your printer his guide is excellent!
Documentation by a programmer? this won't end well... :)