[gcode_macro HEATSOAK_CHAMBER] description: Heatsoak chamber to a specific temperature with a timeout gcode: {% set chamber_sensor_enabled = printer["gcode_macro _USER_VARIABLES"].chamber_temperature_sensor_enabled %} {% if chamber_sensor_enabled %} {% set SETPOINT_TEMP = params.TEMP|default(0)|float %} {% set MAXTIME = params.MAXTIME|default(printer["gcode_macro _USER_VARIABLES"].print_default_chamber_max_heating_time)|int %} {% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %} {% for _ in range(1, MAXTIME) %} _WAIT_CHAMBER_TEMP TEMP={SETPOINT_TEMP} {% endfor %} {% if verbose %} RESPOND MSG="Chamber temperature OK or timeout reached!" {% endif %} {% endif %} [gcode_macro _WAIT_CHAMBER_TEMP] # This macro is needed to allow klipper populate a new value in the printer[...].temperature variable # as each variables are populated only once at the beginning of every macro call gcode: {% set chamber_sensor_enabled = printer["gcode_macro _USER_VARIABLES"].chamber_temperature_sensor_enabled %} {% if chamber_sensor_enabled %} {% set chamber_sensor_name = printer["gcode_macro _USER_VARIABLES"].chamber_temperature_sensor_name %} {% set SETPOINT_TEMP = params.TEMP|default(0)|float %} {% set CURRENT_TEMP = printer["temperature_sensor " ~ chamber_sensor_name].temperature|float %} {% if CURRENT_TEMP <= SETPOINT_TEMP %} RESPOND MSG="Heating up the chamber : {CURRENT_TEMP}/{SETPOINT_TEMP}" G4 P{60000 * 1} # wait a minute and check again if called in a loop {% endif %} {% endif %} [gcode_macro HEATSOAK_BED] description: Heatsoak bed at specified temperature and wait for a specific amount of time gcode: {% set SETPOINT_TEMP = params.TEMP|default(0)|int %} {% set TIME = params.SOAKTIME|default(8)|int %} {% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %} {% set heaterbed_enabled = printer["gcode_macro _USER_VARIABLES"].heaterbed_enabled %} {% set heatsoak_bed_enabled = printer["gcode_macro _USER_VARIABLES"].print_default_soak > 0 %} # configured heatsoak default value {% if heaterbed_enabled %} {% if verbose %} RESPOND MSG="Heating up bed..." {% endif %} M190 S{SETPOINT_TEMP} {% if TIME > 0 %} {% for i in range(0, TIME) %} RESPOND MSG="Heatsoak bed, {TIME-i}mn left..." G4 P{60000 * 1} {% endfor %} {% else %} {% if heatsoak_bed_enabled %} RESPOND MSG="No heatsoak needed, continue" {% endif %} {% endif %} {% if verbose %} RESPOND MSG="Bed temperature OK" {% endif %} {% else %} {% if verbose %} RESPOND MSG="No bed heater defined: nothing to do, continuing..." {% endif %} {% endif %}