2013-01-18 22:23:50 +00:00
OctoPrint
=========
2013-03-15 23:17:12 +00:00
[![Flattr this git repo ](http://api.flattr.com/button/flattr-badge-large.png )](https://flattr.com/submit/auto?user_id=foosel& url=https://github.com/foosel/OctoPrint& title=OctoPrint& language=& tags=github& category=software)
2013-01-18 22:23:50 +00:00
OctoPrint provides a responsive web interface for controlling a 3D printer (RepRap, Ultimaker, ...). It currently
2012-12-31 12:18:54 +00:00
allows
2012-04-06 14:20:22 +00:00
2013-06-09 16:42:32 +00:00
* uploading .gcode files to the server plus optionally the printer's SD card and managing them via the UI
* selecting a file for printing, getting the usual stats regarding filament length etc (stats not available for SD files)
2012-12-31 12:18:54 +00:00
* starting, pausing and canceling a print job
* while connected to the printer, gaining information regarding the current temperature of both head and bed (if available) in a nice shiny javascript-y temperature graph
* while printing, gaining information regarding the current progress of the print job (height, percentage etc)
* reading the communication log and send arbitrary codes to be executed by the printer
2013-03-06 22:44:58 +00:00
* moving the X, Y and Z axis (jog controls), extruding, retracting and custom controls
2013-06-09 16:42:32 +00:00
* previewing the GCODE of the selected model to print (via gCodeVisualizer), including rendering of the progress during printing (not available when SD printing)
2013-01-03 14:25:20 +00:00
* optional: visual monitoring of the printer via webcam stream integrated into the UI (using e.g. MJPG-Streamer)
* optional: creation of timelapse recordings of the printjob via webcam stream (using e.g. MJPG-Streamer) -- currently two timelaspe methods are implemented, triggering a shot on z-layer change or every "n" seconds
2013-06-09 16:42:32 +00:00
* optional: access control to provide a read-only mode on the web interface, allowing any actions only to logged in users
2012-04-06 14:20:22 +00:00
2013-01-18 22:23:50 +00:00
The intended usecase is to run OctoPrint on a single-board computer like the Raspberry Pi and a WiFi module,
2013-01-19 23:29:48 +00:00
connect the printer to the server and therefore create a WiFi-enabled 3D printer. If you want to add a webcam for visual
monitoring and timelapse support, you'll need a **powered** USB hub.
2012-04-06 14:20:22 +00:00
2013-01-19 23:29:48 +00:00
OctoPrint is Free Software and released under the [GNU Affero General Public License V3 ](http://www.gnu.org/licenses/agpl.html ).
2013-01-14 13:33:00 +00:00
2012-12-31 12:18:54 +00:00
Dependencies
------------
2012-12-06 07:57:18 +00:00
2013-01-18 22:23:50 +00:00
OctoPrint depends on a couple of python modules to do its job. Those are listed in requirements.txt and can be
2012-12-31 12:18:54 +00:00
installed using `pip` :
2012-12-06 07:57:18 +00:00
2012-12-31 12:18:54 +00:00
pip install -r requirements.txt
2012-12-06 07:57:18 +00:00
2013-01-18 22:43:50 +00:00
You should also do this after pulling from the repository, since the dependencies might have changed.
2013-01-18 22:23:50 +00:00
OctoPrint currently only supports Python 2.7.
2013-01-01 20:04:00 +00:00
2012-12-31 12:18:54 +00:00
Usage
-----
2012-12-06 07:57:18 +00:00
2012-12-31 12:18:54 +00:00
Just start the server via
2012-12-05 13:16:50 +00:00
2013-01-18 22:39:26 +00:00
./run
2012-12-31 12:18:54 +00:00
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` ,
2013-03-11 20:00:43 +00:00
which accept the host ip to bind to and the numeric port number respectively. If for example you want the server
2012-12-31 12:18:54 +00:00
to only listen on the local interface on port 8080, the command line would be
2012-12-06 07:57:18 +00:00
2013-01-18 22:39:26 +00:00
./run --host=127.0.0.1 --port=8080
2013-01-01 20:04:00 +00:00
Alternatively, the host and port on which to bind can be defined via the configuration.
2013-03-11 20:00:43 +00:00
If you want to run OctoPrint as a daemon (only supported on Linux), use
2013-03-10 20:33:45 +00:00
2013-06-09 16:42:32 +00:00
./run --daemon {start|stop|restart} [--pid PIDFILE]
2013-03-10 20:33:45 +00:00
2013-03-11 20:04:56 +00:00
If you do not supply a custom pidfile location via `--pid PIDFILE` , it will be created at `/tmp/octoprint.pid` .
2013-03-11 20:00:43 +00:00
You can also specify the configfile or the base directory (for basing off the `uploads` , `timelapse` and `logs` folders),
e.g.:
./run --config /path/to/another/config.yaml --basedir /path/to/my/basedir
See `run --help` for further information.
2013-03-10 20:33:45 +00:00
2013-01-01 20:04:00 +00:00
Configuration
-------------
2013-03-16 01:40:42 +00:00
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 [on the wiki ](https://github.com/foosel/OctoPrint/wiki/Configuration ).
2013-03-10 16:46:46 +00:00
2013-01-02 23:39:17 +00:00
Setup on a Raspberry Pi running Raspbian
----------------------------------------
2013-03-15 23:34:40 +00:00
A comprehensive setup guide can be found [on the wiki ](https://github.com/foosel/OctoPrint/wiki/Setup-on-a-Raspberry-Pi-running-Raspbian ).
2013-03-10 20:33:45 +00:00
2012-12-31 12:18:54 +00:00
Credits
-------
2012-12-26 23:04:12 +00:00
2013-02-09 22:28:00 +00:00
OctoPrint started out as a fork of Cura (https://github.com/daid/Cura) for adding a web interface to its
2013-03-30 17:31:17 +00:00
printing functionality and was originally named "Printer WebUI". It still uses Cura's communication code for talking to
2013-02-09 22:28:00 +00:00
the printer, but has been reorganized to only include those parts of Cura necessary for its targeted use case.
2012-12-26 23:04:12 +00:00
2012-12-31 12:18:54 +00:00
It also uses the following libraries and frameworks for backend and frontend:
2012-12-26 23:04:12 +00:00
2012-12-31 12:18:54 +00:00
* Flask: http://flask.pocoo.org/
2013-01-18 22:43:50 +00:00
* Tornado: http://www.tornadoweb.org/
* Tornadio2: https://github.com/MrJoes/tornadio2
2013-01-27 17:28:11 +00:00
* PyYAML: http://pyyaml.org/
2013-01-18 22:43:50 +00:00
* Socket.io: http://socket.io/
2012-12-31 12:18:54 +00:00
* jQuery: http://jquery.com/
* Bootstrap: http://twitter.github.com/bootstrap/
2013-03-30 17:31:17 +00:00
* Font Awesome: http://fortawesome.github.com/Font-Awesome/
2012-12-31 12:18:54 +00:00
* Knockout.js: http://knockoutjs.com/
2013-02-10 20:48:24 +00:00
* Underscore.js: http://underscorejs.org/
2012-12-31 12:18:54 +00:00
* Flot: http://www.flotcharts.org/
* jQuery File Upload: http://blueimp.github.com/jQuery-File-Upload/
2013-03-10 16:55:31 +00:00
* Pines Notify: http://pinesframework.org/pnotify/
2013-02-09 22:28:00 +00:00
* gCodeVisualizer: https://github.com/hudbrog/gCodeViewer
2013-01-02 23:39:17 +00:00
2013-01-03 14:25:20 +00:00
The following software is recommended for Webcam support on the Raspberry Pi:
2013-01-02 23:39:17 +00:00
* MJPG-Streamer: http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Page
2013-01-18 22:23:50 +00:00
I also want to thank [Janina Himmen ](http://jhimmen.de/ ) for providing the kick-ass logo!