aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras
diff options
context:
space:
mode:
Diffstat (limited to 'klippy/extras')
-rw-r--r--klippy/extras/fan_generic.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/klippy/extras/fan_generic.py b/klippy/extras/fan_generic.py
index def9a77e..7584974f 100644
--- a/klippy/extras/fan_generic.py
+++ b/klippy/extras/fan_generic.py
@@ -1,9 +1,9 @@
# Support fans that are controlled by gcode
#
-# Copyright (C) 2016-2020 Kevin O'Connor <kevin@koconnor.net>
+# Copyright (C) 2016-2024 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
-from . import fan
+from . import fan, output_pin
class PrinterFanGeneric:
cmd_SET_FAN_SPEED_help = "Sets the speed of a fan"
@@ -12,6 +12,9 @@ class PrinterFanGeneric:
self.fan = fan.Fan(config, default_shutdown_speed=0.)
self.fan_name = config.get_name().split()[-1]
+ # Template handling
+ self.template_eval = output_pin.lookup_template_eval(config)
+
gcode = self.printer.lookup_object("gcode")
gcode.register_mux_command("SET_FAN_SPEED", "FAN",
self.fan_name,
@@ -20,8 +23,21 @@ class PrinterFanGeneric:
def get_status(self, eventtime):
return self.fan.get_status(eventtime)
+ def _template_update(self, text):
+ try:
+ value = float(text)
+ except ValueError as e:
+ logging.exception("fan_generic template render error")
+ self.fan.set_speed(value)
def cmd_SET_FAN_SPEED(self, gcmd):
- speed = gcmd.get_float('SPEED', 0.)
+ speed = gcmd.get_float('SPEED', None, 0.)
+ template = gcmd.get('TEMPLATE', None)
+ if (speed is None) == (template is None):
+ raise gcmd.error("SET_FAN_SPEED must specify SPEED or TEMPLATE")
+ # Check for template setting
+ if template is not None:
+ self.template_eval.set_template(gcmd, self._template_update)
+ return
self.fan.set_speed_from_command(speed)
def load_config_prefix(config):