From 1463f8d105a449465a2da006949cdd7f6de16c6b Mon Sep 17 00:00:00 2001 From: Mikhail Shahovalov Date: Mon, 26 May 2025 18:03:57 +0300 Subject: [PATCH] Autocommit from 2025-05-26 18:03:57 Klipper version: v0.13.0-114-g841a9ca2 Moonraker version: v0.9.3-74-g1c12414 Mainsail version: v2.14.0 --- macros/main.cfg | 5 +- mmu/base/mmu_hardware.cfg | 28 +- mmu/base/mmu_macro_vars.cfg | 2 +- mmu/base/mmu_parameters.cfg | 12 +- mmu/mmu_vars.cfg | 42 +- mmu_klipperscreen.conf | 757 ++++++++++++++++++++++++++++++++++++ printer.cfg | 23 +- toolhead_sb.cfg | 40 +- 8 files changed, 842 insertions(+), 67 deletions(-) create mode 100644 mmu_klipperscreen.conf diff --git a/macros/main.cfg b/macros/main.cfg index b4b9efc..e598fc2 100644 --- a/macros/main.cfg +++ b/macros/main.cfg @@ -129,6 +129,7 @@ gcode: {% set BED_TEMP = params.BED|default(60)|float %} {% set EXTRUDER_TEMP = params.EXTRUDER|default(210)|float %} {% set CHAMBER = params.CHAMBER|default(35)|float %} + {% set USE_PURGE = params.PURGE|default(0)|int %} {% if params.BED_TYPE %} INIT_BED_TYPE BED_TYPE="{params.BED_TYPE}" {% endif %} @@ -161,7 +162,9 @@ gcode: {% endif %} M117 STATUS_CLEANING - VORON_PURGE + {% if USE_PURGE == true %} + VORON_PURGE + {% endif %} STATUS_PRINTING RESTORE_GCODE_STATE NAME=start SKEW_PROFILE LOAD=default diff --git a/mmu/base/mmu_hardware.cfg b/mmu/base/mmu_hardware.cfg index feb44a2..f307622 100644 --- a/mmu/base/mmu_hardware.cfg +++ b/mmu/base/mmu_hardware.cfg @@ -117,16 +117,30 @@ homing_extruder: 1 # CAUTION: Normally this should be 1. 0 will disable the ho # [tmc2209 stepper_mmu_gear] uart_pin: mmu:MMU_GEAR_UART -run_current: 1.0 # +run_current: 1 # hold_current: 0.4 # Recommend to be small if not using "touch" or move (TMC stallguard) interpolate: True -sense_resistor: 0.110 # Usually 0.11, 0.15 for BTT TMC2226 +#sense_resistor: 0.110 # Usually 0.11, 0.15 for BTT TMC2226 stealthchop_threshold: 0 # Spreadcycle has more torque and better at speed # # Uncomment two lines below if you have TMC and want the ability to use filament "touch" homing with gear stepper #diag_pin: ^mmu:MMU_GEAR_DIAG # Set to MCU pin connected to TMC DIAG pin for gear stepper #driver_SGTHRS: 60 # 255 is most sensitive value, 0 is least sensitive + +#[motor_constants 17he12-1204s] +#resistance: 2.5 +#inductance: 0.0033 +#holding_torque: 0.26 +#max_current: 1.20 +#steps_per_revolution: 200 + +#[autotune_tmc stepper_mmu_gear] +#motor: 17he12-1204s +#tuning_goal: performance + + + [stepper_mmu_gear] step_pin: mmu:MMU_GEAR_STEP dir_pin: !mmu:MMU_GEAR_DIR @@ -165,7 +179,7 @@ stealthchop_threshold: 100 # Stallguard "touch" movement (slower speeds) best d [stepper_mmu_selector] step_pin: mmu:MMU_SEL_STEP -dir_pin: !mmu:MMU_SEL_DIR +dir_pin: mmu:MMU_SEL_DIR enable_pin: !mmu:MMU_SEL_ENABLE rotation_distance: 40 microsteps: 16 # Don't need high fidelity @@ -267,7 +281,7 @@ sync_feedback_tension_pin: sync_feedback_compression_pin: # These sensors are on the toolhead and often controlled by the main printer mcu -extruder_switch_pin: +extruder_switch_pin: ^!EBBCan:gpio22 toolhead_switch_pin: @@ -351,7 +365,7 @@ flowrate_samples: 20 # How many "movements" of the extruder to measure average [neopixel mmu_leds] pin: mmu:MMU_NEOPIXEL chain_count: 18 # Need number gates x1 or x2 + status leds -color_order: GRBW # Set based on your particular neopixel specification (can be comma separated list) +color_order: GRB # Set based on your particular neopixel specification (can be comma separated list) # MMU LED EFFECT SEGMENTS ---------------------------------------------------------------------------------------------- # Define neopixel LEDs for your MMU. The chain_count must be large enough for your desired ranges: @@ -392,8 +406,8 @@ color_order: GRBW # Set based on your particular neopixel specification (can be # # (comment out this whole section if you don't have/want leds; uncomment/edit LEDs fitted on your MMU) [mmu_leds] -exit_leds: neopixel:mmu_leds (1-8) -#entry_leds: neopixel:mmu_leds (9-16) +exit_leds: neopixel:mmu_leds (8-1) +entry_leds: neopixel:mmu_leds (9-16) #status_leds: neopixel:mmu_leds (17) #logo_leds: neopixel:mmu_leds (18) frame_rate: 24 diff --git a/mmu/base/mmu_macro_vars.cfg b/mmu/base/mmu_macro_vars.cfg index 0b5a374..ba02182 100644 --- a/mmu/base/mmu_macro_vars.cfg +++ b/mmu/base/mmu_macro_vars.cfg @@ -71,7 +71,7 @@ description: Happy Hare optional configuration for print start/end checks gcode: # Leave empty # These variables control the behavior of the MMU_START_SETUP and MMU_START_LOAD_INITIAL_TOOL macros -variable_user_pre_initialize_extension : '' ; Executed at start of MMU_START_SETUP. Commonly G28 to home +variable_user_pre_initialize_extension : 'G28' ; Executed at start of MMU_START_SETUP. Commonly G28 to home variable_home_mmu : False ; True/False, Whether to home mmu before print starts variable_check_gates : True ; True/False, Whether to check filament is loaded in all gates used variable_load_initial_tool : True ; True/False, Whether to automatically load initial tool diff --git a/mmu/base/mmu_parameters.cfg b/mmu/base/mmu_parameters.cfg index 8c4e579..c50332f 100644 --- a/mmu/base/mmu_parameters.cfg +++ b/mmu/base/mmu_parameters.cfg @@ -230,7 +230,7 @@ bowden_pre_unload_error_tolerance: 50 # Note: The homing_endstop will be ignored ("none") if a toolhead sensor is available unless "extruder_force_homing: 1" # extruder_homing_max: 80 # Maximum distance to advance in order to attempt to home the extruder -extruder_homing_endstop: collision # Filament homing method/endstop name (fallback if toolhead sensor not available) +extruder_homing_endstop: extruder # Filament homing method/endstop name (fallback if toolhead sensor not available) extruder_homing_buffer: 25 # Amount to reduce the fast bowden load so filament doesn't overshoot the extruder homing point extruder_collision_homing_current: 30 # % gear_stepper current (10%-100%) to use when homing to extruder homing (100 to disable) @@ -269,15 +269,15 @@ toolhead_homing_max: 40 # Maximum distance to advance in order to attempt to h # NOTE: If you have a toolhead sensor you can automate the calculation of these parameters! Read about the # `MMU_CALIBRATE_TOOLHEAD` command (https://github.com/moggieuk/Happy-Hare/wiki/Blobbing-and-Stringing#---calibrating-toolhead) # -toolhead_extruder_to_nozzle: 72 # Distance from extruder gears (entrance) to nozzle -toolhead_sensor_to_nozzle: 62 # Distance from toolhead sensor to nozzle (ignored if not fitted) -toolhead_entry_to_extruder: 8 # Distance from extruder "entry" sensor to extruder gears (ignored if not fitted) +toolhead_extruder_to_nozzle: 99.38 # Distance from extruder gears (entrance) to nozzle +toolhead_sensor_to_nozzle: 79.78 # Distance from toolhead sensor to nozzle (ignored if not fitted) +toolhead_entry_to_extruder: 13.29 # Distance from extruder "entry" sensor to extruder gears (ignored if not fitted) # This setting represents how much residual filament is left behind in the nozzle when filament is removed, it is thus # used to reduce the extruder loading length and prevent excessive blobbing but also in the calculation of purge volume. # Note that this value can also be measured with the `MMU_CALIBRATE_TOOLHEAD` procedure # -toolhead_residual_filament: 0 # Reduction in extruder loading length because of residual filament left behind +toolhead_residual_filament: 20 # Reduction in extruder loading length because of residual filament left behind # TUNING: Finally, this is the last resort tuning value to fix blobbing. It is expected that this value is NEAR ZERO as # it represents a further reduction in extruder load length to fix blobbing. If using a wipetower and you experience blobs @@ -378,7 +378,7 @@ extruder_purge_current: 100 # % of extruder current (100%-150%) to use when pur # If equipped with TMC drivers the current of the gear and extruder motors can be controlled to optimize performance. # This can be useful to control gear stepper temperature when printing with synchronized motor # -sync_to_extruder: 0 # Gear motor is synchronized to extruder during print +sync_to_extruder: 1 # Gear motor is synchronized to extruder during print sync_gear_current: 70 # % of gear_stepper current (10%-100%) to use when syncing with extruder during print sync_form_tip: 0 # Synchronize during standalone tip formation (initial part of unload) sync_purge: 0 # Synchronize during standalone purging (last part of load) diff --git a/mmu/mmu_vars.cfg b/mmu/mmu_vars.cfg index 0bd436a..37d07aa 100644 --- a/mmu/mmu_vars.cfg +++ b/mmu/mmu_vars.cfg @@ -1,8 +1,36 @@ -# This is the template file for storing Happy Hare state and calibration variables. It is pointed to -# with the [save_variables] block in 'mmu_macro_vars.cfg' -# -# If you want to use an existing "variables" file, then that is fine but make sure you copy the -# "mmu__revision" line to it because Happy Hare will look for this to validate correct setup -# [Variables] -mmu__revision = 0 +mmu__revision = 943 +mmu_calibration_bowden_home = 'encoder' +mmu_calibration_bowden_lengths = [1785.0, 1785.0, 1785.0, 1785.0, 1785.0, 1785.0, 1785.0, 1785.0] +mmu_calibration_clog_length = 23.7 +mmu_encoder_resolution = 0.960769 +mmu_gear_rotation_distances = [22.845345, -1, 23.000827, -1, 23.065147, -1, -1, 22.924328] +mmu_selector_bypass = 179.2 +mmu_selector_offsets = [4.0, 27.0, 49.9, 72.9, 95.9, 118.9, 141.8, 164.8] +mmu_servo_angles = {'down': 145, 'up': 30, 'move': 50} +mmu_state_enable_endless_spool = 0 +mmu_state_filament_pos = 10 +mmu_state_filament_remaining = 0 +mmu_state_filament_remaining_color = '' +mmu_state_gate_color = ['green', 'grey', 'black', '', 'cyan', '', '', '3d3846'] +mmu_state_gate_filament_name = ['', '', '', '', '', '', '', ''] +mmu_state_gate_material = ['ABS', 'ABS', 'ABS', '', 'ABS', '', '', 'PETG'] +mmu_state_gate_selected = 7 +mmu_state_gate_speed_override = [100, 100, 100, 100, 100, 100, 100, 100] +mmu_state_gate_spool_id = [-1, -1, -1, -1, -1, -1, -1, -1] +mmu_state_gate_status = [1, 1, 1, 0, 1, 0, 0, 1] +mmu_state_gate_temperature = [200, 200, 200, 200, 200, 200, 200, 200] +mmu_state_last_tool = 2 +mmu_state_tool_selected = 7 +mmu_state_tool_to_gate_map = [0, 1, 2, 3, 4, 5, 6, 7] +mmu_statistics_counters = {'servo_down': {'count': 228, 'limit': 5000, 'warning': 'Inspect servo arm for wear/damage', 'pause': False}, 'mmu_restarts': {'count': 37, 'limit': -1, 'warning': ''}, 'cutter_blade': {'count': 0, 'limit': 3000, 'warning': 'Inspect/replace filament cutting blade', 'pause': False}} +mmu_statistics_gate_0 = {'pauses': 0, 'loads': 6, 'load_distance': 8546.739, 'load_delta': 2816.713, 'unloads': 8, 'unload_distance': 3470.0, 'unload_delta': -31.043, 'load_failures': 3, 'unload_failures': 2, 'quality': 0.8889759309441141} +mmu_statistics_gate_1 = {'pauses': 1, 'loads': 2, 'load_distance': 3363.716, 'load_delta': -30.681, 'unloads': 1, 'unload_distance': 1720.0, 'unload_delta': -15.149, 'load_failures': 1, 'unload_failures': 0, 'quality': 1.0071207044795385} +mmu_statistics_gate_2 = {'pauses': 0, 'loads': 4, 'load_distance': 6793.725, 'load_delta': 1828.471, 'unloads': 5, 'unload_distance': 1735.0, 'unload_delta': 2.733, 'load_failures': 2, 'unload_failures': 0, 'quality': 0.9016086335436964} +mmu_statistics_gate_3 = {'pauses': 0, 'loads': 0, 'load_distance': 0.0, 'load_delta': 0.0, 'unloads': 0, 'unload_distance': 0.0, 'unload_delta': 0.0, 'load_failures': 0, 'unload_failures': 0, 'quality': -1.0} +mmu_statistics_gate_4 = {'pauses': 0, 'loads': 1, 'load_distance': 1729.275, 'load_delta': 1.813, 'unloads': 2, 'unload_distance': 0.0, 'unload_delta': 0.0, 'load_failures': 0, 'unload_failures': 1, 'quality': 0.9989517366625948} +mmu_statistics_gate_5 = {'pauses': 0, 'loads': 0, 'load_distance': 0.0, 'load_delta': 0.0, 'unloads': 0, 'unload_distance': 0.0, 'unload_delta': 0.0, 'load_failures': 0, 'unload_failures': 0, 'quality': -1.0} +mmu_statistics_gate_6 = {'pauses': 0, 'loads': 0, 'load_distance': 0.0, 'load_delta': 0.0, 'unloads': 0, 'unload_distance': 0.0, 'unload_delta': 0.0, 'load_failures': 0, 'unload_failures': 0, 'quality': -1.0} +mmu_statistics_gate_7 = {'pauses': 2, 'loads': 1, 'load_distance': 1697.711, 'load_delta': 132.618, 'unloads': 0, 'unload_distance': 0.0, 'unload_delta': 0.0, 'load_failures': 0, 'unload_failures': 0, 'quality': 0.921884173980515} +mmu_statistics_swaps = {'pre_load': 4.24, 'purge': 6.41, 'post_load': 8.48, 'load': 500.05, 'pre_unload': 4.85, 'form_tip': 134.27, 'unload': 665.18, 'post_unload': 3.93, 'total': 520.23, 'total_swaps': 7, 'swaps_since_pause': 1, 'swaps_since_pause_record': 3, 'total_pauses': 3, 'pause': 57.49} + diff --git a/mmu_klipperscreen.conf b/mmu_klipperscreen.conf new file mode 100644 index 0000000..7a8144e --- /dev/null +++ b/mmu_klipperscreen.conf @@ -0,0 +1,757 @@ +# Happy Hare KlipperScreen menus. Don't remove this line, installer needs it! +# +# Copyright (C) 2023-2025 moggieuk#6538 (discord) +# moggieuk@hotmail.com +# +# Menu options: +# name, icon, panel, method, confirm, enable, params, style, NEW: show_disabled, refresh_on +# +# Additional functionality added with this MMU Happy Hare fork: +# +# Options: +# show_disabled - True will cause 'enable' logic to show button disabled rather than not display it +# refresh_on - List of printer variables to monitor real time for 'show_disabled' +# +# Menu name: +# can specify multiple roots, e.g. [menu __main,__print mymenu] +# will duplicate on both __main and __print menus +# (no space after comman) +# +# Useful for custom single purpose use (like dedicated SpoolMan display on filament rack) +# you can make any panel "sticky" (never changes without navigation) by adding the following. +# Caution: only intended for monitoring panels - NO NAVIGATION +# [main] +# sticky_panel: +# + +[menu __main,__print mmu] +name: {{ gettext('MMU') }} +icon: mmu_carrot +panel: mmu_main +enable: {{ printer.mmu is defined and not klipperscreen.side_mmu_shortcut }} + +[menu __main,__print mmu ttg] +name: {{ gettext('Manage TTG...') }} +icon: mmu_ttg_map +panel: mmu_toolmap + +[menu __main,__print mmu filaments] +name: {{ gettext('Filaments...') }} +icon: mmu_filaments +panel: mmu_filaments + +[menu __main,__print mmu spoolman] +name: {{ gettext('Spoolman...') }} +icon: spoolman +panel: mmu_spoolman +enable: {{ moonraker.spoolman }} +show_disabled: True + +[menu __main,__print mmu tools] +name: {{ gettext('Load Tool...') }} +icon: extruder +enable: {{ printer.mmu.print_state != "printing" }} +show_disabled: True +refresh_on: printer.mmu.print_state + +# Generated menus for each tool/gate... +[menu __main,__print mmu tools T0] +name: {{ gettext('T0') }} +icon: mmu_t0 +method: printer.gcode.script +params: { "script":"MMU_CHANGE_TOOL TOOL=0 QUIET=1" } +enable: {{ (printer.mmu.tool != 0 or (printer.mmu.tool == 0 and printer.mmu.filament != "Loaded")) and printer.mmu.gate_status[0] != 0 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 0 }} +show_disabled: True +refresh_on: printer.mmu.tool, printer.mmu.gate_status, printer.mmu.filament, printer.mmu.action +[menu __main,__print mmu tools T1] +name: {{ gettext('T1') }} +icon: mmu_t1 +method: printer.gcode.script +params: { "script":"MMU_CHANGE_TOOL TOOL=1 QUIET=1" } +enable: {{ (printer.mmu.tool != 1 or (printer.mmu.tool == 1 and printer.mmu.filament != "Loaded")) and printer.mmu.gate_status[1] != 0 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 1 }} +show_disabled: True +refresh_on: printer.mmu.tool, printer.mmu.gate_status, printer.mmu.filament, printer.mmu.action +[menu __main,__print mmu tools T2] +name: {{ gettext('T2') }} +icon: mmu_t2 +method: printer.gcode.script +params: { "script":"MMU_CHANGE_TOOL TOOL=2 QUIET=1" } +enable: {{ (printer.mmu.tool != 2 or (printer.mmu.tool == 2 and printer.mmu.filament != "Loaded")) and printer.mmu.gate_status[2] != 0 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 2 }} +show_disabled: True +refresh_on: printer.mmu.tool, printer.mmu.gate_status, printer.mmu.filament, printer.mmu.action +[menu __main,__print mmu tools T3] +name: {{ gettext('T3') }} +icon: mmu_t3 +method: printer.gcode.script +params: { "script":"MMU_CHANGE_TOOL TOOL=3 QUIET=1" } +enable: {{ (printer.mmu.tool != 3 or (printer.mmu.tool == 3 and printer.mmu.filament != "Loaded")) and printer.mmu.gate_status[3] != 0 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 3 }} +show_disabled: True +refresh_on: printer.mmu.tool, printer.mmu.gate_status, printer.mmu.filament, printer.mmu.action +[menu __main,__print mmu tools T4] +name: {{ gettext('T4') }} +icon: mmu_t4 +method: printer.gcode.script +params: { "script":"MMU_CHANGE_TOOL TOOL=4 QUIET=1" } +enable: {{ (printer.mmu.tool != 4 or (printer.mmu.tool == 4 and printer.mmu.filament != "Loaded")) and printer.mmu.gate_status[4] != 0 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 4 }} +show_disabled: True +refresh_on: printer.mmu.tool, printer.mmu.gate_status, printer.mmu.filament, printer.mmu.action +[menu __main,__print mmu tools T5] +name: {{ gettext('T5') }} +icon: mmu_t5 +method: printer.gcode.script +params: { "script":"MMU_CHANGE_TOOL TOOL=5 QUIET=1" } +enable: {{ (printer.mmu.tool != 5 or (printer.mmu.tool == 5 and printer.mmu.filament != "Loaded")) and printer.mmu.gate_status[5] != 0 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 5 }} +show_disabled: True +refresh_on: printer.mmu.tool, printer.mmu.gate_status, printer.mmu.filament, printer.mmu.action +[menu __main,__print mmu tools T6] +name: {{ gettext('T6') }} +icon: mmu_t6 +method: printer.gcode.script +params: { "script":"MMU_CHANGE_TOOL TOOL=6 QUIET=1" } +enable: {{ (printer.mmu.tool != 6 or (printer.mmu.tool == 6 and printer.mmu.filament != "Loaded")) and printer.mmu.gate_status[6] != 0 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 6 }} +show_disabled: True +refresh_on: printer.mmu.tool, printer.mmu.gate_status, printer.mmu.filament, printer.mmu.action +[menu __main,__print mmu tools T7] +name: {{ gettext('T7') }} +icon: mmu_t7 +method: printer.gcode.script +params: { "script":"MMU_CHANGE_TOOL TOOL=7 QUIET=1" } +enable: {{ (printer.mmu.tool != 7 or (printer.mmu.tool == 7 and printer.mmu.filament != "Loaded")) and printer.mmu.gate_status[7] != 0 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 7 }} +show_disabled: True +refresh_on: printer.mmu.tool, printer.mmu.gate_status, printer.mmu.filament, printer.mmu.action + +[menu __main,__print mmu preload_gates] +name: {{ gettext('Preload Gate...') }} +icon: mmu_reset +enable: {{ printer.mmu.print_state != "printing" }} +show_disabled: True +refresh_on: printer.mmu.print_state + +# Generated menus for each tool/gate... +[menu __main,__print mmu preload_gates PG0] +name: {{ gettext('Preload Gate #0') }} +icon: mmu_reset +method: printer.gcode.script +params: { "script":"MMU_PRELOAD GATE=0" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 0 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu preload_gates PG1] +name: {{ gettext('Preload Gate #1') }} +icon: mmu_reset +method: printer.gcode.script +params: { "script":"MMU_PRELOAD GATE=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 1 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu preload_gates PG2] +name: {{ gettext('Preload Gate #2') }} +icon: mmu_reset +method: printer.gcode.script +params: { "script":"MMU_PRELOAD GATE=2" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 2 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu preload_gates PG3] +name: {{ gettext('Preload Gate #3') }} +icon: mmu_reset +method: printer.gcode.script +params: { "script":"MMU_PRELOAD GATE=3" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 3 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu preload_gates PG4] +name: {{ gettext('Preload Gate #4') }} +icon: mmu_reset +method: printer.gcode.script +params: { "script":"MMU_PRELOAD GATE=4" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 4 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu preload_gates PG5] +name: {{ gettext('Preload Gate #5') }} +icon: mmu_reset +method: printer.gcode.script +params: { "script":"MMU_PRELOAD GATE=5" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 5 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu preload_gates PG6] +name: {{ gettext('Preload Gate #6') }} +icon: mmu_reset +method: printer.gcode.script +params: { "script":"MMU_PRELOAD GATE=6" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 6 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu preload_gates PG7] +name: {{ gettext('Preload Gate #7') }} +icon: mmu_reset +method: printer.gcode.script +params: { "script":"MMU_PRELOAD GATE=7" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 7 }} +show_disabled: True +refresh_on: printer.mmu.action + +[menu __main,__print mmu eject_gates] +name: {{ gettext('Eject Gate...') }} +icon: mmu_eject +enable: {{ printer.mmu.print_state != "printing" }} +show_disabled: True +refresh_on: printer.mmu.print_state + +# Generated menus for each tool/gate... +[menu __main,__print mmu eject_gates G0] +name: {{ gettext('Eject Gate #0') }} +icon: mmu_eject +method: printer.gcode.script +params: { "script":"MMU_EJECT FORCE=1 GATE=0" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.gate_status[0] != 0 and printer.mmu.num_gates > 0 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main,__print mmu eject_gates G1] +name: {{ gettext('Eject Gate #1') }} +icon: mmu_eject +method: printer.gcode.script +params: { "script":"MMU_EJECT FORCE=1 GATE=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.gate_status[1] != 0 and printer.mmu.num_gates > 1 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main,__print mmu eject_gates G2] +name: {{ gettext('Eject Gate #2') }} +icon: mmu_eject +method: printer.gcode.script +params: { "script":"MMU_EJECT FORCE=1 GATE=2" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.gate_status[2] != 0 and printer.mmu.num_gates > 2 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main,__print mmu eject_gates G3] +name: {{ gettext('Eject Gate #3') }} +icon: mmu_eject +method: printer.gcode.script +params: { "script":"MMU_EJECT FORCE=1 GATE=3" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.gate_status[3] != 0 and printer.mmu.num_gates > 3 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main,__print mmu eject_gates G4] +name: {{ gettext('Eject Gate #4') }} +icon: mmu_eject +method: printer.gcode.script +params: { "script":"MMU_EJECT FORCE=1 GATE=4" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.gate_status[4] != 0 and printer.mmu.num_gates > 4 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main,__print mmu eject_gates G5] +name: {{ gettext('Eject Gate #5') }} +icon: mmu_eject +method: printer.gcode.script +params: { "script":"MMU_EJECT FORCE=1 GATE=5" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.gate_status[5] != 0 and printer.mmu.num_gates > 5 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main,__print mmu eject_gates G6] +name: {{ gettext('Eject Gate #6') }} +icon: mmu_eject +method: printer.gcode.script +params: { "script":"MMU_EJECT FORCE=1 GATE=6" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.gate_status[6] != 0 and printer.mmu.num_gates > 6 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main,__print mmu eject_gates G7] +name: {{ gettext('Eject Gate #7') }} +icon: mmu_eject +method: printer.gcode.script +params: { "script":"MMU_EJECT FORCE=1 GATE=7" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.gate_status[7] != 0 and printer.mmu.num_gates > 7 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action + +[menu __main,__print mmu check_gates] +name: {{ gettext('Check Gate...') }} +icon: mmu_checkgates +enable: {{ printer.mmu.print_state != "printing" }} +show_disabled: True +refresh_on: printer.mmu.print_state + +# Generated menus for each tool/gate... +[menu __main,__print mmu check_gates CG0] +name: {{ gettext('Check Gate #0') }} +icon: mmu_checkgate0 +method: printer.gcode.script +params: { "script":"MMU_CHECK_GATE GATE=0 QUIET=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 0 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu check_gates CG1] +name: {{ gettext('Check Gate #1') }} +icon: mmu_checkgate1 +method: printer.gcode.script +params: { "script":"MMU_CHECK_GATE GATE=1 QUIET=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 1 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu check_gates CG2] +name: {{ gettext('Check Gate #2') }} +icon: mmu_checkgate2 +method: printer.gcode.script +params: { "script":"MMU_CHECK_GATE GATE=2 QUIET=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 2 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu check_gates CG3] +name: {{ gettext('Check Gate #3') }} +icon: mmu_checkgate3 +method: printer.gcode.script +params: { "script":"MMU_CHECK_GATE GATE=3 QUIET=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 3 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu check_gates CG4] +name: {{ gettext('Check Gate #4') }} +icon: mmu_checkgate4 +method: printer.gcode.script +params: { "script":"MMU_CHECK_GATE GATE=4 QUIET=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 4 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu check_gates CG5] +name: {{ gettext('Check Gate #5') }} +icon: mmu_checkgate5 +method: printer.gcode.script +params: { "script":"MMU_CHECK_GATE GATE=5 QUIET=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 5 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu check_gates CG6] +name: {{ gettext('Check Gate #6') }} +icon: mmu_checkgate6 +method: printer.gcode.script +params: { "script":"MMU_CHECK_GATE GATE=6 QUIET=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 6 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main,__print mmu check_gates CG7] +name: {{ gettext('Check Gate #7') }} +icon: mmu_checkgate7 +method: printer.gcode.script +params: { "script":"MMU_CHECK_GATE GATE=7 QUIET=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 7 }} +show_disabled: True +refresh_on: printer.mmu.action + +[menu __main,__print mmu select_gates] +name: {{ gettext('Select Gate...') }} +icon: mmu_select_gate +enable: {{ printer.mmu.print_state != "printing" }} +show_disabled: True +refresh_on: printer.mmu.print_state + +# Example: to just select the tool (not load) +#[menu __main,__print mmu select_tools] +#name: {{ gettext('Select Tool...') }} +#icon: extruder +#enable: {{ printer.mmu.print_state != "printing" }} +#show_disabled: True +#refresh_on: printer.mmu.print_state +# +#MMU_iter_select_tools + +[menu __main,__print mmu select_gates bypass}] +name: {{ gettext('Select Bypass') }} +icon: mmu_select_bypass +method: printer.gcode.script +params: {"script":"MMU_SELECT_BYPASS"} +enable: {{ printer.mmu.gate != -2 and printer.mmu.has_bypass }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.has_bypass + +# Generated menus for each tool/gate... +[menu __main,__print mmu select_gates G0] +name: {{ gettext('Select Gate #0') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=0" } +enable: {{ printer.mmu.gate != 0 and printer.mmu.num_gates > 0 }} +show_disabled: True +refresh_on: printer.mmu.gate +[menu __main,__print mmu select_gates G1] +name: {{ gettext('Select Gate #1') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=1" } +enable: {{ printer.mmu.gate != 1 and printer.mmu.num_gates > 1 }} +show_disabled: True +refresh_on: printer.mmu.gate +[menu __main,__print mmu select_gates G2] +name: {{ gettext('Select Gate #2') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=2" } +enable: {{ printer.mmu.gate != 2 and printer.mmu.num_gates > 2 }} +show_disabled: True +refresh_on: printer.mmu.gate +[menu __main,__print mmu select_gates G3] +name: {{ gettext('Select Gate #3') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=3" } +enable: {{ printer.mmu.gate != 3 and printer.mmu.num_gates > 3 }} +show_disabled: True +refresh_on: printer.mmu.gate +[menu __main,__print mmu select_gates G4] +name: {{ gettext('Select Gate #4') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=4" } +enable: {{ printer.mmu.gate != 4 and printer.mmu.num_gates > 4 }} +show_disabled: True +refresh_on: printer.mmu.gate +[menu __main,__print mmu select_gates G5] +name: {{ gettext('Select Gate #5') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=5" } +enable: {{ printer.mmu.gate != 5 and printer.mmu.num_gates > 5 }} +show_disabled: True +refresh_on: printer.mmu.gate +[menu __main,__print mmu select_gates G6] +name: {{ gettext('Select Gate #6') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=6" } +enable: {{ printer.mmu.gate != 6 and printer.mmu.num_gates > 6 }} +show_disabled: True +refresh_on: printer.mmu.gate +[menu __main,__print mmu select_gates G7] +name: {{ gettext('Select Gate #7') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=7" } +enable: {{ printer.mmu.gate != 7 and printer.mmu.num_gates > 7 }} +show_disabled: True +refresh_on: printer.mmu.gate + +[menu __main,__print mmu status] +name: {{ gettext('Display Status') }} +icon: info +method: printer.gcode.script +params: {"script":"MMU_STATUS"} +enable: {{ printer.mmu.action == "Idle" }} +show_disabled: True +refresh_on: printer.mmu.action + +[menu __main,__print mmu print] +name: {{ gettext('Print Stats') }} +icon: mmu_status +method: printer.gcode.script +params: {"script":"MMU_STATS"} +enable: {{ printer.mmu.action == "Idle" }} +show_disabled: True +refresh_on: printer.mmu.action + +[menu __main,__print mmu reset] +name: {{ gettext('Reset Stats') }} +icon: mmu_stats_reset +method: printer.gcode.script +confirm: Are you sure you want to reset MMU statistics? +params: {"script":"MMU_STATS RESET=1"} +enable: {{ printer.mmu.action == "Idle" }} +show_disabled: True +refresh_on: printer.mmu.action + +[menu __main,__print mmu enable_endless_spool] +name: {{ gettext('Enable E.Spool') }} +icon: mmu_enable_endless_spool +method: printer.gcode.script +params: {"script":"MMU_ENDLESS_SPOOL ENABLE=1"} +enable: {{ printer.mmu.endless_spool == 0 }} +show_disabled: True +refresh_on: printer.mmu.endless_spool + +[menu __main,__print mmu disable_endless_spool] +name: {{ gettext('Disable E.Spool') }} +icon: mmu_disable_endless_spool +method: printer.gcode.script +params: {"script":"MMU_ENDLESS_SPOOL ENABLE=0"} +enable: {{ printer.mmu.endless_spool == 1 }} +show_disabled: True +refresh_on: printer.mmu.endless_spool +[menu __main,__print mmu led_disable] + +name: {{ gettext('Disable LED') }} +icon: mmu_led_disable +method: printer.gcode.script +params: {"script":"MMU_LED ENABLE=0 QUIET=1"} +enable: {{ printer.mmu.enabled and not printer.mmu.print_state == "standby" }} +show_disabled: True +refresh_on: printer.mmu.enabled, printer.mmu.print_state + +[menu __main,__print mmu led_gate_status] +name: {{ gettext('LED Gate Status') }} +icon: mmu_led_gate_status +method: printer.gcode.script +params: {"script":"MMU_LED ENABLE=1 EXIT_EFFECT=gate_status QUIET=1"} +enable: {{ printer.mmu.enabled and not printer.mmu.print_state == "standby" }} +show_disabled: True +refresh_on: printer.mmu.enabled, printer.mmu.print_state + +[menu __main,__print mmu led_filament_color] +name: {{ gettext('LED Fil. Color') }} +icon: mmu_led_filament_color +method: printer.gcode.script +params: {"script":"MMU_LED ENABLE=1 EXIT_EFFECT=filament_color QUIET=1"} +enable: {{ printer.mmu.enabled and not printer.mmu.print_state == "standby" }} +show_disabled: True +refresh_on: printer.mmu.enabled, printer.mmu.print_state + +# Example: User added ... +[menu __main,__print mmu spare1] +name: {{ gettext('user def') }} +icon: mmu_carrot +enable: False +show_disabled: False + +# Examples: for basic management +#[menu __main,__print mmu home] +#name: {{ gettext('Home Selector') }} +#icon: home +#method: printer.gcode.script +#params: {"script":"MMU_HOME"} +# +#[menu __main,__print mmu servoup] +#name: {{ gettext('Servo UP') }} +#icon: arrow-up +#method: printer.gcode.script +#params: {"script":"MMU_SERVO POS=up"} +#enable: {{ printer.mmu.servo != "Up" }} +#show_disabled: True +#refresh_on: printer.mmu.servo +# +#[menu __main,__print mmu servodown] +#name: {{ gettext('Servo Down') }} +#icon: arrow-down +#method: printer.gcode.script +#params: {"script":"MMU_SERVO POS=down"} +#enable: {{ printer.mmu.servo != "Down" }} +#show_disabled: True +#refresh_on: printer.mmu.servo +# +#[menu __main,__print mmu motoroff] +#name: {{ gettext('Disable Motors') }} +#icon: motor-off +#method: printer.gcode.script +#confirm: "This will invalidate selector position and require rehoming. Are you sure?" +#params: {"script":"MMU_MOTORS_OFF"} +# +# ---------- MMU Manage submenu end + + +# ---------- MMU config/calibration menu +# +[menu __main more mmu_calib] +name: {{ gettext('MMU Setup') }} +icon: mmu_gear +enable: {{ printer.mmu is defined }} + +[menu __main more mmu_calib home] +name: {{ gettext('Home') }} +icon: home +method: printer.gcode.script +params: {"script":"MMU_HOME"} +enable: {{ printer.mmu.selector_type and printer.mmu.selector_type != "VirtualSelector" }} +show_disabled: True + +[menu __main more mmu_calib select_gates] +name: {{ gettext('Select Gate...') }} +icon: mmu_select_gate + +# Generated menus for each tool/gate... +[menu __main more mmu_calib select_gates G0] +name: {{ gettext('Select Gate #0') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=0" } +enable: {{ printer.mmu.gate != 0 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 0 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main more mmu_calib select_gates G1] +name: {{ gettext('Select Gate #1') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=1" } +enable: {{ printer.mmu.gate != 1 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 1 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main more mmu_calib select_gates G2] +name: {{ gettext('Select Gate #2') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=2" } +enable: {{ printer.mmu.gate != 2 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 2 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main more mmu_calib select_gates G3] +name: {{ gettext('Select Gate #3') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=3" } +enable: {{ printer.mmu.gate != 3 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 3 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main more mmu_calib select_gates G4] +name: {{ gettext('Select Gate #4') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=4" } +enable: {{ printer.mmu.gate != 4 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 4 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main more mmu_calib select_gates G5] +name: {{ gettext('Select Gate #5') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=5" } +enable: {{ printer.mmu.gate != 5 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 5 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main more mmu_calib select_gates G6] +name: {{ gettext('Select Gate #6') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=6" } +enable: {{ printer.mmu.gate != 6 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 6 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action +[menu __main more mmu_calib select_gates G7] +name: {{ gettext('Select Gate #7') }} +icon: mmu_select_gate +method: printer.gcode.script +params: { "script":"MMU_SELECT GATE=7" } +enable: {{ printer.mmu.gate != 7 and printer.mmu.action == "Idle" and printer.mmu.num_gates > 7 }} +show_disabled: True +refresh_on: printer.mmu.gate, printer.mmu.action + +[menu __main more mmu_calib grip] +name: {{ gettext('Test Grip') }} +icon: mmu_grip +method: printer.gcode.script +params: {"script":"MMU_TEST_GRIP"} + +[menu __main more mmu_calib formtip] +name: {{ gettext('Form Tip') }} +icon: mmu_formtip +method: printer.gcode.script +params: {"script":"MMU_FORM_TIP"} + +[menu __main more mmu_calib servoup] +name: {{ gettext('Servo UP') }} +icon: arrow-up +method: printer.gcode.script +params: {"script":"MMU_SERVO POS=up"} +enable: {{ printer.mmu.selector_type and printer.mmu.selector_type != "VirtualSelector" and printer.mmu.servo != "Up" }} +show_disabled: True +refresh_on: printer.mmu.servo + +[menu __main more mmu_calib servomove] +name: {{ gettext('Servo MOVE') }} +icon: arrow-right +method: printer.gcode.script +params: {"script":"MMU_SERVO POS=move"} +enable: {{ printer.mmu.selector_type and printer.mmu.selector_type != "VirtualSelector" and printer.mmu.servo != "Move" }} +show_disabled: True +refresh_on: printer.mmu.servo + +[menu __main more mmu_calib servodown] +name: {{ gettext('Servo DOWN') }} +icon: arrow-down +method: printer.gcode.script +params: {"script":"MMU_SERVO POS=down"} +enable: {{ printer.mmu.selector_type and printer.mmu.selector_type != "VirtualSelector" and printer.mmu.servo != "Down" }} +show_disabled: True +refresh_on: printer.mmu.servo + +[menu __main more mmu_calib encoder] +name: {{ gettext('Cal. Encoder') }} +icon: mmu_encodercal +method: printer.gcode.script +params: {"script":"MMU_CALIBRATE_ENCODER"} + +[menu __main more mmu_calib all] +name: {{ gettext('Calibrate ALL') }} +icon: extruder +method: printer.gcode.script +confirm: This will calibrate all gates. Are you sure? +params: {"script":"MMU_CALIBRATE_GATES ALL=1"} + +[menu __main more mmu_calib gate] +name: {{ gettext('Cal. Gate...') }} +icon: mmu_calibrate + +# Generated menus for each tool/gate... +[menu __main more mmu_calib gate CG0] +name: {{ gettext('Calibrate #0') }} +icon: mmu_calibrate +method: printer.gcode.script +params: { "script":"MMU_CALIBRATE_GATES GATE=0" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 0 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main more mmu_calib gate CG1] +name: {{ gettext('Calibrate #1') }} +icon: mmu_calibrate +method: printer.gcode.script +params: { "script":"MMU_CALIBRATE_GATES GATE=1" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 1 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main more mmu_calib gate CG2] +name: {{ gettext('Calibrate #2') }} +icon: mmu_calibrate +method: printer.gcode.script +params: { "script":"MMU_CALIBRATE_GATES GATE=2" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 2 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main more mmu_calib gate CG3] +name: {{ gettext('Calibrate #3') }} +icon: mmu_calibrate +method: printer.gcode.script +params: { "script":"MMU_CALIBRATE_GATES GATE=3" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 3 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main more mmu_calib gate CG4] +name: {{ gettext('Calibrate #4') }} +icon: mmu_calibrate +method: printer.gcode.script +params: { "script":"MMU_CALIBRATE_GATES GATE=4" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 4 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main more mmu_calib gate CG5] +name: {{ gettext('Calibrate #5') }} +icon: mmu_calibrate +method: printer.gcode.script +params: { "script":"MMU_CALIBRATE_GATES GATE=5" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 5 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main more mmu_calib gate CG6] +name: {{ gettext('Calibrate #6') }} +icon: mmu_calibrate +method: printer.gcode.script +params: { "script":"MMU_CALIBRATE_GATES GATE=6" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 6 }} +show_disabled: True +refresh_on: printer.mmu.action +[menu __main more mmu_calib gate CG7] +name: {{ gettext('Calibrate #7') }} +icon: mmu_calibrate +method: printer.gcode.script +params: { "script":"MMU_CALIBRATE_GATES GATE=7" } +enable: {{ printer.mmu.action == "Idle" and printer.mmu.num_gates > 7 }} +show_disabled: True +refresh_on: printer.mmu.action +# +# ---------- MMU config/calibration end + diff --git a/printer.cfg b/printer.cfg index 8019f03..daa2f03 100644 --- a/printer.cfg +++ b/printer.cfg @@ -4,8 +4,8 @@ [include hbb.cfg] # Happy Hare -#[include mmu/base/*.cfg] -#[include mmu/optional/client_macros.cfg] +[include mmu/base/*.cfg] +[include mmu/optional/client_macros.cfg] #[include mmu/addons/blobifier.cfg] #[include mmu/addons/mmu_erec_cutter.cfg] @@ -215,20 +215,19 @@ algorithm: bicubic #*# [bed_mesh default] #*# version = 1 #*# points = -#*# 0.030000, -0.002813, -0.000000, 0.052812 -#*# 0.031562, 0.004375, 0.020000, 0.061875 -#*# 0.033125, -0.002188, 0.000625, 0.059687 -#*# 0.038750, 0.025625, 0.032500, 0.070937 -#*# x_count = 4 -#*# y_count = 4 +#*# 0.045312, 0.016250, 0.030937 +#*# 0.045312, 0.009375, 0.050312 +#*# 0.040937, 0.015312, 0.052187 +#*# x_count = 3 +#*# y_count = 3 #*# mesh_x_pps = 2 #*# mesh_y_pps = 2 #*# algo = lagrange #*# tension = 0.2 -#*# min_x = 82.47999999999999 -#*# max_x = 267.46 -#*# min_y = 76.6553 -#*# max_y = 272.82529999999997 +#*# min_x = 106.493 +#*# max_x = 243.853 +#*# min_y = 119.121 +#*# max_y = 230.50099999999998 #*# #*# [probe] #*# z_offset = -0.870 diff --git a/toolhead_sb.cfg b/toolhead_sb.cfg index 69a41c4..077294d 100644 --- a/toolhead_sb.cfg +++ b/toolhead_sb.cfg @@ -112,39 +112,13 @@ motor: ldo-36sth20-1004ahg-9T -[filament_switch_sensor G2E] -pause_on_runout: True -# When set to True, a PAUSE will execute immediately after a runout -# is detected. Note that if pause_on_runout is False and the -# runout_gcode is omitted then runout detection is disabled. Default -# is True. -runout_gcode: -# A list of G-Code commands to execute after a filament runout is -# detected. See docs/Command_Templates.md for G-Code format. If -# pause_on_runout is set to True this G-Code will run after the -# PAUSE is complete. The default is not to run any G-Code commands. - UNLOAD_FILAMENT -insert_gcode: -# A list of G-Code commands to execute after a filament insert is -# detected. See docs/Command_Templates.md for G-Code format. The -# default is not to run any G-Code commands, which disables insert -# detection. - LOAD_FILAMENT -#event_delay: 3.0 -# The minimum amount of time in seconds to delay between events. -# Events triggered during this time period will be silently -# ignored. The default is 3 seconds. -#pause_delay: 0.5 -# The amount of time to delay, in seconds, between the pause command -# dispatch and execution of the runout_gcode. It may be useful to -# increase this delay if OctoPrint exhibits strange pause behavior. -# Default is 0.5 seconds. -#debounce_delay: 1 -# A period of time in seconds to debounce events prior to running the -# switch gcode. The switch must he held in a single state for at least -# this long to activate. If the switch is toggled on/off during this delay, -# the event is ignored. Default is 0. -switch_pin: ^!EBBCan:gpio22 +#[filament_switch_sensor G2E] +#pause_on_runout: True +#runout_gcode: + #UNLOAD_FILAMENT +#insert_gcode: + #LOAD_FILAMENT +#switch_pin: ^!EBBCan:gpio22 #####################################################################