diff --git a/README.md b/README.md index 843ba8c..c4d8b06 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,16 @@ -# 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. ![](./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 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("\
{{ _('Set the default value for the fan speed slider.') }}
+