From cb042e749dea6b8ec24449d26c656d191585fdaf Mon Sep 17 00:00:00 2001 From: FanDjango <51046875+FanDjango@users.noreply.github.com> Date: Wed, 12 Feb 2020 16:08:30 +0100 Subject: homing_heaters: Turn off heaters during homing/probing (#2486) Signed-off-by: Mike Stiemke --- klippy/extras/homing_heaters.py | 70 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 klippy/extras/homing_heaters.py (limited to 'klippy/extras/homing_heaters.py') diff --git a/klippy/extras/homing_heaters.py b/klippy/extras/homing_heaters.py new file mode 100644 index 00000000..ff132180 --- /dev/null +++ b/klippy/extras/homing_heaters.py @@ -0,0 +1,70 @@ +# Heater handling on homing moves +# +# Copyright (C) 2016-2018 Kevin O'Connor +# +# This file may be distributed under the terms of the GNU GPLv3 license. + +import logging + +class HomingHeaters: + def __init__(self, config): + self.printer = config.get_printer() + self.printer.register_event_handler("klippy:connect", + self.handle_connect) + self.printer.register_event_handler("homing:move_begin", + self.handle_homing_move_begin) + self.printer.register_event_handler("homing:move_end", + self.handle_homing_move_end) + self.heaters_to_disable = config.get("heaters", "") + self.disable_heaters = [] + self.steppers_needing_quiet = config.get("steppers", "") + self.flaky_steppers = [] + self.pheater = self.printer.lookup_object('heater') + self.target_save = {} + + def handle_connect(self): + # heaters to disable + all_heaters = self.pheater.get_all_heaters() + self.disable_heaters = [n.strip() + for n in self.heaters_to_disable.split(',')] + if self.disable_heaters == [""]: + self.disable_heaters = all_heaters + else: + if not all(x in all_heaters for x in self.disable_heaters): + raise self.printer.config_error( + "One or more of these heaters are unknown: %s" % ( + self.disable_heaters)) + # steppers valid? + kin = self.printer.lookup_object('toolhead').get_kinematics() + all_steppers = [s.get_name() for s in kin.get_steppers()] + self.flaky_steppers = [n.strip() + for n in self.steppers_needing_quiet.split(',')] + if self.flaky_steppers == [""]: + return + if not all(x in all_steppers for x in self.flaky_steppers): + raise self.printer.config_error( + "One or more of these steppers are unknown: %s" % ( + self.flaky_steppers)) + def check_eligible(self, endstops): + if self.flaky_steppers == [""]: + return True + steppers_being_homed = [s.get_name() + for es, name in endstops + for s in es.get_steppers()] + return any(x in self.flaky_steppers for x in steppers_being_homed) + def handle_homing_move_begin(self, endstops): + if not self.check_eligible(endstops): + return + for heater_name in self.disable_heaters: + heater = self.pheater.lookup_heater(heater_name) + self.target_save[heater_name] = heater.get_temp(0)[1] + heater.set_temp(0.) + def handle_homing_move_end(self, endstops): + if not self.check_eligible(endstops): + return + for heater_name in self.disable_heaters: + heater = self.pheater.lookup_heater(heater_name) + heater.set_temp(self.target_save[heater_name]) + +def load_config(config): + return HomingHeaters(config) -- cgit v1.2.3-70-g09d2