def __init__(self, config): # get configs self.control_mode = config.get('control_mode') self.min_temp = config.getfloat('min_temp', minval=10) self.max_temp = config.getfloat('max_temp', above=self.min_temp) self.max_delta = config.getfloat('max_delta', 2.0, above=0.) self.danger_temp = config.getfloat('danger_temp', self.max_temp + 5, above=self.max_temp) # setup sensor self.printer = config.get_printer() self.reactor = self.printer.get_reactor() self.gcode = self.printer.lookup_object('gcode') self.sensor = self.printer.lookup_object('heater').setup_sensor(config) self.sensor.setup_minmax(self.min_temp, self.max_temp) # cooling or heating if self.control_mode == 'cooling': self.fan = fan.PrinterFan(config, default_shutdown_speed=0.) self.sensor.setup_callback(self.cooling_callback) elif self.control_mode == 'heating': # implement later # must fit heater verify workflow pass else: logging.error("chamber: unsupported control_mode" + self.control_mode) raise # set dict self.temps = {"target": 0, "actual": 0} self.gcode.register_command( 'M141', self.cmd_M141, desc="M141 S30 - Set chamber target to 30C") # remove me dbg = threading.Thread(target=self.debug_console, args=())
def load_config(self): self.fileconfig = ConfigParser.RawConfigParser() res = self.fileconfig.read(self.conffile) if not res: raise ConfigParser.Error("Unable to open config file %s" % (self.conffile, )) if self.bglogger is not None: ConfigLogger(self.fileconfig, self.bglogger) self.mcu = mcu.MCU(self, ConfigWrapper(self, 'mcu')) if self.debugoutput is not None: self.mcu.connect_file(self.debugoutput, self.dictionary) if self.fileconfig.has_section('extruder'): self.objects['extruder'] = extruder.PrinterExtruder( self, ConfigWrapper(self, 'extruder')) if self.fileconfig.has_section('fan'): self.objects['fan'] = fan.PrinterFan(self, ConfigWrapper(self, 'fan')) if self.fileconfig.has_section('heater_bed'): self.objects['heater_bed'] = heater.PrinterHeater( self, ConfigWrapper(self, 'heater_bed')) self.objects['toolhead'] = toolhead.ToolHead( self, ConfigWrapper(self, 'printer')) # Validate that there are no undefined parameters in the config file valid_sections = dict([(s, 1) for s, o in self.all_config_options]) for section in self.fileconfig.sections(): section = section.lower() if section not in valid_sections: raise ConfigParser.Error("Unknown config file section '%s'" % (section, )) for option in self.fileconfig.options(section): option = option.lower() if (section, option) not in self.all_config_options: raise ConfigParser.Error( "Unknown option '%s' in section '%s'" % (option, section))
def __init__(self, config): self.printer = config.get_printer() self.heater_name = config.get("heater") self.heater_temp = config.getfloat("heater_temp") self.fan = fan.PrinterFan(config, default_shutdown_speed=1.) self.mcu = self.fan.mcu_fan.get_mcu() self.fan_speed = config.getfloat("fan_speed", 1., minval=0., maxval=1.)
def __init__(self, config): self.name = config.get_name().split()[1] self.printer = config.get_printer() self.fan = fan.PrinterFan(config, default_shutdown_speed=1.) self.min_temp = config.getfloat('min_temp', minval=KELVIN_TO_CELCIUS) self.max_temp = config.getfloat('max_temp', above=self.min_temp) self.sensor = self.printer.lookup_object('heater').setup_sensor(config) self.sensor.setup_minmax(self.min_temp, self.max_temp) self.sensor.setup_callback(self.temperature_callback) self.printer.lookup_object('heater').register_sensor(config, self) self.speed_delay = self.sensor.get_report_time_delta() self.max_speed = config.getfloat('max_speed', 1., above=0., maxval=1.) self.min_speed = config.getfloat('min_speed', 0.3, above=0., maxval=1.) self.last_temp = 0. self.last_temp_time = 0. self.target_temp = config.getfloat( 'target_temp', 40. if self.max_temp > 40. else self.max_temp, minval=self.min_temp, maxval=self.max_temp) algos = {'watermark': ControlBangBang, 'pid': ControlPID} algo = config.getchoice('control', algos) self.control = algo(self, config) self.next_speed_time = 0. self.last_speed_value = 0.
def __init__(self, config): self.printer = config.get_printer() self.heater_name = config.get("heater", "extruder0") self.heater_temp = config.getfloat("heater_temp", 50.0) self.fan = fan.PrinterFan(config) self.mcu = self.fan.mcu_fan.get_mcu() self.fan_speed = config.getfloat("fan_speed", 1., minval=0., maxval=1.) self.fan.set_shutdown_speed(1.)
def __init__(self, config): self.printer = config.get_printer() self.printer.register_event_handler("klippy:ready", self.handle_ready) self.heater_name = config.get("heater", "extruder") self.heater_temp = config.getfloat("heater_temp", 50.0) self.heaters = [] self.fan = fan.PrinterFan(config, default_shutdown_speed=1.) self.mcu = self.fan.mcu_fan.get_mcu() self.fan_speed = config.getfloat("fan_speed", 1., minval=0., maxval=1.)
def __init__(self, config): self.printer = config.get_printer() self.heater_name = config.get("heater", "extruder0") self.heater_temp = config.getfloat("heater_temp", 50.0) self.fan = fan.PrinterFan(config) self.mcu = self.fan.mcu_fan.get_mcu() max_power = self.fan.max_power self.fan_speed = config.getfloat("fan_speed", max_power, minval=0., maxval=max_power) self.fan.mcu_fan.setup_start_value(0., max_power)
def __init__(self, printer, config): self.activation_temp = float(config.get('activation_temp')) target_extruder = config.get('target_extruder') if not target_extruder or target_extruder == 'extruder': target_extruder = 'extruder0' self.fan = fan.PrinterFan(printer, config) self.heater = printer.objects.get('extruder0').get_heater() self.toolhead = printer.objects.get('toolhead') printer.reactor.register_timer(self.check_temp, printer.reactor.NOW)
def __init__(self, config): self.printer = config.get_printer() self.printer.register_event_handler("klippy:ready", self.handle_ready) self.steppers = [] self.fan = fan.PrinterFan(config) self.mcu = self.fan.mcu_fan.get_mcu() self.max_power = config.getfloat('max_power', 1., minval=0., maxval=1.) self.idle_speed = config.getfloat('idle_speed', self.max_power, minval=0., maxval=self.max_power) self.idle_timeout = config.getint("idle_timeout", 30, minval=0) self.heater_name = config.get("heater", "extruder") self.last_on = self.idle_timeout
def __init__(self, config): self.name = config.get_name() self.printer = config.get_printer() self.fan = fan.PrinterFan(config) self.mcu = self.fan.mcu_fan.get_mcu() self.fan_speed = config.getfloat('fan_speed', 1., minval=0., maxval=1.) min_temp = config.getfloat('min_temp', minval=KELVIN_TO_CELCIUS) max_temp = config.getfloat('max_temp', above=min_temp) self.temp = config.getfloat('temp', 40. if max_temp > 40. else max_temp, minval=min_temp, maxval=max_temp) self.fan.set_shutdown_speed(1.) self.last_temp = KELVIN_TO_CELCIUS self.sensor = self.printer.lookup_object('heater').setup_sensor(config) self.sensor.setup_minmax(min_temp, max_temp) self.sensor.setup_callback(self.temperature_callback)
def __init__(self, config): # get configs self.control_mode = config.get('control_mode') self.min_temp = config.getfloat('min_temp', minval=10) self.max_temp = config.getfloat('max_temp', above=self.min_temp) self.danger_temp = config.getfloat('danger_temp', self.max_temp + 5, above=self.max_temp) self.max_speed = config.getfloat('max_speed', 1., above=0., maxval=1.) self.min_speed = config.getfloat('min_speed', 0, maxval=1.) # setup sensor self.printer = config.get_printer() self.reactor = self.printer.get_reactor() self.gcode = self.printer.lookup_object('gcode') self.sensor = self.printer.lookup_object('heater').setup_sensor(config) self.sensor.setup_minmax(self.min_temp, self.max_temp) self.speed_delay = self.sensor.get_report_time_delta() # temp vars self.last_temp = 0. self.last_temp_time = 0. self.target_temp_conf = config.getfloat( 'target_temp', 0. if self.max_temp > 40. else self.max_temp, minval=self.min_temp, maxval=self.max_temp) self.target_temp = self.target_temp_conf self.next_speed_time = 0. self.last_speed_value = 0. # cooling or heating if self.control_mode == 'cooling': self.fan = fan.PrinterFan(config, default_shutdown_speed=self.min_speed) # self.sensor.setup_callback(self.cooling_callback) algos = {'watermark': ControlCoolingBangBang, 'pid': ControlCoolingPID} algo = config.getchoice('control', algos) self.control = algo(self, config) self.sensor.setup_callback(self.temperature_callback) elif self.control_mode == 'heating': # implement later # must fit heater verify workflow pass else: logging.error("chamber: unsupported control_mode" + self.control_mode) raise # set dict self.gcode.register_command('M141', self.cmd_M141, desc="M141 S30 - Set chamber target to 30C")
def load_config(self): self.fileconfig = ConfigParser.RawConfigParser() res = self.fileconfig.read(self.conffile) if not res: raise ConfigParser.Error("Unable to open config file %s" % (self.conffile, )) if self.debugoutput is None: ConfigLogger(self.fileconfig) self.mcu = mcu.MCU(self, ConfigWrapper(self, 'mcu')) if self.fileconfig.has_section('fan'): self.objects['fan'] = fan.PrinterFan(self, ConfigWrapper(self, 'fan')) if self.fileconfig.has_section('extruder'): self.objects['extruder'] = extruder.PrinterExtruder( self, ConfigWrapper(self, 'extruder')) if self.fileconfig.has_section('heater_bed'): self.objects['heater_bed'] = heater.PrinterHeater( self, ConfigWrapper(self, 'heater_bed')) self.objects['toolhead'] = toolhead.ToolHead( self, ConfigWrapper(self, 'printer'))
def __init__(self, config): self.printer = config.get_printer() self.printer.register_event_handler("klippy:ready", self.handle_ready) self.stepper_names = [] self.stepper_enable = self.printer.load_object(config, 'stepper_enable') self.printer.load_object(config, 'heaters') self.heaters = [] self.fan = fan.PrinterFan(config) self.mcu = self.fan.mcu_fan.get_mcu() self.fan_speed = config.getfloat('fan_speed', default=1., minval=0., maxval=1.) self.idle_speed = config.getfloat('idle_speed', default=self.fan_speed, minval=0., maxval=1.) self.idle_timeout = config.getint("idle_timeout", default=30, minval=0) self.heater_name = config.get("heater", "extruder") self.last_on = self.idle_timeout
def __init__(self, config): self.name = config.get_name().split()[1] self.printer = config.get_printer() self.fan = fan.PrinterFan(config, default_shutdown_speed=1.) self.gcode = self.printer.lookup_object('gcode') self.min_temp = config.getfloat('min_temp', minval=KELVIN_TO_CELSIUS) self.max_temp = config.getfloat('max_temp', above=self.min_temp) pheaters = self.printer.try_load_module(config, 'heaters') self.sensor = pheaters.setup_sensor(config) self.sensor.setup_minmax(self.min_temp, self.max_temp) self.sensor.setup_callback(self.temperature_callback) pheaters.register_sensor(config, self) self.speed_delay = self.sensor.get_report_time_delta() self.max_speed = config.getfloat('max_speed', 1., above=0., maxval=1.) self.min_speed = config.getfloat('min_speed', 0.3, minval=0., maxval=1.) self.last_temp = 0. self.last_temp_time = 0. self.target_temp_conf = config.getfloat( 'target_temp', 40. if self.max_temp > 40. else self.max_temp, minval=self.min_temp, maxval=self.max_temp) self.target_temp = self.target_temp_conf algos = {'watermark': ControlBangBang, 'pid': ControlPID} algo = config.getchoice('control', algos) self.control = algo(self, config) self.next_speed_time = 0. self.last_speed_value = 0. self.gcode.register_mux_command( "SET_TEMPERATURE_FAN_TARGET", "TEMPERATURE_FAN", self.name, self.cmd_SET_TEMPERATURE_FAN_TARGET_TEMP, desc=self.cmd_SET_TEMPERATURE_FAN_TARGET_TEMP_help)