Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
	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
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
	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
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
 def saveToEEPROM(self):
     from octoprint.server import printer
     if printer.isOperational():
         cmd_eeprom = GcodeCommand("M500")
         printer.command(cmd_eeprom)
Exemplo n.º 12
0
	def saveToEEPROM(self):		
		from octoprint.server import printer
		if printer.isOperational():
			cmd_eeprom = GcodeCommand("M500")
			printer.command(cmd_eeprom)				
Exemplo n.º 13
0
    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