Improperly reporting Klipper tool temperature

The way it was posted does require knowing how to SSH into OctoPi, but it doesn't require skills beyond cut and paste (right-mouse click in the SSH window). The plugin folder is already coded into the post as is the OctoPrint server restart.

All (3 of) the "Get Help" topics I've answered like this are for specific printers (that I don't own) and therefore are "experiments" that need to be verified by the original poster.

I agree that if it is beneficial to the masses, then it probably should be in the plugin repository. I believe it still has to pass through this stage in order to validate that it solves the issue.

@jneilliii, Now all we need to do is define what constitutes the "masses" and the "vast majority". Take a look at https://community.octoprint.org/t/octopi-not-reading-sd-card-or-print-progress-from-ender-3-solved/9821

I personally think that, while it'd be nice to have this in the repository, it's probably a very niche case and a very worthwhile use of the single file plugin. I can throw it onto github in the near future with a readme on how to install it with SSH.

I also don't believe anyone using klipper wouldn't know how to SSH to their octoprint instance as that's part of installing klipper.

That's a good point in regard to having to know how to do it already. I wonder if it might be helpful though to have a generic plugin that is registered in the repo that allows for single plugin updates maybe? If no-one else is up to the task, I could probably squeeze something like that in, but would have to figure out a good way to handle the upload process, as the only one I've done that does that is the custombackground plugin and it utilizes the internal gcode upload process. Which might not be terrible solution. Drag/Drop your single line python file to upload local, grab it as it uploads and store it in the plugins folder and then delete the file on file added event so it's not in the file list. Hmmm...this actually probably wouldn't take me long to write...damn you guys! I'll probably program this tonight. Just would need a way to also delete the files, so a settings interface that lists the currently loaded files.

Many of these single file plugins are written to deal with "broken" firmware on specific 3D printer models (or manufacturers). Whatever solution we come up with should have a way of searching for or identifying a printer model and/or firmware version which then lists plugins that have been written.

For the record, I've extracted the printer safety check into its own standalone project (which OctoPrint depends on) for 1.4.1 to be able to maintain (and update) it separately from OctoPrint, in order to be able to add new detection for broken firmware quickly and recommend plugins for these.

E.g. when it detects the infamous CBD make it, it will now tell you to download the corresponding fix plugin. Same could be done for other such situations. And since printer safety no longer just detects a lack of thermal runaway protection but more, it's been renamed into firmware check.

See

So, the infrastructure for that is in place.

Regarding single file plugins, I'd actually love to enable the plugin manager to install and manage those (by copying them to the plugins folder). The upload capabilities are already there, it would just have to detect "plain python file" in addition to "zip archive or tarball" and act accordingly. I'll prioritize that and will try to get it into 1.4.1 still.

Might also be possible to enhance the software update plugin to allow updates of single file plugins (new copy file action or something), to allow updating single file plugins just like full features ones.

edit I'll probably give this a shot tonight on the livestream.

1 Like

plan

I just pushed the final commit for what I started on yesterday on the stream. It will not only be possible to install single file plugins through the Plugin Manager in OctoPrint 1.4.1, but thanks to some additions to the Software Update plugin, they will also be updateable.

Example for how that will look like for a plugin is here: https://gist.github.com/foosel/12e89d885c32b3adb81f5a999331f151

Instead of the jsondata update mechanism there, this would work as well and pick up any changes to the file (after a couple of minutes, Github caches heavily there):

def update_hook(*args, **kwargs):
	return dict(m108_support=dict(type="etag",
	                              url="https://gist.githubusercontent.com/foosel/12e89d885c32b3adb81f5a999331f151/raw/m108_support.py",
	                              method="single_file_plugin"))

Some new examples for software update configs have also been added to the docs, making use of the new stuff: https://docs.octoprint.org/en/maintenance/bundledplugins/softwareupdate.html