I asked about this on the Prusa forums but got no replies so I'm also trying here:
I am trying to use octoprint's "@pause" dummy gcode. In PrusaSlicer I use the "custom g-code" at-layer feature to insert @pause. That does pause the print, and I can resume it through octoprint's web UI.
With just the @pause command, the problem is that the hot nozzle stays in place and melts whatever area of the print it's at.
So now I am trying to add two G-code snippets in octoprint's "after pause" and "after resume" scripts. I found a starting point in octoprint's docs here:
Using those, the behavior is improved, the nozzle moves away from the print and to a location that lets me access the print area to insert things.
However I have two remaining problems:
1.) When the printer pauses and the nozzle moves up, it leaves behind a vertical strand of melted filament. I have to cut that off with a side-cutter. I thought the retraction for the E axis would prevent that.
2.) More importantly, when the print resumes, it seems that no filament is extruded. It just goes through the motions but no more filament is built up.
I previously (before using octoprint) used a manual filament change event instead of pause, and I did not have either of these issues, so I know the printer is capable of cleanly pausing and resuming the print, given the right g-code.
I tried various changes to the snippet, for example I tried to add a few mm more extrusion at resume than retraction at the pause (with a dwell and manual cleanup of the resulting gunk at the nozzle after the extrusion) to make sure the filament is really at the tip of the nozzle.
I tried to capture the issues in a video (sorry for the quality):
You can hopefully see that no filament is extruded when it resumes. Ignore the fact that it's a bit messy because I didn't clean the nozzle this time and cut off the extra vertical strand, I did that in other attempts and it made no difference. The main problem is that the nozzle doesn't seem to be extruding filament after the resume.
I wonder if anybody has experience with this and can help me come up with some g-code that does the right thing.