initial commit

This commit is contained in:
Vitor Henrique
2015-09-12 00:40:13 -05:00
commit 656c47d5d6
17 changed files with 379 additions and 0 deletions

17
.editorconfig Normal file
View 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

9
.gitignore vendored Normal file
View File

@@ -0,0 +1,9 @@
*.pyc
*.swp
.idea
*.iml
build
dist
*.egg*
.DS_Store
*.zip

1
MANIFEST.in Normal file
View File

@@ -0,0 +1 @@
include README.md

17
README.md Normal file
View File

@@ -0,0 +1,17 @@
# OctoPrint-Enclosure
**TODO:** Describe what your plugin does.
## Setup
Install via the bundled [Plugin Manager](https://github.com/foosel/OctoPrint/wiki/Plugin:-Plugin-Manager)
or manually using this URL:
https://github.com/vitormhenirque/OctoPrint-Enclosure/archive/master.zip
**TODO:** Describe how to install your plugin, if more needs to be done than just installing it via pip or through
the plugin manager.
## Configuration
**TODO:** Describe your plugin's configuration options (if any).

6
babel.cfg Normal file
View File

@@ -0,0 +1,6 @@
[python: */**.py]
[jinja2: */**.jinja2]
extensions=jinja2.ext.autoescape, jinja2.ext.with_
[javascript: */**.js]
extract_messages = gettext, ngettext

8
extras/README.txt Normal file
View File

@@ -0,0 +1,8 @@
Currently Cookiecutter generates the following helpful extras to this folder:
enclosure.md
Data file for plugins.octoprint.org. Fill in the missing TODOs once your
plugin is ready for release and file a PR as described at
http://plugins.octoprint.org/help/registering/ to get it published.
This folder may be safely removed if you don't need it.

55
extras/enclosure.md Normal file
View File

@@ -0,0 +1,55 @@
---
layout: plugin
id: enclosure
title: OctoPrint-Enclosure
description: TODO
author: Vitor Henrique
license: AGPLv3
# TODO
date: today's date in format YYYY-MM-DD, e.g. 2015-04-21
homepage: https://github.com/vitormhenirque/OctoPrint-Enclosure
source: https://github.com/vitormhenirque/OctoPrint-Enclosure
archive: https://github.com/vitormhenirque/OctoPrint-Enclosure/archive/master.zip
# TODO set this to true if your plugin uses the dependency_links setup parameter to include
# library versions not yet published on PyPi. SHOULD ONLY BE USED IF THERE IS NO OTHER OPTION!
follow_dependency_links: false
# TODO
tags:
- a list
- of tags
- that apply
- to your plugin
- (take a look at the existing plugins for what makes sense here)
# TODO
screenshots:
- url: url of a screenshot
alt: alt-text of a screenshot
caption: caption of a screenshot
- url: url of another screenshot
alt: alt-text of another screenshot
caption: caption of another screenshot
- ...
# TODO
featuredimage: url of a featured image for your plugin
compatibility:
# list of compatible versions, for example 1.2.0. If left empty no specific version requirement will be assumed
octoprint:
- 1.2.0
# list of compatible operating systems, valid values are linux, windows, macos, leaving empty defaults to all
os:
- linux
- windows
- macos
---
**TODO**: Longer description of your plugin, configuration examples etc. This part will be visible on the page at
http://plugins.octoprint.org/plugin/enclosure/

View File

@@ -0,0 +1,65 @@
# coding=utf-8
from __future__ import absolute_import
### (Don't forget to remove me)
# This is a basic skeleton for your plugin's __init__.py. You probably want to adjust the class name of your plugin
# as well as the plugin mixins it's subclassing from. This is really just a basic skeleton to get you started,
# defining your plugin as a template plugin.
#
# Take a look at the documentation on what other plugin mixins are available.
import octoprint.plugin
from octoprint.util import RepeatedTimer
class EnclosurePlugin(octoprint.plugin.StartupPlugin,
octoprint.plugin.TemplatePlugin,
octoprint.plugin.SettingsPlugin):
def on_after_startup(self):
self._logger.info("Starting Timer")
self.startTimer(5)
def startTimer(self, interval):
self._checkTempTimer = RepeatedTimer(interval, self.checkEnclosureTemp, None, None, True)
self._checkTempTimer.start()
def checkEnclosureTemp(self):
self._logger.info("Checking eclosure temp...")
import random
def randrange_float(start, stop, step):
return random.randint(0, int((stop - start) / step)) * step + start
p = randrange_float(5, 60, 0.1)
self._logger.info("temp:: %s" % p)
self._plugin_manager.send_plugin_message(self._identifier, dict(enclosureTemp=p))
##~~ SettingsPlugin
def get_settings_defaults(self):
return dict(heaterPin=17,
heaterFrequency=5,
heaterEnable=False,
fanEnable=False,
fanPin=18,
lightEnable=True,
lightPin=20
)
def get_template_configs(self):
return [
dict(type="settings", custom_bindings=False)
]
# If you want your plugin to be registered within OctoPrint under a different name than what you defined in setup.py
# ("OctoPrint-PluginSkeleton"), you may define that here. Same goes for the other metadata derived from setup.py that
# can be overwritten via __plugin_xyz__ control properties. See the documentation for that.
__plugin_name__ = "Enclosure Plugin"
def __plugin_load__():
global __plugin_implementation__
__plugin_implementation__ = EnclosurePlugin()
# global __plugin_hooks__
# __plugin_hooks__ = {
# "some.octoprint.hook": __plugin_implementation__.some_hook_handler
# }

View File

@@ -0,0 +1 @@
Have your plugin's CSS files generated to here.

View File

@@ -0,0 +1 @@
Put your plugin's javascript files here.

View File

@@ -0,0 +1 @@
Put your plugin's LESS files here, have them generated to ../css.

View File

@@ -0,0 +1 @@
Put your plugin's Jinja2 templates here.

View File

@@ -0,0 +1,59 @@
<h4>{{ _('Heater') }}</h4>
<form class="form-horizontal">
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" data-bind="checked: settings.plugins.enclosure.heaterEnable"> {{ _('Enable Heater') }}
</label>
</div>
</div>
<div class="control-group">
<label class="control-label" for="settings-enclosure-heaterpin">{{ _('Heater Pin') }}</label>
<div class="controls">
<input type="text" class="input-block-level" data-bind="value: settings.plugins.enclosure.heaterPin">
</div>
</div>
<div class="control-group">
<label class="control-label" for="settings-enclosure-heaterFrequency">{{ _('Heater Frequency') }}</label>
<div class="controls">
<input type="text" class="input-block-level" data-bind="value: settings.plugins.enclosure.heaterFrequency">
</div>
</div>
</form>
<h4>{{ _('Fan') }}</h4>
<form class="form-horizontal">
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" data-bind="checked: fanEnable"> {{ _('Enable Fan') }}
</label>
</div>
</div>
<div class="control-group">
<label class="control-label" for="settings-enclosure-fanpin">{{ _('Fan Pin') }}</label>
<div class="controls">
<input type="text" class="input-block-level" data-bind="value: settings.plugins.enclosure.fanPin">
</div>
</div>
</form>
<h4>{{ _('Light') }}</h4>
<form class="form-horizontal">
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" data-bind="checked: settings.plugins.enclosure.lightEnable"> {{ _('Enable Light') }}
</label>
</div>
</div>
<div class="control-group">
<label class="control-label" for="settings-enclosure-lightpin">{{ _('Light Pin') }}</label>
<div class="controls">
<input type="text" class="input-block-level" data-bind="value: settings.plugins.enclosure.lightPin">
</div>
</div>
</form>

View File

@@ -0,0 +1,7 @@
<div class="input-append">
<h4>Enclosure Info </h4>
<div class="control-group">
<label class="control-label" for="settings-enclosure-info">{{ _('Enclosure Temperature') }}</label>
<p data-bind="html: enclosureTemp"></p>
</div>
</div>

9
requirements.txt Normal file
View 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
View 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 = "enclosure"
# The plugin's python package, should be "octoprint_<plugin identifier>", has to be unique
plugin_package = "octoprint_enclosure"
# The plugin's human readable name. Can be overwritten within OctoPrint's internal data via __plugin_name__ in the
# plugin module
plugin_name = "OctoPrint-Enclosure"
# 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 = """TODO"""
# The plugin's author. Can be overwritten within OctoPrint's internal data via __plugin_author__ in the plugin module
plugin_author = "Vitor Henrique"
# The plugin's author's mail address.
plugin_author_email = "vitormhenrique@gmail.com"
# 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/vitormhenirque/OctoPrint-Enclosure"
# 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 contains in <plugin_package>.*
plugin_addtional_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_addtional_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)

28
translations/README.txt Normal file
View File

@@ -0,0 +1,28 @@
Your plugin's translations will reside here. The provided setup.py supports a
couple of additional commands to make managing your translations easier:
babel_extract
Extracts any translateable messages (marked with Jinja's `_("...")` or
JavaScript's `gettext("...")`) and creates the initial `messages.pot` file.
babel_refresh
Reruns extraction and updates the `messages.pot` file.
babel_new --locale=<locale>
Creates a new translation folder for locale `<locale>`.
babel_compile
Compiles the translations into `mo` files, ready to be used within
OctoPrint.
babel_pack --locale=<locale> [ --author=<author> ]
Packs the translation for locale `<locale>` up as an installable
language pack that can be manually installed by your plugin's users. This is
interesting for languages you can not guarantee to keep up to date yourself
with each new release of your plugin and have to depend on contributors for.
If you want to bundle translations with your plugin, create a new folder
`octoprint_enclosure/translations`. When that folder exists,
an additional command becomes available:
babel_bundle --locale=<locale>
Moves the translation for locale `<locale>` to octoprint_enclosure/translations,
effectively bundling it with your plugin. This is interesting for languages
you can guarantee to keep up to date yourself with each new release of your
plugin.