Add option to remember last fan speed
Add the option to remember the last speed value and set the slider on load/refresh
This commit is contained in:
@ -22,7 +22,9 @@ class FanSliderPlugin(octoprint.plugin.StartupPlugin,
|
||||
defaultFanSpeed=100,
|
||||
minSpeed=0,
|
||||
maxSpeed=100,
|
||||
notifyDelay=4000
|
||||
notifyDelay=4000,
|
||||
lastSentSpeed=0,
|
||||
defaultLastSpeed=False
|
||||
)
|
||||
|
||||
def on_settings_save(self, data):
|
||||
@ -35,6 +37,10 @@ class FanSliderPlugin(octoprint.plugin.StartupPlugin,
|
||||
s.setInt(["maxSpeed"], data["maxSpeed"])
|
||||
if "notifyDelay" in data.keys():
|
||||
s.setInt(["notifyDelay"], data["notifyDelay"])
|
||||
if "lastSentSpeed" in data.keys():
|
||||
s.setInt(["lastSentSpeed"], data["lastSentSpeed"])
|
||||
if "defaultLastSpeed" in data.keys():
|
||||
s.set(["defaultLastSpeed"], data["defaultLastSpeed"])
|
||||
self.get_settings_updates()
|
||||
#clean up settings if everything's default
|
||||
self.on_settings_cleanup()
|
||||
|
@ -17,13 +17,16 @@ $(function () {
|
||||
self.settings.minFanSpeed = new ko.observable(0); //this,
|
||||
self.settings.maxFanSpeed = new ko.observable(100); //and this are percents 0 - 100%
|
||||
self.settings.notifyDelay = new ko.observable(4000); //time in milliseconds
|
||||
self.settings.defaultLastSpeed = new ko.observable(false); //options page option to set the slider to the last sent fan speed value on load/refresh
|
||||
self.settings.lastSentSpeed = new ko.observable(null); //the last speed value that was sent to the printer
|
||||
|
||||
self.settings.commonTitle = ko.observable(gettext("\n\nThis allows limiting the cooling fan without having to re-slice your model.\n\nLimited to prints controlled by OctoPrint."));
|
||||
self.settings.defaultTitle = ko.observable(gettext("This is the value the slider will default to when the UI is loaded / refreshed."));
|
||||
self.settings.minTitle = ko.observable(gettext("Set this to the lowest value at which your fan will spin.") + self.settings.commonTitle());
|
||||
self.settings.maxTitle = ko.observable(gettext("Set this <100% if your cooling fan is too strong on full.") + self.settings.commonTitle());
|
||||
self.settings.noticeTitle = ko.observable(gettext("Notifications only apply when setting the speed via the slider + button in the UI. Set to 0 (zero) to disable notifications."));
|
||||
|
||||
self.settings.lastspeedTitle = ko.observable(gettext("Instead of defaulting to the speed set by \"Default Value\", the slider will be set to the last sent speed on load / refresh. \n\n Note: It takes into account the min/max value setting and overrides the \"Default Value\" setting."));
|
||||
|
||||
self.showNotify = function (self, options) {
|
||||
options.hide = true;
|
||||
options.title = "Fan Speed Control";
|
||||
@ -68,6 +71,12 @@ $(function () {
|
||||
self.control.sendFanSpeed = function () {
|
||||
self.control.checkSliderValue();
|
||||
self.control.sendCustomCommand({ command: "M106 S" + self.control.fanSpeedToPwm() });
|
||||
|
||||
if (self.settings.defaultLastSpeed()) {
|
||||
self.settings.settings.plugins.fanspeedslider.lastSentSpeed(self.control.fanSpeed());
|
||||
self.settings.saveData();
|
||||
self.updateSettings();
|
||||
}
|
||||
};
|
||||
|
||||
//ph34r
|
||||
@ -109,6 +118,7 @@ $(function () {
|
||||
self.settings.minFanSpeed(parseInt(self.settings.settings.plugins.fanspeedslider.minSpeed()));
|
||||
self.settings.maxFanSpeed(parseInt(self.settings.settings.plugins.fanspeedslider.maxSpeed()));
|
||||
self.settings.notifyDelay(parseInt(self.settings.settings.plugins.fanspeedslider.notifyDelay()));
|
||||
self.settings.defaultLastSpeed(self.settings.settings.plugins.fanspeedslider.defaultLastSpeed());
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error);
|
||||
@ -117,6 +127,7 @@ $(function () {
|
||||
|
||||
self.onBeforeBinding = function () {
|
||||
self.settings.defaultFanSpeed(parseInt(self.settings.settings.plugins.fanspeedslider.defaultFanSpeed()));
|
||||
self.settings.lastSentSpeed(parseInt(self.settings.settings.plugins.fanspeedslider.lastSentSpeed()));
|
||||
self.updateSettings();
|
||||
//if the default fan speed is above or below max/min then set to either max or min
|
||||
if (self.settings.defaultFanSpeed() < self.settings.minFanSpeed()) {
|
||||
@ -125,6 +136,9 @@ $(function () {
|
||||
else if (self.settings.defaultFanSpeed() > self.settings.maxFanSpeed()) {
|
||||
self.control.fanSpeed(self.settings.maxFanSpeed());
|
||||
}
|
||||
else if (self.settings.defaultLastSpeed()) {
|
||||
self.control.fanSpeed(self.settings.lastSentSpeed());
|
||||
}
|
||||
else {
|
||||
self.control.fanSpeed(self.settings.defaultFanSpeed());
|
||||
}
|
||||
|
@ -11,6 +11,15 @@
|
||||
<span class="help-block">{{ _('The default value the slider will be set to when opening OctoPrint\'s UI') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ _('Remember Last Speed') }}</label>
|
||||
<div class="controls">
|
||||
<div class="input-append">
|
||||
<input type="checkbox" class="input-mini" data-bind="attr: { title: lastspeedTitle }, checked: settings.plugins.fanspeedslider.defaultLastSpeed">
|
||||
</div>
|
||||
<span class="help-block">{{ _('Instead of the default speed value, the slider will use the last sent speed as the default value') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<!--<strong>{{ _('The settings below can be used to limit the fan\'s output without having to re-slice and re-upload your gcode.') }}</strong>-->
|
||||
<div class="control-group">
|
||||
<label class="control-label">{{ _('Minimum Speed') }}</label>
|
||||
|
Reference in New Issue
Block a user