From 18f009fa85ad365f94e024c12f88d600726a1086 Mon Sep 17 00:00:00 2001 From: ntoff Date: Wed, 30 Aug 2017 22:39:57 +1000 Subject: [PATCH 1/4] add a setting to change the default value of the slider --- README.md | 4 ++-- octoprint_fanspeedslider/__init__.py | 7 +++++- octoprint_fanspeedslider/static/css/style.css | 4 ++++ .../static/js/fanslider.js | 24 ++++++++++--------- .../templates/fanspeedslider_settings.jinja2 | 18 ++++++++++++++ setup.py | 2 +- 6 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 diff --git a/README.md b/README.md index 843ba8c..31bf8cb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# OctoPrint-FanSpeedSlider +# Fan Speed Slider Plugin -Adds a slider to control the speed of a parts cooling fan. +Add a slider to control the speed of a parts cooling fan. The default value of the slider is user configurable, however the value doesn't limit the output of the fan during a print, for that you'll have to use your slicer. ![](./image/slider.JPG) diff --git a/octoprint_fanspeedslider/__init__.py b/octoprint_fanspeedslider/__init__.py index feed38f..7cb3e58 100644 --- a/octoprint_fanspeedslider/__init__.py +++ b/octoprint_fanspeedslider/__init__.py @@ -9,7 +9,7 @@ class FanSliderPlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.AssetPlugin): def get_settings_defaults(self): - return dict(fanSpeed="255") + return dict(fanSpeed=100) def get_assets(self): return dict( @@ -17,6 +17,11 @@ class FanSliderPlugin(octoprint.plugin.StartupPlugin, css=["css/style.css"] ) + def get_template_configs(self): + return [ + dict(type="settings", custom_bindings=False) + ] + def get_update_information(self): return dict( fanspeedslider=dict( diff --git a/octoprint_fanspeedslider/static/css/style.css b/octoprint_fanspeedslider/static/css/style.css index 81a22d4..d885502 100644 --- a/octoprint_fanspeedslider/static/css/style.css +++ b/octoprint_fanspeedslider/static/css/style.css @@ -13,4 +13,8 @@ -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; +} + +div#settings_plugin_fanspeedslider div { + width: 80%; } \ No newline at end of file diff --git a/octoprint_fanspeedslider/static/js/fanslider.js b/octoprint_fanspeedslider/static/js/fanslider.js index 56ebc40..efcd923 100644 --- a/octoprint_fanspeedslider/static/js/fanslider.js +++ b/octoprint_fanspeedslider/static/js/fanslider.js @@ -1,24 +1,24 @@ /* - * - * * Author: ntoff * License: AGPLv3 */ $(function() { - function FanSliderPluginViewModel(parameters) { + function FanSliderPluginViewModel(parameters) { var self = this; self.printerstate = parameters[0]; self.loginstate = parameters[1]; self.control = parameters[2]; + self.settings = parameters[3]; + //default to 100% fan speed - fanSpeed = ko.observable(100); + fanSpeed = ko.observable(undefined); //convert percentage into PWM fanPWM = ko.pureComputed(function () { return Math.round(fanSpeed() * 255 / 100); }); - //set fan speed + //send gcode to set fan speed sendFanSpeed = function () { self.control.sendCustomCommand({ command: "M106 S" + fanPWM() }); }; @@ -26,13 +26,12 @@ $(function() { $("#control > div.jog-panel").eq(0).addClass("controls"); $("#control > div.jog-panel").eq(1).addClass("tools"); $("#control > div.jog-panel").eq(2).addClass("general"); - //Only display the slider if TouchUI isn't active (sorry) + //If !TouchUI then remove standard buttons + add slider + new buttons if ($("#touch body").length ==0 ) { //add ID to buttons $("#control > div.general").find("button").eq(0).attr("id", "motors-off"); $("#control > div.general").find("button").eq(1).attr("id", "fan-on"); $("#control > div.general").find("button").eq(2).attr("id", "fan-off"); - //remove original fan on/off buttons $("#fan-on").remove(); $("#fan-off").remove(); @@ -42,11 +41,10 @@ $(function() { \ \ "); - } else { + } else { //if TouchUI is active we only add the speed input + fan on button in a new section. console.log("Fan Speed Slider: NOTICE! TouchUI is active, adding simplified control."); $("#control > div.jog-panel.general").after("\
\ -

