Commit graph

133 commits

Author SHA1 Message Date
Gina Häußge
7ab3eabe0f Support for shared nozzle setups
Support multi-extruder setups that share a single nozzle and heater,
like the E3D Cyclops, Diamon hotend or probably the upcoming Prusa Mk2
multi-extruder upgrade.

The Control tab will still allow tool switching and extruding for
the configured extruders, the Temperature tab will only display
one hotend temperature though.

Printer profiles have been extended by a new option
extruder.sharedNozzle that defaults to False. Extruder offsets are
not displayed in the profile editor if that setting is checked and
reset to (0,0).
2017-01-26 13:33:42 +01:00
Gina Häußge
fb5d5682e6 Do not eat 0% progress
Fixes #1344 (this time for good I hope)
2017-01-11 17:57:45 +01:00
Gina Häußge
07382d3918 Add (optional) firmware auto detection
If enabled (which it is by default), OctoPrint will now send
an M115 to the printer on initial connection in order to try
to figure out what kind of firmware it is. For FIRMWARE_NAME
values containing "repetier" (case insensitive), all Repetier-
specific flags will be set on the comm layer. For FIRMWARE_NAME
values containing "reprapfirmware", all RepRapFirmware-
specific flags will be set on the comm layer.

For now no other handling will be performed.
2016-11-17 17:13:36 +01:00
Gina Häußge
0ad057cdbb Fix PrintFailed event
Was missing the new fields in the payload
2016-11-16 16:09:42 +01:00
Gina Häußge
83a08cd927 Fix a small issue with estimator output when no file is selected 2016-11-16 14:12:37 +01:00
Gina Häußge
cc5f119f1b Include position in PrintPaused and PrintCancelled events
If available. Updated docs accordingly.
2016-11-15 11:56:30 +01:00
Gina Häußge
58835cfd8e Add tracking of cancel position & make public 2016-11-15 11:54:35 +01:00
Gina Häußge
e04bdb3571 Allow access to the current printed file position 2016-11-15 10:28:14 +01:00
Gina Häußge
47a3e0340e Allow to define a custom bounding box for printer head movements
That bounding box may have larger dimensions than the print volume
(but not smaller ones). That allows to define safe areas for which no
"exceeds print volume" messages need to be triggered.

Solves #1551
2016-11-09 15:45:25 +01:00
Gina Häußge
4689a405a3 Merge branch 'dev/positionRecordingOnPause' into devel 2016-11-04 12:12:38 +01:00
Gina Häußge
3f0bfa0fc8 New POSITION_UPDATE event for responses to M114 2016-11-04 12:11:16 +01:00
Florian Heilmann
5ac934bcc4 Fix Typos
Note to self: double and triple check more!

turn "=" into "=="
2016-10-22 12:53:32 +02:00
Florian Heilmann
fd1016695f Adjust output of values() classmethod
The way it was before, the function would also return itself. This isn't really a problem here, but if someone takes this function as a guide (like me) they can run into problems when iterating over the returned array, as it contains an element representing "values()" itself.

Another approach would be make use of the inspect package and replace name="values" with inspect.ismethod(name)
2016-10-22 12:39:16 +02:00
Gina Häußge
9fb8883923 Merge branch 'fix/issue1541' into devel 2016-10-14 16:24:43 +02:00
Gina Häußge
3f8dde75d5 Persist settings after changing default printer profile
Fixes #1541
2016-10-14 16:23:47 +02:00
Gina Häußge
6e39ea046f Merge branch 'fix/issue1543' into devel 2016-10-14 16:02:00 +02:00
Gina Häußge
bc5044b125 Fix target temperature propagation from comm layer
When setting the tracked target temperature from a sent temperature
command, the changes in tracked temperature were not propagated
from the comm layer to registered callbacks.

But since the standard printer also didn't make a copy of the mutable
dict of tool temperatures, those were in fact updated even without
propagation in the printer implementation when the values in the
comm layer got updated, whereas the bed temperature - an immutable
tupel - was not.

Two wrongs sometimes do in fact make a right. In this case that led
to target temperature changes on the tools immediately reflecting
in printer.get_current_temperatures after the command was sent,
but changes to the bed target taking until the next M105 response
to propagate.

