===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_macro GET_TIMELAPSE_SETUP] description = Print the Timelapse setup gcode = {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% set output_txt = ["Timelapse Setup:"] %} {% set _dummy = output_txt.append("enable: %s" % tl.enable) %} {% set _dummy = output_txt.append("park: %s" % tl.park.enable) %} {% if tl.park.enable %} {% set _dummy = output_txt.append("park position: %s time: %s s" % (tl.park.pos, tl.park.time)) %} {% set _dummy = output_txt.append("park cord x:%s y:%s dz:%s" % (tl.park.coord.x, tl.park.coord.y, tl.park.coord.dz)) %} {% set _dummy = output_txt.append("travel speed: %s mm/s" % tl.speed.travel) %} {% endif %} {% set _dummy = output_txt.append("fw_retract: %s" % tl.extruder.fw_retract) %} {% if not tl.extruder.fw_retract %} {% set _dummy = output_txt.append("retract: %s mm speed: %s mm/s" % (tl.extruder.retract, tl.speed.retract)) %} {% set _dummy = output_txt.append("extrude: %s mm speed: %s mm/s" % (tl.extruder.extrude, tl.speed.extrude)) %} {% endif %} {% set _dummy = output_txt.append("verbose: %s" % tl.verbose) %} {action_respond_info(output_txt|join("\n"))} [gcode_macro _SET_TIMELAPSE_SETUP] description = Set user parameters for timelapse gcode = {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% set min = printer.toolhead.axis_minimum %} {% set max = printer.toolhead.axis_maximum %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set park = {'min' : {'x': (min.x / 1.42)|round(3) if round_bed else min.x|round(3), 'y': (min.y / 1.42)|round(3) if round_bed else min.y|round(3)}, 'max' : {'x': (max.x / 1.42)|round(3) if round_bed else max.x|round(3), 'y': (max.y / 1.42)|round(3) if round_bed else max.y|round(3)}, 'center': {'x': (max.x-(max.x-min.x)/2)|round(3), 'y': (max.y-(max.y-min.y)/2)|round(3)}} %} {% if params.ENABLE %} {% if params.ENABLE|lower is in ['true', 'false'] %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=enable VALUE={True if params.ENABLE|lower == 'true' else False} {% else %} {action_raise_error("ENABLE=%s not supported. Allowed values are [True, False]" % params.ENABLE|capitalize)} {% endif %} {% endif %} {% if params.VERBOSE %} {% if params.VERBOSE|lower is in ['true', 'false'] %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=verbose VALUE={True if params.VERBOSE|lower == 'true' else False} {% else %} {action_raise_error("VERBOSE=%s not supported. Allowed values are [True, False]" % params.VERBOSE|capitalize)} {% endif %} {% endif %} {% if params.CUSTOM_POS_X %} {% if params.CUSTOM_POS_X|float >= min.x and params.CUSTOM_POS_X|float <= max.x %} {% set _dummy = tl.park.custom.update({'x':params.CUSTOM_POS_X|float|round(3)}) %} {% else %} {action_raise_error("CUSTOM_POS_X=%s must be within [%s - %s]" % (params.CUSTOM_POS_X, min.x, max.x))} {% endif %} {% endif %} {% if params.CUSTOM_POS_Y %} {% if params.CUSTOM_POS_Y|float >= min.y and params.CUSTOM_POS_Y|float <= max.y %} {% set _dummy = tl.park.custom.update({'y':params.CUSTOM_POS_Y|float|round(3)}) %} {% else %} {action_raise_error("CUSTOM_POS_Y=%s must be within [%s - %s]" % (params.CUSTOM_POS_Y, min.y, max.y))} {% endif %} {% endif %} {% if params.CUSTOM_POS_DZ %} {% if params.CUSTOM_POS_DZ|float >= min.z and params.CUSTOM_POS_DZ|float <= max.z %} {% set _dummy = tl.park.custom.update({'dz':params.CUSTOM_POS_DZ|float|round(3)}) %} {% else %} {action_raise_error("CUSTOM_POS_DZ=%s must be within [%s - %s]" % (params.CUSTOM_POS_DZ, min.z, max.z))} {% endif %} {% endif %} {% if params.PARK_ENABLE %} {% if params.PARK_ENABLE|lower is in ['true', 'false'] %} {% set _dummy = tl.park.update({'enable':True if params.PARK_ENABLE|lower == 'true' else False}) %} {% else %} {action_raise_error("PARK_ENABLE=%s not supported. Allowed values are [True, False]" % params.PARK_ENABLE|capitalize)} {% endif %} {% endif %} {% if params.PARK_POS %} {% if params.PARK_POS|lower is in ['center','front_left','front_right','back_left','back_right','custom','x_only','y_only'] %} {% set dic = {'center' : {'x': park.center.x , 'y': park.center.y , 'dz': 1 }, 'front_left' : {'x': park.min.x , 'y': park.min.y , 'dz': 0 }, 'front_right' : {'x': park.max.x , 'y': park.min.y , 'dz': 0 }, 'back_left' : {'x': park.min.x , 'y': park.max.y , 'dz': 0 }, 'back_right' : {'x': park.max.x , 'y': park.max.y , 'dz': 0 }, 'custom' : {'x': tl.park.custom.x, 'y': tl.park.custom.y, 'dz': tl.park.custom.dz}, 'x_only' : {'x': tl.park.custom.x, 'y': 'none' , 'dz': tl.park.custom.dz}, 'y_only' : {'x': 'none' , 'y': tl.park.custom.y, 'dz': tl.park.custom.dz}} %} {% set _dummy = tl.park.update({'pos':params.PARK_POS|lower}) %} {% set _dummy = tl.park.update({'coord':dic[tl.park.pos]}) %} {% else %} {action_raise_error("PARK_POS=%s not supported. Allowed values are [CENTER, FRONT_LEFT, FRONT_RIGHT, BACK_LEFT, BACK_RIGHT, CUSTOM, X_ONLY, Y_ONLY]" % params.PARK_POS|upper)} {% endif %} {% endif %} {% if params.PARK_TIME %} {% if params.PARK_TIME|float >= 0.0 %} {% set _dummy = tl.park.update({'time':params.PARK_TIME|float|round(3)}) %} {% else %} {action_raise_error("PARK_TIME=%s must be a positive number" % params.PARK_TIME)} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=park VALUE="{tl.park}" {% if params.TRAVEL_SPEED %} {% if params.TRAVEL_SPEED|float > 0.0 %} {% set _dummy = tl.speed.update({'travel':params.TRAVEL_SPEED|float|round(3)}) %} {% else %} {action_raise_error("TRAVEL_SPEED=%s must be larger than 0" % params.TRAVEL_SPEED)} {% endif %} {% endif %} {% if params.RETRACT_SPEED %} {% if params.RETRACT_SPEED|float > 0.0 %} {% set _dummy = tl.speed.update({'retract':params.RETRACT_SPEED|float|round(3)}) %} {% else %} {action_raise_error("RETRACT_SPEED=%s must be larger than 0" % params.RETRACT_SPEED)} {% endif %} {% endif %} {% if params.EXTRUDE_SPEED %} {% if params.EXTRUDE_SPEED|float > 0.0 %} {% set _dummy = tl.speed.update({'extrude':params.EXTRUDE_SPEED|float|round(3)}) %} {% else %} {action_raise_error("EXTRUDE_SPEED=%s must be larger than 0" % params.EXTRUDE_SPEED)} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=speed VALUE="{tl.speed}" {% if params.EXTRUDE_DISTANCE %} {% if params.EXTRUDE_DISTANCE|float >= 0.0 %} {% set _dummy = tl.extruder.update({'extrude':params.EXTRUDE_DISTANCE|float|round(3)}) %} {% else %} {action_raise_error("EXTRUDE_DISTANCE=%s must be specified as positiv number" % params.EXTRUDE_DISTANCE)} {% endif %} {% endif %} {% if params.RETRACT_DISTANCE %} {% if params.RETRACT_DISTANCE|float >= 0.0 %} {% set _dummy = tl.extruder.update({'retract':params.RETRACT_DISTANCE|float|round(3)}) %} {% else %} {action_raise_error("RETRACT_DISTANCE=%s must be specified as positiv number" % params.RETRACT_DISTANCE)} {% endif %} {% endif %} {% if params.FW_RETRACT %} {% if params.FW_RETRACT|lower is in ['true', 'false'] %} {% if 'firmware_retraction' in printer.configfile.settings %} {% set _dummy = tl.extruder.update({'fw_retract': True if params.FW_RETRACT|lower == 'true' else False}) %} {% else %} {% set _dummy = tl.extruder.update({'fw_retract':False}) %} {% if params.FW_RETRACT|capitalize == 'True' %} {action_raise_error("[firmware_retraction] not defined in printer.cfg. Can not enable fw_retract")} {% endif %} {% endif %} {% else %} {action_raise_error("FW_RETRACT=%s not supported. Allowed values are [True, False]" % params.FW_RETRACT|capitalize)} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=extruder VALUE="{tl.extruder}" {% if printer.configfile.settings['gcode_macro pause'] is defined %} {% set _dummy = tl.macro.update({'pause': printer.configfile.settings['gcode_macro pause'].rename_existing}) %} {% endif %} {% if printer.configfile.settings['gcode_macro resume'] is defined %} {% set _dummy = tl.macro.update({'resume': printer.configfile.settings['gcode_macro resume'].rename_existing}) %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=macro VALUE="{tl.macro}" [gcode_macro TIMELAPSE_TAKE_FRAME] description = Take Timelapse shoot variable_enable = False variable_takingframe = False variable_park = {'enable': False, 'pos' : 'center', 'time' : 0.1, 'custom': {'x': 0, 'y': 0, 'dz': 0}, 'coord' : {'x': 0, 'y': 0, 'dz': 0}} variable_extruder = {'fw_retract': False, 'retract': 1.0, 'extrude': 1.0} variable_speed = {'travel': 100, 'retract': 15, 'extrude': 15} variable_verbose = True variable_restore = {'absolute': {'coordinates': True, 'extrude': True}, 'speed': 1500, 'e':0, 'factor': {'speed': 1.0, 'extrude': 1.0}} variable_macro = {'pause': 'PAUSE', 'resume': 'RESUME'} variable_is_paused = False gcode = {% set hyperlapse = True if params.HYPERLAPSE and params.HYPERLAPSE|lower =='true' else False %} {% if enable %} {% if (hyperlapse and printer['gcode_macro HYPERLAPSE'].run) or (not hyperlapse and not printer['gcode_macro HYPERLAPSE'].run) %} {% if park.enable %} {% set pos = {'x': 'X' + park.coord.x|string if park.pos != 'y_only' else '', 'y': 'Y' + park.coord.y|string if park.pos != 'x_only' else '', 'z': 'Z'+ [printer.gcode_move.gcode_position.z + park.coord.dz, printer.toolhead.axis_maximum.z]|min|string} %} {% set restore = {'absolute': {'coordinates': printer.gcode_move.absolute_coordinates, 'extrude' : printer.gcode_move.absolute_extrude}, 'speed' : printer.gcode_move.speed, 'e' : printer.gcode_move.gcode_position.e, 'factor' : {'speed' : printer.gcode_move.speed_factor, 'extrude': printer.gcode_move.extrude_factor}} %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=restore VALUE="{restore}" {% if not printer[printer.toolhead.extruder].can_extrude %} {% if verbose %}{action_respond_info("Timelapse: Warning, minimum extruder temperature not reached!")}{% endif %} {% else %} {% if extruder.fw_retract %} G10 {% else %} M83 G0 E-{extruder.retract} F{speed.retract * 60} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=is_paused VALUE=True {macro.pause} SET_GCODE_OFFSET X=0 Y=0 G90 {% if "xyz" not in printer.toolhead.homed_axes %} {% if verbose %}{action_respond_info("Timelapse: Warning, axis not homed yet!")}{% endif %} {% else %} G0 {pos.x} {pos.y} {pos.z} F{speed.travel * 60} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=takingframe VALUE=True UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_TAKE_FRAME DURATION=0.5 M400 {% endif %} _TIMELAPSE_NEW_FRAME HYPERLAPSE={hyperlapse} {% endif %} {% else %} {% if verbose %}{action_respond_info("Timelapse: disabled, take frame ignored")}{% endif %} {% endif %} [gcode_macro _TIMELAPSE_NEW_FRAME] description = action call for timelapse shoot. must be a seperate macro gcode = {action_call_remote_method("timelapse_newframe", macropark=printer['gcode_macro TIMELAPSE_TAKE_FRAME'].park, hyperlapse=params.HYPERLAPSE)} [delayed_gcode _WAIT_TIMELAPSE_TAKE_FRAME] gcode = {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% set factor = {'speed': printer.gcode_move.speed_factor, 'extrude': printer.gcode_move.extrude_factor} %} {% if tl.takingframe %} UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_TAKE_FRAME DURATION=0.5 {% else %} {tl.macro.resume} VELOCITY={tl.speed.travel} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=is_paused VALUE=False {% if not printer[printer.toolhead.extruder].can_extrude %} {action_respond_info("Timelapse: Warning minimum extruder temperature not reached!")} {% else %} {% if tl.extruder.fw_retract %} G11 {% else %} G0 E{tl.extruder.extrude} F{tl.speed.extrude * 60} G0 F{tl.restore.speed} {% if tl.restore.absolute.extrude %} M82 G92 E{tl.restore.e} {% endif %} {% endif %} {% endif %} {% if tl.restore.factor.speed != factor.speed %} M220 S{(factor.speed*100)|round(0)} {% endif %} {% if tl.restore.factor.extrude != factor.extrude %} M221 S{(factor.extrude*100)|round(0)} {% endif %} {% if not tl.restore.absolute.coordinates %} G91 {% endif %} {% endif %} [gcode_macro HYPERLAPSE] description = Start/Stop a hyperlapse recording variable_cycle = 0 variable_run = False gcode = {% set cycle = params.CYCLE|default(30)|int %} {% if params.ACTION and params.ACTION|lower == 'start' %} {action_respond_info("Hyperlapse: frames started (Cycle %d sec)" % cycle)} SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=run VALUE=True SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=cycle VALUE={cycle} UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION={cycle} TIMELAPSE_TAKE_FRAME HYPERLAPSE=True {% elif params.ACTION and params.ACTION|lower == 'stop' %} {% if run %}{action_respond_info("Hyperlapse: frames stopped")}{% endif %} SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=run VALUE=False UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION=0 {% else %} {action_raise_error("Hyperlapse: No valid input parameter Use: - HYPERLAPSE ACTION=START [CYCLE=time] - HYPERLAPSE ACTION=STOP")} {% endif %} [delayed_gcode _HYPERLAPSE_LOOP] gcode = UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION={printer["gcode_macro HYPERLAPSE"].cycle} TIMELAPSE_TAKE_FRAME HYPERLAPSE=True [gcode_macro TIMELAPSE_RENDER] description = Render Timelapse video and wait for the result variable_render = False variable_run_identifier = 0 gcode = {action_respond_info("Timelapse: Rendering started")} {action_call_remote_method("timelapse_render", byrendermacro="True")} SET_GCODE_VARIABLE MACRO=TIMELAPSE_RENDER VARIABLE=render VALUE=True {printer.configfile.settings['gcode_macro pause'].rename_existing} UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_RENDER DURATION=0.5 [delayed_gcode _WAIT_TIMELAPSE_RENDER] gcode = {% set ri = printer['gcode_macro TIMELAPSE_RENDER'].run_identifier % 4 %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_RENDER VARIABLE=run_identifier VALUE={ri + 1} {% if printer['gcode_macro TIMELAPSE_RENDER'].render %} M117 Rendering {['-','\\','|','/'][ri]} UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_RENDER DURATION=0.5 {% else %} {action_respond_info("Timelapse: Rendering finished")} M117 {printer.configfile.settings['gcode_macro resume'].rename_existing} {% endif %} [gcode_macro TEST_STREAM_DELAY] description = Helper macro to find stream and park delay gcode = {% set min = printer.toolhead.axis_minimum %} {% set max = printer.toolhead.axis_maximum %} {% set act = printer.toolhead.position %} {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% if act.z > 5.0 %} G0 X{min.x + 5.0} F{tl.speed.travel|int * 60} G0 X{(max.x-min.x)/2} G4 P{tl.park.time|float * 1000} _TIMELAPSE_NEW_FRAME HYPERLAPSE=FALSE G0 X{max.x - 5.0} {% else %} {action_raise_error("Toolhead z %.3f to low. Please place head above z = 5.0" % act.z)} {% endif %} [menu __main] type = list name = Main [menu __main __pause] type = command enable = {(printer.print_stats.state == "printing") and ("pause_resume" in printer)} index = 0 name = Pause printing gcode = PAUSE { menu.exit() } [menu __main __resume] type = command enable = {(printer.print_stats.state == "paused") and ("pause_resume" in printer)} index = 0 name = Resume printing gcode = RESUME { menu.exit() } [menu __main __abort] type = command enable = {((printer.print_stats.state == "printing" or printer.print_stats.state == "paused")) and ("pause_resume" in printer)} index = 1 name = Abort printing gcode = CANCEL_PRINT { menu.exit() } [menu __main __tune] type = list enable = {printer.idle_timeout.state == "Printing"} name = Tune [menu __main __tune __speed] type = input name = Speed: {'%3d' % (menu.input*100)}% input = {printer.gcode_move.speed_factor} input_min = 0.01 input_max = 5 input_step = 0.01 realtime = True gcode = M220 S{'%d' % (menu.input*100)} [menu __main __tune __flow] type = input name = Flow: {'%3d' % (menu.input*100)}% input = {printer.gcode_move.extrude_factor} input_min = 0.01 input_max = 2 input_step = 0.01 realtime = True gcode = M221 S{'%d' % (menu.input*100)} [menu __main __tune __offsetz] type = input name = Offset Z:{'%05.3f' % menu.input} input = {printer.gcode_move.homing_origin.z} input_min = -5 input_max = 5 input_step = 0.005 realtime = True gcode = SET_GCODE_OFFSET Z={'%.3f' % menu.input} MOVE=1 [menu __main __tune __hotend0_target] type = input enable = {('extruder' in printer) and ('extruder' in printer.heaters.available_heaters)} name = {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)} input = {printer.extruder.target} input_min = 0 input_max = {printer.configfile.config.extruder.max_temp} input_step = 1 realtime = True gcode = M104 T0 S{'%.0f' % menu.input} { menu.exit()} [menu __main __tune __hotend1_target] type = input enable = {('extruder1' in printer) and ('extruder1' in printer.heaters.available_heaters)} name = {"Ex1:%3.0f (%4.0f)" % (menu.input, printer.extruder1.temperature)} input = {printer.extruder1.target} input_min = 0 input_max = {printer.configfile.config.extruder1.max_temp} input_step = 1 realtime = True gcode = M104 T1 S{'%.0f' % menu.input} { menu.exit()} [menu __main __tune __hotbed_target] type = input enable = {'heater_bed' in printer} name = {"Bed:%3.0f (%4.0f)" % (menu.input, printer.heater_bed.temperature)} input = {printer.heater_bed.target} input_min = 0 input_max = {printer.configfile.config.heater_bed.max_temp} input_step = 1 realtime = True gcode = M140 S{'%.0f' % menu.input} { menu.exit()} [menu __main __tune __fanspeed] type = input enable = {'fan' in printer} name = Fan speed: {'%3d' % (menu.input*100)}% input = {printer.fan.speed} input_min = 0 input_max = 1 input_step = 0.01 realtime = True gcode = M106 S{'%d' % (menu.input*255)} [menu __main __octoprint] type = disabled [menu __main __octoprint __pause] type = disabled [menu __main __octoprint __resume] type = disabled [menu __main __octoprint __abort] type = disabled [menu __main __sdcard] type = vsdlist enable = {not printer.idle_timeout.state == "Printing" and ('virtual_sdcard' in printer)} name = SD Card [menu __main __sdcard __start] type = command enable = {('virtual_sdcard' in printer) and printer.virtual_sdcard.file_path and not printer.virtual_sdcard.is_active} name = Start printing gcode = M24 { menu.exit() } [menu __main __sdcard __resume] type = disabled [menu __main __sdcard __pause] type = disabled [menu __main __sdcard __cancel] type = disabled [menu __main __control] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Control [menu __main __control __home] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Home All gcode = G28 [menu __main __control __homez] type = disabled [menu __main __control __homexy] type = disabled [menu __main __control __disable] type = command name = Steppers off gcode = M84 M18 [menu __main __control __fanonoff] type = input enable = {'fan' in printer} name = Fan: {'ON ' if menu.input else 'OFF'} input = {printer.fan.speed} input_min = 0 input_max = 1 input_step = 1 realtime = True gcode = M106 S{255 if menu.input else 0} [menu __main __control __fanspeed] type = input enable = {'fan' in printer} name = Fan speed: {'%3d' % (menu.input*100)}% input = {printer.fan.speed} input_min = 0 input_max = 1 input_step = 0.01 realtime = True gcode = M106 S{'%d' % (menu.input*255)} [menu __main __control __caselightonoff] type = input enable = {'output_pin caselight' in printer} name = Lights: {'ON ' if menu.input else 'OFF'} input = {printer['output_pin caselight'].value} input_min = 0 input_max = 1 input_step = 1 realtime = True gcode = SET_PIN PIN=caselight VALUE={1 if menu.input else 0} [menu __main __control __caselightpwm] type = input enable = {'output_pin caselight' in printer} name = Lights: {'%3d' % (menu.input*100)}% input = {printer['output_pin caselight'].value} input_min = 0.0 input_max = 1.0 input_step = 0.01 realtime = True gcode = SET_PIN PIN=caselight VALUE={menu.input} [menu __main __control __move_10mm] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Move 10mm [menu __main __control __move_10mm __axis_x] type = input name = Move X:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.x} input_min = {printer.toolhead.axis_minimum.x} input_max = {printer.toolhead.axis_maximum.x} input_step = 10.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 X{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_10mm __axis_y] type = input name = Move Y:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.y} input_min = {printer.toolhead.axis_minimum.y} input_max = {printer.toolhead.axis_maximum.y} input_step = 10.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Y{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_10mm __axis_z] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move Z:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_min = 0 input_max = {printer.toolhead.axis_maximum.z} input_step = 10.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Z{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_10mm __axis_e] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move E:{'%+06.1f' % menu.input} input = 0 input_min = -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_max = {printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_step = 10.0 realtime = False gcode = SAVE_GCODE_STATE NAME=__move__axis M83 G1 E{menu.input} F240 RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Move 1mm [menu __main __control __move_1mm __axis_x] type = input name = Move X:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.x} input_min = {printer.toolhead.axis_minimum.x} input_max = {printer.toolhead.axis_maximum.x} input_step = 1.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 X{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm __axis_y] type = input name = Move Y:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.y} input_min = {printer.toolhead.axis_minimum.y} input_max = {printer.toolhead.axis_maximum.y} input_step = 1.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Y{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm __axis_z] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move Z:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_min = 0 input_max = {printer.toolhead.axis_maximum.z} input_step = 1.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Z{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm __axis_e] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move E:{'%+06.1f' % menu.input} input = 0 input_min = -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_max = {printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_step = 1.0 realtime = False gcode = SAVE_GCODE_STATE NAME=__move__axis M83 G1 E{menu.input} F240 RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Move 0.1mm [menu __main __control __move_01mm __axis_x] type = input name = Move X:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.x} input_min = {printer.toolhead.axis_minimum.x} input_max = {printer.toolhead.axis_maximum.x} input_step = 0.1 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 X{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm __axis_y] type = input name = Move Y:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.y} input_min = {printer.toolhead.axis_minimum.y} input_max = {printer.toolhead.axis_maximum.y} input_step = 0.1 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Y{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm __axis_z] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move Z:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_min = 0 input_max = {printer.toolhead.axis_maximum.z} input_step = 0.1 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Z{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm __axis_e] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move E:{'%+06.1f' % menu.input} input = 0 input_min = -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_max = {printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_step = 0.1 realtime = False gcode = SAVE_GCODE_STATE NAME=__move__axis M83 G1 E{menu.input} F240 RESTORE_GCODE_STATE NAME=__move__axis [menu __main __temp] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Temperature [menu __main __temp __hotend0_target] type = input enable = {('extruder' in printer) and ('extruder' in printer.heaters.available_heaters)} name = {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)} input = {printer.extruder.target} input_min = 0 input_max = {printer.configfile.config.extruder.max_temp} input_step = 1 gcode = M104 T0 S{'%.0f' % menu.input} { menu.exit()} [menu __main __temp __hotend1_target] type = input enable = {('extruder1' in printer) and ('extruder1' in printer.heaters.available_heaters)} name = {"Ex1:%3.0f (%4.0f)" % (menu.input, printer.extruder1.temperature)} input = {printer.extruder1.target} input_min = 0 input_max = {printer.configfile.config.extruder1.max_temp} input_step = 1 gcode = M104 T1 S{'%.0f' % menu.input} { menu.exit()} [menu __main __temp __hotbed_target] type = input enable = {'heater_bed' in printer} name = {"Bed:%3.0f (%4.0f)" % (menu.input, printer.heater_bed.temperature)} input = {printer.heater_bed.target} input_min = 0 input_max = {printer.configfile.config.heater_bed.max_temp} input_step = 1 gcode = M140 S{'%.0f' % menu.input} { menu.exit()} [menu __main __temp __preheat_pla] type = list name = Preheat PLA [menu __main __temp __preheat_pla __all] type = command enable = {('extruder' in printer) and ('heater_bed' in printer)} name = Preheat all gcode = M140 S70 M104 S230 { menu.exit()} [menu __main __temp __preheat_pla __hotend] type = command enable = {'extruder' in printer} name = Preheat hotend gcode = M104 S230 { menu.exit()} [menu __main __temp __preheat_pla __hotbed] type = command enable = {'heater_bed' in printer} name = Preheat hotbed gcode = M140 S70 { menu.exit()} [menu __main __temp __preheat_abs] type = list name = Preheat ABS [menu __main __temp __preheat_abs __all] type = command enable = {('extruder' in printer) and ('heater_bed' in printer)} name = Preheat all gcode = M140 S110 M104 S245 { menu.exit()} [menu __main __temp __preheat_abs __hotend] type = command enable = {'extruder' in printer} name = Preheat hotend gcode = M104 S245 { menu.exit()} [menu __main __temp __preheat_abs __hotbed] type = command enable = {'heater_bed' in printer} name = Preheat hotbed gcode = M140 S110 { menu.exit()} [menu __main __temp __cooldown] type = list name = Cooldown [menu __main __temp __cooldown __all] type = command enable = {('extruder' in printer) and ('heater_bed' in printer)} name = Cooldown all gcode = M104 S0 M140 S0 { menu.exit()} [menu __main __temp __cooldown __hotend] type = command enable = {'extruder' in printer} name = Cooldown hotend gcode = M104 S0 { menu.exit()} [menu __main __temp __cooldown __hotbed] type = command enable = {'heater_bed' in printer} name = Cooldown hotbed gcode = M140 S0 { menu.exit()} [menu __main __filament] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Filament [menu __main __filament __hotend0_target] type = input enable = {'extruder' in printer} name = {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)} input = {printer.extruder.target} input_min = 0 input_max = {printer.configfile.config.extruder.max_temp} input_step = 1 gcode = M104 T0 S{'%.0f' % menu.input} [menu __main __filament __loadf] type = command name = Load Fil. fast gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E50 F960 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __loads] type = command name = Load Fil. slow gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E50 F240 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __unloadf] type = command name = Unload Fil.fast gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E-50 F960 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __unloads] type = command name = Unload Fil.slow gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E-50 F240 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __feed] type = input name = Feed: {'%.1f' % menu.input} input = 5 input_step = 0.1 gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E{'%.1f' % menu.input} F60 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __setup] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Setup [menu __main __setup __save_config] type = command name = Save config gcode = SAVE_CONFIG [menu __main __setup __restart] type = list name = Restart [menu __main __setup __restart __host_restart] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Restart host gcode = RESTART [menu __main __setup __restart __firmware_restart] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Restart FW gcode = FIRMWARE_RESTART [menu __main __setup __tuning] type = list name = PID tuning [menu __main __setup __tuning __hotend_pid_tuning] type = command enable = {(not printer.idle_timeout.state == "Printing") and ('extruder' in printer)} name = Tune Hotend PID gcode = PID_CALIBRATE HEATER=extruder TARGET=210 WRITE_FILE=1 [menu __main __setup __tuning __hotbed_pid_tuning] type = command enable = {(not printer.idle_timeout.state == "Printing") and ('heater_bed' in printer)} name = Tune Hotbed PID gcode = PID_CALIBRATE HEATER=heater_bed TARGET=60 WRITE_FILE=1 [menu __main __setup __calib] type = list name = Calibration [menu __main __setup __calib __delta_calib_auto] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Delta cal. auto gcode = G28 DELTA_CALIBRATE [menu __main __setup __calib __delta_calib_man] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Delta cal. man [menu __main __setup __calib __bedprobe] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Bed probe gcode = PROBE [menu __main __setup __calib __delta_calib_man __start] type = command name = Start probing gcode = G28 DELTA_CALIBRATE METHOD=manual [menu __main __setup __calib __delta_calib_man __move_z] type = input name = Move Z: {'%03.2f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_step = 1 realtime = True gcode = {%- if menu.event == 'change' -%} G1 Z{'%.2f' % menu.input} {%- elif menu.event == 'long_click' -%} G1 Z{'%.2f' % menu.input} SAVE_GCODE_STATE NAME=__move__axis G91 G1 Z2 G1 Z-2 RESTORE_GCODE_STATE NAME=__move__axis {%- endif -%} [menu __main __setup __calib __delta_calib_man __test_z] type = input name = Test Z: {['++','+','+.01','+.05','+.1','+.5','-.5','-.1','-.05','-.01','-','--'][menu.input|int]} input = 6 input_min = 0 input_max = 11 input_step = 1 gcode = {%- if menu.event == 'long_click' -%} TESTZ Z={['++','+','+.01','+.05','+.1','+.5','-.5','-.1','-.05','-.01','-','--'][menu.input|int]} {%- endif -%} [menu __main __setup __calib __delta_calib_man __accept] type = command name = Accept gcode = ACCEPT [menu __main __setup __calib __delta_calib_man __abort] type = command name = Abort gcode = ABORT [menu __main __setup __dump] type = command name = Dump parameters gcode = {% for name1 in printer %} {% for name2 in printer[name1] %} { action_respond_info("printer['%s'].%s = %s" % (name1, name2, printer[name1][name2])) } {% else %} { action_respond_info("printer['%s'] = %s" % (name1, printer[name1])) } {% endfor %} {% endfor %} { menu.exit() } [gcode_macro START_PRINT_ORCA] gcode = G1 Z2.0 F3000 G1 X15.1 Y20 Z0.28 F5000.0 G1 X15.1 Y200.0 Z0.28 F1500.0 E15 G1 X15.4 Y200.0 Z0.28 F5000.0 G1 X15.4 Y20 Z0.28 F1500.0 E30 G92 E0 STATUS_PRINTING M117 Let's Print!!! [gcode_macro START_PRINT_CURA] description = Start Print variable_parameter_AREA_START : 0,0 variable_parameter_AREA_END : 0,0 gcode = SET_NOZZLE_LEDS_ON STATUS_READY G90 M117 Homing Printer ... STATUS_HOMING G28 STATUS_MESHING M117 Bed Area Meshing ... BED_MESH_CALIBRATE AREA_START={params.AREA_START|default("0,0")} AREA_END={params.AREA_END|default("0,0")} G90 G1 X15 Y15 Z15 G92 E0 G1 X0 Y0 Z10 F4000.0 STATUS_HEATING SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={params.BED_TEMP|default(60)|float} TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={params.BED_TEMP|default(60)|float - 5} MAXIMUM={params.BED_TEMP|default(60)|float + 5} M117 Heating Nozzle SET_HEATER_TEMPERATURE HEATER=extruder TARGET={params.EXTRUDER_TEMP|default(200)|float} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.EXTRUDER_TEMP|default(200)|float - 5} MAXIMUM={params.EXTRUDER_TEMP|default(200)|float + 5} G1 Z2.0 F3000 G1 X15.1 Y20 Z0.28 F5000.0 G1 X15.1 Y200.0 Z0.28 F1500.0 E15 G1 X15.4 Y200.0 Z0.28 F5000.0 G1 X15.4 Y20 Z0.28 F1500.0 E30 G92 E0 STATUS_PRINTING M117 Let's Print!!! [gcode_macro PRINT] variable_parameter_msg = '' variable_parameter_output_target = 0 gcode = {% if params.OUTPUT_TARGET|default(0)|int == 0 %} M117 {params.MSG | string} { action_respond_info((params.MSG) | string)} {% elif params.OUTPUT_TARGET|default(0)|int == 1 %} { action_respond_info((params.MSG) | string)} {% else %} M117 {params.MSG | string} {% endif %} [gcode_macro M109] rename_existing = M99109 gcode = {% set s = params.S|float %} M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} {% if s != 0 %} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1} {% endif %} [gcode_macro FILAMENT_RUNOUT] description = Filament Runout gcode = M300 S1 P10 M600 M300 S1 P10 [gcode_macro M600] description = Filament Change gcode = {% set X = params.X|default(50)|float %} {% set Y = params.Y|default(0)|float %} {% set Z = params.Z|default(10)|float %} SAVE_GCODE_STATE NAME=M600_state PAUSE G91 G1 E-.8 F2700 G1 Z{Z} G90 G1 X{X} Y{Y} F3000 G91 G1 E-50 F1000 SET_IDLE_TIMEOUT TIMEOUT=7200 RESTORE_GCODE_STATE NAME=M600_state [gcode_macro m900] gcode = SET_PRESSURE_ADVANCE ADVANCE={params.K} [gcode_macro PIDtuneHOTEND] description = PID Tune Hotend gcode = {% set TEMP = params.TEMP|default(200)|float %} PID_CALIBRATE HEATER=extruder TARGET={TEMP} [gcode_macro PIDtuneBED] description = PID Tune Bed gcode = {% set TEMP = params.TEMP|default(60)|float %} PID_CALIBRATE HEATER=heater_bed TARGET={TEMP} [gcode_macro END_PRINT] description = End Print gcode = G91 G1 E-2 F2700 G1 E-2 Z0.2 F2400 G1 X5 Y5 F3000 G1 Z10 G90 G1 X0 Y230 M106 S0 M104 S0 M140 S0 M84 X Y E M117 Printing done!!! STATUS_PART_READY [neopixel neo] pin = PF4 chain_count = 14 color_order = GRB initial_red = 0.2 initial_green = 0.0 initial_blue = 0.5 [gcode_macro TOP_GREEN] gcode = SET_LED LED=neo RED=0 GREEN=1 BLUE=0 index: 1 transmit=1 [gcode_macro BOTTOM_GREEN] gcode = SET_LED LED=neo1 RED=0 GREEN=1 BLUE=0 index: 1 [gcode_macro TOP_RED] gcode = SET_LED LED=neo RED=1 GREEN=0 BLUE=0 index: 1 transmit=1 [gcode_macro BOTTOM_RED] gcode = SET_LED LED=neo1 RED=1 GREEN=0 BLUE=0 index: 1 [gcode_macro TOP_BLUE] gcode = SET_LED LED=neo RED=0 GREEN=0 BLUE=1 index: 1 transmit=1 [gcode_macro BOTTOM_BLUE] gcode = SET_LED LED=neo1 RED=0 GREEN=0 BLUE=1 [gcode_macro TOP_WHITE] gcode = SET_LED LED=neo RED=1 GREEN=1 BLUE=1 index: 14 transmit=1 [gcode_macro BOTTOM_WHITE] gcode = SET_LED LED=neo1 RED=1 GREEN=1 BLUE=1 index: 0 transmit=1 [gcode_macro TOP_OFF] gcode = SET_LED LED=neo RED=0 GREEN=0 BLUE=0 index: 14 transmt=1 [gcode_macro BOTTOM_OFF] gcode = SET_LED LED=neo1 RED=0 GREEN=0 BLUE=0 index: 0 transmit=1 [gcode_macro _load_unload] gcode = {% set saved_extruder = printer.toolhead.extruder %} {% set EXTRUDER = params.EXTRUDER|default(saved_extruder)|lower %} {% set km = printer["gcode_macro _km_globals"] %} {% set BEEPS = params.BEEPS|default(8)|int if "output_pin beeper" in printer else 0 %} {% set default_minimum = km.load_min_temp if km.load_min_temp else (printer.configfile.settings[EXTRUDER].min_extrude_temp + 5) %} {% if 'MINIMUM' in params %} {% set MINIMUM = params.MINIMUM|int %} {% elif printer.pause_resume.is_paused and printer[EXTRUDER].target == 0 and printer["gcode_macro resume"].saved_extruder_temp %} {% set MINIMUM = printer["gcode_macro resume"].saved_extruder_temp %} {% elif printer[EXTRUDER].target > default_minimum %} {% set MINIMUM = printer[EXTRUDER].target %} {% else %} {% set MINIMUM = default_minimum %} {% endif %} {% if MINIMUM < printer.configfile.settings[EXTRUDER].min_extrude_temp %} { action_raise_error("Extrude below minimum temp.") } {% elif printer.pause_resume.is_paused %} SET_GCODE_VARIABLE MACRO=resume VARIABLE=saved_e VALUE="{0.0}" {% endif %} {% set SPEED = params.SPEED|default(km.load_speed)|int %} {% set priming_length = km.load_priming_length %} {% set LENGTH = params.LENGTH|default(km.load_length)|float - priming_length%} {% if LENGTH < 0 %} {% set priming_length = (priming_length + LENGTH, 0)|max %} {% set LENGTH = 0 %} {% endif %} SAVE_GCODE_STATE NAME=_KM_LOAD_UNLOAD {% if EXTRUDER != saved_extruder%} ACTIVATE_EXTRUDER EXTRUDER={EXTRUDER} {% endif %} {% if not printer.extruder.can_extrude or printer[EXTRUDER].target < default_minimum %} {action_respond_info("Preheating %s to %d" | format(EXTRUDER, MINIMUM))} M109 S{MINIMUM} {% endif %} M83 {% if params.LOAD|int %} G1 E{LENGTH} F{SPEED} G1 E{priming_length} F{(km.load_priming_speed, SPEED)|min} G1 E{'%.4f' % -printer["gcode_macro resume"].saved_e} F{km.load_speed} {% else %} G1 E3.0 F{SPEED} G4 P500 G1 E{'%.4f' % -priming_length} F{(km.load_priming_speed, SPEED)|min} G1 E{'%.4f' % -LENGTH} F{SPEED} {% endif %} RESTORE_GCODE_STATE NAME=_KM_LOAD_UNLOAD {% for i in range(BEEPS) %} M300 P100 G4 P200 {% endfor %} [gcode_macro LOAD_FILAMENT] description = Loads filament to the extruder. Usage: LOAD_FILAMENT [LENGTH=] [SPEED=] [EXTRUDER=] [MINIMUM=] [BEEPS=] gcode = _LOAD_UNLOAD LOAD=1{% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} {% set dummy = None if True else " M109 {% set dummy = params.LENGTH|default(variable_load_length)|float %} {% set dummy = params.SPEED|default(variable_load_speed)|float %} {% set dummy = params.EXTRUDER|default(current extruder) %} {% set dummy = params.MINIMUM|default(min_extrude_temp)|int %} {% set dummy = params.BEEPS|default(10)|int %} " %} [gcode_macro UNLOAD_FILAMENT] description = Unloads filament from the extruder. Usage: UNLOAD_FILAMENT [LENGTH=] [SPEED=] [EXTRUDER=] [MINIMUM=] [BEEPS=] gcode = _LOAD_UNLOAD LOAD=0{% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} {% set dummy = None if True else " M109 {% set dummy = params.LENGTH|default(variable_load_length)|float %} {% set dummy = params.SPEED|default(variable_load_speed)|float %} {% set dummy = params.EXTRUDER|default(default extruder) %} {% set dummy = params.MINIMUM|default(min_extrude_temp)|int %} {% set dummy = params.BEEPS|default(10)|int %} " %} [gcode_macro _pause_inner_m700] gcode = {% set extruder = "extruder" ~ params.T|replace('0', '') if "T" in params else printer.toolhead.extruder %} {% if extruder != printer.toolhead.extruder%} ACTIVATE_EXTRUDER EXTRUDER={extruder} {% endif %} {% set z_param = (' Z="%f"' % params.Z) if 'Z' in params else "" %} {% if printer.idle_timeout.state|string == "Printing" %} PAUSE B="{0}" P=2{z_param} {% elif not printer.pause_resume.is_paused%} PARK B="{0}" P=2{z_param} {% endif %} [gcode_macro m701] description = Pauses/parks the toolhead then loads filament to the extruder. Usage: M701 [L] [Z] [T] gcode = {% if 'U' in params %} {% if not 'L' in params %} RESPOND TYPE=error MSG="Argument \"U\" substituted for missing \"L\"." {% set dummy = params.__setitem__("L", params.U) %} {% else %} RESPOND TYPE=error MSG="Invalid argument \"U\" ignored." {% endif %} {% endif %} _PAUSE_INNER_M700 {% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} LOAD_FILAMENT BEEPS="{10}" LENGTH={ params.L|default(printer["gcode_macro _km_globals"].load_length)|float} [gcode_macro m702] description = Pauses/parks the toolhead then unloads filament from the extruder. Usage: M702 [U] [Z] [T] gcode = {% if 'L' in params %} {% if not 'U' in params %} RESPOND TYPE=error MSG="Argument \"L\" substituted for missing \"U\"." {% set dummy = params.__setitem__("U", params.L) %} {% else %} RESPOND TYPE=error MSG="Invalid argument \"L\" ignored." {% endif %} {% endif %} _PAUSE_INNER_M700 {% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} UNLOAD_FILAMENT BEEPS="{10}" LENGTH={ params.U|default(printer["gcode_macro _km_globals"].load_length)|float} [stepper_a] step_pin = PF0 dir_pin = !PF1 enable_pin = !PD7 microsteps = 32 rotation_distance = 32 endstop_pin = ^PE4 homing_speed = 50 angle = 210.203230 arm_length = 217.000000 position_endstop = 296.847928 [stepper_b] step_pin = PF6 dir_pin = !PF7 enable_pin = !PF2 microsteps = 32 rotation_distance = 32 endstop_pin = ^PJ0 homing_speed = 50 angle = 329.889274 arm_length = 217.000000 position_endstop = 295.385490 [stepper_c] step_pin = PL3 dir_pin = !PL1 enable_pin = !PK0 microsteps = 32 rotation_distance = 32 endstop_pin = ^PD2 homing_speed = 50 angle = 90.000000 arm_length = 217.000000 position_endstop = 296.049609 [extruder] step_pin = PA4 dir_pin = PA6 enable_pin = !PA2 microsteps = 32 rotation_distance = 20.067 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = PB4 sensor_type = EPCOS 100K B57560G104F sensor_pin = PK5 min_temp = 0 max_temp = 250 max_extrude_only_distance = 100.0 control = pid pid_kp = 22.418 pid_ki = 1.052 pid_kd = 119.374 [heater_bed] heater_pin = PH5 sensor_type = EPCOS 100K B57560G104F sensor_pin = PK6 min_temp = 0 max_temp = 130 control = pid pid_kp = 52.098 pid_ki = 1.194 pid_kd = 568.521 [fan] pin = PH6 kick_start_time = 0.200 [heater_fan extruder_cooler_fan] pin = PL5 [mcu] serial = /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 [temperature_sensor Raspberry Pi 3] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = delta max_velocity = 300 max_accel = 3000 max_z_velocity = 150 minimum_z_position = -20 delta_radius = 95.470132 [delta_calibrate] radius = 80 horizontal_move_z = 20 height0 = 14.262 height0_pos = 56508.000,56255.333,56337.667 height1 = 14.262 height1_pos = 63964.667,63685.667,52102.667 height2 = 14.262 height2_pos = 55693.000,67686.000,55503.000 height3 = 14.262 height3_pos = 52435.000,62480.000,62562.000 height4 = 14.262 height4_pos = 55356.667,55119.000,64239.000 height5 = 14.262 height5_pos = 61609.000,52389.000,61458.000 height6 = 14.262 height6_pos = 66076.333,55235.000,55317.333 [probe] pin = ^PD3 x_offset = 0 y_offset = 0 speed = 20 lift_speed = 30 sample_retract_dist = 3 samples = 3 samples_result = average samples_tolerance = 0.0125 samples_tolerance_retries = 5 z_offset = 14.262 [bed_mesh] speed = 100 horizontal_move_z = 25 mesh_radius = 80 mesh_origin = 0,0 round_probe_count = 11 mesh_pps = 11,11 algorithm = bicubic move_check_distance = 3 split_delta_z = 0.025 [display] lcd_type = hd44780 rs_pin = PH1 e_pin = PH0 d4_pin = PA1 d5_pin = PA3 d6_pin = PA5 d7_pin = PA7 encoder_pins = ^PC6, ^PC4 click_pin = ^!PC2 kill_pin = ^!PG0 [filament_switch_sensor runout_sensor] runout_gcode = PAUSE event_delay = 3.0 pause_delay = 0.5 switch_pin = PF3 [bed_mesh default] version = 1 points = 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962 -0.109011, -0.109011, -0.109011, -0.351394, 0.026022, 0.001547, 0.050174, 0.007358, 0.066990, 0.066990, 0.066990 -0.143359, -0.143359, -0.104431, -0.044354, -0.020129, -0.029767, -0.029878, -0.053652, 0.013618, 0.006396, 0.006396 -0.093302, -0.093302, -0.050519, -0.121346, -0.088960, -0.040568, -0.118917, -0.004306, -0.072872, -0.066963, -0.066963 -0.099147, -0.099147, -0.041646, -0.076771, -0.032548, -0.069445, -0.048539, -0.026390, -0.037918, -0.088234, -0.088234 -0.088842, -0.064332, -0.049037, -0.053592, -0.105247, -0.115772, -0.133453, -0.083709, -0.095850, -0.072939, -0.161284 -0.159071, -0.159071, -0.136697, -0.183336, -0.168631, -0.171679, -0.154732, -0.151463, -0.138638, -0.162883, -0.162883 -0.132343, -0.132343, -0.141782, -0.201309, -0.174247, -0.143837, -0.155789, -0.173544, -0.166517, -0.212444, -0.212444 -0.223554, -0.223554, -0.229521, -0.208085, -0.218800, -0.234439, -0.178891, -0.208385, -0.187892, -0.211953, -0.211953 -0.296977, -0.296977, -0.296977, -0.211657, -0.223081, -0.206840, -0.217961, -0.178008, -0.192399, -0.192399, -0.192399 -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925 x_count = 11 y_count = 11 mesh_x_pps = 11 mesh_y_pps = 11 algo = bicubic tension = 0.2 min_x = -80.0 max_x = 80.0 min_y = -80.0 max_y = 80.0 ======================= Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (GCC) 5.4.0 binutils: (GNU Binutils) 2.26.20160125) MCU 'mcu' config: ADC_MAX=1023 BUS_PINS_spi=PB3,PB2,PB1 BUS_PINS_twi=PD0,PD1 CLOCK_FREQ=16000000 MCU=atmega2560 PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_serial=PE0,PE1 SERIAL_BAUD=250000 STATS_SUMSQ_BASE=256 Configured MCU 'mcu' (596 moves) toolhead: max_velocity: 300.000000 max_accel: 3000.000000 max_accel_to_decel: 1500.000000 square_corner_velocity: 5.000000 Args: ['/home/pi/klipper/klippy/klippy.py', '/home/pi/printer_data/config/printer.cfg', '-l', '/home/pi/printer_data/logs/klippy.log', '-I', '/home/pi/printer_data/comms/klippy.serial', '-a', '/home/pi/printer_data/comms/klippy.sock'] Git version: 'v0.11.0-304-gf7567a0d-dirty' Untracked files: klippy/extras/led_effect.py Branch: master Remote: origin Tracked URL: https://github.com/Klipper3d/klipper.git CPU: 4 core ARMv7 Processor rev 5 (v7l) Python: '3.9.2 (default, Mar 12 2021, 04:06:34) \n[GCC 10.2.1 20210110]' webhooks client 1964249224: {'program': 'Moonraker', 'version': 'v0.8.0-190-ge03dbe3'} =============== Log rollover at Wed Nov 1 00:25:51 2023 =============== Stats 62584.3: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=1587555 bytes_read=6528316 bytes_retransmit=9 bytes_invalid=0 send_seq=82412 receive_seq=82412 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999146 heater_bed: target=0 temp=19.6 pwm=0.000 3: temp=41.2 sysload=0.16 cputime=2491.315 memavail=554804 print_time=57399.606 buffer_time=0.410 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Attempting MCU 'mcu' reset webhooks client 1964249224: Disconnected Restarting printer Start printer at Wed Nov 1 00:25:53 2023 (1698819953.5 62586.2) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_macro GET_TIMELAPSE_SETUP] description = Print the Timelapse setup gcode = {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% set output_txt = ["Timelapse Setup:"] %} {% set _dummy = output_txt.append("enable: %s" % tl.enable) %} {% set _dummy = output_txt.append("park: %s" % tl.park.enable) %} {% if tl.park.enable %} {% set _dummy = output_txt.append("park position: %s time: %s s" % (tl.park.pos, tl.park.time)) %} {% set _dummy = output_txt.append("park cord x:%s y:%s dz:%s" % (tl.park.coord.x, tl.park.coord.y, tl.park.coord.dz)) %} {% set _dummy = output_txt.append("travel speed: %s mm/s" % tl.speed.travel) %} {% endif %} {% set _dummy = output_txt.append("fw_retract: %s" % tl.extruder.fw_retract) %} {% if not tl.extruder.fw_retract %} {% set _dummy = output_txt.append("retract: %s mm speed: %s mm/s" % (tl.extruder.retract, tl.speed.retract)) %} {% set _dummy = output_txt.append("extrude: %s mm speed: %s mm/s" % (tl.extruder.extrude, tl.speed.extrude)) %} {% endif %} {% set _dummy = output_txt.append("verbose: %s" % tl.verbose) %} {action_respond_info(output_txt|join("\n"))} [gcode_macro _SET_TIMELAPSE_SETUP] description = Set user parameters for timelapse gcode = {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% set min = printer.toolhead.axis_minimum %} {% set max = printer.toolhead.axis_maximum %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set park = {'min' : {'x': (min.x / 1.42)|round(3) if round_bed else min.x|round(3), 'y': (min.y / 1.42)|round(3) if round_bed else min.y|round(3)}, 'max' : {'x': (max.x / 1.42)|round(3) if round_bed else max.x|round(3), 'y': (max.y / 1.42)|round(3) if round_bed else max.y|round(3)}, 'center': {'x': (max.x-(max.x-min.x)/2)|round(3), 'y': (max.y-(max.y-min.y)/2)|round(3)}} %} {% if params.ENABLE %} {% if params.ENABLE|lower is in ['true', 'false'] %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=enable VALUE={True if params.ENABLE|lower == 'true' else False} {% else %} {action_raise_error("ENABLE=%s not supported. Allowed values are [True, False]" % params.ENABLE|capitalize)} {% endif %} {% endif %} {% if params.VERBOSE %} {% if params.VERBOSE|lower is in ['true', 'false'] %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=verbose VALUE={True if params.VERBOSE|lower == 'true' else False} {% else %} {action_raise_error("VERBOSE=%s not supported. Allowed values are [True, False]" % params.VERBOSE|capitalize)} {% endif %} {% endif %} {% if params.CUSTOM_POS_X %} {% if params.CUSTOM_POS_X|float >= min.x and params.CUSTOM_POS_X|float <= max.x %} {% set _dummy = tl.park.custom.update({'x':params.CUSTOM_POS_X|float|round(3)}) %} {% else %} {action_raise_error("CUSTOM_POS_X=%s must be within [%s - %s]" % (params.CUSTOM_POS_X, min.x, max.x))} {% endif %} {% endif %} {% if params.CUSTOM_POS_Y %} {% if params.CUSTOM_POS_Y|float >= min.y and params.CUSTOM_POS_Y|float <= max.y %} {% set _dummy = tl.park.custom.update({'y':params.CUSTOM_POS_Y|float|round(3)}) %} {% else %} {action_raise_error("CUSTOM_POS_Y=%s must be within [%s - %s]" % (params.CUSTOM_POS_Y, min.y, max.y))} {% endif %} {% endif %} {% if params.CUSTOM_POS_DZ %} {% if params.CUSTOM_POS_DZ|float >= min.z and params.CUSTOM_POS_DZ|float <= max.z %} {% set _dummy = tl.park.custom.update({'dz':params.CUSTOM_POS_DZ|float|round(3)}) %} {% else %} {action_raise_error("CUSTOM_POS_DZ=%s must be within [%s - %s]" % (params.CUSTOM_POS_DZ, min.z, max.z))} {% endif %} {% endif %} {% if params.PARK_ENABLE %} {% if params.PARK_ENABLE|lower is in ['true', 'false'] %} {% set _dummy = tl.park.update({'enable':True if params.PARK_ENABLE|lower == 'true' else False}) %} {% else %} {action_raise_error("PARK_ENABLE=%s not supported. Allowed values are [True, False]" % params.PARK_ENABLE|capitalize)} {% endif %} {% endif %} {% if params.PARK_POS %} {% if params.PARK_POS|lower is in ['center','front_left','front_right','back_left','back_right','custom','x_only','y_only'] %} {% set dic = {'center' : {'x': park.center.x , 'y': park.center.y , 'dz': 1 }, 'front_left' : {'x': park.min.x , 'y': park.min.y , 'dz': 0 }, 'front_right' : {'x': park.max.x , 'y': park.min.y , 'dz': 0 }, 'back_left' : {'x': park.min.x , 'y': park.max.y , 'dz': 0 }, 'back_right' : {'x': park.max.x , 'y': park.max.y , 'dz': 0 }, 'custom' : {'x': tl.park.custom.x, 'y': tl.park.custom.y, 'dz': tl.park.custom.dz}, 'x_only' : {'x': tl.park.custom.x, 'y': 'none' , 'dz': tl.park.custom.dz}, 'y_only' : {'x': 'none' , 'y': tl.park.custom.y, 'dz': tl.park.custom.dz}} %} {% set _dummy = tl.park.update({'pos':params.PARK_POS|lower}) %} {% set _dummy = tl.park.update({'coord':dic[tl.park.pos]}) %} {% else %} {action_raise_error("PARK_POS=%s not supported. Allowed values are [CENTER, FRONT_LEFT, FRONT_RIGHT, BACK_LEFT, BACK_RIGHT, CUSTOM, X_ONLY, Y_ONLY]" % params.PARK_POS|upper)} {% endif %} {% endif %} {% if params.PARK_TIME %} {% if params.PARK_TIME|float >= 0.0 %} {% set _dummy = tl.park.update({'time':params.PARK_TIME|float|round(3)}) %} {% else %} {action_raise_error("PARK_TIME=%s must be a positive number" % params.PARK_TIME)} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=park VALUE="{tl.park}" {% if params.TRAVEL_SPEED %} {% if params.TRAVEL_SPEED|float > 0.0 %} {% set _dummy = tl.speed.update({'travel':params.TRAVEL_SPEED|float|round(3)}) %} {% else %} {action_raise_error("TRAVEL_SPEED=%s must be larger than 0" % params.TRAVEL_SPEED)} {% endif %} {% endif %} {% if params.RETRACT_SPEED %} {% if params.RETRACT_SPEED|float > 0.0 %} {% set _dummy = tl.speed.update({'retract':params.RETRACT_SPEED|float|round(3)}) %} {% else %} {action_raise_error("RETRACT_SPEED=%s must be larger than 0" % params.RETRACT_SPEED)} {% endif %} {% endif %} {% if params.EXTRUDE_SPEED %} {% if params.EXTRUDE_SPEED|float > 0.0 %} {% set _dummy = tl.speed.update({'extrude':params.EXTRUDE_SPEED|float|round(3)}) %} {% else %} {action_raise_error("EXTRUDE_SPEED=%s must be larger than 0" % params.EXTRUDE_SPEED)} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=speed VALUE="{tl.speed}" {% if params.EXTRUDE_DISTANCE %} {% if params.EXTRUDE_DISTANCE|float >= 0.0 %} {% set _dummy = tl.extruder.update({'extrude':params.EXTRUDE_DISTANCE|float|round(3)}) %} {% else %} {action_raise_error("EXTRUDE_DISTANCE=%s must be specified as positiv number" % params.EXTRUDE_DISTANCE)} {% endif %} {% endif %} {% if params.RETRACT_DISTANCE %} {% if params.RETRACT_DISTANCE|float >= 0.0 %} {% set _dummy = tl.extruder.update({'retract':params.RETRACT_DISTANCE|float|round(3)}) %} {% else %} {action_raise_error("RETRACT_DISTANCE=%s must be specified as positiv number" % params.RETRACT_DISTANCE)} {% endif %} {% endif %} {% if params.FW_RETRACT %} {% if params.FW_RETRACT|lower is in ['true', 'false'] %} {% if 'firmware_retraction' in printer.configfile.settings %} {% set _dummy = tl.extruder.update({'fw_retract': True if params.FW_RETRACT|lower == 'true' else False}) %} {% else %} {% set _dummy = tl.extruder.update({'fw_retract':False}) %} {% if params.FW_RETRACT|capitalize == 'True' %} {action_raise_error("[firmware_retraction] not defined in printer.cfg. Can not enable fw_retract")} {% endif %} {% endif %} {% else %} {action_raise_error("FW_RETRACT=%s not supported. Allowed values are [True, False]" % params.FW_RETRACT|capitalize)} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=extruder VALUE="{tl.extruder}" {% if printer.configfile.settings['gcode_macro pause'] is defined %} {% set _dummy = tl.macro.update({'pause': printer.configfile.settings['gcode_macro pause'].rename_existing}) %} {% endif %} {% if printer.configfile.settings['gcode_macro resume'] is defined %} {% set _dummy = tl.macro.update({'resume': printer.configfile.settings['gcode_macro resume'].rename_existing}) %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=macro VALUE="{tl.macro}" [gcode_macro TIMELAPSE_TAKE_FRAME] description = Take Timelapse shoot variable_enable = False variable_takingframe = False variable_park = {'enable': False, 'pos' : 'center', 'time' : 0.1, 'custom': {'x': 0, 'y': 0, 'dz': 0}, 'coord' : {'x': 0, 'y': 0, 'dz': 0}} variable_extruder = {'fw_retract': False, 'retract': 1.0, 'extrude': 1.0} variable_speed = {'travel': 100, 'retract': 15, 'extrude': 15} variable_verbose = True variable_restore = {'absolute': {'coordinates': True, 'extrude': True}, 'speed': 1500, 'e':0, 'factor': {'speed': 1.0, 'extrude': 1.0}} variable_macro = {'pause': 'PAUSE', 'resume': 'RESUME'} variable_is_paused = False gcode = {% set hyperlapse = True if params.HYPERLAPSE and params.HYPERLAPSE|lower =='true' else False %} {% if enable %} {% if (hyperlapse and printer['gcode_macro HYPERLAPSE'].run) or (not hyperlapse and not printer['gcode_macro HYPERLAPSE'].run) %} {% if park.enable %} {% set pos = {'x': 'X' + park.coord.x|string if park.pos != 'y_only' else '', 'y': 'Y' + park.coord.y|string if park.pos != 'x_only' else '', 'z': 'Z'+ [printer.gcode_move.gcode_position.z + park.coord.dz, printer.toolhead.axis_maximum.z]|min|string} %} {% set restore = {'absolute': {'coordinates': printer.gcode_move.absolute_coordinates, 'extrude' : printer.gcode_move.absolute_extrude}, 'speed' : printer.gcode_move.speed, 'e' : printer.gcode_move.gcode_position.e, 'factor' : {'speed' : printer.gcode_move.speed_factor, 'extrude': printer.gcode_move.extrude_factor}} %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=restore VALUE="{restore}" {% if not printer[printer.toolhead.extruder].can_extrude %} {% if verbose %}{action_respond_info("Timelapse: Warning, minimum extruder temperature not reached!")}{% endif %} {% else %} {% if extruder.fw_retract %} G10 {% else %} M83 G0 E-{extruder.retract} F{speed.retract * 60} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=is_paused VALUE=True {macro.pause} SET_GCODE_OFFSET X=0 Y=0 G90 {% if "xyz" not in printer.toolhead.homed_axes %} {% if verbose %}{action_respond_info("Timelapse: Warning, axis not homed yet!")}{% endif %} {% else %} G0 {pos.x} {pos.y} {pos.z} F{speed.travel * 60} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=takingframe VALUE=True UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_TAKE_FRAME DURATION=0.5 M400 {% endif %} _TIMELAPSE_NEW_FRAME HYPERLAPSE={hyperlapse} {% endif %} {% else %} {% if verbose %}{action_respond_info("Timelapse: disabled, take frame ignored")}{% endif %} {% endif %} [gcode_macro _TIMELAPSE_NEW_FRAME] description = action call for timelapse shoot. must be a seperate macro gcode = {action_call_remote_method("timelapse_newframe", macropark=printer['gcode_macro TIMELAPSE_TAKE_FRAME'].park, hyperlapse=params.HYPERLAPSE)} [delayed_gcode _WAIT_TIMELAPSE_TAKE_FRAME] gcode = {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% set factor = {'speed': printer.gcode_move.speed_factor, 'extrude': printer.gcode_move.extrude_factor} %} {% if tl.takingframe %} UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_TAKE_FRAME DURATION=0.5 {% else %} {tl.macro.resume} VELOCITY={tl.speed.travel} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=is_paused VALUE=False {% if not printer[printer.toolhead.extruder].can_extrude %} {action_respond_info("Timelapse: Warning minimum extruder temperature not reached!")} {% else %} {% if tl.extruder.fw_retract %} G11 {% else %} G0 E{tl.extruder.extrude} F{tl.speed.extrude * 60} G0 F{tl.restore.speed} {% if tl.restore.absolute.extrude %} M82 G92 E{tl.restore.e} {% endif %} {% endif %} {% endif %} {% if tl.restore.factor.speed != factor.speed %} M220 S{(factor.speed*100)|round(0)} {% endif %} {% if tl.restore.factor.extrude != factor.extrude %} M221 S{(factor.extrude*100)|round(0)} {% endif %} {% if not tl.restore.absolute.coordinates %} G91 {% endif %} {% endif %} [gcode_macro HYPERLAPSE] description = Start/Stop a hyperlapse recording variable_cycle = 0 variable_run = False gcode = {% set cycle = params.CYCLE|default(30)|int %} {% if params.ACTION and params.ACTION|lower == 'start' %} {action_respond_info("Hyperlapse: frames started (Cycle %d sec)" % cycle)} SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=run VALUE=True SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=cycle VALUE={cycle} UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION={cycle} TIMELAPSE_TAKE_FRAME HYPERLAPSE=True {% elif params.ACTION and params.ACTION|lower == 'stop' %} {% if run %}{action_respond_info("Hyperlapse: frames stopped")}{% endif %} SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=run VALUE=False UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION=0 {% else %} {action_raise_error("Hyperlapse: No valid input parameter Use: - HYPERLAPSE ACTION=START [CYCLE=time] - HYPERLAPSE ACTION=STOP")} {% endif %} [delayed_gcode _HYPERLAPSE_LOOP] gcode = UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION={printer["gcode_macro HYPERLAPSE"].cycle} TIMELAPSE_TAKE_FRAME HYPERLAPSE=True [gcode_macro TIMELAPSE_RENDER] description = Render Timelapse video and wait for the result variable_render = False variable_run_identifier = 0 gcode = {action_respond_info("Timelapse: Rendering started")} {action_call_remote_method("timelapse_render", byrendermacro="True")} SET_GCODE_VARIABLE MACRO=TIMELAPSE_RENDER VARIABLE=render VALUE=True {printer.configfile.settings['gcode_macro pause'].rename_existing} UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_RENDER DURATION=0.5 [delayed_gcode _WAIT_TIMELAPSE_RENDER] gcode = {% set ri = printer['gcode_macro TIMELAPSE_RENDER'].run_identifier % 4 %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_RENDER VARIABLE=run_identifier VALUE={ri + 1} {% if printer['gcode_macro TIMELAPSE_RENDER'].render %} M117 Rendering {['-','\\','|','/'][ri]} UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_RENDER DURATION=0.5 {% else %} {action_respond_info("Timelapse: Rendering finished")} M117 {printer.configfile.settings['gcode_macro resume'].rename_existing} {% endif %} [gcode_macro TEST_STREAM_DELAY] description = Helper macro to find stream and park delay gcode = {% set min = printer.toolhead.axis_minimum %} {% set max = printer.toolhead.axis_maximum %} {% set act = printer.toolhead.position %} {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% if act.z > 5.0 %} G0 X{min.x + 5.0} F{tl.speed.travel|int * 60} G0 X{(max.x-min.x)/2} G4 P{tl.park.time|float * 1000} _TIMELAPSE_NEW_FRAME HYPERLAPSE=FALSE G0 X{max.x - 5.0} {% else %} {action_raise_error("Toolhead z %.3f to low. Please place head above z = 5.0" % act.z)} {% endif %} [menu __main] type = list name = Main [menu __main __pause] type = command enable = {(printer.print_stats.state == "printing") and ("pause_resume" in printer)} index = 0 name = Pause printing gcode = PAUSE { menu.exit() } [menu __main __resume] type = command enable = {(printer.print_stats.state == "paused") and ("pause_resume" in printer)} index = 0 name = Resume printing gcode = RESUME { menu.exit() } [menu __main __abort] type = command enable = {((printer.print_stats.state == "printing" or printer.print_stats.state == "paused")) and ("pause_resume" in printer)} index = 1 name = Abort printing gcode = CANCEL_PRINT { menu.exit() } [menu __main __tune] type = list enable = {printer.idle_timeout.state == "Printing"} name = Tune [menu __main __tune __speed] type = input name = Speed: {'%3d' % (menu.input*100)}% input = {printer.gcode_move.speed_factor} input_min = 0.01 input_max = 5 input_step = 0.01 realtime = True gcode = M220 S{'%d' % (menu.input*100)} [menu __main __tune __flow] type = input name = Flow: {'%3d' % (menu.input*100)}% input = {printer.gcode_move.extrude_factor} input_min = 0.01 input_max = 2 input_step = 0.01 realtime = True gcode = M221 S{'%d' % (menu.input*100)} [menu __main __tune __offsetz] type = input name = Offset Z:{'%05.3f' % menu.input} input = {printer.gcode_move.homing_origin.z} input_min = -5 input_max = 5 input_step = 0.005 realtime = True gcode = SET_GCODE_OFFSET Z={'%.3f' % menu.input} MOVE=1 [menu __main __tune __hotend0_target] type = input enable = {('extruder' in printer) and ('extruder' in printer.heaters.available_heaters)} name = {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)} input = {printer.extruder.target} input_min = 0 input_max = {printer.configfile.config.extruder.max_temp} input_step = 1 realtime = True gcode = M104 T0 S{'%.0f' % menu.input} { menu.exit()} [menu __main __tune __hotend1_target] type = input enable = {('extruder1' in printer) and ('extruder1' in printer.heaters.available_heaters)} name = {"Ex1:%3.0f (%4.0f)" % (menu.input, printer.extruder1.temperature)} input = {printer.extruder1.target} input_min = 0 input_max = {printer.configfile.config.extruder1.max_temp} input_step = 1 realtime = True gcode = M104 T1 S{'%.0f' % menu.input} { menu.exit()} [menu __main __tune __hotbed_target] type = input enable = {'heater_bed' in printer} name = {"Bed:%3.0f (%4.0f)" % (menu.input, printer.heater_bed.temperature)} input = {printer.heater_bed.target} input_min = 0 input_max = {printer.configfile.config.heater_bed.max_temp} input_step = 1 realtime = True gcode = M140 S{'%.0f' % menu.input} { menu.exit()} [menu __main __tune __fanspeed] type = input enable = {'fan' in printer} name = Fan speed: {'%3d' % (menu.input*100)}% input = {printer.fan.speed} input_min = 0 input_max = 1 input_step = 0.01 realtime = True gcode = M106 S{'%d' % (menu.input*255)} [menu __main __octoprint] type = disabled [menu __main __octoprint __pause] type = disabled [menu __main __octoprint __resume] type = disabled [menu __main __octoprint __abort] type = disabled [menu __main __sdcard] type = vsdlist enable = {not printer.idle_timeout.state == "Printing" and ('virtual_sdcard' in printer)} name = SD Card [menu __main __sdcard __start] type = command enable = {('virtual_sdcard' in printer) and printer.virtual_sdcard.file_path and not printer.virtual_sdcard.is_active} name = Start printing gcode = M24 { menu.exit() } [menu __main __sdcard __resume] type = disabled [menu __main __sdcard __pause] type = disabled [menu __main __sdcard __cancel] type = disabled [menu __main __control] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Control [menu __main __control __home] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Home All gcode = G28 [menu __main __control __homez] type = disabled [menu __main __control __homexy] type = disabled [menu __main __control __disable] type = command name = Steppers off gcode = M84 M18 [menu __main __control __fanonoff] type = input enable = {'fan' in printer} name = Fan: {'ON ' if menu.input else 'OFF'} input = {printer.fan.speed} input_min = 0 input_max = 1 input_step = 1 realtime = True gcode = M106 S{255 if menu.input else 0} [menu __main __control __fanspeed] type = input enable = {'fan' in printer} name = Fan speed: {'%3d' % (menu.input*100)}% input = {printer.fan.speed} input_min = 0 input_max = 1 input_step = 0.01 realtime = True gcode = M106 S{'%d' % (menu.input*255)} [menu __main __control __caselightonoff] type = input enable = {'output_pin caselight' in printer} name = Lights: {'ON ' if menu.input else 'OFF'} input = {printer['output_pin caselight'].value} input_min = 0 input_max = 1 input_step = 1 realtime = True gcode = SET_PIN PIN=caselight VALUE={1 if menu.input else 0} [menu __main __control __caselightpwm] type = input enable = {'output_pin caselight' in printer} name = Lights: {'%3d' % (menu.input*100)}% input = {printer['output_pin caselight'].value} input_min = 0.0 input_max = 1.0 input_step = 0.01 realtime = True gcode = SET_PIN PIN=caselight VALUE={menu.input} [menu __main __control __move_10mm] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Move 10mm [menu __main __control __move_10mm __axis_x] type = input name = Move X:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.x} input_min = {printer.toolhead.axis_minimum.x} input_max = {printer.toolhead.axis_maximum.x} input_step = 10.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 X{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_10mm __axis_y] type = input name = Move Y:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.y} input_min = {printer.toolhead.axis_minimum.y} input_max = {printer.toolhead.axis_maximum.y} input_step = 10.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Y{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_10mm __axis_z] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move Z:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_min = 0 input_max = {printer.toolhead.axis_maximum.z} input_step = 10.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Z{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_10mm __axis_e] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move E:{'%+06.1f' % menu.input} input = 0 input_min = -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_max = {printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_step = 10.0 realtime = False gcode = SAVE_GCODE_STATE NAME=__move__axis M83 G1 E{menu.input} F240 RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Move 1mm [menu __main __control __move_1mm __axis_x] type = input name = Move X:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.x} input_min = {printer.toolhead.axis_minimum.x} input_max = {printer.toolhead.axis_maximum.x} input_step = 1.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 X{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm __axis_y] type = input name = Move Y:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.y} input_min = {printer.toolhead.axis_minimum.y} input_max = {printer.toolhead.axis_maximum.y} input_step = 1.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Y{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm __axis_z] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move Z:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_min = 0 input_max = {printer.toolhead.axis_maximum.z} input_step = 1.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Z{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm __axis_e] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move E:{'%+06.1f' % menu.input} input = 0 input_min = -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_max = {printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_step = 1.0 realtime = False gcode = SAVE_GCODE_STATE NAME=__move__axis M83 G1 E{menu.input} F240 RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Move 0.1mm [menu __main __control __move_01mm __axis_x] type = input name = Move X:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.x} input_min = {printer.toolhead.axis_minimum.x} input_max = {printer.toolhead.axis_maximum.x} input_step = 0.1 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 X{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm __axis_y] type = input name = Move Y:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.y} input_min = {printer.toolhead.axis_minimum.y} input_max = {printer.toolhead.axis_maximum.y} input_step = 0.1 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Y{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm __axis_z] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move Z:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_min = 0 input_max = {printer.toolhead.axis_maximum.z} input_step = 0.1 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Z{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm __axis_e] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move E:{'%+06.1f' % menu.input} input = 0 input_min = -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_max = {printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_step = 0.1 realtime = False gcode = SAVE_GCODE_STATE NAME=__move__axis M83 G1 E{menu.input} F240 RESTORE_GCODE_STATE NAME=__move__axis [menu __main __temp] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Temperature [menu __main __temp __hotend0_target] type = input enable = {('extruder' in printer) and ('extruder' in printer.heaters.available_heaters)} name = {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)} input = {printer.extruder.target} input_min = 0 input_max = {printer.configfile.config.extruder.max_temp} input_step = 1 gcode = M104 T0 S{'%.0f' % menu.input} { menu.exit()} [menu __main __temp __hotend1_target] type = input enable = {('extruder1' in printer) and ('extruder1' in printer.heaters.available_heaters)} name = {"Ex1:%3.0f (%4.0f)" % (menu.input, printer.extruder1.temperature)} input = {printer.extruder1.target} input_min = 0 input_max = {printer.configfile.config.extruder1.max_temp} input_step = 1 gcode = M104 T1 S{'%.0f' % menu.input} { menu.exit()} [menu __main __temp __hotbed_target] type = input enable = {'heater_bed' in printer} name = {"Bed:%3.0f (%4.0f)" % (menu.input, printer.heater_bed.temperature)} input = {printer.heater_bed.target} input_min = 0 input_max = {printer.configfile.config.heater_bed.max_temp} input_step = 1 gcode = M140 S{'%.0f' % menu.input} { menu.exit()} [menu __main __temp __preheat_pla] type = list name = Preheat PLA [menu __main __temp __preheat_pla __all] type = command enable = {('extruder' in printer) and ('heater_bed' in printer)} name = Preheat all gcode = M140 S70 M104 S230 { menu.exit()} [menu __main __temp __preheat_pla __hotend] type = command enable = {'extruder' in printer} name = Preheat hotend gcode = M104 S230 { menu.exit()} [menu __main __temp __preheat_pla __hotbed] type = command enable = {'heater_bed' in printer} name = Preheat hotbed gcode = M140 S70 { menu.exit()} [menu __main __temp __preheat_abs] type = list name = Preheat ABS [menu __main __temp __preheat_abs __all] type = command enable = {('extruder' in printer) and ('heater_bed' in printer)} name = Preheat all gcode = M140 S110 M104 S245 { menu.exit()} [menu __main __temp __preheat_abs __hotend] type = command enable = {'extruder' in printer} name = Preheat hotend gcode = M104 S245 { menu.exit()} [menu __main __temp __preheat_abs __hotbed] type = command enable = {'heater_bed' in printer} name = Preheat hotbed gcode = M140 S110 { menu.exit()} [menu __main __temp __cooldown] type = list name = Cooldown [menu __main __temp __cooldown __all] type = command enable = {('extruder' in printer) and ('heater_bed' in printer)} name = Cooldown all gcode = M104 S0 M140 S0 { menu.exit()} [menu __main __temp __cooldown __hotend] type = command enable = {'extruder' in printer} name = Cooldown hotend gcode = M104 S0 { menu.exit()} [menu __main __temp __cooldown __hotbed] type = command enable = {'heater_bed' in printer} name = Cooldown hotbed gcode = M140 S0 { menu.exit()} [menu __main __filament] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Filament [menu __main __filament __hotend0_target] type = input enable = {'extruder' in printer} name = {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)} input = {printer.extruder.target} input_min = 0 input_max = {printer.configfile.config.extruder.max_temp} input_step = 1 gcode = M104 T0 S{'%.0f' % menu.input} [menu __main __filament __loadf] type = command name = Load Fil. fast gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E50 F960 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __loads] type = command name = Load Fil. slow gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E50 F240 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __unloadf] type = command name = Unload Fil.fast gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E-50 F960 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __unloads] type = command name = Unload Fil.slow gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E-50 F240 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __feed] type = input name = Feed: {'%.1f' % menu.input} input = 5 input_step = 0.1 gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E{'%.1f' % menu.input} F60 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __setup] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Setup [menu __main __setup __save_config] type = command name = Save config gcode = SAVE_CONFIG [menu __main __setup __restart] type = list name = Restart [menu __main __setup __restart __host_restart] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Restart host gcode = RESTART [menu __main __setup __restart __firmware_restart] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Restart FW gcode = FIRMWARE_RESTART [menu __main __setup __tuning] type = list name = PID tuning [menu __main __setup __tuning __hotend_pid_tuning] type = command enable = {(not printer.idle_timeout.state == "Printing") and ('extruder' in printer)} name = Tune Hotend PID gcode = PID_CALIBRATE HEATER=extruder TARGET=210 WRITE_FILE=1 [menu __main __setup __tuning __hotbed_pid_tuning] type = command enable = {(not printer.idle_timeout.state == "Printing") and ('heater_bed' in printer)} name = Tune Hotbed PID gcode = PID_CALIBRATE HEATER=heater_bed TARGET=60 WRITE_FILE=1 [menu __main __setup __calib] type = list name = Calibration [menu __main __setup __calib __delta_calib_auto] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Delta cal. auto gcode = G28 DELTA_CALIBRATE [menu __main __setup __calib __delta_calib_man] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Delta cal. man [menu __main __setup __calib __bedprobe] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Bed probe gcode = PROBE [menu __main __setup __calib __delta_calib_man __start] type = command name = Start probing gcode = G28 DELTA_CALIBRATE METHOD=manual [menu __main __setup __calib __delta_calib_man __move_z] type = input name = Move Z: {'%03.2f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_step = 1 realtime = True gcode = {%- if menu.event == 'change' -%} G1 Z{'%.2f' % menu.input} {%- elif menu.event == 'long_click' -%} G1 Z{'%.2f' % menu.input} SAVE_GCODE_STATE NAME=__move__axis G91 G1 Z2 G1 Z-2 RESTORE_GCODE_STATE NAME=__move__axis {%- endif -%} [menu __main __setup __calib __delta_calib_man __test_z] type = input name = Test Z: {['++','+','+.01','+.05','+.1','+.5','-.5','-.1','-.05','-.01','-','--'][menu.input|int]} input = 6 input_min = 0 input_max = 11 input_step = 1 gcode = {%- if menu.event == 'long_click' -%} TESTZ Z={['++','+','+.01','+.05','+.1','+.5','-.5','-.1','-.05','-.01','-','--'][menu.input|int]} {%- endif -%} [menu __main __setup __calib __delta_calib_man __accept] type = command name = Accept gcode = ACCEPT [menu __main __setup __calib __delta_calib_man __abort] type = command name = Abort gcode = ABORT [menu __main __setup __dump] type = command name = Dump parameters gcode = {% for name1 in printer %} {% for name2 in printer[name1] %} { action_respond_info("printer['%s'].%s = %s" % (name1, name2, printer[name1][name2])) } {% else %} { action_respond_info("printer['%s'] = %s" % (name1, printer[name1])) } {% endfor %} {% endfor %} { menu.exit() } [gcode_macro START_PRINT_ORCA] gcode = G1 Z2.0 F3000 G1 X15.1 Y20 Z0.28 F5000.0 G1 X15.1 Y200.0 Z0.28 F1500.0 E15 G1 X15.4 Y200.0 Z0.28 F5000.0 G1 X15.4 Y20 Z0.28 F1500.0 E30 G92 E0 STATUS_PRINTING M117 Let's Print!!! [gcode_macro START_PRINT_CURA] description = Start Print variable_parameter_AREA_START : 0,0 variable_parameter_AREA_END : 0,0 gcode = SET_NOZZLE_LEDS_ON STATUS_READY G90 M117 Homing Printer ... STATUS_HOMING G28 STATUS_MESHING M117 Bed Area Meshing ... BED_MESH_CALIBRATE AREA_START={params.AREA_START|default("0,0")} AREA_END={params.AREA_END|default("0,0")} G90 G1 X15 Y15 Z15 G92 E0 G1 X0 Y0 Z10 F4000.0 STATUS_HEATING SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={params.BED_TEMP|default(60)|float} TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={params.BED_TEMP|default(60)|float - 5} MAXIMUM={params.BED_TEMP|default(60)|float + 5} M117 Heating Nozzle SET_HEATER_TEMPERATURE HEATER=extruder TARGET={params.EXTRUDER_TEMP|default(200)|float} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.EXTRUDER_TEMP|default(200)|float - 5} MAXIMUM={params.EXTRUDER_TEMP|default(200)|float + 5} G1 Z2.0 F3000 G1 X15.1 Y20 Z0.28 F5000.0 G1 X15.1 Y200.0 Z0.28 F1500.0 E15 G1 X15.4 Y200.0 Z0.28 F5000.0 G1 X15.4 Y20 Z0.28 F1500.0 E30 G92 E0 STATUS_PRINTING M117 Let's Print!!! [gcode_macro PRINT] variable_parameter_msg = '' variable_parameter_output_target = 0 gcode = {% if params.OUTPUT_TARGET|default(0)|int == 0 %} M117 {params.MSG | string} { action_respond_info((params.MSG) | string)} {% elif params.OUTPUT_TARGET|default(0)|int == 1 %} { action_respond_info((params.MSG) | string)} {% else %} M117 {params.MSG | string} {% endif %} [gcode_macro M109] rename_existing = M99109 gcode = {% set s = params.S|float %} M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} {% if s != 0 %} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1} {% endif %} [gcode_macro FILAMENT_RUNOUT] description = Filament Runout gcode = M300 S1 P10 M600 M300 S1 P10 [gcode_macro M600] description = Filament Change gcode = {% set X = params.X|default(50)|float %} {% set Y = params.Y|default(0)|float %} {% set Z = params.Z|default(10)|float %} SAVE_GCODE_STATE NAME=M600_state PAUSE G91 G1 E-.8 F2700 G1 Z{Z} G90 G1 X{X} Y{Y} F3000 G91 G1 E-50 F1000 SET_IDLE_TIMEOUT TIMEOUT=7200 RESTORE_GCODE_STATE NAME=M600_state [gcode_macro m900] gcode = SET_PRESSURE_ADVANCE ADVANCE={params.K} [gcode_macro PIDtuneHOTEND] description = PID Tune Hotend gcode = {% set TEMP = params.TEMP|default(200)|float %} PID_CALIBRATE HEATER=extruder TARGET={TEMP} [gcode_macro PIDtuneBED] description = PID Tune Bed gcode = {% set TEMP = params.TEMP|default(60)|float %} PID_CALIBRATE HEATER=heater_bed TARGET={TEMP} [gcode_macro END_PRINT] description = End Print gcode = G91 G1 E-2 F2700 G1 E-2 Z0.2 F2400 G1 X5 Y5 F3000 G1 Z10 G90 G1 X0 Y230 M106 S0 M104 S0 M140 S0 M84 X Y E M117 Printing done!!! STATUS_PART_READY [neopixel neo] pin = PF4 chain_count = 14 color_order = GRB initial_red = 0.2 initial_green = 0.0 initial_blue = 0.5 [gcode_macro TOP_GREEN] gcode = SET_LED LED=neo RED=0 GREEN=1 BLUE=0 index: 1 transmit=1 [gcode_macro BOTTOM_GREEN] gcode = SET_LED LED=neo1 RED=0 GREEN=1 BLUE=0 index: 1 [gcode_macro TOP_RED] gcode = SET_LED LED=neo RED=1 GREEN=0 BLUE=0 index: 1 transmit=1 [gcode_macro BOTTOM_RED] gcode = SET_LED LED=neo1 RED=1 GREEN=0 BLUE=0 index: 1 [gcode_macro TOP_BLUE] gcode = SET_LED LED=neo RED=0 GREEN=0 BLUE=1 index: 1 transmit=1 [gcode_macro BOTTOM_BLUE] gcode = SET_LED LED=neo1 RED=0 GREEN=0 BLUE=1 [gcode_macro TOP_WHITE] gcode = SET_LED LED=neo RED=1 GREEN=1 BLUE=1 index: 14 transmit=1 [gcode_macro BOTTOM_WHITE] gcode = SET_LED LED=neo1 RED=1 GREEN=1 BLUE=1 index: 0 transmit=1 [gcode_macro TOP_OFF] gcode = SET_LED LED=neo RED=0 GREEN=0 BLUE=0 index: 14 transmt=1 [gcode_macro BOTTOM_OFF] gcode = SET_LED LED=neo1 RED=0 GREEN=0 BLUE=0 index: 0 transmit=1 [gcode_macro _load_unload] gcode = {% set saved_extruder = printer.toolhead.extruder %} {% set EXTRUDER = params.EXTRUDER|default(saved_extruder)|lower %} {% set km = printer["gcode_macro _km_globals"] %} {% set BEEPS = params.BEEPS|default(8)|int if "output_pin beeper" in printer else 0 %} {% set default_minimum = km.load_min_temp if km.load_min_temp else (printer.configfile.settings[EXTRUDER].min_extrude_temp + 5) %} {% if 'MINIMUM' in params %} {% set MINIMUM = params.MINIMUM|int %} {% elif printer.pause_resume.is_paused and printer[EXTRUDER].target == 0 and printer["gcode_macro resume"].saved_extruder_temp %} {% set MINIMUM = printer["gcode_macro resume"].saved_extruder_temp %} {% elif printer[EXTRUDER].target > default_minimum %} {% set MINIMUM = printer[EXTRUDER].target %} {% else %} {% set MINIMUM = default_minimum %} {% endif %} {% if MINIMUM < printer.configfile.settings[EXTRUDER].min_extrude_temp %} { action_raise_error("Extrude below minimum temp.") } {% elif printer.pause_resume.is_paused %} SET_GCODE_VARIABLE MACRO=resume VARIABLE=saved_e VALUE="{0.0}" {% endif %} {% set SPEED = params.SPEED|default(km.load_speed)|int %} {% set priming_length = km.load_priming_length %} {% set LENGTH = params.LENGTH|default(km.load_length)|float - priming_length%} {% if LENGTH < 0 %} {% set priming_length = (priming_length + LENGTH, 0)|max %} {% set LENGTH = 0 %} {% endif %} SAVE_GCODE_STATE NAME=_KM_LOAD_UNLOAD {% if EXTRUDER != saved_extruder%} ACTIVATE_EXTRUDER EXTRUDER={EXTRUDER} {% endif %} {% if not printer.extruder.can_extrude or printer[EXTRUDER].target < default_minimum %} {action_respond_info("Preheating %s to %d" | format(EXTRUDER, MINIMUM))} M109 S{MINIMUM} {% endif %} M83 {% if params.LOAD|int %} G1 E{LENGTH} F{SPEED} G1 E{priming_length} F{(km.load_priming_speed, SPEED)|min} G1 E{'%.4f' % -printer["gcode_macro resume"].saved_e} F{km.load_speed} {% else %} G1 E3.0 F{SPEED} G4 P500 G1 E{'%.4f' % -priming_length} F{(km.load_priming_speed, SPEED)|min} G1 E{'%.4f' % -LENGTH} F{SPEED} {% endif %} RESTORE_GCODE_STATE NAME=_KM_LOAD_UNLOAD {% for i in range(BEEPS) %} M300 P100 G4 P200 {% endfor %} [gcode_macro LOAD_FILAMENT] description = Loads filament to the extruder. Usage: LOAD_FILAMENT [LENGTH=] [SPEED=] [EXTRUDER=] [MINIMUM=] [BEEPS=] gcode = _LOAD_UNLOAD LOAD=1{% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} {% set dummy = None if True else " M109 {% set dummy = params.LENGTH|default(variable_load_length)|float %} {% set dummy = params.SPEED|default(variable_load_speed)|float %} {% set dummy = params.EXTRUDER|default(current extruder) %} {% set dummy = params.MINIMUM|default(min_extrude_temp)|int %} {% set dummy = params.BEEPS|default(10)|int %} " %} [gcode_macro UNLOAD_FILAMENT] description = Unloads filament from the extruder. Usage: UNLOAD_FILAMENT [LENGTH=] [SPEED=] [EXTRUDER=] [MINIMUM=] [BEEPS=] gcode = _LOAD_UNLOAD LOAD=0{% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} {% set dummy = None if True else " M109 {% set dummy = params.LENGTH|default(variable_load_length)|float %} {% set dummy = params.SPEED|default(variable_load_speed)|float %} {% set dummy = params.EXTRUDER|default(default extruder) %} {% set dummy = params.MINIMUM|default(min_extrude_temp)|int %} {% set dummy = params.BEEPS|default(10)|int %} " %} [gcode_macro _pause_inner_m700] gcode = {% set extruder = "extruder" ~ params.T|replace('0', '') if "T" in params else printer.toolhead.extruder %} {% if extruder != printer.toolhead.extruder%} ACTIVATE_EXTRUDER EXTRUDER={extruder} {% endif %} {% set z_param = (' Z="%f"' % params.Z) if 'Z' in params else "" %} {% if printer.idle_timeout.state|string == "Printing" %} PAUSE B="{0}" P=2{z_param} {% elif not printer.pause_resume.is_paused%} PARK B="{0}" P=2{z_param} {% endif %} [gcode_macro m701] description = Pauses/parks the toolhead then loads filament to the extruder. Usage: M701 [L] [Z] [T] gcode = {% if 'U' in params %} {% if not 'L' in params %} RESPOND TYPE=error MSG="Argument \"U\" substituted for missing \"L\"." {% set dummy = params.__setitem__("L", params.U) %} {% else %} RESPOND TYPE=error MSG="Invalid argument \"U\" ignored." {% endif %} {% endif %} _PAUSE_INNER_M700 {% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} LOAD_FILAMENT BEEPS="{10}" LENGTH={ params.L|default(printer["gcode_macro _km_globals"].load_length)|float} [gcode_macro m702] description = Pauses/parks the toolhead then unloads filament from the extruder. Usage: M702 [U] [Z] [T] gcode = {% if 'L' in params %} {% if not 'U' in params %} RESPOND TYPE=error MSG="Argument \"L\" substituted for missing \"U\"." {% set dummy = params.__setitem__("U", params.L) %} {% else %} RESPOND TYPE=error MSG="Invalid argument \"L\" ignored." {% endif %} {% endif %} _PAUSE_INNER_M700 {% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} UNLOAD_FILAMENT BEEPS="{10}" LENGTH={ params.U|default(printer["gcode_macro _km_globals"].load_length)|float} [stepper_a] step_pin = PF0 dir_pin = !PF1 enable_pin = !PD7 microsteps = 32 rotation_distance = 32 endstop_pin = ^PE4 homing_speed = 50 angle = 210.203230 arm_length = 217.000000 position_endstop = 296.847928 [stepper_b] step_pin = PF6 dir_pin = !PF7 enable_pin = !PF2 microsteps = 32 rotation_distance = 32 endstop_pin = ^PJ0 homing_speed = 50 angle = 329.889274 arm_length = 217.000000 position_endstop = 295.385490 [stepper_c] step_pin = PL3 dir_pin = !PL1 enable_pin = !PK0 microsteps = 32 rotation_distance = 32 endstop_pin = ^PD2 homing_speed = 50 angle = 90.000000 arm_length = 217.000000 position_endstop = 296.049609 [extruder] step_pin = PA4 dir_pin = PA6 enable_pin = !PA2 microsteps = 32 rotation_distance = 20.067 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = PB4 sensor_type = EPCOS 100K B57560G104F sensor_pin = PK5 min_temp = 0 max_temp = 250 max_extrude_only_distance = 100.0 control = pid pid_kp = 22.418 pid_ki = 1.052 pid_kd = 119.374 [heater_bed] heater_pin = PH5 sensor_type = EPCOS 100K B57560G104F sensor_pin = PK6 min_temp = 0 max_temp = 130 control = pid pid_kp = 52.098 pid_ki = 1.194 pid_kd = 568.521 [fan] pin = PH6 kick_start_time = 0.200 [heater_fan extruder_cooler_fan] pin = PL5 [mcu] serial = /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 [temperature_sensor Raspberry Pi 3] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = delta max_velocity = 300 max_accel = 3000 max_z_velocity = 150 minimum_z_position = -20 delta_radius = 95.470132 [delta_calibrate] radius = 80 horizontal_move_z = 20 height0 = 14.262 height0_pos = 56508.000,56255.333,56337.667 height1 = 14.262 height1_pos = 63964.667,63685.667,52102.667 height2 = 14.262 height2_pos = 55693.000,67686.000,55503.000 height3 = 14.262 height3_pos = 52435.000,62480.000,62562.000 height4 = 14.262 height4_pos = 55356.667,55119.000,64239.000 height5 = 14.262 height5_pos = 61609.000,52389.000,61458.000 height6 = 14.262 height6_pos = 66076.333,55235.000,55317.333 [probe] pin = ^PD3 x_offset = 0 y_offset = 0 speed = 20 lift_speed = 30 sample_retract_dist = 3 samples = 3 samples_result = average samples_tolerance = 0.0125 samples_tolerance_retries = 5 z_offset = 14.262 [bed_mesh] speed = 100 horizontal_move_z = 25 mesh_radius = 80 mesh_origin = 0,0 round_probe_count = 11 mesh_pps = 11,11 algorithm = bicubic move_check_distance = 3 split_delta_z = 0.025 [display] lcd_type = hd44780 rs_pin = PH1 e_pin = PH0 d4_pin = PA1 d5_pin = PA3 d6_pin = PA5 d7_pin = PA7 encoder_pins = ^PC4, ^PC6 click_pin = ^!PC2 kill_pin = ^!PG0 [filament_switch_sensor runout_sensor] runout_gcode = PAUSE event_delay = 3.0 pause_delay = 0.5 switch_pin = PF3 [bed_mesh default] version = 1 points = 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962 -0.109011, -0.109011, -0.109011, -0.351394, 0.026022, 0.001547, 0.050174, 0.007358, 0.066990, 0.066990, 0.066990 -0.143359, -0.143359, -0.104431, -0.044354, -0.020129, -0.029767, -0.029878, -0.053652, 0.013618, 0.006396, 0.006396 -0.093302, -0.093302, -0.050519, -0.121346, -0.088960, -0.040568, -0.118917, -0.004306, -0.072872, -0.066963, -0.066963 -0.099147, -0.099147, -0.041646, -0.076771, -0.032548, -0.069445, -0.048539, -0.026390, -0.037918, -0.088234, -0.088234 -0.088842, -0.064332, -0.049037, -0.053592, -0.105247, -0.115772, -0.133453, -0.083709, -0.095850, -0.072939, -0.161284 -0.159071, -0.159071, -0.136697, -0.183336, -0.168631, -0.171679, -0.154732, -0.151463, -0.138638, -0.162883, -0.162883 -0.132343, -0.132343, -0.141782, -0.201309, -0.174247, -0.143837, -0.155789, -0.173544, -0.166517, -0.212444, -0.212444 -0.223554, -0.223554, -0.229521, -0.208085, -0.218800, -0.234439, -0.178891, -0.208385, -0.187892, -0.211953, -0.211953 -0.296977, -0.296977, -0.296977, -0.211657, -0.223081, -0.206840, -0.217961, -0.178008, -0.192399, -0.192399, -0.192399 -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925 x_count = 11 y_count = 11 mesh_x_pps = 11 mesh_y_pps = 11 algo = bicubic tension = 0.2 min_x = -80.0 max_x = 80.0 min_y = -80.0 max_y = 80.0 ======================= Declaration of '__main' hides previous menuitem declaration Declaration of '__main __tune' hides previous menuitem declaration Declaration of '__main __tune __speed' hides previous menuitem declaration Declaration of '__main __tune __flow' hides previous menuitem declaration Declaration of '__main __tune __offsetz' hides previous menuitem declaration Declaration of '__main __octoprint' hides previous menuitem declaration Declaration of '__main __octoprint __pause' hides previous menuitem declaration Declaration of '__main __octoprint __resume' hides previous menuitem declaration Declaration of '__main __octoprint __abort' hides previous menuitem declaration Declaration of '__main __sdcard' hides previous menuitem declaration Declaration of '__main __sdcard __start' hides previous menuitem declaration Declaration of '__main __sdcard __resume' hides previous menuitem declaration Declaration of '__main __sdcard __pause' hides previous menuitem declaration Declaration of '__main __sdcard __cancel' hides previous menuitem declaration Declaration of '__main __control' hides previous menuitem declaration Declaration of '__main __control __home' hides previous menuitem declaration Declaration of '__main __control __homez' hides previous menuitem declaration Declaration of '__main __control __homexy' hides previous menuitem declaration Declaration of '__main __control __disable' hides previous menuitem declaration Declaration of '__main __control __fanonoff' hides previous menuitem declaration Declaration of '__main __control __fanspeed' hides previous menuitem declaration Declaration of '__main __control __caselightonoff' hides previous menuitem declaration Declaration of '__main __control __caselightpwm' hides previous menuitem declaration Declaration of '__main __control __move_10mm' hides previous menuitem declaration Declaration of '__main __control __move_10mm __axis_x' hides previous menuitem declaration Declaration of '__main __control __move_10mm __axis_y' hides previous menuitem declaration Declaration of '__main __control __move_10mm __axis_z' hides previous menuitem declaration Declaration of '__main __control __move_10mm __axis_e' hides previous menuitem declaration Declaration of '__main __control __move_1mm' hides previous menuitem declaration Declaration of '__main __control __move_1mm __axis_x' hides previous menuitem declaration Declaration of '__main __control __move_1mm __axis_y' hides previous menuitem declaration Declaration of '__main __control __move_1mm __axis_z' hides previous menuitem declaration Declaration of '__main __control __move_1mm __axis_e' hides previous menuitem declaration Declaration of '__main __control __move_01mm' hides previous menuitem declaration Declaration of '__main __control __move_01mm __axis_x' hides previous menuitem declaration Declaration of '__main __control __move_01mm __axis_y' hides previous menuitem declaration Declaration of '__main __control __move_01mm __axis_z' hides previous menuitem declaration Declaration of '__main __control __move_01mm __axis_e' hides previous menuitem declaration Declaration of '__main __temp' hides previous menuitem declaration Declaration of '__main __temp __hotend0_target' hides previous menuitem declaration Declaration of '__main __temp __hotend1_target' hides previous menuitem declaration Declaration of '__main __temp __hotbed_target' hides previous menuitem declaration Declaration of '__main __temp __preheat_pla' hides previous menuitem declaration Declaration of '__main __temp __preheat_pla __all' hides previous menuitem declaration Declaration of '__main __temp __preheat_pla __hotend' hides previous menuitem declaration Declaration of '__main __temp __preheat_pla __hotbed' hides previous menuitem declaration Declaration of '__main __temp __preheat_abs' hides previous menuitem declaration Declaration of '__main __temp __preheat_abs __all' hides previous menuitem declaration Declaration of '__main __temp __preheat_abs __hotend' hides previous menuitem declaration Declaration of '__main __temp __preheat_abs __hotbed' hides previous menuitem declaration Declaration of '__main __temp __cooldown' hides previous menuitem declaration Declaration of '__main __temp __cooldown __all' hides previous menuitem declaration Declaration of '__main __temp __cooldown __hotend' hides previous menuitem declaration Declaration of '__main __temp __cooldown __hotbed' hides previous menuitem declaration Declaration of '__main __filament' hides previous menuitem declaration Declaration of '__main __filament __hotend0_target' hides previous menuitem declaration Declaration of '__main __filament __loadf' hides previous menuitem declaration Declaration of '__main __filament __loads' hides previous menuitem declaration Declaration of '__main __filament __unloadf' hides previous menuitem declaration Declaration of '__main __filament __unloads' hides previous menuitem declaration Declaration of '__main __filament __feed' hides previous menuitem declaration Declaration of '__main __setup' hides previous menuitem declaration Declaration of '__main __setup __save_config' hides previous menuitem declaration Declaration of '__main __setup __restart' hides previous menuitem declaration Declaration of '__main __setup __restart __host_restart' hides previous menuitem declaration Declaration of '__main __setup __restart __firmware_restart' hides previous menuitem declaration Declaration of '__main __setup __tuning' hides previous menuitem declaration Declaration of '__main __setup __tuning __hotend_pid_tuning' hides previous menuitem declaration Declaration of '__main __setup __tuning __hotbed_pid_tuning' hides previous menuitem declaration Declaration of '__main __setup __calib' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_auto' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man' hides previous menuitem declaration Declaration of '__main __setup __calib __bedprobe' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man __start' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man __move_z' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man __test_z' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man __accept' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man __abort' hides previous menuitem declaration Declaration of '__main __setup __dump' hides previous menuitem declaration Delta max build height 295.39mm (radius tapered above 273.26mm) Delta max build radius 95.47mm (moves slowed past 110.40mm and 118.58mm) Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect webhooks client 1970911456: New connection webhooks client 1970911456: Client info {'program': 'Moonraker', 'version': 'v0.8.0-190-ge03dbe3'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (GCC) 5.4.0 binutils: (GNU Binutils) 2.26.20160125) MCU 'mcu' config: ADC_MAX=1023 BUS_PINS_spi=PB3,PB2,PB1 BUS_PINS_twi=PD0,PD1 CLOCK_FREQ=16000000 MCU=atmega2560 PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_serial=PE0,PE1 SERIAL_BAUD=250000 STATS_SUMSQ_BASE=256 Sending MCU 'mcu' printer configuration... Configured MCU 'mcu' (596 moves) Starting heater checks for heater_bed bed_mesh: generated points Index | Tool Adjusted | Probe 0 | (0.0, -80.0) | (0.0, -80.0) 1 | (48.0, -64.0) | (48.0, -64.0) 2 | (32.0, -64.0) | (32.0, -64.0) 3 | (16.0, -64.0) | (16.0, -64.0) 4 | (0.0, -64.0) | (0.0, -64.0) 5 | (-16.0, -64.0) | (-16.0, -64.0) 6 | (-32.0, -64.0) | (-32.0, -64.0) 7 | (-48.0, -64.0) | (-48.0, -64.0) 8 | (-64.0, -48.0) | (-64.0, -48.0) 9 | (-48.0, -48.0) | (-48.0, -48.0) 10 | (-32.0, -48.0) | (-32.0, -48.0) 11 | (-16.0, -48.0) | (-16.0, -48.0) 12 | (0.0, -48.0) | (0.0, -48.0) 13 | (16.0, -48.0) | (16.0, -48.0) 14 | (32.0, -48.0) | (32.0, -48.0) 15 | (48.0, -48.0) | (48.0, -48.0) 16 | (64.0, -48.0) | (64.0, -48.0) 17 | (64.0, -32.0) | (64.0, -32.0) 18 | (48.0, -32.0) | (48.0, -32.0) 19 | (32.0, -32.0) | (32.0, -32.0) 20 | (16.0, -32.0) | (16.0, -32.0) 21 | (0.0, -32.0) | (0.0, -32.0) 22 | (-16.0, -32.0) | (-16.0, -32.0) 23 | (-32.0, -32.0) | (-32.0, -32.0) 24 | (-48.0, -32.0) | (-48.0, -32.0) 25 | (-64.0, -32.0) | (-64.0, -32.0) 26 | (-64.0, -16.0) | (-64.0, -16.0) 27 | (-48.0, -16.0) | (-48.0, -16.0) 28 | (-32.0, -16.0) | (-32.0, -16.0) 29 | (-16.0, -16.0) | (-16.0, -16.0) 30 | (0.0, -16.0) | (0.0, -16.0) 31 | (16.0, -16.0) | (16.0, -16.0) 32 | (32.0, -16.0) | (32.0, -16.0) 33 | (48.0, -16.0) | (48.0, -16.0) 34 | (64.0, -16.0) | (64.0, -16.0) 35 | (80.0, 0.0) | (80.0, 0.0) 36 | (64.0, 0.0) | (64.0, 0.0) 37 | (48.0, 0.0) | (48.0, 0.0) 38 | (32.0, 0.0) | (32.0, 0.0) 39 | (16.0, 0.0) | (16.0, 0.0) 40 | (0.0, 0.0) | (0.0, 0.0) 41 | (-16.0, 0.0) | (-16.0, 0.0) 42 | (-32.0, 0.0) | (-32.0, 0.0) 43 | (-48.0, 0.0) | (-48.0, 0.0) 44 | (-64.0, 0.0) | (-64.0, 0.0) 45 | (-80.0, 0.0) | (-80.0, 0.0) 46 | (-64.0, 16.0) | (-64.0, 16.0) 47 | (-48.0, 16.0) | (-48.0, 16.0) 48 | (-32.0, 16.0) | (-32.0, 16.0) 49 | (-16.0, 16.0) | (-16.0, 16.0) 50 | (0.0, 16.0) | (0.0, 16.0) 51 | (16.0, 16.0) | (16.0, 16.0) 52 | (32.0, 16.0) | (32.0, 16.0) 53 | (48.0, 16.0) | (48.0, 16.0) 54 | (64.0, 16.0) | (64.0, 16.0) 55 | (64.0, 32.0) | (64.0, 32.0) 56 | (48.0, 32.0) | (48.0, 32.0) 57 | (32.0, 32.0) | (32.0, 32.0) 58 | (16.0, 32.0) | (16.0, 32.0) 59 | (0.0, 32.0) | (0.0, 32.0) 60 | (-16.0, 32.0) | (-16.0, 32.0) 61 | (-32.0, 32.0) | (-32.0, 32.0) 62 | (-48.0, 32.0) | (-48.0, 32.0) 63 | (-64.0, 32.0) | (-64.0, 32.0) 64 | (-64.0, 48.0) | (-64.0, 48.0) 65 | (-48.0, 48.0) | (-48.0, 48.0) 66 | (-32.0, 48.0) | (-32.0, 48.0) 67 | (-16.0, 48.0) | (-16.0, 48.0) 68 | (0.0, 48.0) | (0.0, 48.0) 69 | (16.0, 48.0) | (16.0, 48.0) 70 | (32.0, 48.0) | (32.0, 48.0) 71 | (48.0, 48.0) | (48.0, 48.0) 72 | (64.0, 48.0) | (64.0, 48.0) 73 | (48.0, 64.0) | (48.0, 64.0) 74 | (32.0, 64.0) | (32.0, 64.0) 75 | (16.0, 64.0) | (16.0, 64.0) 76 | (0.0, 64.0) | (0.0, 64.0) 77 | (-16.0, 64.0) | (-16.0, 64.0) 78 | (-32.0, 64.0) | (-32.0, 64.0) 79 | (-48.0, 64.0) | (-48.0, 64.0) 80 | (0.0, 80.0) | (0.0, 80.0) Starting heater checks for extruder Write g-code response Traceback (most recent call last): File "/home/pi/klipper/klippy/gcode.py", line 446, in _respond_raw os.write(self.fd, (msg+"\n").encode()) BlockingIOError: [Errno 11] Resource temporarily unavailable Stats 62595.5: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1155 bytes_read=4071 bytes_retransmit=9 bytes_invalid=6 send_seq=122 receive_seq=122 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=383 freq=15999680 heater_bed: target=0 temp=0.0 pwm=0.000 3: temp=42.8 sysload=0.20 cputime=2499.760 memavail=554928 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=0.0 pwm=0.000 webhooks: registering remote method 'shutdown_machine' for connection id: 1970911456 webhooks: registering remote method 'reboot_machine' for connection id: 1970911456 webhooks: registering remote method 'pause_job_queue' for connection id: 1970911456 webhooks: registering remote method 'start_job_queue' for connection id: 1970911456 Stats 62596.5: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1599 bytes_read=4141 bytes_retransmit=9 bytes_invalid=6 send_seq=134 receive_seq=134 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999237 heater_bed: target=0 temp=0.0 pwm=0.000 3: temp=42.8 sysload=0.20 cputime=2499.859 memavail=554456 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=0.0 pwm=0.000 Stats 62597.5: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1641 bytes_read=4272 bytes_retransmit=9 bytes_invalid=6 send_seq=138 receive_seq=138 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999105 heater_bed: target=0 temp=20.7 pwm=0.000 3: temp=42.8 sysload=0.20 cputime=2499.937 memavail=554208 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62598.5: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1666 bytes_read=4388 bytes_retransmit=9 bytes_invalid=6 send_seq=141 receive_seq=141 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999137 heater_bed: target=0 temp=19.6 pwm=0.000 3: temp=42.2 sysload=0.20 cputime=2499.988 memavail=554208 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.8 pwm=0.000 Stats 62599.5: gcodein=0 mcu: mcu_awake=0.046 mcu_task_avg=0.000205 mcu_task_stddev=0.000428 bytes_write=1708 bytes_read=4516 bytes_retransmit=9 bytes_invalid=6 send_seq=146 receive_seq=146 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999306 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=42.2 sysload=0.20 cputime=2500.039 memavail=554208 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62600.5: gcodein=0 mcu: mcu_awake=0.046 mcu_task_avg=0.000205 mcu_task_stddev=0.000428 bytes_write=1732 bytes_read=4645 bytes_retransmit=9 bytes_invalid=6 send_seq=149 receive_seq=149 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999204 heater_bed: target=0 temp=21.2 pwm=0.000 3: temp=42.2 sysload=0.18 cputime=2500.090 memavail=553752 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62601.5: gcodein=0 mcu: mcu_awake=0.046 mcu_task_avg=0.000205 mcu_task_stddev=0.000428 bytes_write=1756 bytes_read=4748 bytes_retransmit=9 bytes_invalid=6 send_seq=152 receive_seq=152 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999152 heater_bed: target=0 temp=19.7 pwm=0.000 3: temp=42.2 sysload=0.18 cputime=2500.137 memavail=553752 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62602.5: gcodein=0 mcu: mcu_awake=0.046 mcu_task_avg=0.000205 mcu_task_stddev=0.000428 bytes_write=1798 bytes_read=4861 bytes_retransmit=9 bytes_invalid=6 send_seq=157 receive_seq=157 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999125 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=42.2 sysload=0.18 cputime=2500.186 memavail=553752 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.3 pwm=0.000 Stats 62603.5: gcodein=0 mcu: mcu_awake=0.046 mcu_task_avg=0.000205 mcu_task_stddev=0.000428 bytes_write=1804 bytes_read=4980 bytes_retransmit=9 bytes_invalid=6 send_seq=158 receive_seq=158 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999202 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=42.2 sysload=0.18 cputime=2500.233 memavail=553752 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62604.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000098 mcu_task_stddev=0.000075 bytes_write=1810 bytes_read=5087 bytes_retransmit=9 bytes_invalid=6 send_seq=159 receive_seq=159 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999186 heater_bed: target=0 temp=19.6 pwm=0.000 3: temp=42.2 sysload=0.18 cputime=2500.280 memavail=553752 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62605.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000098 mcu_task_stddev=0.000075 bytes_write=1852 bytes_read=5200 bytes_retransmit=9 bytes_invalid=6 send_seq=164 receive_seq=164 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999173 heater_bed: target=0 temp=20.5 pwm=0.000 3: temp=41.7 sysload=0.17 cputime=2500.331 memavail=553752 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62606.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000098 mcu_task_stddev=0.000075 bytes_write=1858 bytes_read=5319 bytes_retransmit=9 bytes_invalid=6 send_seq=165 receive_seq=165 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999163 heater_bed: target=0 temp=20.9 pwm=0.000 3: temp=41.2 sysload=0.17 cputime=2500.380 memavail=553752 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.0 pwm=0.000 Stats 62607.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000098 mcu_task_stddev=0.000075 bytes_write=1864 bytes_read=5419 bytes_retransmit=9 bytes_invalid=6 send_seq=166 receive_seq=166 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999153 heater_bed: target=0 temp=20.2 pwm=0.000 3: temp=41.2 sysload=0.17 cputime=2500.427 memavail=553752 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62608.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000098 mcu_task_stddev=0.000075 bytes_write=1870 bytes_read=5519 bytes_retransmit=9 bytes_invalid=6 send_seq=167 receive_seq=167 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999172 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.17 cputime=2500.473 memavail=553752 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62609.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000102 mcu_task_stddev=0.000082 bytes_write=1876 bytes_read=5660 bytes_retransmit=9 bytes_invalid=6 send_seq=168 receive_seq=168 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999156 heater_bed: target=0 temp=20.9 pwm=0.000 3: temp=41.7 sysload=0.17 cputime=2500.527 memavail=553752 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.9 pwm=0.000 Stats 62610.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000102 mcu_task_stddev=0.000082 bytes_write=1882 bytes_read=5760 bytes_retransmit=9 bytes_invalid=6 send_seq=169 receive_seq=169 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999147 heater_bed: target=0 temp=20.7 pwm=0.000 3: temp=42.2 sysload=0.15 cputime=2500.575 memavail=553756 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.9 pwm=0.000 Stats 62611.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000102 mcu_task_stddev=0.000082 bytes_write=1888 bytes_read=5860 bytes_retransmit=9 bytes_invalid=6 send_seq=170 receive_seq=170 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999139 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.15 cputime=2500.612 memavail=553760 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62612.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000102 mcu_task_stddev=0.000082 bytes_write=1894 bytes_read=5988 bytes_retransmit=9 bytes_invalid=6 send_seq=171 receive_seq=171 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999136 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.15 cputime=2500.662 memavail=553760 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62613.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000102 mcu_task_stddev=0.000082 bytes_write=1900 bytes_read=6088 bytes_retransmit=9 bytes_invalid=6 send_seq=172 receive_seq=172 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999133 heater_bed: target=0 temp=20.7 pwm=0.000 3: temp=41.7 sysload=0.15 cputime=2500.711 memavail=553760 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62614.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000087 bytes_write=1906 bytes_read=6202 bytes_retransmit=9 bytes_invalid=6 send_seq=173 receive_seq=173 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999133 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.15 cputime=2500.760 memavail=553760 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.0 pwm=0.000 Stats 62615.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000087 bytes_write=1912 bytes_read=6330 bytes_retransmit=9 bytes_invalid=6 send_seq=174 receive_seq=174 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999136 heater_bed: target=0 temp=20.7 pwm=0.000 3: temp=41.7 sysload=0.14 cputime=2500.815 memavail=553760 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.0 pwm=0.000 Stats 62616.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000087 bytes_write=1918 bytes_read=6430 bytes_retransmit=9 bytes_invalid=6 send_seq=175 receive_seq=175 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999139 heater_bed: target=0 temp=20.5 pwm=0.000 3: temp=42.2 sysload=0.14 cputime=2500.860 memavail=553760 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62617.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000087 bytes_write=1924 bytes_read=6530 bytes_retransmit=9 bytes_invalid=6 send_seq=176 receive_seq=176 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999136 heater_bed: target=0 temp=20.9 pwm=0.000 3: temp=41.7 sysload=0.14 cputime=2500.905 memavail=553760 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62618.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000087 bytes_write=1930 bytes_read=6658 bytes_retransmit=9 bytes_invalid=6 send_seq=177 receive_seq=177 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999134 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.7 sysload=0.14 cputime=2500.952 memavail=553760 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.9 pwm=0.000 Stats 62619.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000087 bytes_write=1936 bytes_read=6758 bytes_retransmit=9 bytes_invalid=6 send_seq=178 receive_seq=178 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999133 heater_bed: target=0 temp=20.7 pwm=0.000 3: temp=41.7 sysload=0.14 cputime=2500.995 memavail=553764 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.5 pwm=0.000 Stats 62620.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=1942 bytes_read=6872 bytes_retransmit=9 bytes_invalid=6 send_seq=179 receive_seq=179 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999139 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.7 sysload=0.37 cputime=2501.040 memavail=549244 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62621.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=1948 bytes_read=7000 bytes_retransmit=9 bytes_invalid=6 send_seq=180 receive_seq=180 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999139 heater_bed: target=0 temp=21.2 pwm=0.000 3: temp=42.8 sysload=0.37 cputime=2501.084 memavail=546904 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.3 pwm=0.000 Stats 62622.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=1954 bytes_read=7100 bytes_retransmit=9 bytes_invalid=6 send_seq=181 receive_seq=181 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999137 heater_bed: target=0 temp=20.5 pwm=0.000 3: temp=42.2 sysload=0.37 cputime=2501.121 memavail=550500 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.1 pwm=0.000 Stats 62623.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=1960 bytes_read=7200 bytes_retransmit=9 bytes_invalid=6 send_seq=182 receive_seq=182 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999137 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.7 sysload=0.37 cputime=2501.160 memavail=550500 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.3 pwm=0.000 Stats 62624.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=1966 bytes_read=7328 bytes_retransmit=9 bytes_invalid=6 send_seq=183 receive_seq=183 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999138 heater_bed: target=0 temp=20.6 pwm=0.000 3: temp=42.2 sysload=0.37 cputime=2501.217 memavail=550500 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62625.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=1972 bytes_read=7442 bytes_retransmit=9 bytes_invalid=6 send_seq=184 receive_seq=184 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999138 heater_bed: target=0 temp=20.6 pwm=0.000 3: temp=42.2 sysload=0.34 cputime=2501.263 memavail=550500 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.4 pwm=0.000 Stats 62626.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=1996 bytes_read=7552 bytes_retransmit=9 bytes_invalid=6 send_seq=187 receive_seq=187 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999139 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=41.7 sysload=0.34 cputime=2501.309 memavail=550500 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62627.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2020 bytes_read=7690 bytes_retransmit=9 bytes_invalid=6 send_seq=190 receive_seq=190 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999142 heater_bed: target=0 temp=20.2 pwm=0.000 3: temp=41.7 sysload=0.34 cputime=2501.358 memavail=550276 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.9 pwm=0.000 Stats 62628.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2026 bytes_read=7790 bytes_retransmit=9 bytes_invalid=6 send_seq=191 receive_seq=191 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999141 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.34 cputime=2501.404 memavail=550276 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.4 pwm=0.000 Stats 62629.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2032 bytes_read=7904 bytes_retransmit=9 bytes_invalid=6 send_seq=192 receive_seq=192 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999140 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.34 cputime=2501.454 memavail=550284 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62630.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2038 bytes_read=8032 bytes_retransmit=9 bytes_invalid=6 send_seq=193 receive_seq=193 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999142 heater_bed: target=0 temp=21.7 pwm=0.000 3: temp=41.2 sysload=0.31 cputime=2501.501 memavail=555104 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.9 pwm=0.000 Stats 62631.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2044 bytes_read=8132 bytes_retransmit=9 bytes_invalid=6 send_seq=194 receive_seq=194 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999143 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.31 cputime=2501.547 memavail=555108 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.7 pwm=0.000 Stats 62632.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2050 bytes_read=8246 bytes_retransmit=9 bytes_invalid=6 send_seq=195 receive_seq=195 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999142 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=41.7 sysload=0.31 cputime=2501.594 memavail=555108 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62633.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2056 bytes_read=8360 bytes_retransmit=9 bytes_invalid=6 send_seq=196 receive_seq=196 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999141 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=41.2 sysload=0.31 cputime=2501.641 memavail=555108 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.9 pwm=0.000 Stats 62634.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2062 bytes_read=8460 bytes_retransmit=9 bytes_invalid=6 send_seq=197 receive_seq=197 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999140 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.7 sysload=0.31 cputime=2501.688 memavail=555108 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.7 pwm=0.000 Stats 62635.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2068 bytes_read=8588 bytes_retransmit=9 bytes_invalid=6 send_seq=198 receive_seq=198 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999140 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.29 cputime=2501.736 memavail=555108 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62636.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2074 bytes_read=8702 bytes_retransmit=9 bytes_invalid=6 send_seq=199 receive_seq=199 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999145 heater_bed: target=0 temp=20.6 pwm=0.000 3: temp=41.7 sysload=0.29 cputime=2501.783 memavail=555108 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.9 pwm=0.000 Stats 62637.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2080 bytes_read=8802 bytes_retransmit=9 bytes_invalid=6 send_seq=200 receive_seq=200 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999144 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=41.7 sysload=0.29 cputime=2501.829 memavail=555108 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.7 pwm=0.000 Stats 62638.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2086 bytes_read=8916 bytes_retransmit=9 bytes_invalid=6 send_seq=201 receive_seq=201 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999145 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=41.2 sysload=0.29 cputime=2501.877 memavail=555108 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.7 pwm=0.000 Stats 62639.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2092 bytes_read=9030 bytes_retransmit=9 bytes_invalid=6 send_seq=202 receive_seq=202 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999144 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.7 sysload=0.29 cputime=2501.928 memavail=555108 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62640.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=2098 bytes_read=9144 bytes_retransmit=9 bytes_invalid=6 send_seq=203 receive_seq=203 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999144 heater_bed: target=0 temp=20.6 pwm=0.000 3: temp=41.2 sysload=0.26 cputime=2501.975 memavail=555108 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.8 pwm=0.000 Stats 62641.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=2104 bytes_read=9258 bytes_retransmit=9 bytes_invalid=6 send_seq=204 receive_seq=204 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999143 heater_bed: target=0 temp=20.9 pwm=0.000 3: temp=41.2 sysload=0.26 cputime=2502.022 memavail=555128 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.3 pwm=0.000 Stats 62642.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=2110 bytes_read=9372 bytes_retransmit=9 bytes_invalid=6 send_seq=205 receive_seq=205 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999143 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.26 cputime=2502.069 memavail=554904 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62643.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=2116 bytes_read=9472 bytes_retransmit=9 bytes_invalid=6 send_seq=206 receive_seq=206 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999142 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.26 cputime=2502.115 memavail=554904 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.4 pwm=0.000 Stats 62644.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=2122 bytes_read=9586 bytes_retransmit=9 bytes_invalid=6 send_seq=207 receive_seq=207 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999142 heater_bed: target=0 temp=21.2 pwm=0.000 3: temp=41.2 sysload=0.26 cputime=2502.163 memavail=554904 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62645.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000086 bytes_write=2128 bytes_read=9714 bytes_retransmit=9 bytes_invalid=6 send_seq=208 receive_seq=208 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999141 heater_bed: target=0 temp=21.2 pwm=0.000 3: temp=41.2 sysload=0.24 cputime=2502.209 memavail=554904 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62646.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000086 bytes_write=2134 bytes_read=9814 bytes_retransmit=9 bytes_invalid=6 send_seq=209 receive_seq=209 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999141 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.24 cputime=2502.253 memavail=554904 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=19.5 pwm=0.000 Stats 62647.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000086 bytes_write=2140 bytes_read=9928 bytes_retransmit=9 bytes_invalid=6 send_seq=210 receive_seq=210 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999143 heater_bed: target=0 temp=20.9 pwm=0.000 3: temp=41.2 sysload=0.24 cputime=2502.301 memavail=554904 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62648.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000086 bytes_write=2146 bytes_read=10042 bytes_retransmit=9 bytes_invalid=6 send_seq=211 receive_seq=211 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999142 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.24 cputime=2502.349 memavail=554904 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.8 pwm=0.000 Stats 62649.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000086 bytes_write=2158 bytes_read=10158 bytes_retransmit=9 bytes_invalid=6 send_seq=213 receive_seq=213 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999141 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.24 cputime=2502.397 memavail=554904 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.2 pwm=0.000 Stats 62650.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2164 bytes_read=10286 bytes_retransmit=9 bytes_invalid=6 send_seq=214 receive_seq=214 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999142 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.7 sysload=0.22 cputime=2502.445 memavail=554156 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62651.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2170 bytes_read=10400 bytes_retransmit=9 bytes_invalid=6 send_seq=215 receive_seq=215 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999143 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.22 cputime=2502.484 memavail=554156 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=19.6 pwm=0.000 Stats 62652.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2176 bytes_read=10500 bytes_retransmit=9 bytes_invalid=6 send_seq=216 receive_seq=216 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999143 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.22 cputime=2502.532 memavail=554156 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=19.9 pwm=0.000 Stats 62653.5: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000105 mcu_task_stddev=0.000087 bytes_write=2218 bytes_read=10634 bytes_retransmit=9 bytes_invalid=6 send_seq=221 receive_seq=221 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999143 heater_bed: target=0 temp=20.6 pwm=0.000 3: temp=40.6 sysload=0.22 cputime=2502.587 memavail=554156 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62665.5: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000082 bytes_write=2326 bytes_read=12008 bytes_retransmit=9 bytes_invalid=6 send_seq=237 receive_seq=237 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999144 heater_bed: target=0 temp=21.2 pwm=0.000 3: temp=41.2 sysload=0.17 cputime=2503.158 memavail=553920 print_time=71.918 buffer_time=0.742 print_stall=0 extruder: target=0 temp=20.4 pwm=0.000 Attempting MCU 'mcu' reset webhooks client 1970911456: Disconnected Restarting printer Start printer at Wed Nov 1 00:27:15 2023 (1698820035.1 62667.8) ===== Config file ===== [virtual_sdcard] path = ~/printer_data/gcodes on_error_gcode = CANCEL_PRINT [pause_resume] [display_status] [respond] [gcode_macro CANCEL_PRINT] description = Cancel the actual running print rename_existing = CANCEL_PRINT_BASE gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set allow_park = client.park_at_cancel|default(false)|lower == 'true' %} {% set retract = client.cancel_retract|default(5.0)|abs %} {% set park_x = "" if (client.park_at_cancel_x|default(none) is none) else "X=" ~ client.park_at_cancel_x %} {% set park_y = "" if (client.park_at_cancel_y|default(none) is none) else "Y=" ~ client.park_at_cancel_y %} {% set custom_park = park_x|length > 0 or park_y|length > 0 %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if (custom_park or not printer.pause_resume.is_paused) and allow_park %} _TOOLHEAD_PARK_PAUSE_CANCEL {park_x} {park_y} {% endif %} _CLIENT_RETRACT LENGTH={retract} TURN_OFF_HEATERS M106 S0 SET_PAUSE_NEXT_LAYER ENABLE=0 SET_PAUSE_AT_LAYER ENABLE=0 LAYER=0 CANCEL_PRINT_BASE [gcode_macro PAUSE] description = Pause the actual running print rename_existing = PAUSE_BASE variable_restore_idle_timeout = 0 gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0%} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE="{{'restore': restore, 'temp': temp}}" {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=PAUSE VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} PAUSE_BASE _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description = Resume the actual running print rename_existing = RESUME_BASE variable_last_extruder_temp = {'restore': False, 'temp': 0} gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% if printer['gcode_macro PAUSE'].restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={printer['gcode_macro PAUSE'].restore_idle_timeout} {% endif %} {% if printer.idle_timeout.state|upper == "IDLE" %} {% if last_extruder_temp.restore %} M109 S{last_extruder_temp.temp} {% endif %} {% endif %} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} [gcode_macro SET_PAUSE_NEXT_LAYER] description = Enable a pause if the next layer is reached gcode = {% set pause_next_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_next_layer %} {% set ENABLE = params.ENABLE|default(1)|int != 0 %} {% set MACRO = params.MACRO|default(pause_next_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_next_layer VALUE="{{ 'enable': ENABLE, 'call': MACRO }}" [gcode_macro SET_PAUSE_AT_LAYER] description = Enable/disable a pause if a given layer number is reached gcode = {% set pause_at_layer = printer['gcode_macro SET_PRINT_STATS_INFO'].pause_at_layer %} {% set ENABLE = params.ENABLE|int != 0 if params.ENABLE is defined else params.LAYER is defined %} {% set LAYER = params.LAYER|default(pause_at_layer.layer)|int %} {% set MACRO = params.MACRO|default(pause_at_layer.call, True) %} SET_GCODE_VARIABLE MACRO=SET_PRINT_STATS_INFO VARIABLE=pause_at_layer VALUE="{{ 'enable': ENABLE, 'layer': LAYER, 'call': MACRO }}" [gcode_macro SET_PRINT_STATS_INFO] rename_existing = SET_PRINT_STATS_INFO_BASE description = Overwrite, to get pause_next_layer and pause_at_layer feature variable_pause_next_layer = { 'enable': False, 'call': "PAUSE" } variable_pause_at_layer = { 'enable': False, 'layer': 0, 'call': "PAUSE" } gcode = {% if pause_next_layer.enable %} RESPOND TYPE=echo MSG='{"%s, forced by pause_next_layer" % pause_next_layer.call}' {pause_next_layer.call} SET_PAUSE_NEXT_LAYER ENABLE=0 {% elif pause_at_layer.enable and params.CURRENT_LAYER is defined and params.CURRENT_LAYER|int == pause_at_layer.layer %} RESPOND TYPE=echo MSG='{"%s, forced by pause_at_layer [%d]" % (pause_at_layer.call, pause_at_layer.layer)}' {pause_at_layer.call} SET_PAUSE_AT_LAYER ENABLE=0 {% endif %} SET_PRINT_STATS_INFO_BASE {rawparams} [gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] description = Helper: park toolhead used in PAUSE and CANCEL_PRINT gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set use_custom = client.use_custom_pos|default(false)|lower == 'true' %} {% set custom_park_x = client.custom_park_x|default(0.0) %} {% set custom_park_y = client.custom_park_y|default(0.0) %} {% set park_dz = client.custom_park_dz|default(2.0)|abs %} {% set sp_hop = client.speed_hop|default(15) * 60 %} {% set sp_move = client.speed_move|default(velocity) * 60 %} {% set origin = printer.gcode_move.homing_origin %} {% set act = printer.gcode_move.gcode_position %} {% set max = printer.toolhead.axis_maximum %} {% set cone = printer.toolhead.cone_start_z|default(max.z) %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set z_min = params.Z_MIN|default(0)|float %} {% set z_park = [[(act.z + park_dz), z_min]|max, (max.z - origin.z)]|min %} {% set x_park = params.X if params.X is defined else custom_park_x if use_custom else 0.0 if round_bed else (max.x - 5.0) %} {% set y_park = params.Y if params.Y is defined else custom_park_y if use_custom else (max.y - 5.0) if round_bed and z_park < cone else 0.0 if round_bed else (max.y - 5.0) %} _CLIENT_RETRACT {% if "xyz" in printer.toolhead.homed_axes %} G90 G1 Z{z_park} F{sp_hop} G1 X{x_park} Y{y_park} F{sp_move} {% if not printer.gcode_move.absolute_coordinates %} G91 {% endif %} {% else %} RESPOND TYPE=echo MSG='Printer not homed' {% endif %} [gcode_macro _CLIENT_EXTRUDE] description = Extrudes, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set use_fw_retract = (client.use_fw_retract|default(false)|lower == 'true') and (printer.firmware_retraction is defined) %} {% set length = params.LENGTH|default(client.unretract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_unretract)|default(35) %} {% set absolute_extrude = printer.gcode_move.absolute_extrude %} {% if printer.toolhead.extruder != '' %} {% if printer[printer.toolhead.extruder].can_extrude %} {% if use_fw_retract %} {% if length < 0 %} G10 {% else %} G11 {% endif %} {% else %} M83 G1 E{length} F{(speed|float|abs) * 60} {% if absolute_extrude %} M82 {% endif %} {% endif %} {% else %} RESPOND TYPE=echo MSG='Extruder not hot enough' {% endif %} {% endif %} [gcode_macro _CLIENT_RETRACT] description = Retracts, if the extruder is hot enough gcode = {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set length = params.LENGTH|default(client.retract)|default(1.0)|float %} {% set speed = params.SPEED|default(client.speed_retract)|default(35) %} _CLIENT_EXTRUDE LENGTH=-{length|float|abs} SPEED={speed|float|abs} [gcode_macro GET_TIMELAPSE_SETUP] description = Print the Timelapse setup gcode = {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% set output_txt = ["Timelapse Setup:"] %} {% set _dummy = output_txt.append("enable: %s" % tl.enable) %} {% set _dummy = output_txt.append("park: %s" % tl.park.enable) %} {% if tl.park.enable %} {% set _dummy = output_txt.append("park position: %s time: %s s" % (tl.park.pos, tl.park.time)) %} {% set _dummy = output_txt.append("park cord x:%s y:%s dz:%s" % (tl.park.coord.x, tl.park.coord.y, tl.park.coord.dz)) %} {% set _dummy = output_txt.append("travel speed: %s mm/s" % tl.speed.travel) %} {% endif %} {% set _dummy = output_txt.append("fw_retract: %s" % tl.extruder.fw_retract) %} {% if not tl.extruder.fw_retract %} {% set _dummy = output_txt.append("retract: %s mm speed: %s mm/s" % (tl.extruder.retract, tl.speed.retract)) %} {% set _dummy = output_txt.append("extrude: %s mm speed: %s mm/s" % (tl.extruder.extrude, tl.speed.extrude)) %} {% endif %} {% set _dummy = output_txt.append("verbose: %s" % tl.verbose) %} {action_respond_info(output_txt|join("\n"))} [gcode_macro _SET_TIMELAPSE_SETUP] description = Set user parameters for timelapse gcode = {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% set min = printer.toolhead.axis_minimum %} {% set max = printer.toolhead.axis_maximum %} {% set round_bed = True if printer.configfile.settings.printer.kinematics is in ['delta','polar','rotary_delta','winch'] else False %} {% set park = {'min' : {'x': (min.x / 1.42)|round(3) if round_bed else min.x|round(3), 'y': (min.y / 1.42)|round(3) if round_bed else min.y|round(3)}, 'max' : {'x': (max.x / 1.42)|round(3) if round_bed else max.x|round(3), 'y': (max.y / 1.42)|round(3) if round_bed else max.y|round(3)}, 'center': {'x': (max.x-(max.x-min.x)/2)|round(3), 'y': (max.y-(max.y-min.y)/2)|round(3)}} %} {% if params.ENABLE %} {% if params.ENABLE|lower is in ['true', 'false'] %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=enable VALUE={True if params.ENABLE|lower == 'true' else False} {% else %} {action_raise_error("ENABLE=%s not supported. Allowed values are [True, False]" % params.ENABLE|capitalize)} {% endif %} {% endif %} {% if params.VERBOSE %} {% if params.VERBOSE|lower is in ['true', 'false'] %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=verbose VALUE={True if params.VERBOSE|lower == 'true' else False} {% else %} {action_raise_error("VERBOSE=%s not supported. Allowed values are [True, False]" % params.VERBOSE|capitalize)} {% endif %} {% endif %} {% if params.CUSTOM_POS_X %} {% if params.CUSTOM_POS_X|float >= min.x and params.CUSTOM_POS_X|float <= max.x %} {% set _dummy = tl.park.custom.update({'x':params.CUSTOM_POS_X|float|round(3)}) %} {% else %} {action_raise_error("CUSTOM_POS_X=%s must be within [%s - %s]" % (params.CUSTOM_POS_X, min.x, max.x))} {% endif %} {% endif %} {% if params.CUSTOM_POS_Y %} {% if params.CUSTOM_POS_Y|float >= min.y and params.CUSTOM_POS_Y|float <= max.y %} {% set _dummy = tl.park.custom.update({'y':params.CUSTOM_POS_Y|float|round(3)}) %} {% else %} {action_raise_error("CUSTOM_POS_Y=%s must be within [%s - %s]" % (params.CUSTOM_POS_Y, min.y, max.y))} {% endif %} {% endif %} {% if params.CUSTOM_POS_DZ %} {% if params.CUSTOM_POS_DZ|float >= min.z and params.CUSTOM_POS_DZ|float <= max.z %} {% set _dummy = tl.park.custom.update({'dz':params.CUSTOM_POS_DZ|float|round(3)}) %} {% else %} {action_raise_error("CUSTOM_POS_DZ=%s must be within [%s - %s]" % (params.CUSTOM_POS_DZ, min.z, max.z))} {% endif %} {% endif %} {% if params.PARK_ENABLE %} {% if params.PARK_ENABLE|lower is in ['true', 'false'] %} {% set _dummy = tl.park.update({'enable':True if params.PARK_ENABLE|lower == 'true' else False}) %} {% else %} {action_raise_error("PARK_ENABLE=%s not supported. Allowed values are [True, False]" % params.PARK_ENABLE|capitalize)} {% endif %} {% endif %} {% if params.PARK_POS %} {% if params.PARK_POS|lower is in ['center','front_left','front_right','back_left','back_right','custom','x_only','y_only'] %} {% set dic = {'center' : {'x': park.center.x , 'y': park.center.y , 'dz': 1 }, 'front_left' : {'x': park.min.x , 'y': park.min.y , 'dz': 0 }, 'front_right' : {'x': park.max.x , 'y': park.min.y , 'dz': 0 }, 'back_left' : {'x': park.min.x , 'y': park.max.y , 'dz': 0 }, 'back_right' : {'x': park.max.x , 'y': park.max.y , 'dz': 0 }, 'custom' : {'x': tl.park.custom.x, 'y': tl.park.custom.y, 'dz': tl.park.custom.dz}, 'x_only' : {'x': tl.park.custom.x, 'y': 'none' , 'dz': tl.park.custom.dz}, 'y_only' : {'x': 'none' , 'y': tl.park.custom.y, 'dz': tl.park.custom.dz}} %} {% set _dummy = tl.park.update({'pos':params.PARK_POS|lower}) %} {% set _dummy = tl.park.update({'coord':dic[tl.park.pos]}) %} {% else %} {action_raise_error("PARK_POS=%s not supported. Allowed values are [CENTER, FRONT_LEFT, FRONT_RIGHT, BACK_LEFT, BACK_RIGHT, CUSTOM, X_ONLY, Y_ONLY]" % params.PARK_POS|upper)} {% endif %} {% endif %} {% if params.PARK_TIME %} {% if params.PARK_TIME|float >= 0.0 %} {% set _dummy = tl.park.update({'time':params.PARK_TIME|float|round(3)}) %} {% else %} {action_raise_error("PARK_TIME=%s must be a positive number" % params.PARK_TIME)} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=park VALUE="{tl.park}" {% if params.TRAVEL_SPEED %} {% if params.TRAVEL_SPEED|float > 0.0 %} {% set _dummy = tl.speed.update({'travel':params.TRAVEL_SPEED|float|round(3)}) %} {% else %} {action_raise_error("TRAVEL_SPEED=%s must be larger than 0" % params.TRAVEL_SPEED)} {% endif %} {% endif %} {% if params.RETRACT_SPEED %} {% if params.RETRACT_SPEED|float > 0.0 %} {% set _dummy = tl.speed.update({'retract':params.RETRACT_SPEED|float|round(3)}) %} {% else %} {action_raise_error("RETRACT_SPEED=%s must be larger than 0" % params.RETRACT_SPEED)} {% endif %} {% endif %} {% if params.EXTRUDE_SPEED %} {% if params.EXTRUDE_SPEED|float > 0.0 %} {% set _dummy = tl.speed.update({'extrude':params.EXTRUDE_SPEED|float|round(3)}) %} {% else %} {action_raise_error("EXTRUDE_SPEED=%s must be larger than 0" % params.EXTRUDE_SPEED)} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=speed VALUE="{tl.speed}" {% if params.EXTRUDE_DISTANCE %} {% if params.EXTRUDE_DISTANCE|float >= 0.0 %} {% set _dummy = tl.extruder.update({'extrude':params.EXTRUDE_DISTANCE|float|round(3)}) %} {% else %} {action_raise_error("EXTRUDE_DISTANCE=%s must be specified as positiv number" % params.EXTRUDE_DISTANCE)} {% endif %} {% endif %} {% if params.RETRACT_DISTANCE %} {% if params.RETRACT_DISTANCE|float >= 0.0 %} {% set _dummy = tl.extruder.update({'retract':params.RETRACT_DISTANCE|float|round(3)}) %} {% else %} {action_raise_error("RETRACT_DISTANCE=%s must be specified as positiv number" % params.RETRACT_DISTANCE)} {% endif %} {% endif %} {% if params.FW_RETRACT %} {% if params.FW_RETRACT|lower is in ['true', 'false'] %} {% if 'firmware_retraction' in printer.configfile.settings %} {% set _dummy = tl.extruder.update({'fw_retract': True if params.FW_RETRACT|lower == 'true' else False}) %} {% else %} {% set _dummy = tl.extruder.update({'fw_retract':False}) %} {% if params.FW_RETRACT|capitalize == 'True' %} {action_raise_error("[firmware_retraction] not defined in printer.cfg. Can not enable fw_retract")} {% endif %} {% endif %} {% else %} {action_raise_error("FW_RETRACT=%s not supported. Allowed values are [True, False]" % params.FW_RETRACT|capitalize)} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=extruder VALUE="{tl.extruder}" {% if printer.configfile.settings['gcode_macro pause'] is defined %} {% set _dummy = tl.macro.update({'pause': printer.configfile.settings['gcode_macro pause'].rename_existing}) %} {% endif %} {% if printer.configfile.settings['gcode_macro resume'] is defined %} {% set _dummy = tl.macro.update({'resume': printer.configfile.settings['gcode_macro resume'].rename_existing}) %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=macro VALUE="{tl.macro}" [gcode_macro TIMELAPSE_TAKE_FRAME] description = Take Timelapse shoot variable_enable = False variable_takingframe = False variable_park = {'enable': False, 'pos' : 'center', 'time' : 0.1, 'custom': {'x': 0, 'y': 0, 'dz': 0}, 'coord' : {'x': 0, 'y': 0, 'dz': 0}} variable_extruder = {'fw_retract': False, 'retract': 1.0, 'extrude': 1.0} variable_speed = {'travel': 100, 'retract': 15, 'extrude': 15} variable_verbose = True variable_restore = {'absolute': {'coordinates': True, 'extrude': True}, 'speed': 1500, 'e':0, 'factor': {'speed': 1.0, 'extrude': 1.0}} variable_macro = {'pause': 'PAUSE', 'resume': 'RESUME'} variable_is_paused = False gcode = {% set hyperlapse = True if params.HYPERLAPSE and params.HYPERLAPSE|lower =='true' else False %} {% if enable %} {% if (hyperlapse and printer['gcode_macro HYPERLAPSE'].run) or (not hyperlapse and not printer['gcode_macro HYPERLAPSE'].run) %} {% if park.enable %} {% set pos = {'x': 'X' + park.coord.x|string if park.pos != 'y_only' else '', 'y': 'Y' + park.coord.y|string if park.pos != 'x_only' else '', 'z': 'Z'+ [printer.gcode_move.gcode_position.z + park.coord.dz, printer.toolhead.axis_maximum.z]|min|string} %} {% set restore = {'absolute': {'coordinates': printer.gcode_move.absolute_coordinates, 'extrude' : printer.gcode_move.absolute_extrude}, 'speed' : printer.gcode_move.speed, 'e' : printer.gcode_move.gcode_position.e, 'factor' : {'speed' : printer.gcode_move.speed_factor, 'extrude': printer.gcode_move.extrude_factor}} %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=restore VALUE="{restore}" {% if not printer[printer.toolhead.extruder].can_extrude %} {% if verbose %}{action_respond_info("Timelapse: Warning, minimum extruder temperature not reached!")}{% endif %} {% else %} {% if extruder.fw_retract %} G10 {% else %} M83 G0 E-{extruder.retract} F{speed.retract * 60} {% endif %} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=is_paused VALUE=True {macro.pause} SET_GCODE_OFFSET X=0 Y=0 G90 {% if "xyz" not in printer.toolhead.homed_axes %} {% if verbose %}{action_respond_info("Timelapse: Warning, axis not homed yet!")}{% endif %} {% else %} G0 {pos.x} {pos.y} {pos.z} F{speed.travel * 60} {% endif %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=takingframe VALUE=True UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_TAKE_FRAME DURATION=0.5 M400 {% endif %} _TIMELAPSE_NEW_FRAME HYPERLAPSE={hyperlapse} {% endif %} {% else %} {% if verbose %}{action_respond_info("Timelapse: disabled, take frame ignored")}{% endif %} {% endif %} [gcode_macro _TIMELAPSE_NEW_FRAME] description = action call for timelapse shoot. must be a seperate macro gcode = {action_call_remote_method("timelapse_newframe", macropark=printer['gcode_macro TIMELAPSE_TAKE_FRAME'].park, hyperlapse=params.HYPERLAPSE)} [delayed_gcode _WAIT_TIMELAPSE_TAKE_FRAME] gcode = {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% set factor = {'speed': printer.gcode_move.speed_factor, 'extrude': printer.gcode_move.extrude_factor} %} {% if tl.takingframe %} UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_TAKE_FRAME DURATION=0.5 {% else %} {tl.macro.resume} VELOCITY={tl.speed.travel} SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=is_paused VALUE=False {% if not printer[printer.toolhead.extruder].can_extrude %} {action_respond_info("Timelapse: Warning minimum extruder temperature not reached!")} {% else %} {% if tl.extruder.fw_retract %} G11 {% else %} G0 E{tl.extruder.extrude} F{tl.speed.extrude * 60} G0 F{tl.restore.speed} {% if tl.restore.absolute.extrude %} M82 G92 E{tl.restore.e} {% endif %} {% endif %} {% endif %} {% if tl.restore.factor.speed != factor.speed %} M220 S{(factor.speed*100)|round(0)} {% endif %} {% if tl.restore.factor.extrude != factor.extrude %} M221 S{(factor.extrude*100)|round(0)} {% endif %} {% if not tl.restore.absolute.coordinates %} G91 {% endif %} {% endif %} [gcode_macro HYPERLAPSE] description = Start/Stop a hyperlapse recording variable_cycle = 0 variable_run = False gcode = {% set cycle = params.CYCLE|default(30)|int %} {% if params.ACTION and params.ACTION|lower == 'start' %} {action_respond_info("Hyperlapse: frames started (Cycle %d sec)" % cycle)} SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=run VALUE=True SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=cycle VALUE={cycle} UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION={cycle} TIMELAPSE_TAKE_FRAME HYPERLAPSE=True {% elif params.ACTION and params.ACTION|lower == 'stop' %} {% if run %}{action_respond_info("Hyperlapse: frames stopped")}{% endif %} SET_GCODE_VARIABLE MACRO=HYPERLAPSE VARIABLE=run VALUE=False UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION=0 {% else %} {action_raise_error("Hyperlapse: No valid input parameter Use: - HYPERLAPSE ACTION=START [CYCLE=time] - HYPERLAPSE ACTION=STOP")} {% endif %} [delayed_gcode _HYPERLAPSE_LOOP] gcode = UPDATE_DELAYED_GCODE ID=_HYPERLAPSE_LOOP DURATION={printer["gcode_macro HYPERLAPSE"].cycle} TIMELAPSE_TAKE_FRAME HYPERLAPSE=True [gcode_macro TIMELAPSE_RENDER] description = Render Timelapse video and wait for the result variable_render = False variable_run_identifier = 0 gcode = {action_respond_info("Timelapse: Rendering started")} {action_call_remote_method("timelapse_render", byrendermacro="True")} SET_GCODE_VARIABLE MACRO=TIMELAPSE_RENDER VARIABLE=render VALUE=True {printer.configfile.settings['gcode_macro pause'].rename_existing} UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_RENDER DURATION=0.5 [delayed_gcode _WAIT_TIMELAPSE_RENDER] gcode = {% set ri = printer['gcode_macro TIMELAPSE_RENDER'].run_identifier % 4 %} SET_GCODE_VARIABLE MACRO=TIMELAPSE_RENDER VARIABLE=run_identifier VALUE={ri + 1} {% if printer['gcode_macro TIMELAPSE_RENDER'].render %} M117 Rendering {['-','\\','|','/'][ri]} UPDATE_DELAYED_GCODE ID=_WAIT_TIMELAPSE_RENDER DURATION=0.5 {% else %} {action_respond_info("Timelapse: Rendering finished")} M117 {printer.configfile.settings['gcode_macro resume'].rename_existing} {% endif %} [gcode_macro TEST_STREAM_DELAY] description = Helper macro to find stream and park delay gcode = {% set min = printer.toolhead.axis_minimum %} {% set max = printer.toolhead.axis_maximum %} {% set act = printer.toolhead.position %} {% set tl = printer['gcode_macro TIMELAPSE_TAKE_FRAME'] %} {% if act.z > 5.0 %} G0 X{min.x + 5.0} F{tl.speed.travel|int * 60} G0 X{(max.x-min.x)/2} G4 P{tl.park.time|float * 1000} _TIMELAPSE_NEW_FRAME HYPERLAPSE=FALSE G0 X{max.x - 5.0} {% else %} {action_raise_error("Toolhead z %.3f to low. Please place head above z = 5.0" % act.z)} {% endif %} [menu __main] type = list name = Main [menu __main __pause] type = command enable = {(printer.print_stats.state == "printing") and ("pause_resume" in printer)} index = 0 name = Pause printing gcode = PAUSE { menu.exit() } [menu __main __resume] type = command enable = {(printer.print_stats.state == "paused") and ("pause_resume" in printer)} index = 0 name = Resume printing gcode = RESUME { menu.exit() } [menu __main __abort] type = command enable = {((printer.print_stats.state == "printing" or printer.print_stats.state == "paused")) and ("pause_resume" in printer)} index = 1 name = Abort printing gcode = CANCEL_PRINT { menu.exit() } [menu __main __tune] type = list enable = {printer.idle_timeout.state == "Printing"} name = Tune [menu __main __tune __speed] type = input name = Speed: {'%3d' % (menu.input*100)}% input = {printer.gcode_move.speed_factor} input_min = 0.01 input_max = 5 input_step = 0.01 realtime = True gcode = M220 S{'%d' % (menu.input*100)} [menu __main __tune __flow] type = input name = Flow: {'%3d' % (menu.input*100)}% input = {printer.gcode_move.extrude_factor} input_min = 0.01 input_max = 2 input_step = 0.01 realtime = True gcode = M221 S{'%d' % (menu.input*100)} [menu __main __tune __offsetz] type = input name = Offset Z:{'%05.3f' % menu.input} input = {printer.gcode_move.homing_origin.z} input_min = -5 input_max = 5 input_step = 0.005 realtime = True gcode = SET_GCODE_OFFSET Z={'%.3f' % menu.input} MOVE=1 [menu __main __tune __hotend0_target] type = input enable = {('extruder' in printer) and ('extruder' in printer.heaters.available_heaters)} name = {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)} input = {printer.extruder.target} input_min = 0 input_max = {printer.configfile.config.extruder.max_temp} input_step = 1 realtime = True gcode = M104 T0 S{'%.0f' % menu.input} { menu.exit()} [menu __main __tune __hotend1_target] type = input enable = {('extruder1' in printer) and ('extruder1' in printer.heaters.available_heaters)} name = {"Ex1:%3.0f (%4.0f)" % (menu.input, printer.extruder1.temperature)} input = {printer.extruder1.target} input_min = 0 input_max = {printer.configfile.config.extruder1.max_temp} input_step = 1 realtime = True gcode = M104 T1 S{'%.0f' % menu.input} { menu.exit()} [menu __main __tune __hotbed_target] type = input enable = {'heater_bed' in printer} name = {"Bed:%3.0f (%4.0f)" % (menu.input, printer.heater_bed.temperature)} input = {printer.heater_bed.target} input_min = 0 input_max = {printer.configfile.config.heater_bed.max_temp} input_step = 1 realtime = True gcode = M140 S{'%.0f' % menu.input} { menu.exit()} [menu __main __tune __fanspeed] type = input enable = {'fan' in printer} name = Fan speed: {'%3d' % (menu.input*100)}% input = {printer.fan.speed} input_min = 0 input_max = 1 input_step = 0.01 realtime = True gcode = M106 S{'%d' % (menu.input*255)} [menu __main __octoprint] type = disabled [menu __main __octoprint __pause] type = disabled [menu __main __octoprint __resume] type = disabled [menu __main __octoprint __abort] type = disabled [menu __main __sdcard] type = vsdlist enable = {not printer.idle_timeout.state == "Printing" and ('virtual_sdcard' in printer)} name = SD Card [menu __main __sdcard __start] type = command enable = {('virtual_sdcard' in printer) and printer.virtual_sdcard.file_path and not printer.virtual_sdcard.is_active} name = Start printing gcode = M24 { menu.exit() } [menu __main __sdcard __resume] type = disabled [menu __main __sdcard __pause] type = disabled [menu __main __sdcard __cancel] type = disabled [menu __main __control] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Control [menu __main __control __home] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Home All gcode = G28 [menu __main __control __homez] type = disabled [menu __main __control __homexy] type = disabled [menu __main __control __disable] type = command name = Steppers off gcode = M84 M18 [menu __main __control __fanonoff] type = input enable = {'fan' in printer} name = Fan: {'ON ' if menu.input else 'OFF'} input = {printer.fan.speed} input_min = 0 input_max = 1 input_step = 1 realtime = True gcode = M106 S{255 if menu.input else 0} [menu __main __control __fanspeed] type = input enable = {'fan' in printer} name = Fan speed: {'%3d' % (menu.input*100)}% input = {printer.fan.speed} input_min = 0 input_max = 1 input_step = 0.01 realtime = True gcode = M106 S{'%d' % (menu.input*255)} [menu __main __control __caselightonoff] type = input enable = {'output_pin caselight' in printer} name = Lights: {'ON ' if menu.input else 'OFF'} input = {printer['output_pin caselight'].value} input_min = 0 input_max = 1 input_step = 1 realtime = True gcode = SET_PIN PIN=caselight VALUE={1 if menu.input else 0} [menu __main __control __caselightpwm] type = input enable = {'output_pin caselight' in printer} name = Lights: {'%3d' % (menu.input*100)}% input = {printer['output_pin caselight'].value} input_min = 0.0 input_max = 1.0 input_step = 0.01 realtime = True gcode = SET_PIN PIN=caselight VALUE={menu.input} [menu __main __control __move_10mm] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Move 10mm [menu __main __control __move_10mm __axis_x] type = input name = Move X:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.x} input_min = {printer.toolhead.axis_minimum.x} input_max = {printer.toolhead.axis_maximum.x} input_step = 10.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 X{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_10mm __axis_y] type = input name = Move Y:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.y} input_min = {printer.toolhead.axis_minimum.y} input_max = {printer.toolhead.axis_maximum.y} input_step = 10.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Y{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_10mm __axis_z] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move Z:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_min = 0 input_max = {printer.toolhead.axis_maximum.z} input_step = 10.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Z{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_10mm __axis_e] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move E:{'%+06.1f' % menu.input} input = 0 input_min = -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_max = {printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_step = 10.0 realtime = False gcode = SAVE_GCODE_STATE NAME=__move__axis M83 G1 E{menu.input} F240 RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Move 1mm [menu __main __control __move_1mm __axis_x] type = input name = Move X:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.x} input_min = {printer.toolhead.axis_minimum.x} input_max = {printer.toolhead.axis_maximum.x} input_step = 1.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 X{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm __axis_y] type = input name = Move Y:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.y} input_min = {printer.toolhead.axis_minimum.y} input_max = {printer.toolhead.axis_maximum.y} input_step = 1.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Y{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm __axis_z] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move Z:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_min = 0 input_max = {printer.toolhead.axis_maximum.z} input_step = 1.0 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Z{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_1mm __axis_e] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move E:{'%+06.1f' % menu.input} input = 0 input_min = -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_max = {printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_step = 1.0 realtime = False gcode = SAVE_GCODE_STATE NAME=__move__axis M83 G1 E{menu.input} F240 RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Move 0.1mm [menu __main __control __move_01mm __axis_x] type = input name = Move X:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.x} input_min = {printer.toolhead.axis_minimum.x} input_max = {printer.toolhead.axis_maximum.x} input_step = 0.1 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 X{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm __axis_y] type = input name = Move Y:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.y} input_min = {printer.toolhead.axis_minimum.y} input_max = {printer.toolhead.axis_maximum.y} input_step = 0.1 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Y{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm __axis_z] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move Z:{'%05.1f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_min = 0 input_max = {printer.toolhead.axis_maximum.z} input_step = 0.1 realtime = True gcode = SAVE_GCODE_STATE NAME=__move__axis G90 G1 Z{menu.input} RESTORE_GCODE_STATE NAME=__move__axis [menu __main __control __move_01mm __axis_e] type = input enable = {not printer.idle_timeout.state == "Printing"} name = Move E:{'%+06.1f' % menu.input} input = 0 input_min = -{printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_max = {printer.configfile.config.extruder.max_extrude_only_distance|default(50)} input_step = 0.1 realtime = False gcode = SAVE_GCODE_STATE NAME=__move__axis M83 G1 E{menu.input} F240 RESTORE_GCODE_STATE NAME=__move__axis [menu __main __temp] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Temperature [menu __main __temp __hotend0_target] type = input enable = {('extruder' in printer) and ('extruder' in printer.heaters.available_heaters)} name = {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)} input = {printer.extruder.target} input_min = 0 input_max = {printer.configfile.config.extruder.max_temp} input_step = 1 gcode = M104 T0 S{'%.0f' % menu.input} { menu.exit()} [menu __main __temp __hotend1_target] type = input enable = {('extruder1' in printer) and ('extruder1' in printer.heaters.available_heaters)} name = {"Ex1:%3.0f (%4.0f)" % (menu.input, printer.extruder1.temperature)} input = {printer.extruder1.target} input_min = 0 input_max = {printer.configfile.config.extruder1.max_temp} input_step = 1 gcode = M104 T1 S{'%.0f' % menu.input} { menu.exit()} [menu __main __temp __hotbed_target] type = input enable = {'heater_bed' in printer} name = {"Bed:%3.0f (%4.0f)" % (menu.input, printer.heater_bed.temperature)} input = {printer.heater_bed.target} input_min = 0 input_max = {printer.configfile.config.heater_bed.max_temp} input_step = 1 gcode = M140 S{'%.0f' % menu.input} { menu.exit()} [menu __main __temp __preheat_pla] type = list name = Preheat PLA [menu __main __temp __preheat_pla __all] type = command enable = {('extruder' in printer) and ('heater_bed' in printer)} name = Preheat all gcode = M140 S70 M104 S230 { menu.exit()} [menu __main __temp __preheat_pla __hotend] type = command enable = {'extruder' in printer} name = Preheat hotend gcode = M104 S230 { menu.exit()} [menu __main __temp __preheat_pla __hotbed] type = command enable = {'heater_bed' in printer} name = Preheat hotbed gcode = M140 S70 { menu.exit()} [menu __main __temp __preheat_abs] type = list name = Preheat ABS [menu __main __temp __preheat_abs __all] type = command enable = {('extruder' in printer) and ('heater_bed' in printer)} name = Preheat all gcode = M140 S110 M104 S245 { menu.exit()} [menu __main __temp __preheat_abs __hotend] type = command enable = {'extruder' in printer} name = Preheat hotend gcode = M104 S245 { menu.exit()} [menu __main __temp __preheat_abs __hotbed] type = command enable = {'heater_bed' in printer} name = Preheat hotbed gcode = M140 S110 { menu.exit()} [menu __main __temp __cooldown] type = list name = Cooldown [menu __main __temp __cooldown __all] type = command enable = {('extruder' in printer) and ('heater_bed' in printer)} name = Cooldown all gcode = M104 S0 M140 S0 { menu.exit()} [menu __main __temp __cooldown __hotend] type = command enable = {'extruder' in printer} name = Cooldown hotend gcode = M104 S0 { menu.exit()} [menu __main __temp __cooldown __hotbed] type = command enable = {'heater_bed' in printer} name = Cooldown hotbed gcode = M140 S0 { menu.exit()} [menu __main __filament] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Filament [menu __main __filament __hotend0_target] type = input enable = {'extruder' in printer} name = {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)} input = {printer.extruder.target} input_min = 0 input_max = {printer.configfile.config.extruder.max_temp} input_step = 1 gcode = M104 T0 S{'%.0f' % menu.input} [menu __main __filament __loadf] type = command name = Load Fil. fast gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E50 F960 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __loads] type = command name = Load Fil. slow gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E50 F240 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __unloadf] type = command name = Unload Fil.fast gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E-50 F960 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __unloads] type = command name = Unload Fil.slow gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E-50 F240 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __filament __feed] type = input name = Feed: {'%.1f' % menu.input} input = 5 input_step = 0.1 gcode = SAVE_GCODE_STATE NAME=__filament__load M83 G1 E{'%.1f' % menu.input} F60 RESTORE_GCODE_STATE NAME=__filament__load [menu __main __setup] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Setup [menu __main __setup __save_config] type = command name = Save config gcode = SAVE_CONFIG [menu __main __setup __restart] type = list name = Restart [menu __main __setup __restart __host_restart] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Restart host gcode = RESTART [menu __main __setup __restart __firmware_restart] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Restart FW gcode = FIRMWARE_RESTART [menu __main __setup __tuning] type = list name = PID tuning [menu __main __setup __tuning __hotend_pid_tuning] type = command enable = {(not printer.idle_timeout.state == "Printing") and ('extruder' in printer)} name = Tune Hotend PID gcode = PID_CALIBRATE HEATER=extruder TARGET=210 WRITE_FILE=1 [menu __main __setup __tuning __hotbed_pid_tuning] type = command enable = {(not printer.idle_timeout.state == "Printing") and ('heater_bed' in printer)} name = Tune Hotbed PID gcode = PID_CALIBRATE HEATER=heater_bed TARGET=60 WRITE_FILE=1 [menu __main __setup __calib] type = list name = Calibration [menu __main __setup __calib __delta_calib_auto] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Delta cal. auto gcode = G28 DELTA_CALIBRATE [menu __main __setup __calib __delta_calib_man] type = list enable = {not printer.idle_timeout.state == "Printing"} name = Delta cal. man [menu __main __setup __calib __bedprobe] type = command enable = {not printer.idle_timeout.state == "Printing"} name = Bed probe gcode = PROBE [menu __main __setup __calib __delta_calib_man __start] type = command name = Start probing gcode = G28 DELTA_CALIBRATE METHOD=manual [menu __main __setup __calib __delta_calib_man __move_z] type = input name = Move Z: {'%03.2f' % menu.input} input = {printer.gcode_move.gcode_position.z} input_step = 1 realtime = True gcode = {%- if menu.event == 'change' -%} G1 Z{'%.2f' % menu.input} {%- elif menu.event == 'long_click' -%} G1 Z{'%.2f' % menu.input} SAVE_GCODE_STATE NAME=__move__axis G91 G1 Z2 G1 Z-2 RESTORE_GCODE_STATE NAME=__move__axis {%- endif -%} [menu __main __setup __calib __delta_calib_man __test_z] type = input name = Test Z: {['++','+','+.01','+.05','+.1','+.5','-.5','-.1','-.05','-.01','-','--'][menu.input|int]} input = 6 input_min = 0 input_max = 11 input_step = 1 gcode = {%- if menu.event == 'long_click' -%} TESTZ Z={['++','+','+.01','+.05','+.1','+.5','-.5','-.1','-.05','-.01','-','--'][menu.input|int]} {%- endif -%} [menu __main __setup __calib __delta_calib_man __accept] type = command name = Accept gcode = ACCEPT [menu __main __setup __calib __delta_calib_man __abort] type = command name = Abort gcode = ABORT [menu __main __setup __dump] type = command name = Dump parameters gcode = {% for name1 in printer %} {% for name2 in printer[name1] %} { action_respond_info("printer['%s'].%s = %s" % (name1, name2, printer[name1][name2])) } {% else %} { action_respond_info("printer['%s'] = %s" % (name1, printer[name1])) } {% endfor %} {% endfor %} { menu.exit() } [gcode_macro START_PRINT_ORCA] gcode = G1 Z2.0 F3000 G1 X15.1 Y20 Z0.28 F5000.0 G1 X15.1 Y200.0 Z0.28 F1500.0 E15 G1 X15.4 Y200.0 Z0.28 F5000.0 G1 X15.4 Y20 Z0.28 F1500.0 E30 G92 E0 STATUS_PRINTING M117 Let's Print!!! [gcode_macro START_PRINT_CURA] description = Start Print variable_parameter_AREA_START : 0,0 variable_parameter_AREA_END : 0,0 gcode = SET_NOZZLE_LEDS_ON STATUS_READY G90 M117 Homing Printer ... STATUS_HOMING G28 STATUS_MESHING M117 Bed Area Meshing ... BED_MESH_CALIBRATE AREA_START={params.AREA_START|default("0,0")} AREA_END={params.AREA_END|default("0,0")} G90 G1 X15 Y15 Z15 G92 E0 G1 X0 Y0 Z10 F4000.0 STATUS_HEATING SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={params.BED_TEMP|default(60)|float} TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={params.BED_TEMP|default(60)|float - 5} MAXIMUM={params.BED_TEMP|default(60)|float + 5} M117 Heating Nozzle SET_HEATER_TEMPERATURE HEATER=extruder TARGET={params.EXTRUDER_TEMP|default(200)|float} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={params.EXTRUDER_TEMP|default(200)|float - 5} MAXIMUM={params.EXTRUDER_TEMP|default(200)|float + 5} G1 Z2.0 F3000 G1 X15.1 Y20 Z0.28 F5000.0 G1 X15.1 Y200.0 Z0.28 F1500.0 E15 G1 X15.4 Y200.0 Z0.28 F5000.0 G1 X15.4 Y20 Z0.28 F1500.0 E30 G92 E0 STATUS_PRINTING M117 Let's Print!!! [gcode_macro PRINT] variable_parameter_msg = '' variable_parameter_output_target = 0 gcode = {% if params.OUTPUT_TARGET|default(0)|int == 0 %} M117 {params.MSG | string} { action_respond_info((params.MSG) | string)} {% elif params.OUTPUT_TARGET|default(0)|int == 1 %} { action_respond_info((params.MSG) | string)} {% else %} M117 {params.MSG | string} {% endif %} [gcode_macro M109] rename_existing = M99109 gcode = {% set s = params.S|float %} M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} {% if s != 0 %} TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1} {% endif %} [gcode_macro FILAMENT_RUNOUT] description = Filament Runout gcode = M300 S1 P10 M600 M300 S1 P10 [gcode_macro M600] description = Filament Change gcode = {% set X = params.X|default(50)|float %} {% set Y = params.Y|default(0)|float %} {% set Z = params.Z|default(10)|float %} SAVE_GCODE_STATE NAME=M600_state PAUSE G91 G1 E-.8 F2700 G1 Z{Z} G90 G1 X{X} Y{Y} F3000 G91 G1 E-50 F1000 SET_IDLE_TIMEOUT TIMEOUT=7200 RESTORE_GCODE_STATE NAME=M600_state [gcode_macro m900] gcode = SET_PRESSURE_ADVANCE ADVANCE={params.K} [gcode_macro PIDtuneHOTEND] description = PID Tune Hotend gcode = {% set TEMP = params.TEMP|default(200)|float %} PID_CALIBRATE HEATER=extruder TARGET={TEMP} [gcode_macro PIDtuneBED] description = PID Tune Bed gcode = {% set TEMP = params.TEMP|default(60)|float %} PID_CALIBRATE HEATER=heater_bed TARGET={TEMP} [gcode_macro END_PRINT] description = End Print gcode = G91 G1 E-2 F2700 G1 E-2 Z0.2 F2400 G1 X5 Y5 F3000 G1 Z10 G90 G1 X0 Y230 M106 S0 M104 S0 M140 S0 M84 X Y E M117 Printing done!!! STATUS_PART_READY [neopixel neo] pin = PF4 chain_count = 14 color_order = GRB initial_red = 0.2 initial_green = 0.0 initial_blue = 0.5 [gcode_macro TOP_GREEN] gcode = SET_LED LED=neo RED=0 GREEN=1 BLUE=0 index: 1 transmit=1 [gcode_macro BOTTOM_GREEN] gcode = SET_LED LED=neo1 RED=0 GREEN=1 BLUE=0 index: 1 [gcode_macro TOP_RED] gcode = SET_LED LED=neo RED=1 GREEN=0 BLUE=0 index: 1 transmit=1 [gcode_macro BOTTOM_RED] gcode = SET_LED LED=neo1 RED=1 GREEN=0 BLUE=0 index: 1 [gcode_macro TOP_BLUE] gcode = SET_LED LED=neo RED=0 GREEN=0 BLUE=1 index: 1 transmit=1 [gcode_macro BOTTOM_BLUE] gcode = SET_LED LED=neo1 RED=0 GREEN=0 BLUE=1 [gcode_macro TOP_WHITE] gcode = SET_LED LED=neo RED=1 GREEN=1 BLUE=1 index: 14 transmit=1 [gcode_macro BOTTOM_WHITE] gcode = SET_LED LED=neo1 RED=1 GREEN=1 BLUE=1 index: 0 transmit=1 [gcode_macro TOP_OFF] gcode = SET_LED LED=neo RED=0 GREEN=0 BLUE=0 index: 14 transmt=1 [gcode_macro BOTTOM_OFF] gcode = SET_LED LED=neo1 RED=0 GREEN=0 BLUE=0 index: 0 transmit=1 [gcode_macro _load_unload] gcode = {% set saved_extruder = printer.toolhead.extruder %} {% set EXTRUDER = params.EXTRUDER|default(saved_extruder)|lower %} {% set km = printer["gcode_macro _km_globals"] %} {% set BEEPS = params.BEEPS|default(8)|int if "output_pin beeper" in printer else 0 %} {% set default_minimum = km.load_min_temp if km.load_min_temp else (printer.configfile.settings[EXTRUDER].min_extrude_temp + 5) %} {% if 'MINIMUM' in params %} {% set MINIMUM = params.MINIMUM|int %} {% elif printer.pause_resume.is_paused and printer[EXTRUDER].target == 0 and printer["gcode_macro resume"].saved_extruder_temp %} {% set MINIMUM = printer["gcode_macro resume"].saved_extruder_temp %} {% elif printer[EXTRUDER].target > default_minimum %} {% set MINIMUM = printer[EXTRUDER].target %} {% else %} {% set MINIMUM = default_minimum %} {% endif %} {% if MINIMUM < printer.configfile.settings[EXTRUDER].min_extrude_temp %} { action_raise_error("Extrude below minimum temp.") } {% elif printer.pause_resume.is_paused %} SET_GCODE_VARIABLE MACRO=resume VARIABLE=saved_e VALUE="{0.0}" {% endif %} {% set SPEED = params.SPEED|default(km.load_speed)|int %} {% set priming_length = km.load_priming_length %} {% set LENGTH = params.LENGTH|default(km.load_length)|float - priming_length%} {% if LENGTH < 0 %} {% set priming_length = (priming_length + LENGTH, 0)|max %} {% set LENGTH = 0 %} {% endif %} SAVE_GCODE_STATE NAME=_KM_LOAD_UNLOAD {% if EXTRUDER != saved_extruder%} ACTIVATE_EXTRUDER EXTRUDER={EXTRUDER} {% endif %} {% if not printer.extruder.can_extrude or printer[EXTRUDER].target < default_minimum %} {action_respond_info("Preheating %s to %d" | format(EXTRUDER, MINIMUM))} M109 S{MINIMUM} {% endif %} M83 {% if params.LOAD|int %} G1 E{LENGTH} F{SPEED} G1 E{priming_length} F{(km.load_priming_speed, SPEED)|min} G1 E{'%.4f' % -printer["gcode_macro resume"].saved_e} F{km.load_speed} {% else %} G1 E3.0 F{SPEED} G4 P500 G1 E{'%.4f' % -priming_length} F{(km.load_priming_speed, SPEED)|min} G1 E{'%.4f' % -LENGTH} F{SPEED} {% endif %} RESTORE_GCODE_STATE NAME=_KM_LOAD_UNLOAD {% for i in range(BEEPS) %} M300 P100 G4 P200 {% endfor %} [gcode_macro LOAD_FILAMENT] description = Loads filament to the extruder. Usage: LOAD_FILAMENT [LENGTH=] [SPEED=] [EXTRUDER=] [MINIMUM=] [BEEPS=] gcode = _LOAD_UNLOAD LOAD=1{% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} {% set dummy = None if True else " M109 {% set dummy = params.LENGTH|default(variable_load_length)|float %} {% set dummy = params.SPEED|default(variable_load_speed)|float %} {% set dummy = params.EXTRUDER|default(current extruder) %} {% set dummy = params.MINIMUM|default(min_extrude_temp)|int %} {% set dummy = params.BEEPS|default(10)|int %} " %} [gcode_macro UNLOAD_FILAMENT] description = Unloads filament from the extruder. Usage: UNLOAD_FILAMENT [LENGTH=] [SPEED=] [EXTRUDER=] [MINIMUM=] [BEEPS=] gcode = _LOAD_UNLOAD LOAD=0{% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} {% set dummy = None if True else " M109 {% set dummy = params.LENGTH|default(variable_load_length)|float %} {% set dummy = params.SPEED|default(variable_load_speed)|float %} {% set dummy = params.EXTRUDER|default(default extruder) %} {% set dummy = params.MINIMUM|default(min_extrude_temp)|int %} {% set dummy = params.BEEPS|default(10)|int %} " %} [gcode_macro _pause_inner_m700] gcode = {% set extruder = "extruder" ~ params.T|replace('0', '') if "T" in params else printer.toolhead.extruder %} {% if extruder != printer.toolhead.extruder%} ACTIVATE_EXTRUDER EXTRUDER={extruder} {% endif %} {% set z_param = (' Z="%f"' % params.Z) if 'Z' in params else "" %} {% if printer.idle_timeout.state|string == "Printing" %} PAUSE B="{0}" P=2{z_param} {% elif not printer.pause_resume.is_paused%} PARK B="{0}" P=2{z_param} {% endif %} [gcode_macro m701] description = Pauses/parks the toolhead then loads filament to the extruder. Usage: M701 [L] [Z] [T] gcode = {% if 'U' in params %} {% if not 'L' in params %} RESPOND TYPE=error MSG="Argument \"U\" substituted for missing \"L\"." {% set dummy = params.__setitem__("L", params.U) %} {% else %} RESPOND TYPE=error MSG="Invalid argument \"U\" ignored." {% endif %} {% endif %} _PAUSE_INNER_M700 {% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} LOAD_FILAMENT BEEPS="{10}" LENGTH={ params.L|default(printer["gcode_macro _km_globals"].load_length)|float} [gcode_macro m702] description = Pauses/parks the toolhead then unloads filament from the extruder. Usage: M702 [U] [Z] [T] gcode = {% if 'L' in params %} {% if not 'U' in params %} RESPOND TYPE=error MSG="Argument \"L\" substituted for missing \"U\"." {% set dummy = params.__setitem__("U", params.L) %} {% else %} RESPOND TYPE=error MSG="Invalid argument \"L\" ignored." {% endif %} {% endif %} _PAUSE_INNER_M700 {% for k in params %}{' '~k~'="'~params[k]~'"'}{% endfor %} UNLOAD_FILAMENT BEEPS="{10}" LENGTH={ params.U|default(printer["gcode_macro _km_globals"].load_length)|float} [stepper_a] step_pin = PF0 dir_pin = !PF1 enable_pin = !PD7 microsteps = 32 rotation_distance = 32 endstop_pin = ^PE4 homing_speed = 50 angle = 210.203230 arm_length = 217.000000 position_endstop = 296.847928 [stepper_b] step_pin = PF6 dir_pin = !PF7 enable_pin = !PF2 microsteps = 32 rotation_distance = 32 endstop_pin = ^PJ0 homing_speed = 50 angle = 329.889274 arm_length = 217.000000 position_endstop = 295.385490 [stepper_c] step_pin = PL3 dir_pin = !PL1 enable_pin = !PK0 microsteps = 32 rotation_distance = 32 endstop_pin = ^PD2 homing_speed = 50 angle = 90.000000 arm_length = 217.000000 position_endstop = 296.049609 [extruder] step_pin = PA4 dir_pin = PA6 enable_pin = !PA2 microsteps = 32 rotation_distance = 20.067 nozzle_diameter = 0.400 filament_diameter = 1.750 heater_pin = PB4 sensor_type = EPCOS 100K B57560G104F sensor_pin = PK5 min_temp = 0 max_temp = 250 max_extrude_only_distance = 100.0 control = pid pid_kp = 22.418 pid_ki = 1.052 pid_kd = 119.374 [heater_bed] heater_pin = PH5 sensor_type = EPCOS 100K B57560G104F sensor_pin = PK6 min_temp = 0 max_temp = 130 control = pid pid_kp = 52.098 pid_ki = 1.194 pid_kd = 568.521 [fan] pin = PH6 kick_start_time = 0.200 [heater_fan extruder_cooler_fan] pin = PL5 [mcu] serial = /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 [temperature_sensor Raspberry Pi 3] sensor_type = temperature_host min_temp = 10 max_temp = 100 [printer] kinematics = delta max_velocity = 300 max_accel = 3000 max_z_velocity = 150 minimum_z_position = -20 delta_radius = 95.470132 [delta_calibrate] radius = 80 horizontal_move_z = 20 height0 = 14.262 height0_pos = 56508.000,56255.333,56337.667 height1 = 14.262 height1_pos = 63964.667,63685.667,52102.667 height2 = 14.262 height2_pos = 55693.000,67686.000,55503.000 height3 = 14.262 height3_pos = 52435.000,62480.000,62562.000 height4 = 14.262 height4_pos = 55356.667,55119.000,64239.000 height5 = 14.262 height5_pos = 61609.000,52389.000,61458.000 height6 = 14.262 height6_pos = 66076.333,55235.000,55317.333 [probe] pin = ^PD3 x_offset = 0 y_offset = 0 speed = 20 lift_speed = 30 sample_retract_dist = 3 samples = 3 samples_result = average samples_tolerance = 0.0125 samples_tolerance_retries = 5 z_offset = 14.262 [bed_mesh] speed = 100 horizontal_move_z = 25 mesh_radius = 80 mesh_origin = 0,0 round_probe_count = 11 mesh_pps = 11,11 algorithm = bicubic move_check_distance = 3 split_delta_z = 0.025 [display] lcd_type = hd44780 rs_pin = PH1 e_pin = PH0 d4_pin = PA1 d5_pin = PA3 d6_pin = PA5 d7_pin = PA7 encoder_pins = ^PC4, ^PC6 click_pin = ^!PC2 kill_pin = ^!PG0 [filament_switch_sensor runout_sensor] runout_gcode = PAUSE event_delay = 3.0 pause_delay = 0.5 switch_pin = PF3 [bed_mesh default] version = 1 points = 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962, 0.025962 -0.109011, -0.109011, -0.109011, -0.351394, 0.026022, 0.001547, 0.050174, 0.007358, 0.066990, 0.066990, 0.066990 -0.143359, -0.143359, -0.104431, -0.044354, -0.020129, -0.029767, -0.029878, -0.053652, 0.013618, 0.006396, 0.006396 -0.093302, -0.093302, -0.050519, -0.121346, -0.088960, -0.040568, -0.118917, -0.004306, -0.072872, -0.066963, -0.066963 -0.099147, -0.099147, -0.041646, -0.076771, -0.032548, -0.069445, -0.048539, -0.026390, -0.037918, -0.088234, -0.088234 -0.088842, -0.064332, -0.049037, -0.053592, -0.105247, -0.115772, -0.133453, -0.083709, -0.095850, -0.072939, -0.161284 -0.159071, -0.159071, -0.136697, -0.183336, -0.168631, -0.171679, -0.154732, -0.151463, -0.138638, -0.162883, -0.162883 -0.132343, -0.132343, -0.141782, -0.201309, -0.174247, -0.143837, -0.155789, -0.173544, -0.166517, -0.212444, -0.212444 -0.223554, -0.223554, -0.229521, -0.208085, -0.218800, -0.234439, -0.178891, -0.208385, -0.187892, -0.211953, -0.211953 -0.296977, -0.296977, -0.296977, -0.211657, -0.223081, -0.206840, -0.217961, -0.178008, -0.192399, -0.192399, -0.192399 -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925, -0.205925 x_count = 11 y_count = 11 mesh_x_pps = 11 mesh_y_pps = 11 algo = bicubic tension = 0.2 min_x = -80.0 max_x = 80.0 min_y = -80.0 max_y = 80.0 ======================= Declaration of '__main' hides previous menuitem declaration Declaration of '__main __tune' hides previous menuitem declaration Declaration of '__main __tune __speed' hides previous menuitem declaration Declaration of '__main __tune __flow' hides previous menuitem declaration Declaration of '__main __tune __offsetz' hides previous menuitem declaration Declaration of '__main __octoprint' hides previous menuitem declaration Declaration of '__main __octoprint __pause' hides previous menuitem declaration Declaration of '__main __octoprint __resume' hides previous menuitem declaration Declaration of '__main __octoprint __abort' hides previous menuitem declaration Declaration of '__main __sdcard' hides previous menuitem declaration Declaration of '__main __sdcard __start' hides previous menuitem declaration Declaration of '__main __sdcard __resume' hides previous menuitem declaration Declaration of '__main __sdcard __pause' hides previous menuitem declaration Declaration of '__main __sdcard __cancel' hides previous menuitem declaration Declaration of '__main __control' hides previous menuitem declaration Declaration of '__main __control __home' hides previous menuitem declaration Declaration of '__main __control __homez' hides previous menuitem declaration Declaration of '__main __control __homexy' hides previous menuitem declaration Declaration of '__main __control __disable' hides previous menuitem declaration Declaration of '__main __control __fanonoff' hides previous menuitem declaration Declaration of '__main __control __fanspeed' hides previous menuitem declaration Declaration of '__main __control __caselightonoff' hides previous menuitem declaration Declaration of '__main __control __caselightpwm' hides previous menuitem declaration Declaration of '__main __control __move_10mm' hides previous menuitem declaration Declaration of '__main __control __move_10mm __axis_x' hides previous menuitem declaration Declaration of '__main __control __move_10mm __axis_y' hides previous menuitem declaration Declaration of '__main __control __move_10mm __axis_z' hides previous menuitem declaration Declaration of '__main __control __move_10mm __axis_e' hides previous menuitem declaration Declaration of '__main __control __move_1mm' hides previous menuitem declaration Declaration of '__main __control __move_1mm __axis_x' hides previous menuitem declaration Declaration of '__main __control __move_1mm __axis_y' hides previous menuitem declaration Declaration of '__main __control __move_1mm __axis_z' hides previous menuitem declaration Declaration of '__main __control __move_1mm __axis_e' hides previous menuitem declaration Declaration of '__main __control __move_01mm' hides previous menuitem declaration Declaration of '__main __control __move_01mm __axis_x' hides previous menuitem declaration Declaration of '__main __control __move_01mm __axis_y' hides previous menuitem declaration Declaration of '__main __control __move_01mm __axis_z' hides previous menuitem declaration Declaration of '__main __control __move_01mm __axis_e' hides previous menuitem declaration Declaration of '__main __temp' hides previous menuitem declaration Declaration of '__main __temp __hotend0_target' hides previous menuitem declaration Declaration of '__main __temp __hotend1_target' hides previous menuitem declaration Declaration of '__main __temp __hotbed_target' hides previous menuitem declaration Declaration of '__main __temp __preheat_pla' hides previous menuitem declaration Declaration of '__main __temp __preheat_pla __all' hides previous menuitem declaration Declaration of '__main __temp __preheat_pla __hotend' hides previous menuitem declaration Declaration of '__main __temp __preheat_pla __hotbed' hides previous menuitem declaration Declaration of '__main __temp __preheat_abs' hides previous menuitem declaration Declaration of '__main __temp __preheat_abs __all' hides previous menuitem declaration Declaration of '__main __temp __preheat_abs __hotend' hides previous menuitem declaration Declaration of '__main __temp __preheat_abs __hotbed' hides previous menuitem declaration Declaration of '__main __temp __cooldown' hides previous menuitem declaration Declaration of '__main __temp __cooldown __all' hides previous menuitem declaration Declaration of '__main __temp __cooldown __hotend' hides previous menuitem declaration Declaration of '__main __temp __cooldown __hotbed' hides previous menuitem declaration Declaration of '__main __filament' hides previous menuitem declaration Declaration of '__main __filament __hotend0_target' hides previous menuitem declaration Declaration of '__main __filament __loadf' hides previous menuitem declaration Declaration of '__main __filament __loads' hides previous menuitem declaration Declaration of '__main __filament __unloadf' hides previous menuitem declaration Declaration of '__main __filament __unloads' hides previous menuitem declaration Declaration of '__main __filament __feed' hides previous menuitem declaration Declaration of '__main __setup' hides previous menuitem declaration Declaration of '__main __setup __save_config' hides previous menuitem declaration Declaration of '__main __setup __restart' hides previous menuitem declaration Declaration of '__main __setup __restart __host_restart' hides previous menuitem declaration Declaration of '__main __setup __restart __firmware_restart' hides previous menuitem declaration Declaration of '__main __setup __tuning' hides previous menuitem declaration Declaration of '__main __setup __tuning __hotend_pid_tuning' hides previous menuitem declaration Declaration of '__main __setup __tuning __hotbed_pid_tuning' hides previous menuitem declaration Declaration of '__main __setup __calib' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_auto' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man' hides previous menuitem declaration Declaration of '__main __setup __calib __bedprobe' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man __start' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man __move_z' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man __test_z' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man __accept' hides previous menuitem declaration Declaration of '__main __setup __calib __delta_calib_man __abort' hides previous menuitem declaration Declaration of '__main __setup __dump' hides previous menuitem declaration Delta max build height 295.39mm (radius tapered above 273.26mm) Delta max build radius 95.47mm (moves slowed past 110.40mm and 118.58mm) Extruder max_extrude_ratio=0.266081 mcu 'mcu': Starting serial connect webhooks client 1964294616: New connection webhooks client 1964294616: Client info {'program': 'Moonraker', 'version': 'v0.8.0-190-ge03dbe3'} Loaded MCU 'mcu' 112 commands (v0.11.0-304-gf7567a0d / gcc: (GCC) 5.4.0 binutils: (GNU Binutils) 2.26.20160125) MCU 'mcu' config: ADC_MAX=1023 BUS_PINS_spi=PB3,PB2,PB1 BUS_PINS_twi=PD0,PD1 CLOCK_FREQ=16000000 MCU=atmega2560 PWM_MAX=255 RECEIVE_WINDOW=192 RESERVE_PINS_serial=PE0,PE1 SERIAL_BAUD=250000 STATS_SUMSQ_BASE=256 Sending MCU 'mcu' printer configuration... Configured MCU 'mcu' (596 moves) Starting heater checks for heater_bed bed_mesh: generated points Index | Tool Adjusted | Probe 0 | (0.0, -80.0) | (0.0, -80.0) 1 | (48.0, -64.0) | (48.0, -64.0) 2 | (32.0, -64.0) | (32.0, -64.0) 3 | (16.0, -64.0) | (16.0, -64.0) 4 | (0.0, -64.0) | (0.0, -64.0) 5 | (-16.0, -64.0) | (-16.0, -64.0) 6 | (-32.0, -64.0) | (-32.0, -64.0) 7 | (-48.0, -64.0) | (-48.0, -64.0) 8 | (-64.0, -48.0) | (-64.0, -48.0) 9 | (-48.0, -48.0) | (-48.0, -48.0) 10 | (-32.0, -48.0) | (-32.0, -48.0) 11 | (-16.0, -48.0) | (-16.0, -48.0) 12 | (0.0, -48.0) | (0.0, -48.0) 13 | (16.0, -48.0) | (16.0, -48.0) 14 | (32.0, -48.0) | (32.0, -48.0) 15 | (48.0, -48.0) | (48.0, -48.0) 16 | (64.0, -48.0) | (64.0, -48.0) 17 | (64.0, -32.0) | (64.0, -32.0) 18 | (48.0, -32.0) | (48.0, -32.0) 19 | (32.0, -32.0) | (32.0, -32.0) 20 | (16.0, -32.0) | (16.0, -32.0) 21 | (0.0, -32.0) | (0.0, -32.0) 22 | (-16.0, -32.0) | (-16.0, -32.0) 23 | (-32.0, -32.0) | (-32.0, -32.0) 24 | (-48.0, -32.0) | (-48.0, -32.0) 25 | (-64.0, -32.0) | (-64.0, -32.0) 26 | (-64.0, -16.0) | (-64.0, -16.0) 27 | (-48.0, -16.0) | (-48.0, -16.0) 28 | (-32.0, -16.0) | (-32.0, -16.0) 29 | (-16.0, -16.0) | (-16.0, -16.0) 30 | (0.0, -16.0) | (0.0, -16.0) 31 | (16.0, -16.0) | (16.0, -16.0) 32 | (32.0, -16.0) | (32.0, -16.0) 33 | (48.0, -16.0) | (48.0, -16.0) 34 | (64.0, -16.0) | (64.0, -16.0) 35 | (80.0, 0.0) | (80.0, 0.0) 36 | (64.0, 0.0) | (64.0, 0.0) 37 | (48.0, 0.0) | (48.0, 0.0) 38 | (32.0, 0.0) | (32.0, 0.0) 39 | (16.0, 0.0) | (16.0, 0.0) 40 | (0.0, 0.0) | (0.0, 0.0) 41 | (-16.0, 0.0) | (-16.0, 0.0) 42 | (-32.0, 0.0) | (-32.0, 0.0) 43 | (-48.0, 0.0) | (-48.0, 0.0) 44 | (-64.0, 0.0) | (-64.0, 0.0) 45 | (-80.0, 0.0) | (-80.0, 0.0) 46 | (-64.0, 16.0) | (-64.0, 16.0) 47 | (-48.0, 16.0) | (-48.0, 16.0) 48 | (-32.0, 16.0) | (-32.0, 16.0) 49 | (-16.0, 16.0) | (-16.0, 16.0) 50 | (0.0, 16.0) | (0.0, 16.0) 51 | (16.0, 16.0) | (16.0, 16.0) 52 | (32.0, 16.0) | (32.0, 16.0) 53 | (48.0, 16.0) | (48.0, 16.0) 54 | (64.0, 16.0) | (64.0, 16.0) 55 | (64.0, 32.0) | (64.0, 32.0) 56 | (48.0, 32.0) | (48.0, 32.0) 57 | (32.0, 32.0) | (32.0, 32.0) 58 | (16.0, 32.0) | (16.0, 32.0) 59 | (0.0, 32.0) | (0.0, 32.0) 60 | (-16.0, 32.0) | (-16.0, 32.0) 61 | (-32.0, 32.0) | (-32.0, 32.0) 62 | (-48.0, 32.0) | (-48.0, 32.0) 63 | (-64.0, 32.0) | (-64.0, 32.0) 64 | (-64.0, 48.0) | (-64.0, 48.0) 65 | (-48.0, 48.0) | (-48.0, 48.0) 66 | (-32.0, 48.0) | (-32.0, 48.0) 67 | (-16.0, 48.0) | (-16.0, 48.0) 68 | (0.0, 48.0) | (0.0, 48.0) 69 | (16.0, 48.0) | (16.0, 48.0) 70 | (32.0, 48.0) | (32.0, 48.0) 71 | (48.0, 48.0) | (48.0, 48.0) 72 | (64.0, 48.0) | (64.0, 48.0) 73 | (48.0, 64.0) | (48.0, 64.0) 74 | (32.0, 64.0) | (32.0, 64.0) 75 | (16.0, 64.0) | (16.0, 64.0) 76 | (0.0, 64.0) | (0.0, 64.0) 77 | (-16.0, 64.0) | (-16.0, 64.0) 78 | (-32.0, 64.0) | (-32.0, 64.0) 79 | (-48.0, 64.0) | (-48.0, 64.0) 80 | (0.0, 80.0) | (0.0, 80.0) Starting heater checks for extruder Write g-code response Traceback (most recent call last): File "/home/pi/klipper/klippy/gcode.py", line 446, in _respond_raw os.write(self.fd, (msg+"\n").encode()) BlockingIOError: [Errno 11] Resource temporarily unavailable Stats 62677.0: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1165 bytes_read=4081 bytes_retransmit=9 bytes_invalid=6 send_seq=124 receive_seq=124 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=383 freq=15998966 heater_bed: target=0 temp=0.0 pwm=0.000 3: temp=43.3 sysload=0.37 cputime=2511.593 memavail=553988 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=0.0 pwm=0.000 webhooks: registering remote method 'shutdown_machine' for connection id: 1964294616 webhooks: registering remote method 'reboot_machine' for connection id: 1964294616 webhooks: registering remote method 'pause_job_queue' for connection id: 1964294616 webhooks: registering remote method 'start_job_queue' for connection id: 1964294616 Stats 62678.0: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1609 bytes_read=4151 bytes_retransmit=9 bytes_invalid=6 send_seq=136 receive_seq=136 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999165 heater_bed: target=0 temp=0.0 pwm=0.000 3: temp=43.3 sysload=0.37 cputime=2511.689 memavail=553520 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=0.0 pwm=0.000 Stats 62679.0: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1650 bytes_read=4282 bytes_retransmit=9 bytes_invalid=6 send_seq=140 receive_seq=140 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999159 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=42.8 sysload=0.37 cputime=2511.787 memavail=553524 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62680.0: gcodein=0 mcu: mcu_awake=0.000 mcu_task_avg=0.000000 mcu_task_stddev=0.000000 bytes_write=1692 bytes_read=4408 bytes_retransmit=9 bytes_invalid=6 send_seq=145 receive_seq=145 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999151 heater_bed: target=0 temp=20.0 pwm=0.000 3: temp=42.2 sysload=0.37 cputime=2511.835 memavail=553524 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62681.0: gcodein=0 mcu: mcu_awake=0.046 mcu_task_avg=0.000203 mcu_task_stddev=0.000427 bytes_write=1716 bytes_read=4526 bytes_retransmit=9 bytes_invalid=6 send_seq=148 receive_seq=148 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999159 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=42.2 sysload=0.34 cputime=2511.881 memavail=553524 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.0 pwm=0.000 Stats 62682.0: gcodein=0 mcu: mcu_awake=0.046 mcu_task_avg=0.000203 mcu_task_stddev=0.000427 bytes_write=1740 bytes_read=4642 bytes_retransmit=9 bytes_invalid=6 send_seq=151 receive_seq=151 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999143 heater_bed: target=0 temp=20.7 pwm=0.000 3: temp=42.2 sysload=0.34 cputime=2511.927 memavail=553536 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62683.0: gcodein=0 mcu: mcu_awake=0.046 mcu_task_avg=0.000203 mcu_task_stddev=0.000427 bytes_write=1764 bytes_read=4758 bytes_retransmit=9 bytes_invalid=6 send_seq=154 receive_seq=154 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999139 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=42.2 sysload=0.34 cputime=2511.978 memavail=553536 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62684.0: gcodein=0 mcu: mcu_awake=0.046 mcu_task_avg=0.000203 mcu_task_stddev=0.000427 bytes_write=1770 bytes_read=4851 bytes_retransmit=9 bytes_invalid=6 send_seq=155 receive_seq=155 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999130 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=42.2 sysload=0.34 cputime=2512.028 memavail=553536 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62685.0: gcodein=0 mcu: mcu_awake=0.046 mcu_task_avg=0.000203 mcu_task_stddev=0.000427 bytes_write=1776 bytes_read=4957 bytes_retransmit=9 bytes_invalid=6 send_seq=156 receive_seq=156 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999129 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=42.2 sysload=0.34 cputime=2512.081 memavail=553536 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62686.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000097 mcu_task_stddev=0.000077 bytes_write=1782 bytes_read=5076 bytes_retransmit=9 bytes_invalid=6 send_seq=157 receive_seq=157 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999123 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.7 sysload=0.32 cputime=2512.126 memavail=553536 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62687.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000097 mcu_task_stddev=0.000077 bytes_write=1788 bytes_read=5169 bytes_retransmit=9 bytes_invalid=6 send_seq=158 receive_seq=158 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999127 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.7 sysload=0.32 cputime=2512.173 memavail=553536 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62688.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000097 mcu_task_stddev=0.000077 bytes_write=1794 bytes_read=5275 bytes_retransmit=9 bytes_invalid=6 send_seq=159 receive_seq=159 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999172 heater_bed: target=0 temp=20.7 pwm=0.000 3: temp=41.2 sysload=0.32 cputime=2512.222 memavail=553536 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.6 pwm=0.000 Stats 62689.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000097 mcu_task_stddev=0.000077 bytes_write=1800 bytes_read=5388 bytes_retransmit=9 bytes_invalid=6 send_seq=160 receive_seq=160 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999168 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.32 cputime=2512.271 memavail=553536 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.0 pwm=0.000 Stats 62690.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000097 mcu_task_stddev=0.000077 bytes_write=1806 bytes_read=5488 bytes_retransmit=9 bytes_invalid=6 send_seq=161 receive_seq=161 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999162 heater_bed: target=0 temp=20.6 pwm=0.000 3: temp=41.2 sysload=0.32 cputime=2512.318 memavail=553544 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62691.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000102 mcu_task_stddev=0.000083 bytes_write=1830 bytes_read=5626 bytes_retransmit=9 bytes_invalid=6 send_seq=164 receive_seq=164 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999160 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.7 sysload=0.29 cputime=2512.367 memavail=553544 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.3 pwm=0.000 Stats 62692.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000102 mcu_task_stddev=0.000083 bytes_write=1854 bytes_read=5750 bytes_retransmit=9 bytes_invalid=6 send_seq=167 receive_seq=167 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999159 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.29 cputime=2512.417 memavail=553552 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.4 pwm=0.000 Stats 62693.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000102 mcu_task_stddev=0.000083 bytes_write=1860 bytes_read=5850 bytes_retransmit=9 bytes_invalid=6 send_seq=168 receive_seq=168 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999159 heater_bed: target=0 temp=20.6 pwm=0.000 3: temp=41.2 sysload=0.29 cputime=2512.466 memavail=553552 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62694.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000102 mcu_task_stddev=0.000083 bytes_write=1866 bytes_read=5964 bytes_retransmit=9 bytes_invalid=6 send_seq=169 receive_seq=169 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999156 heater_bed: target=0 temp=21.2 pwm=0.000 3: temp=41.7 sysload=0.29 cputime=2512.514 memavail=553552 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.7 pwm=0.000 Stats 62695.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000102 mcu_task_stddev=0.000083 bytes_write=1872 bytes_read=6078 bytes_retransmit=9 bytes_invalid=6 send_seq=170 receive_seq=170 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999155 heater_bed: target=0 temp=21.2 pwm=0.000 3: temp=41.7 sysload=0.29 cputime=2512.563 memavail=553552 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62696.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000084 bytes_write=1878 bytes_read=6192 bytes_retransmit=9 bytes_invalid=6 send_seq=171 receive_seq=171 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999154 heater_bed: target=0 temp=20.3 pwm=0.000 3: temp=41.2 sysload=0.27 cputime=2512.612 memavail=553552 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62697.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000084 bytes_write=1884 bytes_read=6306 bytes_retransmit=9 bytes_invalid=6 send_seq=172 receive_seq=172 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999153 heater_bed: target=0 temp=21.5 pwm=0.000 3: temp=41.2 sysload=0.27 cputime=2512.660 memavail=553552 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62698.0: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000084 bytes_write=1890 bytes_read=6420 bytes_retransmit=9 bytes_invalid=6 send_seq=173 receive_seq=173 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999154 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=42.8 sysload=0.27 cputime=2512.705 memavail=550804 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.4 pwm=0.000 Stats 62699.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000084 bytes_write=1927 bytes_read=6535 bytes_retransmit=9 bytes_invalid=6 send_seq=177 receive_seq=177 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999151 heater_bed: target=0 temp=21.7 pwm=0.000 3: temp=42.8 sysload=0.27 cputime=2512.748 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=22.2 pwm=0.000 Stats 62700.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000084 bytes_write=1933 bytes_read=6649 bytes_retransmit=9 bytes_invalid=6 send_seq=178 receive_seq=178 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999150 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=42.2 sysload=0.27 cputime=2512.792 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62701.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000103 mcu_task_stddev=0.000084 bytes_write=1939 bytes_read=6763 bytes_retransmit=9 bytes_invalid=6 send_seq=179 receive_seq=179 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999149 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.7 sysload=0.25 cputime=2512.836 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.6 pwm=0.000 Stats 62702.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=1945 bytes_read=6877 bytes_retransmit=9 bytes_invalid=6 send_seq=180 receive_seq=180 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999148 heater_bed: target=0 temp=20.2 pwm=0.000 3: temp=41.2 sysload=0.25 cputime=2512.881 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62703.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=1969 bytes_read=7001 bytes_retransmit=9 bytes_invalid=6 send_seq=183 receive_seq=183 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999146 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=42.2 sysload=0.25 cputime=2512.928 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62704.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=1993 bytes_read=7125 bytes_retransmit=9 bytes_invalid=6 send_seq=186 receive_seq=186 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999146 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.7 sysload=0.25 cputime=2512.975 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.3 pwm=0.000 Stats 62705.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=1999 bytes_read=7225 bytes_retransmit=9 bytes_invalid=6 send_seq=187 receive_seq=187 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999146 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=41.7 sysload=0.25 cputime=2513.020 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.9 pwm=0.000 Stats 62706.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=2005 bytes_read=7339 bytes_retransmit=9 bytes_invalid=6 send_seq=188 receive_seq=188 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999146 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.7 sysload=0.23 cputime=2513.067 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62707.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000103 mcu_task_stddev=0.000085 bytes_write=2011 bytes_read=7468 bytes_retransmit=9 bytes_invalid=6 send_seq=189 receive_seq=189 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999148 heater_bed: target=0 temp=20.9 pwm=0.000 3: temp=41.2 sysload=0.23 cputime=2513.114 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62708.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000103 mcu_task_stddev=0.000085 bytes_write=2035 bytes_read=7578 bytes_retransmit=9 bytes_invalid=6 send_seq=192 receive_seq=192 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999148 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.23 cputime=2513.159 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.9 pwm=0.000 Stats 62709.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000103 mcu_task_stddev=0.000085 bytes_write=2059 bytes_read=7702 bytes_retransmit=9 bytes_invalid=6 send_seq=195 receive_seq=195 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999147 heater_bed: target=0 temp=19.8 pwm=0.000 3: temp=41.2 sysload=0.23 cputime=2513.206 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62710.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000103 mcu_task_stddev=0.000085 bytes_write=2065 bytes_read=7816 bytes_retransmit=9 bytes_invalid=6 send_seq=196 receive_seq=196 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999147 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.7 sysload=0.23 cputime=2513.252 memavail=550408 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.7 pwm=0.000 Stats 62711.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000103 mcu_task_stddev=0.000085 bytes_write=2071 bytes_read=7916 bytes_retransmit=9 bytes_invalid=6 send_seq=197 receive_seq=197 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999147 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.7 sysload=0.21 cputime=2513.297 memavail=549656 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.7 pwm=0.000 Stats 62712.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2077 bytes_read=8044 bytes_retransmit=9 bytes_invalid=6 send_seq=198 receive_seq=198 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999146 heater_bed: target=0 temp=20.4 pwm=0.000 3: temp=41.2 sysload=0.21 cputime=2513.342 memavail=549680 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62713.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2101 bytes_read=8168 bytes_retransmit=9 bytes_invalid=6 send_seq=201 receive_seq=201 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999151 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.7 sysload=0.21 cputime=2513.388 memavail=549680 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62714.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2125 bytes_read=8278 bytes_retransmit=9 bytes_invalid=6 send_seq=204 receive_seq=204 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999151 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=41.2 sysload=0.21 cputime=2513.436 memavail=549680 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.3 pwm=0.000 Stats 62715.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2131 bytes_read=8392 bytes_retransmit=9 bytes_invalid=6 send_seq=205 receive_seq=205 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999150 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.21 cputime=2513.483 memavail=549696 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.8 pwm=0.000 Stats 62716.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2137 bytes_read=8506 bytes_retransmit=9 bytes_invalid=6 send_seq=206 receive_seq=206 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999150 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.19 cputime=2513.531 memavail=549696 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62717.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2143 bytes_read=8621 bytes_retransmit=9 bytes_invalid=6 send_seq=207 receive_seq=207 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999149 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=41.2 sysload=0.19 cputime=2513.578 memavail=549696 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.4 pwm=0.000 Stats 62718.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2149 bytes_read=8735 bytes_retransmit=9 bytes_invalid=6 send_seq=208 receive_seq=208 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999148 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.7 sysload=0.19 cputime=2513.626 memavail=549696 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62719.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2155 bytes_read=8849 bytes_retransmit=9 bytes_invalid=6 send_seq=209 receive_seq=209 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999154 heater_bed: target=0 temp=21.0 pwm=0.000 3: temp=41.2 sysload=0.19 cputime=2513.672 memavail=549696 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62720.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2161 bytes_read=8949 bytes_retransmit=9 bytes_invalid=6 send_seq=210 receive_seq=210 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999154 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.19 cputime=2513.719 memavail=549696 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.7 pwm=0.000 Stats 62721.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000104 mcu_task_stddev=0.000085 bytes_write=2167 bytes_read=9063 bytes_retransmit=9 bytes_invalid=6 send_seq=211 receive_seq=211 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999154 heater_bed: target=0 temp=20.9 pwm=0.000 3: temp=41.2 sysload=0.17 cputime=2513.764 memavail=549452 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.0 pwm=0.000 Stats 62722.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=2173 bytes_read=9191 bytes_retransmit=9 bytes_invalid=6 send_seq=212 receive_seq=212 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999154 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.17 cputime=2513.813 memavail=549452 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62723.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=2179 bytes_read=9291 bytes_retransmit=9 bytes_invalid=6 send_seq=213 receive_seq=213 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999154 heater_bed: target=0 temp=20.5 pwm=0.000 3: temp=41.2 sysload=0.17 cputime=2513.860 memavail=549452 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62724.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=2185 bytes_read=9405 bytes_retransmit=9 bytes_invalid=6 send_seq=214 receive_seq=214 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999157 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.7 sysload=0.17 cputime=2513.908 memavail=549452 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62725.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=2191 bytes_read=9519 bytes_retransmit=9 bytes_invalid=6 send_seq=215 receive_seq=215 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999156 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.17 cputime=2513.958 memavail=549452 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62726.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000087 bytes_write=2197 bytes_read=9619 bytes_retransmit=9 bytes_invalid=6 send_seq=216 receive_seq=216 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999154 heater_bed: target=0 temp=20.3 pwm=0.000 3: temp=41.7 sysload=0.16 cputime=2514.006 memavail=549452 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.7 pwm=0.000 Stats 62727.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=2203 bytes_read=9761 bytes_retransmit=9 bytes_invalid=6 send_seq=217 receive_seq=217 retransmit_seq=2 srtt=0.004 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999153 heater_bed: target=0 temp=20.6 pwm=0.000 3: temp=41.2 sysload=0.16 cputime=2514.055 memavail=549452 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.6 pwm=0.000 Stats 62728.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=2209 bytes_read=9861 bytes_retransmit=9 bytes_invalid=6 send_seq=218 receive_seq=218 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999152 heater_bed: target=0 temp=21.1 pwm=0.000 3: temp=41.2 sysload=0.16 cputime=2514.104 memavail=549452 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=20.7 pwm=0.000 Stats 62729.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=2215 bytes_read=9961 bytes_retransmit=9 bytes_invalid=6 send_seq=219 receive_seq=219 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999152 heater_bed: target=0 temp=20.7 pwm=0.000 3: temp=41.2 sysload=0.16 cputime=2514.150 memavail=549452 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.4 pwm=0.000 Stats 62730.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=2221 bytes_read=10089 bytes_retransmit=9 bytes_invalid=6 send_seq=220 receive_seq=220 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999152 heater_bed: target=0 temp=20.7 pwm=0.000 3: temp=41.2 sysload=0.16 cputime=2514.199 memavail=549452 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62731.1: gcodein=0 mcu: mcu_awake=0.009 mcu_task_avg=0.000104 mcu_task_stddev=0.000086 bytes_write=2245 bytes_read=10199 bytes_retransmit=9 bytes_invalid=6 send_seq=223 receive_seq=223 retransmit_seq=2 srtt=0.003 rttvar=0.001 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999151 heater_bed: target=0 temp=21.2 pwm=0.000 3: temp=41.2 sysload=0.23 cputime=2514.250 memavail=548960 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.2 pwm=0.000 Stats 62732.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000103 mcu_task_stddev=0.000084 bytes_write=2275 bytes_read=10339 bytes_retransmit=9 bytes_invalid=6 send_seq=227 receive_seq=227 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999150 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.23 cputime=2514.305 memavail=548972 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.4 pwm=0.000 Stats 62733.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000103 mcu_task_stddev=0.000084 bytes_write=2281 bytes_read=10467 bytes_retransmit=9 bytes_invalid=6 send_seq=228 receive_seq=228 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999150 heater_bed: target=0 temp=21.2 pwm=0.000 3: temp=41.2 sysload=0.23 cputime=2514.350 memavail=548972 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62734.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000103 mcu_task_stddev=0.000084 bytes_write=2287 bytes_read=10567 bytes_retransmit=9 bytes_invalid=6 send_seq=229 receive_seq=229 retransmit_seq=2 srtt=0.003 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999149 heater_bed: target=0 temp=20.9 pwm=0.000 3: temp=41.2 sysload=0.23 cputime=2514.397 memavail=548972 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.1 pwm=0.000 Stats 62735.1: gcodein=0 mcu: mcu_awake=0.010 mcu_task_avg=0.000103 mcu_task_stddev=0.000084 bytes_write=2293 bytes_read=10667 bytes_retransmit=9 bytes_invalid=6 send_seq=230 receive_seq=230 retransmit_seq=2 srtt=0.004 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=15999149 heater_bed: target=0 temp=20.8 pwm=0.000 3: temp=41.2 sysload=0.23 cputime=2514.446 memavail=548972 print_time=0.001 buffer_time=0.000 print_stall=0 extruder: target=0 temp=21.3 pwm=0.000