heater: Add new TURN_OFF_HEATERS command

Add a command that will turn off all heaters in the printer.  Run this
command in the default idle_timeout action.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2018-09-18 16:00:13 -04:00
parent 7b6a44e8f9
commit 174754299a
4 changed files with 12 additions and 1 deletions

View File

@ -260,7 +260,7 @@
#gcode: #gcode:
# A list of G-Code commands (one per line; subsequent lines # A list of G-Code commands (one per line; subsequent lines
# indented) to execute on an idle timeout. The default is to run # indented) to execute on an idle timeout. The default is to run
# "M84". # "TURN_OFF_HEATERS" and "M84".
#timeout: 600 #timeout: 600
# Idle time (in seconds) to wait before running the above G-Code # Idle time (in seconds) to wait before running the above G-Code
# commands. The default is 600 seconds. # commands. The default is 600 seconds.

View File

@ -96,6 +96,7 @@ The following standard commands are supported:
cycles. If the WRITE_FILE parameter is enabled, then the file cycles. If the WRITE_FILE parameter is enabled, then the file
/tmp/heattest.txt will be created with a log of all temperature /tmp/heattest.txt will be created with a log of all temperature
samples taken during the test. samples taken during the test.
- `TURN_OFF_HEATERS`: Turn off all heaters.
- `SET_VELOCITY_LIMIT [VELOCITY=<value>] [ACCEL=<value>] - `SET_VELOCITY_LIMIT [VELOCITY=<value>] [ACCEL=<value>]
[ACCEL_TO_DECEL=<value>] [SQUARE_CORNER_VELOCITY=<value>]`: Modify [ACCEL_TO_DECEL=<value>] [SQUARE_CORNER_VELOCITY=<value>]`: Modify
the printer's velocity limits. Note that one may only set values the printer's velocity limits. Note that one may only set values

View File

@ -5,6 +5,7 @@
# This file may be distributed under the terms of the GNU GPLv3 license. # This file may be distributed under the terms of the GNU GPLv3 license.
DEFAULT_IDLE_GCODE = """ DEFAULT_IDLE_GCODE = """
TURN_OFF_HEATERS
M84 M84
""" """

View File

@ -220,6 +220,10 @@ class PrinterHeaters:
self.printer = config.get_printer() self.printer = config.get_printer()
self.sensors = {} self.sensors = {}
self.heaters = {} self.heaters = {}
# Register TURN_OFF_HEATERS command
gcode = self.printer.lookup_object('gcode')
gcode.register_command("TURN_OFF_HEATERS", self.cmd_TURN_OFF_HEATERS,
desc=self.cmd_TURN_OFF_HEATERS_help)
def add_sensor(self, sensor_type, sensor_factory): def add_sensor(self, sensor_type, sensor_factory):
self.sensors[sensor_type] = sensor_factory self.sensors[sensor_type] = sensor_factory
def setup_heater(self, config): def setup_heater(self, config):
@ -249,6 +253,11 @@ class PrinterHeaters:
raise self.printer.config_error("Unknown temperature sensor '%s'" % ( raise self.printer.config_error("Unknown temperature sensor '%s'" % (
sensor_type,)) sensor_type,))
return self.sensors[sensor_type](config) return self.sensors[sensor_type](config)
cmd_TURN_OFF_HEATERS_help = "Turn off all heaters"
def cmd_TURN_OFF_HEATERS(self, params):
print_time = self.printer.lookup_object('toolhead').get_last_move_time()
for heater in self.heaters.values():
heater.set_temp(print_time, 0.)
def add_printer_objects(config): def add_printer_objects(config):
config.get_printer().add_object('heater', PrinterHeaters(config)) config.get_printer().add_object('heater', PrinterHeaters(config))