Пример #1
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)
Пример #2
0
def printerBedCommand():
    if not printer.isOperational():
        return make_response("Printer is not operational", 409)

    valid_commands = {"target": ["target"], "offset": ["offset"]}
    command, data, response = util.getJsonCommandFromRequest(request, valid_commands)
    if response is not None:
        return response

        ##~~ temperature
    if command == "target":
        target = data["target"]

        # make sure the target is a number
        if not isinstance(target, (int, long, float)):
            return make_response("Not a number: %r" % target, 400)

            # perform the actual temperature command
        printer.setTemperature("bed", target)

        ##~~ temperature offset
    elif command == "offset":
        offset = data["offsets"]

        # make sure the offset is valid
        if not isinstance(offset, (int, long, float)):
            return make_response("Not a number: %r" % offset, 400)
        if not -50 <= offset <= 50:
            return make_response("Offset not in range [-50, 50]: %f" % offset, 400)

            # set the offsets
        printer.setTemperatureOffset({"bed": offset})

    return NO_CONTENT
Пример #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)
Пример #4
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)
Пример #5
0
def printerBedCommand():
	if not printer.isOperational():
		return make_response("Printer is not operational", 409)

	valid_commands = {
		"target": ["target"],
		"offset": ["offset"]
	}
	command, data, response = util.getJsonCommandFromRequest(request, valid_commands)
	if response is not None:
		return response

	##~~ temperature
	if command == "target":
		target = data["target"]

		# make sure the target is a number
		if not isinstance(target, (int, long, float)):
			return make_response("Not a number: %r" % target, 400)

		# perform the actual temperature command
		printer.setTemperature("bed", target)

	##~~ temperature offset
	elif command == "offset":
		offset = data["offset"]

		# make sure the offset is valid
		if not isinstance(offset, (int, long, float)):
			return make_response("Not a number: %r" % offset, 400)
		if not -50 <= offset <= 50:
			return make_response("Offset not in range [-50, 50]: %f" % offset, 400)

		# set the offsets
		printer.setTemperatureOffset({"bed": offset})

	return NO_CONTENT
Пример #6
0
def printerToolCommand():
	if not printer.isOperational():
		return make_response("Printer is not operational", 409)

	valid_commands = {
		"select": ["tool"],
		"target": ["targets"],
		"offset": ["offsets"],
		"extrude": ["amount"]
	}
	command, data, response = util.getJsonCommandFromRequest(request, valid_commands)
	if response is not None:
		return response

	validation_regex = re.compile("tool\d+")

	##~~ tool selection
	if command == "select":
		tool = data["tool"]
		if re.match(validation_regex, tool) is None:
			return make_response("Invalid tool: %s" % tool, 400)
		if not tool.startswith("tool"):
			return make_response("Invalid tool for selection: %s" % tool, 400)

		printer.changeTool(tool)

	##~~ temperature
	elif command == "target":
		targets = data["targets"]

		# make sure the targets are valid and the values are numbers
		validated_values = {}
		for tool, value in targets.iteritems():
			if re.match(validation_regex, tool) is None:
				return make_response("Invalid target for setting temperature: %s" % tool, 400)
			if not isinstance(value, (int, long, float)):
				return make_response("Not a number for %s: %r" % (tool, value), 400)
			validated_values[tool] = value

		# perform the actual temperature commands
		for tool in validated_values.keys():
			printer.setTemperature(tool, validated_values[tool])

	##~~ 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 tool, value in offsets.iteritems():
			if re.match(validation_regex, tool) is None:
				return make_response("Invalid target for setting temperature: %s" % tool, 400)
			if not isinstance(value, (int, long, float)):
				return make_response("Not a number for %s: %r" % (tool, value), 400)
			if not -50 <= value <= 50:
				return make_response("Offset %s not in range [-50, 50]: %f" % (tool, value), 400)
			validated_values[tool] = value

		# set the offsets
		printer.setTemperatureOffset(validated_values)

	##~~ extrusion
	elif command == "extrude":
		if printer.isPrinting():
			# do not extrude when a print job is running
			return make_response("Printer is currently printing", 409)

		amount = data["amount"]
		if not isinstance(amount, (int, long, float)):
			return make_response("Not a number for extrusion amount: %r" % amount, 400)
		printer.extrude(amount, 250 if amount > 0 else 400)

	return NO_CONTENT
Пример #7
0
def printerToolCommand():
	if not printer.isOperational():
		return make_response("Printer is not operational", 409)

	valid_commands = {
		"select": ["tool"],
		"target": ["targets"],
		"offset": ["offsets"],
		"extrude": ["amount"]
	}
	command, data, response = util.getJsonCommandFromRequest(request, valid_commands)
	if response is not None:
		return response

	validation_regex = re.compile("tool\d+")

	##~~ tool selection
	if command == "select":
		tool = data["tool"]
		if re.match(validation_regex, tool) is None:
			return make_response("Invalid tool: %s" % tool, 400)
		if not tool.startswith("tool"):
			return make_response("Invalid tool for selection: %s" % tool, 400)

		printer.changeTool(tool)

	##~~ temperature
	elif command == "target":
		targets = data["targets"]

		# make sure the targets are valid and the values are numbers
		validated_values = {}
		for tool, value in targets.iteritems():
			if re.match(validation_regex, tool) is None:
				return make_response("Invalid target for setting temperature: %s" % tool, 400)
			if not isinstance(value, (int, long, float)):
				return make_response("Not a number for %s: %r" % (tool, value), 400)
			validated_values[tool] = value

		# perform the actual temperature commands
		for tool in validated_values.keys():
			printer.setTemperature(tool, validated_values[tool])

	##~~ 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 tool, value in offsets.iteritems():
			if re.match(validation_regex, tool) is None:
				return make_response("Invalid target for setting temperature: %s" % tool, 400)
			if not isinstance(value, (int, long, float)):
				return make_response("Not a number for %s: %r" % (tool, value), 400)
			if not -50 <= value <= 50:
				return make_response("Offset %s not in range [-50, 50]: %f" % (tool, value), 400)
			validated_values[tool] = value

		# set the offsets
		printer.setTemperatureOffset(validated_values)

	##~~ extrusion
	elif command == "extrude":
		if printer.isPrinting():
			# do not extrude when a print job is running
			return make_response("Printer is currently printing", 409)

		amount = data["amount"]
		speedTarget = data["speed"]
		if not isinstance(amount, (int, long, float)):
			return make_response("Not a number for extrusion amount: %r" % amount, 400)
		#printer.extrude(amount)
		print("speed=%s" % str(speedTarget))		
		printer.extrudeSpeed(amount, speedTarget)

	return NO_CONTENT