Decoupling the data structures and adding propagation commands
to the comm layer solves this issue.

Fixes #1543
2016-10-14 16:01:03 +02:00
Gina Häußge
9de78001dd Merge branch 'maintenance' into devel
# Conflicts:
#	CHANGELOG.md
#	docs/plugins/concepts.rst
#	src/octoprint/__init__.py
#	src/octoprint/server/__init__.py
#	src/octoprint/templates/javascripts.jinja2
#	src/octoprint/timelapse.py

Merge branch 'devel' into dev/wizard

# Conflicts:
#	octoprint_octobullet/__init__.py
#	octoprint_octobullet/templates/octobullet_settings.jinja2

Merge branch 'devel' into dev/wizard

# Conflicts:
#	octoprint_octobullet/__init__.py
#	octoprint_octobullet/templates/octobullet_settings.jinja2
2016-10-13 14:22:40 +02:00
Gina Häußge
343631b3c6 Custom SerialLoggingHandler
Does roll overs on next connections to the printer
2016-10-11 10:53:37 +02:00
Gina Häußge
aca3dfae49 Merge branch 'maintenance' into devel
# Conflicts:
#	CHANGELOG.md
2016-09-23 14:35:31 +02:00
Gina Häußge
080a6e9ccd Extend atomic_write to allow setting & persisting file permissions 2016-09-23 14:26:33 +02:00
Gina Häußge
fc891ac651 Make sure volume.depth for circular beds is forced to width
Both width and depth should be the diameter. Adjusted docs
accordingly to reflect this too.
2016-09-21 10:45:40 +02:00
Gina Häußge
bccc706329 First throw at caching of API methods
Most caching is left to the client, by utilizing ETag and Last-Modified headers.

Where it was easily achievable, an additional server side miniature cache of intermediary
results was introduced (e.g. for the files). The regular cached decorator was not used
since it targets caching full responses, and the responses in question already contained
client request specific data. Caching "one step earlier" allows better usage of the cache here.

Also introduced a dependency on the scandir module, to get a bit of a performance boost
on os.walk and os.listdir (which have been replaced with scandir.walk and scandir.listdir
respectively). See https://github.com/benhoyt/scandir#background on why that made
sense.
2016-08-30 19:02:30 +02:00
Gina Häußge
4fe944eb85 Actually trigger the beforePrintStarted script on print start
Missing trigger caused by 5bf5e336ec
2016-08-25 09:56:20 +02:00
Gina Häußge
dedffe3514 Allow tracking if printer profiles where modified
Needed for a first time setup wizard to configure default
printer profile.
2016-08-19 11:39:25 +02:00
Gina Häußge
79c95aa3b4 Merge branch 'maintenance' into devel
Conflicts:
	src/octoprint/filemanager/storage.py
	src/octoprint/templates/sidebar/state.jinja2
2016-08-16 09:34:49 +02:00
Gina Häußge
11bdc176a0 Fix minute comparison for dumb estimate fallback
Probably solves the core reason that caused #1428 to be
reported in the first place, totally inaccurate early linear
approximations (when nothing better is available) making
it to the user.

It should now display "Calcuting..." until the approximation
stabilizes OR the configured max percentage or max time without
an estimate are reached.
2016-08-15 14:17:27 +02:00
Gina Häußge
039412183c Merge branch 'maintenance' into devel
Conflicts:
	CHANGELOG.md
2016-07-30 09:57:31 +02:00
Gina Häußge
444a36d0f0 state_string must always be initialized
See #1425
2016-07-28 23:24:29 +02:00
Gina Häußge
aae01fe81b Merge branch 'maintenance' into devel
Conflicts:
	CHANGELOG.md
	docs/api/fileops.rst
	src/octoprint/plugins/virtual_printer/virtual.py
	src/octoprint/server/api/files.py
	src/octoprint/static/css/octoprint.css
	src/octoprint/static/js/app/dataupdater.js
	src/octoprint/static/js/app/main.js
	src/octoprint/static/js/app/viewmodels/files.js
	src/octoprint/static/js/app/viewmodels/settings.js
	src/octoprint/templates/sidebar/state.jinja2
	src/octoprint/util/comm.py
