upload
This commit is contained in:
commit
594455ef61
17
.editorconfig
Normal file
17
.editorconfig
Normal file
@ -0,0 +1,17 @@
|
||||
# This file is for unifying the coding style for different editors and IDEs
|
||||
# editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[**.py]
|
||||
indent_style = tab
|
||||
|
||||
[**.js]
|
||||
indent_style = space
|
||||
indent_size = 4
|
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
*.pyc
|
||||
*.swp
|
||||
.idea
|
||||
*.iml
|
||||
build
|
||||
dist
|
||||
*.egg*
|
||||
.DS_Store
|
||||
*.zip
|
||||
.vscode
|
2
MANIFEST.in
Normal file
2
MANIFEST.in
Normal file
@ -0,0 +1,2 @@
|
||||
include README.md
|
||||
recursive-include octoprint_fanspeedslider *
|
14
README.md
Normal file
14
README.md
Normal file
@ -0,0 +1,14 @@
|
||||
# OctoPrint-FanSpeedSlider
|
||||
|
||||
Adds 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.*
|
||||
|
||||
## Setup
|
||||
|
||||
Install manually using this URL:
|
||||
|
||||
https://github.com/ntoff/OctoPrint-fanspeedslider/archive/master.zip
|
||||
|
6
babel.cfg
Normal file
6
babel.cfg
Normal file
@ -0,0 +1,6 @@
|
||||
[python: */**.py]
|
||||
[jinja2: */**.jinja2]
|
||||
extensions=jinja2.ext.autoescape, jinja2.ext.with_
|
||||
|
||||
[javascript: */**.js]
|
||||
extract_messages = gettext, ngettext
|
BIN
image/slider.JPG
Normal file
BIN
image/slider.JPG
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
36
octoprint_fanspeedslider/__init__.py
Normal file
36
octoprint_fanspeedslider/__init__.py
Normal file
@ -0,0 +1,36 @@
|
||||
# coding=utf-8
|
||||
from __future__ import absolute_import
|
||||
|
||||
import octoprint.plugin
|
||||
|
||||
class FanSliderPlugin(octoprint.plugin.StartupPlugin,
|
||||
octoprint.plugin.TemplatePlugin,
|
||||
octoprint.plugin.SettingsPlugin,
|
||||
octoprint.plugin.AssetPlugin):
|
||||
|
||||
def get_assets(self):
|
||||
return dict(
|
||||
js=["js/fanslider.js"]
|
||||
)
|
||||
|
||||
def get_update_information(self):
|
||||
return dict(
|
||||
fanspeedslider=dict(
|
||||
displayName="Fan Speed Slider",
|
||||
displayVersion=self._plugin_version,
|
||||
|
||||
# version check: github repository
|
||||
type="github_release",
|
||||
user="ntoff",
|
||||
repo="OctoPrint-FanSpeedSlider",
|
||||
current=self._plugin_version,
|
||||
|
||||
# update method: pip
|
||||
pip="https://github.com/ntoff/OctoPrint-FanSpeedSlider/archive/{target_version}.zip"
|
||||
)
|
||||
)
|
||||
__plugin_name__ = "Fan Speed Slider"
|
||||
__plugin_implementation__ = FanSliderPlugin()
|
||||
__plugin_hooks__ = {
|
||||
"octoprint.plugin.softwareupdate.check_config": __plugin_implementation__.get_update_information
|
||||
}
|
49
octoprint_fanspeedslider/static/js/fanslider.js
Normal file
49
octoprint_fanspeedslider/static/js/fanslider.js
Normal file
@ -0,0 +1,49 @@
|
||||
/*
|
||||
*
|
||||
*
|
||||
* Author: ntoff
|
||||
* License: AGPLv3
|
||||
*/
|
||||
$(function() {
|
||||
|
||||
function FanSliderPluginViewModel(parameters) {
|
||||
var self = this;
|
||||
|
||||
self.printerstate = parameters[0];
|
||||
self.loginstate = parameters[1];
|
||||
self.control = parameters[2]
|
||||
|
||||
fanSpeed = ko.observable(255);
|
||||
//convert 0 - 255 to 0 - 100% for the button
|
||||
fanPercent = ko.pureComputed(function () {
|
||||
return Math.floor(fanSpeed() /255 * 100);
|
||||
});
|
||||
//set fan speed
|
||||
sendFanSpeed = function () {
|
||||
self.control.sendCustomCommand({ command: "M106 S" + fanSpeed() });
|
||||
};
|
||||
//extra classes
|
||||
$("#control > div.jog-panel").eq(0).addClass("controls");
|
||||
$("#control > div.jog-panel").eq(1).addClass("tools");
|
||||
$("#control > div.jog-panel").eq(2).addClass("general");
|
||||
|
||||
//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();
|
||||
//add new fan controls
|
||||
$("#control > div.jog-panel.general").find("button").eq(0).before("<input type=\"number\" style=\"width: 90px\" data-bind=\"slider: {min: 00, max: 255, step: 1, value: fanSpeed, tooltip: 'hide'}\">\
|
||||
<button class=\"btn btn-block control-box\" data-bind=\"enable: isOperational() && !isPrinting() && loginState.isUser(), click: function() { sendFanSpeed() }\">" + gettext("Fan on") + ":<span data-bind=\"text: fanPercent() + '%'\"></span></button>\
|
||||
<button class=\"btn btn-block control-box\" data-bind=\"enable: isOperational() && !isPrinting() && loginState.isUser(), click: function() { $root.sendCustomCommand({ type: 'command', commands: ['M106 S0'] }) }\">" + gettext("Fan off") + "</button>");
|
||||
|
||||
}
|
||||
OCTOPRINT_VIEWMODELS.push([
|
||||
FanSliderPluginViewModel,
|
||||
|
||||
["printerStateViewModel", "loginStateViewModel", "controlViewModel"]
|
||||
]);
|
||||
});
|
9
requirements.txt
Normal file
9
requirements.txt
Normal file
@ -0,0 +1,9 @@
|
||||
###
|
||||
# This file is only here to make sure that something like
|
||||
#
|
||||
# pip install -e .
|
||||
#
|
||||
# works as expected. Requirements can be found in setup.py.
|
||||
###
|
||||
|
||||
.
|
94
setup.py
Normal file
94
setup.py
Normal file
@ -0,0 +1,94 @@
|
||||
# coding=utf-8
|
||||
|
||||
########################################################################################################################
|
||||
### Do not forget to adjust the following variables to your own plugin.
|
||||
|
||||
# The plugin's identifier, has to be unique
|
||||
plugin_identifier = "fanspeedslider"
|
||||
|
||||
# The plugin's python package, should be "octoprint_<plugin identifier>", has to be unique
|
||||
plugin_package = "octoprint_fanspeedslider"
|
||||
|
||||
# The plugin's human readable name. Can be overwritten within OctoPrint's internal data via __plugin_name__ in the
|
||||
# plugin module
|
||||
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.0"
|
||||
|
||||
# The plugin's description. Can be overwritten within OctoPrint's internal data via __plugin_description__ in the plugin
|
||||
# module
|
||||
plugin_description = """Slider to control the speed of the print cooling fan."""
|
||||
|
||||
# The plugin's author. Can be overwritten within OctoPrint's internal data via __plugin_author__ in the plugin module
|
||||
plugin_author = "ntoff"
|
||||
|
||||
# The plugin's author's mail address.
|
||||
plugin_author_email = ""
|
||||
|
||||
# The plugin's homepage URL. Can be overwritten within OctoPrint's internal data via __plugin_url__ in the plugin module
|
||||
plugin_url = "https://github.com/ntoff/OctoPrint-FanSpeedSlider"
|
||||
|
||||
# The plugin's license. Can be overwritten within OctoPrint's internal data via __plugin_license__ in the plugin module
|
||||
plugin_license = "AGPLv3"
|
||||
|
||||
# Any additional requirements besides OctoPrint should be listed here
|
||||
plugin_requires = []
|
||||
|
||||
### --------------------------------------------------------------------------------------------------------------------
|
||||
### More advanced options that you usually shouldn't have to touch follow after this point
|
||||
### --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
# Additional package data to install for this plugin. The subfolders "templates", "static" and "translations" will
|
||||
# already be installed automatically if they exist.
|
||||
plugin_additional_data = []
|
||||
|
||||
# Any additional python packages you need to install with your plugin that are not contained in <plugin_package>.*
|
||||
plugin_additional_packages = []
|
||||
|
||||
# Any python packages within <plugin_package>.* you do NOT want to install with your plugin
|
||||
plugin_ignored_packages = []
|
||||
|
||||
# Additional parameters for the call to setuptools.setup. If your plugin wants to register additional entry points,
|
||||
# define dependency links or other things like that, this is the place to go. Will be merged recursively with the
|
||||
# default setup parameters as provided by octoprint_setuptools.create_plugin_setup_parameters using
|
||||
# octoprint.util.dict_merge.
|
||||
#
|
||||
# Example:
|
||||
# plugin_requires = ["someDependency==dev"]
|
||||
# additional_setup_parameters = {"dependency_links": ["https://github.com/someUser/someRepo/archive/master.zip#egg=someDependency-dev"]}
|
||||
additional_setup_parameters = {}
|
||||
|
||||
########################################################################################################################
|
||||
|
||||
from setuptools import setup
|
||||
|
||||
try:
|
||||
import octoprint_setuptools
|
||||
except:
|
||||
print("Could not import OctoPrint's setuptools, are you sure you are running that under "
|
||||
"the same python installation that OctoPrint is installed under?")
|
||||
import sys
|
||||
sys.exit(-1)
|
||||
|
||||
setup_parameters = octoprint_setuptools.create_plugin_setup_parameters(
|
||||
identifier=plugin_identifier,
|
||||
package=plugin_package,
|
||||
name=plugin_name,
|
||||
version=plugin_version,
|
||||
description=plugin_description,
|
||||
author=plugin_author,
|
||||
mail=plugin_author_email,
|
||||
url=plugin_url,
|
||||
license=plugin_license,
|
||||
requires=plugin_requires,
|
||||
additional_packages=plugin_additional_packages,
|
||||
ignored_packages=plugin_ignored_packages,
|
||||
additional_data=plugin_additional_data
|
||||
)
|
||||
|
||||
if len(additional_setup_parameters):
|
||||
from octoprint.util import dict_merge
|
||||
setup_parameters = dict_merge(setup_parameters, additional_setup_parameters)
|
||||
|
||||
setup(**setup_parameters)
|
Loading…
Reference in New Issue
Block a user