" + gettext("Filament") + "

\
\ \ \ @@ -54,10 +52,14 @@ $(function() {
\ "); } + //retrieve settings + self.onBeforeBinding = function() { + fanSpeed(self.settings.settings.plugins.fanspeedslider.fanSpeed()); + } } OCTOPRINT_VIEWMODELS.push([ FanSliderPluginViewModel, - ["printerStateViewModel", "loginStateViewModel", "controlViewModel"] - ]); + ["printerStateViewModel", "loginStateViewModel", "controlViewModel", "settingsViewModel"] + ]); }); \ No newline at end of file diff --git a/octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 b/octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 new file mode 100644 index 0000000..ebbf725 --- /dev/null +++ b/octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 @@ -0,0 +1,18 @@ +

{{ _('Fan Speed Slider') }}

+
+

{{ _('Set the default value for the fan speed slider.') }}

+
+
+
+
+ +
+
+ + % +
+ {{ _('This value does not affect the maximum or minimum value the fan will run at. To limit the power the fan will use during a print, see your slicer\'s settings.') }} +
+
+
+
diff --git a/setup.py b/setup.py index 0ec87ad..f1ce404 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ plugin_package = "octoprint_fanspeedslider" plugin_name = "OctoPrint-FanSpeedSlider" # The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module -plugin_version = "0.1.1" +plugin_version = "0.1.3" # The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin # module From acf3db65f65b55ffb186653cddfb9933d0aea5cf Mon Sep 17 00:00:00 2001 From: ntoff Date: Thu, 31 Aug 2017 18:22:09 +1000 Subject: [PATCH 2/4] Update setup.py oops, skipped a version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f1ce404..1c9c839 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ plugin_package = "octoprint_fanspeedslider" plugin_name = "OctoPrint-FanSpeedSlider" # The plugin's version. Can be overwritten within OctoPrint's internal data via __plugin_version__ in the plugin module -plugin_version = "0.1.3" +plugin_version = "0.1.2" # The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin # module From 4df6a99238af7ccb40d0be196f41d1cd13203baf Mon Sep 17 00:00:00 2001 From: ntoff Date: Sun, 3 Sep 2017 17:18:46 +1000 Subject: [PATCH 3/4] change inline help text a bit --- .../templates/fanspeedslider_settings.jinja2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 b/octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 index ebbf725..b23d2cf 100644 --- a/octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 +++ b/octoprint_fanspeedslider/templates/fanspeedslider_settings.jinja2 @@ -11,7 +11,7 @@ %
- {{ _('This value does not affect the maximum or minimum value the fan will run at. To limit the power the fan will use during a print, see your slicer\'s settings.') }} + {{ _('This value does not affect the maximum or minimum speed of the fan. To limit the power the fan will use during a print, see your slicer\'s min / max fan speed setting.') }} From 7612b7081cabf55c62473a47364843badec97e7d Mon Sep 17 00:00:00 2001 From: ntoff Date: Sun, 3 Sep 2017 17:18:54 +1000 Subject: [PATCH 4/4] add usage to readme --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 31bf8cb..c4d8b06 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,16 @@ # Fan Speed Slider Plugin -Add a slider to control the speed of a parts cooling fan. The default value of the slider is user configurable, however the value doesn't limit the output of the fan during a print, for that you'll have to use your slicer. +Add a slider to control the speed of a parts cooling fan. ![](./image/slider.JPG) -*Note: Slider does __not__ follow the speed of the fan. If the fan speed is set via gcode or an LCD panel on the printer, the slider will not respond to the change.* +## Usage + +Slide the slider, click the button. There really isn't much else to do :) + +The default value of the slider is user configurable, this is the value that the slider will be set to upon loading OctoPrint's UI, and any time you refresh the page. The default value setting does __NOT__ limit the output of the fan, if you set the default value to 10% and set the fan to 100% it will still come on at 100%. To limit the min/max speed of your fan during a print, please see your slicer's documentation and settings. + +*Note: Slider does __not__ follow the speed of the fan. If the fan speed is set via gcode or an LCD panel on the printer, the slider will not respond to the change. It is a __setting__, not an indicator, and functions the same way the feedrate and flowrate sliders do.* ## Setup