diff --git a/config/machine.cfg b/config/machine.cfg index 835c6b101..5376ff49e 100644 --- a/config/machine.cfg +++ b/config/machine.cfg @@ -50,4 +50,6 @@ resolution: 0.1 [include ../macros/miscs/debugging.cfg] [include ../macros/miscs/startup.cfg] +[include ../macros/hardware_functions/knomi.cfg] + [include ../scripts/*.cfg] diff --git a/macros/base/homing/homing_override.cfg b/macros/base/homing/homing_override.cfg index 3171a585c..cee4d4004 100644 --- a/macros/base/homing/homing_override.cfg +++ b/macros/base/homing/homing_override.cfg @@ -16,6 +16,7 @@ gcode: {% set z_drop_speed = printer["gcode_macro _USER_VARIABLES"].z_drop_speed * 60 %} {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} {% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %} + {% set homing_first = printer["gcode_macro _USER_VARIABLES"].homing_first|string|upper %} {% set x_homing_backoff, y_homing_backoff = printer["gcode_macro _USER_VARIABLES"].homing_backoff_distance_xy|map('float') %} @@ -37,6 +38,8 @@ gcode: STATUS_LEDS COLOR="HOMING" {% endif %} + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=True + # which axes have been requested for homing {% if not 'X' in params and not 'Y' in params @@ -349,6 +352,8 @@ gcode: {% if status_leds_enabled %} STATUS_LEDS COLOR="READY" {% endif %} + + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=False [gcode_macro _GOTO_Z_PROBE] diff --git a/macros/base/probing/overides/bed_mesh_calibrate.cfg b/macros/base/probing/overides/bed_mesh_calibrate.cfg index 968923ec2..8982e319d 100644 --- a/macros/base/probing/overides/bed_mesh_calibrate.cfg +++ b/macros/base/probing/overides/bed_mesh_calibrate.cfg @@ -15,6 +15,8 @@ gcode: {% endif %} _CG28 + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True + ACTIVATE_PROBE {% if probe_type_enabled == "dockable" %} @@ -28,3 +30,6 @@ gcode: {% endif %} DEACTIVATE_PROBE + + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False + diff --git a/macros/base/probing/overides/qgl.cfg b/macros/base/probing/overides/qgl.cfg index a788d0584..748111a1e 100644 --- a/macros/base/probing/overides/qgl.cfg +++ b/macros/base/probing/overides/qgl.cfg @@ -15,6 +15,8 @@ gcode: {% endif %} _CG28 + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=qgling VALUE=True + ACTIVATE_PROBE # Set the tilting acceleration prior to any movement @@ -28,3 +30,6 @@ gcode: SET_VELOCITY_LIMIT ACCEL={saved_accel} ACCEL_TO_DECEL={saved_decel} DEACTIVATE_PROBE + + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=qgling VALUE=False + diff --git a/macros/hardware_functions/knomi.cfg b/macros/hardware_functions/knomi.cfg new file mode 100644 index 000000000..e68001cbf --- /dev/null +++ b/macros/hardware_functions/knomi.cfg @@ -0,0 +1,62 @@ +[gcode_macro _KNOMI_STATUS] +variable_homing: False +variable_probing: False +variable_qgling: False +variable_heating_nozzle: False +variable_heating_bed: False +variable_heaters_delayed_workaround: False +gcode: + + + +[gcode_macro SET_HEATER_TEMPERATURE] +rename_existing: SET_HEATER_TEMPERATURE_BASE +gcode: + {% set HEATER = params.HEATER|string %} + {% set TARGET = params.TARGET|int %} + + {% if HEATER == 'extruder' %} + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_nozzle VALUE={False if TARGET == 0 else True} + {% endif %} + {% if HEATER == 'heater_bed' %} + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_bed VALUE={False if TARGET == 0 else True} + {% endif %} + + {% if printer["gcode_macro _KNOMI_STATUS"].heaters_delayed_workaround == False or TARGET == 0 %} + {% set delay = printer["gcode_macro _USER_VARIABLES"].knomi_heaters_wait_delay|default(30) %} + UPDATE_DELAYED_GCODE ID=_KNOMI_HEATERS_AUTO_OFF DURATION={0 if TARGET == 0 else delay} + {% endif %} + + SET_HEATER_TEMPERATURE_BASE {rawparams} + + +[delayed_gcode _KNOMI_HEATERS_AUTO_OFF] +initial_duration: 0 +gcode: + {% set mustWait = False %} + + {% set temp = printer.heater_bed.temperature %} + {% set target = printer.heater_bed.target %} + + {% if printer["gcode_macro _KNOMI_STATUS"].heating_bed and temp < target %} + {% set mustWait = True %} + {% else %} + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_bed VALUE=False + {% endif %} + + {% set temp = printer.extruder.temperature %} + {% set target = printer.extruder.target %} + + {% if printer["gcode_macro _KNOMI_STATUS"].heating_nozzle and temp < target %} + {% set mustWait = True %} + {% else %} + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_nozzle VALUE=False + {% endif %} + + {% if mustWait %} + {% set delay = printer["gcode_macro _USER_VARIABLES"].knomi_heaters_wait_delay|default(30) %} + UPDATE_DELAYED_GCODE ID=_KNOMI_HEATERS_AUTO_OFF DURATION={delay} + {% else %} + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heaters_delayed_workaround VALUE=False + {% endif %} + \ No newline at end of file diff --git a/macros/helpers/bed_heater_ctrl.cfg b/macros/helpers/bed_heater_ctrl.cfg index 1e8cad7ab..03c4a1a31 100644 --- a/macros/helpers/bed_heater_ctrl.cfg +++ b/macros/helpers/bed_heater_ctrl.cfg @@ -10,6 +10,8 @@ gcode: {% set fix_heaters_temperature_settle = printer["gcode_macro _USER_VARIABLES"].fix_heaters_temperature_settle %} + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_bed VALUE=True + {% if fix_heaters_temperature_settle %} M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} {% if S != 0 %} @@ -22,3 +24,5 @@ gcode: {% else %} M190.1 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} {% endif %} + + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_bed VALUE=False diff --git a/macros/helpers/hotend_heater_ctrl.cfg b/macros/helpers/hotend_heater_ctrl.cfg index c704e3745..190c69b30 100644 --- a/macros/helpers/hotend_heater_ctrl.cfg +++ b/macros/helpers/hotend_heater_ctrl.cfg @@ -11,6 +11,8 @@ gcode: {% set fix_heaters_temperature_settle = printer["gcode_macro _USER_VARIABLES"].fix_heaters_temperature_settle %} + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_nozzle VALUE=True + {% if fix_heaters_temperature_settle %} M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} {% if S != 0 %} @@ -22,4 +24,6 @@ gcode: {% endif %} {% else %} M109.1 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} - {% endif %} \ No newline at end of file + {% endif %} + + SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_nozzle VALUE=False