2016-07-28 15:00:23 +02:00
Gina Häußge
f2ecb96c83 Add indicator of origin of print time left estimate to UI 2016-07-27 18:38:17 +02:00
Gina Häußge
1fd776153c Another attempt at saner print time estimation
Seriously though, this topic is driving me nuts...

  * track origin of print time left estimate
  * less draconian threshold for estimation helper for all prints, not just
    sd prints
  * sanity check estimated/statistical total print time, if not sane force "dumb"
    estimate
  * force "dumb" estimate if no other estimate is available after set percentage or
    print time
2016-07-26 18:06:21 +02:00
Gina Häußge
75012472a2 Revert "Synchronize access to selected file"
This reverts commit b5e19f0676.
2016-07-26 11:18:10 +02:00
Gina Häußge
6e73c31a68 Report correct printer state even after disconnecting
Error string on close with error would get lost, that happens no longer
2016-07-22 10:50:48 +02:00
Gina Häußge
b5e19f0676 Synchronize access to selected file 2016-07-21 16:10:57 +02:00
Gina Häußge
76a04cbe9d Merge branch 'dev/python3B' of https://github.com/ByReaL/OctoPrint into pr/ByReaL/dev/python3B 2016-07-15 11:28:55 +02:00
MirceaDan
c33a9f9aa2 from __future__ import absolute_import, division, print_function
changed the behavior to import division and print to be consistent
across all app and similar with python 3.x
2016-07-15 00:16:58 -07:00
Gina Häußge
28814db207 Merge branch 'maintenance' into devel
Conflicts:
	setup.py
	src/octoprint/plugins/virtual_printer/virtual.py
	src/octoprint/printer/standard.py
2016-07-14 19:47:38 +02:00
Gina Häußge
92f9ed465e Removed two unused locks from StateMonitor 2016-07-14 19:46:44 +02:00
Gina Häußge
20fc7f25bc Fix: Ensure log entries and messages from printer are unicode
Otherwise even one line that can't be converted while sending the
backlog to the client can kill the whole backlog.
2016-07-14 19:20:05 +02:00
Gina Häußge
9cd47bc5e2 Merge branch 'maintenance' into devel 2016-07-13 13:11:08 +02:00
Gina Häußge
2cc9631791 Reset printAfterSelect once it's triggered
Should solve #1407
2016-07-13 13:01:33 +02:00
Gina Häußge
9b6b4a9228 Have path set for SD files and strip leading / 2016-07-08 15:45:13 +02:00
Gina Häußge
7909672f51 Fix wrong location assignment for selected file 2016-07-08 15:43:48 +02:00
Gina Häußge
5bf5e336ec Extend payload in various events
Added name and path various event print job events and
the upload event, deprecated the file property.

Had to move event triggering of the print job events to
the printer implementation, since the file manager
is not available in the comm layer. Added new callbacks
to the PrinterInterface to allow for that to be possible.
2016-07-08 12:54:58 +02:00
Gina Häußge
a2cd46899c Merge branch 'improve/intermediaryUrlsAndTimeouts' into devel
Conflicts:
	AUTHORS.md
	src/octoprint/plugins/virtual_printer/virtual.py
2016-07-06 13:32:03 +02:00
Mark Walker
5eefee3a4d RepRapFirmware style M23 select file
RepRapFirmware enumerates the gcode files starting at /gcode, it will
also interpret any relative path as being relative to that folder.
However a full absolute path will actually interpret as from the real
root of the SD card :-(

(cherry-picked from ac68570)
2016-07-06 05:17:44 +00:00
Gina Häußge
294203ffd5 Add absolute jog mode to printer API 2016-07-01 17:54:26 +02:00
Gina Häußge
2971c29f10 Merge branch 'improve/pauseApiCommand' into devel
Conflicts:
	src/octoprint/static/js/app/viewmodels/printerstate.js
2016-06-30 13:01:13 +02:00
Gina Häußge
73a85646c5 Added only pause/resume sub commands to job API
Implements #1393
2016-06-30 12:56:18 +02:00