diff options
author | FanDjango <51046875+FanDjango@users.noreply.github.com> | 2020-02-12 16:08:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-12 10:08:30 -0500 |
commit | cb042e749dea6b8ec24449d26c656d191585fdaf (patch) | |
tree | c787ffa4e53c7c3b8b7c8540a51beca7828941e5 /klippy/extras | |
parent | 596f5e3e3a0e9cdde47fe1975e13c0b5c166bf34 (diff) | |
download | kutter-cb042e749dea6b8ec24449d26c656d191585fdaf.tar.gz kutter-cb042e749dea6b8ec24449d26c656d191585fdaf.tar.xz kutter-cb042e749dea6b8ec24449d26c656d191585fdaf.zip |
homing_heaters: Turn off heaters during homing/probing (#2486)
Signed-off-by: Mike Stiemke <fandjango@gmx.de>
Diffstat (limited to 'klippy/extras')
-rw-r--r-- | klippy/extras/homing_heaters.py | 70 |
1 files changed, 70 insertions, 0 deletions
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 <kevin@koconnor.net> +# +# 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) |