Octoprint for controlling a 2D pen plotter. Based on the Mr. Beam fork of Octoprint.
Find a file
Gina Häußge e1eaf4eb8e comm: More resilience against garbage on the line during connect
* leading and trailing null bytes will now be stripped
  * while connecting, a "wait" will also trigger switch to connected
    state - relevant when connecting without reset and initial "ok" for
    M110 gets mangled
  * extended virtual printer by new options to test the above:
      * mangled "ok" can now be injected via "preparedOks" setting and
        prepare_ok DEBUG command
      * simulated reset lines on beginning ("start" etc) now only sent
        if new setting "simulateReset" is true

Should fix #1770
2017-02-20 11:57:47 +01:00
.github Preparing release of 1.2.16 2016-09-23 09:51:45 +02:00
.tx Updated transifex config file to point to new translation directory 2015-06-02 15:50:27 +02:00
docs Fixed docs for config.yaml and settings 2017-02-17 13:52:16 +01:00
scripts Fix BASEDIR & CONFIGFILE eval in init script & param order 2016-12-16 10:30:56 +01:00
src comm: More resilience against garbage on the line during connect 2017-02-20 11:57:47 +01:00
tests Fixed user unit tests 2017-02-17 13:43:47 +01:00
translations Update german translation 2017-01-12 14:34:00 +01:00
.editorconfig Added an EditorConfig file 2015-05-29 11:58:36 +02:00
.gitattributes Marked some paths for github's linguist 2016-09-23 14:26:58 +02:00
.gitignore python 3 changes exceptions, queue and asesrtEqual 2016-07-14 23:53:39 -07:00
.travis.yml Travis: Let's see if we can't get the git depth upped a bit 2015-10-23 13:36:39 +02:00
.versioneer-lookup Upped version numbers for branches 2017-01-25 12:50:50 +01:00
AUTHORS.md Whitespace, comments & added @eyal0 to AUTHORS.md 2017-01-24 11:38:52 +01:00
babel.cfg Webassets are now written to ~/.octoprint/generated 2015-06-03 18:27:30 +02:00
CHANGELOG.md Preparing release of 1.3.1 2017-01-25 08:24:07 +01:00
CONTRIBUTING.md Preparing release of 1.3.1 2017-01-25 08:24:07 +01:00
LICENSE Moved LICENSE file to root directory to make it more visible. Added hint to README.md that OctoPrint is released under AGPL 2013-01-20 00:29:48 +01:00
MANIFEST.in Merge branch 'maintenance' into devel 2016-07-18 12:13:50 +02:00
README.md Update command line examples in README 2017-01-09 17:07:27 +01:00
requirements.txt Removed accidentally committed line in requirements.txt 2015-03-12 19:19:42 +01:00
run changed magic line from python->python2 2015-09-17 18:04:14 +02:00
setup.cfg We want pep440-post by default 2015-10-23 10:07:15 +02:00
setup.py Simplified install process on Mac 2017-01-13 13:29:11 +01:00
SUPPORTERS.md Preparing release of 1.3.1rc1 2017-01-13 13:56:50 +01:00
THIRDPARTYLICENSES.md Fixed sorting in 3rd party licenses 2017-01-13 13:30:57 +01:00
versioneer.py Fixed an issue with versioneer detecting sdist version 2016-11-07 14:24:53 +01:00

OctoPrint

OctoPrint provides a snappy web interface for controlling a 3D printer (RepRap, Ultimaker, ...). It is Free Software and released under the GNU Affero General Public License V3.

Its website can be found at octoprint.org.

The documentation is located at docs.octoprint.org.

The official plugin repository can be reached at plugins.octoprint.org.

OctoPrint's development wouldn't be possible without the financial support by its community. If you enjoy OctoPrint, please consider becoming a regular supporter!

Screenshot

You are currently looking at the source code repository of OctoPrint. If you already installed it (e.g. by using the Raspberry Pi targeted distribution OctoPi) and only want to find out how to use it, the documentation and the public wiki might be of more interest for you. You might also want to subscribe to the mailing list or the G+ Community where there are other active users who might be able to help you with any questions you might have.

Contributing

Contributions of all kinds are welcome, not only in the form of code but also with regards to the official documentation or the public wiki, support of other users in the bug tracker, the Mailinglist or the G+ Community and also financially.

If you think something is bad about OctoPrint or its documentation the way it is, please help in any way to make it better instead of just complaining about it -- this is an Open Source Project after all :)

For information about how to go about contributions of any kind, please see the project's Contribution Guidelines.

Installation

Installation instructions for installing from source for different operating systems can be found on the wiki.

If you want to run OctoPrint on a Raspberry Pi you might want to take a look at OctoPi which is a custom SD card image that includes OctoPrint plus dependencies.

The generic steps that should basically be done regardless of operating system and runtime environment are the following (as regular user, please keep your hands off of the sudo command here!) - this assumes you already have Python 2.7, pip and virtualenv set up on your system:

  1. Checkout OctoPrint: git clone https://github.com/foosel/OctoPrint.git
  2. Change into the OctoPrint folder: cd OctoPrint
  3. Create a user-owned virtual environment therein: virtualenv venv
  4. Install OctoPrint into that virtual environment: ./venv/bin/python setup.py install

You may then start the OctoPrint server via /path/to/OctoPrint/venv/bin/octoprint, see Usage for details.

After installation, please make sure you follow the first-run wizard and set up access control as necessary. If you want to not only be notified about new releases but also be able to automatically upgrade to them from within OctoPrint, take a look at the documentation of the Software Update Plugin and at its settings.

Dependencies

OctoPrint depends on a couple of python modules to do its job. Those are automatically installed when installing OctoPrint via setup.py:

python setup.py install

You should also do this every time after pulling from the repository, since the dependencies might have changed.

OctoPrint currently only supports Python 2.7.

Usage

Running the setup.py script via

python setup.py install

installs the octoprint script in your Python installation's scripts folder (which depending on whether you installed OctoPrint globally or into a virtual env will be on your PATH or not). The following usage examples assume that said octoprint script is on your PATH.

You can start the server via

octoprint serve

By default it binds to all interfaces on port 5000 (so pointing your browser to http://127.0.0.1:5000 will do the trick). If you want to change that, use the additional command line parameters host and port, which accept the host ip to bind to and the numeric port number respectively. If for example you want the server to only listen on the local interface on port 8080, the command line would be

octoprint serve --host=127.0.0.1 --port=8080

Alternatively, the host and port on which to bind can be defined via the configuration.

If you want to run OctoPrint as a daemon (only supported on Linux), use

octoprint daemon {start|stop|restart} [--pid PIDFILE]

If you do not supply a custom pidfile location via --pid PIDFILE, it will be created at /tmp/octoprint.pid.

You can also specify the configfile or the base directory (for basing off the uploads, timelapse and logs folders), e.g.:

octoprint serve --config /path/to/another/config.yaml --basedir /path/to/my/basedir

See octoprint --help for further information.

OctoPrint also ships with a run script in its source directory. You can also invoke that to start up the server, it takes the same command line arguments as the octoprint script.

Configuration

If not specified via the commandline, the configfile config.yaml for OctoPrint is expected in the settings folder, which is located at ~/.octoprint on Linux, at %APPDATA%/OctoPrint on Windows and at ~/Library/Application Support/OctoPrint on MacOS.

A comprehensive overview of all available configuration settings can be found in the docs. Please note that the most commonly used configuration settings can also easily be edited from OctoPrint's settings dialog.

Special Thanks

Cross-browser testing services are kindly provided by BrowserStack. Profiling is done with the help of PyVmMonitor.