aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras/heaters.py
diff options
context:
space:
mode:
Diffstat (limited to 'klippy/extras/heaters.py')
-rw-r--r--klippy/extras/heaters.py24
1 files changed, 16 insertions, 8 deletions
diff --git a/klippy/extras/heaters.py b/klippy/extras/heaters.py
index e80c5d0c..00c0e593 100644
--- a/klippy/extras/heaters.py
+++ b/klippy/extras/heaters.py
@@ -3,7 +3,7 @@
# Copyright (C) 2016-2020 Kevin O'Connor <kevin@koconnor.net>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
-import logging, threading
+import os, logging, threading
######################################################################
@@ -230,7 +230,7 @@ class PrinterHeaters:
self.gcode_id_to_sensor = {}
self.available_heaters = []
self.available_sensors = []
- self.has_started = False
+ self.has_started = self.have_load_sensors = False
self.printer.register_event_handler("klippy:ready", self._handle_ready)
self.printer.register_event_handler("gcode:request_restart",
self.turn_off_all_heaters)
@@ -241,6 +241,18 @@ class PrinterHeaters:
gcode.register_command("M105", self.cmd_M105, when_not_ready=True)
gcode.register_command("TEMPERATURE_WAIT", self.cmd_TEMPERATURE_WAIT,
desc=self.cmd_TEMPERATURE_WAIT_help)
+ def load_config(self, config):
+ self.have_load_sensors = True
+ # Load default temperature sensors
+ pconfig = self.printer.lookup_object('configfile')
+ dir_name = os.path.dirname(__file__)
+ filename = os.path.join(dir_name, 'temperature_sensors.cfg')
+ try:
+ dconfig = pconfig.read_config(filename)
+ except Exception:
+ raise config.config_error("Cannot load config '%s'" % (filename,))
+ for c in dconfig.get_prefix_sections(''):
+ self.printer.load_object(dconfig, c.get_name())
def add_sensor_factory(self, sensor_type, sensor_factory):
self.sensor_factories[sensor_type] = sensor_factory
def setup_heater(self, config, gcode_id=None):
@@ -262,12 +274,8 @@ class PrinterHeaters:
"Unknown heater '%s'" % (heater_name,))
return self.heaters[heater_name]
def setup_sensor(self, config):
- modules = ["thermistor", "adc_temperature", "spi_temperature",
- "bme280", "htu21d", "lm75", "temperature_host",
- "temperature_mcu", "ds18b20"]
-
- for module_name in modules:
- self.printer.load_object(config, module_name)
+ if not self.have_load_sensors:
+ self.load_config(config)
sensor_type = config.get('sensor_type')
if sensor_type not in self.sensor_factories:
raise self.printer.config_error(