def jog(): if not printer.isOperational() or printer.isPrinting(): # do not jog when a print job is running or we don't have a connection return jsonify(SUCCESS) (movementSpeedX, movementSpeedY, movementSpeedZ, movementSpeedE) = settings().get(["printerParameters", "movementSpeed", ["x", "y", "z", "e"]]) if "x" in request.values.keys(): # jog x x = request.values["x"] printer.commands(["G91", "G1 X%s F%d" % (x, movementSpeedX), "G90", "M114"]) if "y" in request.values.keys(): # jog y y = request.values["y"] printer.commands(["G91", "G1 Y%s F%d" % (y, movementSpeedY), "G90", "M114"]) if "z" in request.values.keys(): # jog z z = request.values["z"] printer.commands(["G91", "G1 Z%s F%d" % (z, movementSpeedZ), "G90", "M114"]) if "homeXY" in request.values.keys(): # home x/y printer.command("G28 X0 Y0") if "posX" in request.values.keys() and "posY" in request.values.keys(): # go to position printer.commands(["G1 X%s Y%s F%d" % (request.values["posX"], request.values["posY"], movementSpeedX), "M114"]) if "homeZ" in request.values.keys(): # home z printer.command("G28 Z0") if "extrude" in request.values.keys(): # extrude/retract length = request.values["extrude"] printer.commands(["G91", "G1 E%s F%d" % (length, movementSpeedE), "G90"]) return jsonify(SUCCESS)
def setTargetTemperature(): if "temp" in request.values.keys(): # set target temperature temp = request.values["temp"] printer.command("M104 S" + temp) if "bedTemp" in request.values.keys(): # set target bed temperature bedTemp = request.values["bedTemp"] printer.command("M140 S" + bedTemp) if "tempOffset" in request.values.keys(): # set target temperature offset try: tempOffset = float(request.values["tempOffset"]) if tempOffset >= -50 and tempOffset <= 50: printer.setTemperatureOffset(tempOffset, None) except: pass if "bedTempOffset" in request.values.keys(): # set target bed temperature offset try: bedTempOffset = float(request.values["bedTempOffset"]) if bedTempOffset >= -50 and bedTempOffset <= 50: printer.setTemperatureOffset(None, bedTempOffset) except: pass return jsonify(SUCCESS)
def setTargetTemperature(): if "temp" in request.values.keys(): # set target temperature temp = request.values["temp"] printer.command("M104 S" + temp) if "bedTemp" in request.values.keys(): # set target bed temperature bedTemp = request.values["bedTemp"] printer.command("M140 S" + bedTemp) if "tempOffset" in request.values.keys(): # set target temperature offset try: tempOffset = float(request.values["tempOffset"]) if tempOffset >= -50 and tempOffset <= 50: printer.setTemperatureOffset(tempOffset, None) except: pass if "bedTempOffset" in request.values.keys(): # set target bed temperature offset try: bedTempOffset = float(request.values["bedTempOffset"]) if bedTempOffset >= -50 and bedTempOffset <= 50: printer.setTemperatureOffset(None, bedTempOffset) except: pass return jsonify(SUCCESS)
def jog(): if not printer.isOperational() or printer.isPrinting(): # do not jog when a print job is running or we don't have a connection return jsonify(SUCCESS) (movementSpeedX, movementSpeedY, movementSpeedZ, movementSpeedE) = ( settings.get('movement_speed', s) for s in 'xyze') if "x" in request.values.keys(): # jog x x = request.values["x"] printer.commands(["G91", "G1 X%s F%d" % (x, movementSpeedX), "G90"]) if "y" in request.values.keys(): # jog y y = request.values["y"] printer.commands(["G91", "G1 Y%s F%d" % (y, movementSpeedY), "G90"]) if "z" in request.values.keys(): # jog z z = request.values["z"] printer.commands(["G91", "G1 Z%s F%d" % (z, movementSpeedZ), "G90"]) if "homeXY" in request.values.keys(): # home x/y printer.command("G28 X0 Y0") if "homeZ" in request.values.keys(): # home z printer.command("G28 Z0") if "extrude" in request.values.keys(): # extrude/retract length = request.values["extrude"] printer.commands( ["G91", "G1 E%s F%d" % (length, movementSpeedE), "G90"]) return jsonify(SUCCESS)
def jog(): if not printer.isOperational() or printer.isPrinting(): # do not jog when a print job is running or we don't have a connection return jsonify(SUCCESS) (movementSpeedX, movementSpeedY, movementSpeedZ, movementSpeedE) = settings().get( ["printerParameters", "movementSpeed", ["x", "y", "z", "e"]]) if "x" in request.values.keys(): # jog x x = request.values["x"] printer.commands(["G91", "G1 X%s F%d" % (x, movementSpeedX), "G90"]) if "y" in request.values.keys(): # jog y y = request.values["y"] printer.commands(["G91", "G1 Y%s F%d" % (y, movementSpeedY), "G90"]) if "z" in request.values.keys(): # jog z z = request.values["z"] printer.commands(["G91", "G1 Z%s F%d" % (z, movementSpeedZ), "G90"]) if "homeXY" in request.values.keys(): # home x/y printer.command("G28 X0 Y0") if "homeZ" in request.values.keys(): # home z printer.command("G28 Z0") if "extrude" in request.values.keys(): # extrude/retract length = request.values["extrude"] printer.commands( ["G91", "G1 E%s F%d" % (length, movementSpeedE), "G90"]) return jsonify(SUCCESS)
def add_temp_curve_file(self, destination, path, file_object, links=None, allow_overwrite=False, printer_profile=None, target=None): if printer_profile is None: printer_profile = self._printer_profile_manager.get_current_or_default() _,ext=os.path.splitext(path) print("lkj ext:%s" % ext) if ext != ".fbot": return None file_path = self._storage(destination).add_file(path, file_object, links=links, printer_profile=printer_profile, allow_overwrite=allow_overwrite) absolute_path = self._storage(destination).get_absolute_path(file_path) from octoprint.server import printer from octoprint.comm.protocol.reprap.util import GcodeCommand if printer.isOperational(): try: cmd = GcodeCommand("M504", f=1, param= target + ":" + absolute_path) print("cmd=%s" % str(cmd)) printer.command(cmd) except : exceptionString = getExceptionString() print("ex:%s" % str(exceptionString)) ''' ''' return absolute_path
def controlPrinterHotend(): if not printer.isOperational(): return make_response("Printer is not operational", 403) valid_commands = { "temp": ["temps"], "offset": ["offsets"] } command, data, response = util.getJsonCommandFromRequest(request, valid_commands) if response is not None: return response valid_targets = ["hotend", "bed"] ##~~ temperature if command == "temp": temps = data["temps"] # make sure the targets are valid and the values are numbers validated_values = {} for type, value in temps.iteritems(): if not type in valid_targets: return make_response("Invalid target for setting temperature: %s" % type, 400) if not isinstance(value, (int, long, float)): return make_response("Not a number for %s: %r" % (type, value), 400) validated_values[type] = value # perform the actual temperature commands # TODO make this a generic method call (printer.setTemperature(type, value)) to get rid of gcode here if "hotend" in validated_values: printer.command("M104 S%f" % validated_values["hotend"]) if "bed" in validated_values: printer.command("M140 S%f" % validated_values["bed"]) ##~~ temperature offset elif command == "offset": offsets = data["offsets"] # make sure the targets are valid, the values are numbers and in the range [-50, 50] validated_values = {} for type, value in offsets.iteritems(): if not type in valid_targets: return make_response("Invalid target for setting temperature: %s" % type, 400) if not isinstance(value, (int, long, float)): return make_response("Not a number for %s: %r" % (type, value), 400) if not -50 <= value <= 50: return make_response("Offset %s not in range [-50, 50]: %f" % (type, value), 400) validated_values[type] = value # set the offsets if "hotend" in validated_values and "bed" in validated_values: printer.setTemperatureOffset(validated_values["hotend"], validated_values["bed"]) elif "hotend" in validated_values: printer.setTemperatureOffset(validated_values["hotend"], None) elif "bed" in validated_values: printer.setTemperatureOffset(None, validated_values["bed"]) return jsonify(SUCCESS)
def add_firmware_file(self, destination, path, file_object, links=None, allow_overwrite=False, printer_profile=None, analysis=None): if printer_profile is None: printer_profile = self._printer_profile_manager.get_current_or_default() _,ext=os.path.splitext(path) print("lkj ext:%s" % ext) if ext != ".fbot": return None file_path = self._storage(destination).add_file(path, file_object, links=links, printer_profile=printer_profile, allow_overwrite=allow_overwrite) absolute_path = self._storage(destination).get_absolute_path(file_path) firmware = firmwareFastBot.FirmwareFastbot() print("firmware absolute path:%s" % absolute_path) firmware_version = firmware.loadFirmware(absolute_path, "/tmp/") print("firmware_version :%s" % firmware_version) from octoprint.settings import settings settings().set(["fastbotArgs", "firmwareVersion"], firmware_version) settings().save() print("firmware_version 22 :%s" % firmware_version) from octoprint.server import printer from octoprint.comm.protocol.reprap.util import GcodeCommand if printer.isOperational(): try: cmd = GcodeCommand("M504",s=firmware_version.strip("\x00")) #print("cmd=%s" % str(cmd)) printer.command(cmd) except : exceptionString = getExceptionString() print("ex:%s" % str(exceptionString)) print("firmware_version 333 :%s" % firmware_version) firmware.rebootSystem(5) print("firmware absolute path:%s" % absolute_path) ''' if analysis is None: file_type = get_file_type(absolute_path) if file_type: queue_entry = QueueEntry(file_path, file_type[-1], destination, absolute_path, _profile) self._analysis_queue.enqueue(queue_entry, high_priority=True) else: self._add_analysis_result(destination, path, analysis) eventManager().fire(Events.UPDATED_FILES, dict(type="printables")) ''' return absolute_path
def add_temp_curve_file(self, destination, path, file_object, links=None, allow_overwrite=False, printer_profile=None, target=None): if printer_profile is None: printer_profile = self._printer_profile_manager.get_current_or_default( ) _, ext = os.path.splitext(path) print("lkj ext:%s" % ext) if ext != ".fbot": return None file_path = self._storage(destination).add_file( path, file_object, links=links, printer_profile=printer_profile, allow_overwrite=allow_overwrite) absolute_path = self._storage(destination).get_absolute_path(file_path) from octoprint.server import printer from octoprint.comm.protocol.reprap.util import GcodeCommand if printer.isOperational(): try: cmd = GcodeCommand("M504", f=1, param=target + ":" + absolute_path) print("cmd=%s" % str(cmd)) printer.command(cmd) except: exceptionString = getExceptionString() print("ex:%s" % str(exceptionString)) ''' ''' return absolute_path
def jog(): if not printer.isOperational() or printer.isPrinting(): # do not jog when a print job is running or we don't have a connection return jsonify(SUCCESS) (movementSpeedX, movementSpeedY, movementSpeedZ, movementSpeedE) = settings().get(["printerParameters", "movementSpeed", ["x", "y", "z", "e"]]) if "x" in request.values.keys(): # jog x x = request.values["x"] printer.commands(["G91", "G1 X%s F%d" % (x, movementSpeedX), "G90"]) if "y" in request.values.keys(): # jog y y = request.values["y"] printer.commands(["G91", "G1 Y%s F%d" % (y, movementSpeedY), "G90"]) if "z" in request.values.keys(): # jog z z = request.values["z"] printer.commands(["G91", "G1 Z%s F%d" % (z, movementSpeedZ), "G90"]) if "homeXY" in request.values.keys(): # home x/y printer.command("G28 X0 Y0") if "homeZ" in request.values.keys(): # home z printer.command("G28 Z0") if "extrude" in request.values.keys(): # extrude/retract length = request.values["extrude"] printer.commands(["G91", "G1 E%s F%d" % (length, movementSpeedE), "G90"]) movementSpeed = settings().get(["printerParameters", "movementSpeed", ["x", "y", "z"]], asdict=True) valid_axes = ["x", "y", "z"] ##~~ jog command if command == "jog": # validate all jog instructions, make sure that the values are numbers validated_values = {} for axis in valid_axes: if axis in data: value = data[axis] if not isinstance(value, (int, long, float)): return make_response("Not a number for axis %s: %r" % (axis, value), 400) validated_values[axis] = value # execute the jog commands for axis, value in validated_values.iteritems(): # TODO make this a generic method call (printer.jog(axis, value)) to get rid of gcode here printer.commands(["G91", "G1 %s%.4f F%d" % (axis.upper(), value, movementSpeed[axis]), "G90"]) ##~~ home command elif command == "home": validated_values = [] axes = data["axes"] for axis in axes: if not axis in valid_axes: return make_response("Invalid axis: %s" % axis, 400) validated_values.append(axis) # execute the home command # TODO make this a generic method call (printer.home(axis, ...)) to get rid of gcode here printer.commands(["G91", "G28 %s" % " ".join(map(lambda x: "%s0" % x.upper(), validated_values)), "G90"]) return jsonify(SUCCESS)
def saveToEEPROM(self): from octoprint.server import printer if printer.isOperational(): cmd_eeprom = GcodeCommand("M500") printer.command(cmd_eeprom)
def saveToEEPROM(self): from octoprint.server import printer if printer.isOperational(): cmd_eeprom = GcodeCommand("M500") printer.command(cmd_eeprom)
def add_firmware_file(self, destination, path, file_object, links=None, allow_overwrite=False, printer_profile=None, analysis=None): if printer_profile is None: printer_profile = self._printer_profile_manager.get_current_or_default( ) _, ext = os.path.splitext(path) print("lkj ext:%s" % ext) if ext != ".fbot": return None file_path = self._storage(destination).add_file( path, file_object, links=links, printer_profile=printer_profile, allow_overwrite=allow_overwrite) absolute_path = self._storage(destination).get_absolute_path(file_path) firmware = firmwareFastBot.FirmwareFastbot() print("firmware absolute path:%s" % absolute_path) firmware_version = firmware.loadFirmware(absolute_path, "/tmp/") print("firmware_version :%s" % firmware_version) from octoprint.settings import settings settings().set(["fastbotArgs", "firmwareVersion"], firmware_version) settings().save() print("firmware_version 22 :%s" % firmware_version) from octoprint.server import printer from octoprint.comm.protocol.reprap.util import GcodeCommand if printer.isOperational(): try: cmd = GcodeCommand("M504", s=firmware_version.strip("\x00")) #print("cmd=%s" % str(cmd)) printer.command(cmd) except: exceptionString = getExceptionString() print("ex:%s" % str(exceptionString)) print("firmware_version 333 :%s" % firmware_version) firmware.rebootSystem(5) print("firmware absolute path:%s" % absolute_path) ''' if analysis is None: file_type = get_file_type(absolute_path) if file_type: queue_entry = QueueEntry(file_path, file_type[-1], destination, absolute_path, _profile) self._analysis_queue.enqueue(queue_entry, high_priority=True) else: self._add_analysis_result(destination, path, analysis) eventManager().fire(Events.UPDATED_FILES, dict(type="printables")) ''' return absolute_path