redesing tab

This commit is contained in:
sergiuToporjinschi
2022-01-30 14:08:52 +02:00
parent 8495d89cd3
commit d6323b6392
7 changed files with 123 additions and 39 deletions
-3
View File
@@ -20,7 +20,6 @@ class CalibrationtoolsPlugin(
def initialize(self):
self.collectCommand = False
# self._api = api.API(self)
def on_after_startup(self):
self._logger.debug("----------------[ CalibrationTools ]----------------")
@@ -36,8 +35,6 @@ class CalibrationtoolsPlugin(
"js": ["js/CalibrationTools.js"],
"css": ["css/style.css"]
}
def startExtrusion(self, temps):
self._logger.debug("Temperature achieved, extrusion started %s", temps)
def get_update_information(self):
# Define the configuration for your plugin to use with the Software Update
+36 -4
View File
@@ -5,9 +5,11 @@ import octoprint.plugin
import flask
CMD_LOAD_STEPS = "loadSteps"
CMD_TEST = "TEST"
CMD_LOAD_STEPS = "loadSteps"
CMD_START_EXTRUSION = "startExtrusion"
CMD_SAVE_E_STEPS = "saveESteps"
def someTestFunc(self, temps):
self._logger.debug("a ajuns %s", temps)
@@ -19,6 +21,7 @@ class API(octoprint.plugin.SimpleApiPlugin):
return {
CMD_LOAD_STEPS: [],
CMD_START_EXTRUSION: [],
CMD_SAVE_E_STEPS: [],
CMD_TEST: []
}
@@ -33,16 +36,45 @@ class API(octoprint.plugin.SimpleApiPlugin):
def on_api_command(self, command, data):
self._logger.debug("api command [%s] received", command)
if command == CMD_LOAD_STEPS:
if not self._printer.is_ready():
self._logger.warning("Printer not ready, operation canceled")
return flask.abort(503, {
"msg": "Printer not ready, operation canceled"
})
self._printer.commands("M92")
return flask.jsonify({
"data": self.data["steps"]
})
if command == CMD_START_EXTRUSION:
self._logger.debug("Heating the tools")
self._printer.commands("M104 S180")
if not self._printer.is_ready():
self._logger.warning("Printer not ready, operation canceled")
return flask.abort(503, {
"msg": "Printer not ready, operation canceled"
})
# Register event to be trigger when temp is achieved
self.registerEventTemp("T0", 180, self.startExtrusion)
# Heating the tool
self._printer.commands("M104 S180")
return
if command == CMD_SAVE_E_STEPS:
return
if command == CMD_TEST:
self.registerEventTemp("T0", 100, someTestFunc)
return
# self.registerEventTemp("T0", 100, someTestFunc)
return flask.abort(503, {
"msg": "Printer not ready, operation canceled"
})
@staticmethod
def startExtrusion(self, temps, *args):
self._logger.debug("Temperature achieved, extrusion started %s, %s", temps, args)
# Extrude
self._printer.extrude(amount=120, speed=50)
+2 -1
View File
@@ -72,6 +72,7 @@ class Hooks():
if event["tool"] == tool and curTemp >= event["targetTemp"]:
arg = (temps, *event["args"])
if isinstance(event["func"], types.FunctionType):
self._logger.debug("addSelf")
arg = (self, *arg)
threading.Thread(target=event["func"], args=arg).start()
self.events.remove(event)
@@ -88,5 +89,5 @@ class Hooks():
"func": func,
"args": arguments
}
self._logger.debug("Registering event [%s]", event)
self._logger.debug("Registering event [%s, isFunction: %s]", event, isinstance(func, types.FunctionType))
self.events.append(event)
@@ -15,10 +15,16 @@ $(function () {
self.steps["E"] = ko.observable();
self.results = {};
self.testParam = {};
self.testParam["extrudeTemp"] = ko.observable(210);
self.testParam["extrudeLength"] = ko.observable(100);
self.testParam["extrudeSpeed"] = ko.observable(50);
self.testParam["markLength"] = ko.observable(120);
self.results["remainedLength"] = ko.observable(20);
self.results["markLength"] = ko.observable(120);
self.results["actualExtrusion"] = ko.computed(function () {
return (self.results.markLength() - self.results.remainedLength()).toFixed(3);
return (self.testParam.markLength() - self.results.remainedLength()).toFixed(3);
});
self.results["newSteps"] = ko.computed(function () {
@@ -47,14 +53,15 @@ $(function () {
OctoPrint.simpleApiCommand("CalibrationTools","loadSteps").done(function (response) {
self.from_json(response);
})
// OctoPrint.simpleApiGet("CalibrationTools").done(function (response) {
// console.log("CalibrationTools");
// self.from_json(response);
// });
}
self.startExtrusion = function () {
OctoPrint.simpleApiCommand("CalibrationTools","startExtrusion").done(function (response) {
OctoPrint.simpleApiCommand("CalibrationTools", "startExtrusion").done(function (response) {
new PNotify({
title: "Test request",
text: "<span style='font-weight:bold; color: red;'>Heating nuzzle has started!!!</span><br> When extrusion stops you have to fulfil <b>Length after extrusion</b> and save the new value ",
type: "info"
});
console.log(response);
})
}
@@ -62,8 +69,8 @@ $(function () {
self.tempRestart = function () {
OctoPrint.system.executeCommand("core", "restart");
}
self.runCommand = function () {
OctoPrint.control.sendGcodeWithParameters("G90");
self.saveESteps = function () {
OctoPrint.system.executeCommand("core", "restart");
}
self.onAllBound = self.onEventConnected = function () {
@@ -74,8 +81,14 @@ $(function () {
}
self.test = function () {
OctoPrint.simpleApiCommand("CalibrationTools","TEST").done(function (response) {
OctoPrint.simpleApiCommand("CalibrationTools", "TEST").done(function (response) {
console.log(response)
}).fail(function (response) {
new PNotify({
title: "Test request",
text: response.responseJSON.error.msg,
type: "error"
});
})
}
@@ -4,12 +4,12 @@
<p>Calibration</p>
</div>
<div class="span8 title">
<!-- <button class="btn" data-bind="click: $root.tempRestart">
RESTART
</button> -->
<div class="row-fluid">
<div class="span6"></div>
<div class="span6">
<button class="btn" data-bind="click: $root.tempRestart; visible: $root.tempRestart" >
RESTART
</button>
<button class="btn btn-primary" data-bind="click: $root.test"
title="BTN for testing">
<i class="fas fa-save" data-color="#000000"></i>&nbsp&nbsp
@@ -17,7 +17,7 @@
</blockquote>
{% endmacro %}
{% macro field(label, title, number, binding, enable, unit) %}
{% macro field(label, title, type, binding, enable, unit) %}
<div class="row-fluid">
<div class="span6">
<label for="{{ label }}" class="pull-right" style="margin-top: 5px;" title="{{ title }}">
@@ -26,7 +26,7 @@
</div>
<div class="span6">
<div class="input-append">
<input type="{{ number }}" id="{{ label }}" title="{{ title }}" class="input-small" step="0.01" data-bind="value: {{ binding }}, enable: {{ enable }}">
<input type="{{ type }}" id="{{ label }}" title="{{ title }}" class="input-small" step="0.01" data-bind="value: {{ binding }}, enable: {{ enable }}">
<span class="add-on" title="{{ title }}">{{ _(unit) }}</span>
</div>
</div>
@@ -1,20 +1,42 @@
{% import "macros.jinja2" as snipped %}
{{ snipped.subSection("EEPROM values") }}
{{ snipped.subSection("Test parameters", true) }}
{{ snipped.field("E steps", "Number of steps/mm currently set in EEPROM", "number", "$root.steps.E", "false", "steps/mm") }}
<!-- G1 E100 F50 command -->
<div class="row-fluid">
<div class="span6"></div>
<div class="span6">
<button class="btn" data-bind="click: $root.loadESteps, enable: $root.controlViewModel.isOperational() && (!$root.controlViewModel.isPrinting())"
title="Loads current value of steps/mm from current printer settings by calling M92">
<i class="fas fa-sync-alt" style="color:false" data-color="false"></i>&nbsp&nbsp
Load EEPROM data
</button>
<label for="temperature" class="pull-right" style="margin-top: 5px;" title="x">
Heating
</label>
</div>
<div class="span6">
<div class="input-prepend input-append">
<span class="add-on" title="Command to preheat the tool before testing">M104 &nbsp&nbsp&nbspS</span>
<input type="number" id="temperature" title="The temperature used to extrude in testing&#013;Is better to be a bit higher then usual for reducing the nuzzle pressure" class="input-mini" step="1"
data-bind="value: $root.testParam.extrudeTemp">
</div>
</div>
</div>
{{ snipped.subSection("Compute", true) }}
<div class="row-fluid">
<div class="span6">
<label for="extrusionLenSpeed" class="pull-right" style="margin-top: 5px;" title="x">
Extrusion length & speed
</label>
</div>
<div class="span6">
<div class="input-prepend input-append">
<span class="add-on" title="Command to extrude filament for testing">G1&nbsp&nbsp&nbspE</span>
<input type="number" id="extrusionLenSpeed" title="The length of filament to be extruded in testing" class="input-mini" step="1"
data-bind="value: $root.testParam.extrudeLength">
<span class="add-on" title="Command to extrude filament for testing">&nbsp&nbsp&nbspF</span>
<input type="number" id="extrusionLenSpeed" title="The speed to extrude filament in testing&#013;Lowest possible" class="input-mini" step="1"
data-bind="value: $root.testParam.extrudeSpeed">
</div>
</div>
</div>
{{ snipped.field("Extrusion marking length", "The length marked on filament before extrusion. ", "number", "$root.testParam.markLength", "true", "mm") }}
<div class="row-fluid" style="margin-bottom: 5px;">
<div class="span6"></div>
@@ -27,27 +49,46 @@
</div>
</div>
{{ snipped.subSection("Test results", true) }}
<div class="row-fluid">
<div class="span6">
<label for="eSteps" class="pull-right" style="margin-top: 5px;" title="Current value for number of steps/mm for E axe in EEPROM">
E steps
</label>
</div>
<div class="span6">
<div class="input-append">
<input type="number" id="eSteps" title="Current value for number of steps/mm for E axe in EEPROM" class="input-small" step="0.01"
data-bind="value: $root.steps.E, enable:false">
<span class="add-on" title="Current value for number of steps/mm for E axe in EEPROM">steps/mm</span>
<button class="btn" data-bind="click: $root.loadESteps, enable: $root.controlViewModel.isOperational() && (!$root.controlViewModel.isPrinting())"
title="Loads current value of steps/mm from EEPROM by calling M92">
<i class="fas fa-sync-alt" style="color:false" data-color="false"></i>&nbsp&nbsp
</button>
</div>
</div>
</div>
{{ snipped.field("Length after extrusion", "The remained length between filament mark and extruder entry", "number", "$root.results.remainedLength", "true", "mm") }}
{{ snipped.field("Actual extrusion", "How much filament has been extruded", "number", "$root.results.actualExtrusion", "false", "mm") }}
{{ snipped.field("New steps/mm", "The new number of steps/mm which should be set on EEPROM", "number", "$root.results.newSteps", "false", "steps/mm") }}
{{ snipped.field("Extrusion marking length", "The length marked on filament before extrusion", "number", "$root.results.markLength", "true", "mm") }}
{{ snipped.field("Measured value", "The length between filament mark and extruder entry after extrusion", "number", "$root.results.remainedLength", "true", "mm") }}
<div class="row-fluid">
<div class="row-fluid" style="margin-bottom: 5px;">
<div class="span6"></div>
<div class="span6">
<button class="btn btn-primary" data-bind="click: $root.saveESteps, enable: $root.controlViewModel.isOperational() && (!$root.controlViewModel.isPrinting())"
title="Saves the new calculated value of steps/mm on printer EEPROM">
<i class="fas fa-save" data-color="#000000"></i>&nbsp&nbsp
Set new value
Save the new value
</button>
</div>
</div>
{{ snipped.subSection("Process description", true) }}
{{ snipped.quote("
First <a href='https://teachingtechyt.github.io/calibration.html#esteps' target='_blank'>Read this</a><br><br>
This calibration is best done with the extruder detached from the hot end, so no restriction is present on the movement. If it is convenient, you can partially disassemble the printer so the output of the extruder is
open and the filament exits in free air. If this is inconvenient, the process below aims to minimize restrictions by extruding very slowly and with a slightly higher temperature. The results from this should still be
reliable.
", "text-warning" ) }}
", "text-warning" ) }}