Donkie / Spoolman

Keep track of your inventory of 3D-printer filament spools.
MIT License
1.01k stars 93 forks source link

Read Parameters from Spoolman into Printer #415

Open alexr10 opened 4 months ago

alexr10 commented 4 months ago

Right now the only communication between Klipper/Mainsail and Spoolman is for getting the spool usage data and checking for Filament compatibility.

Now I would appreciate it, if there would be an possibility to get more data from Spoolman for the printing process. Examples would be:

This values above are filament specific and should be the same on each printer. Furthermore, there are some values that are printer and filament specific which somebody might also want to store in Spoolman (especially in an single printer setup):

I am now asking if there is a possibility to get the data from the Spoolman API and save it as variables in Klipper (that can be used with macros). Ideally the variables should be updated on every filament change.

Thanks in advance.

atl285 commented 4 months ago

Does it make sense to use it in Klipper? In which way? The print parameters will be defined in the Slicer not in Klipper / printer firmware. The only way I see is, to to validate the slicer gcode by matching the values against the filament values, for example if the extruder temperature with the filament range. 🤔

alexr10 commented 4 months ago

I would like to have one generic Slicer Profile and get all the filament parameters from Spoolman.

I already did something similar a few months back. I had one generic slicer profile and set the filament parameters with Gcode macros as variables. When a print got started the parameters have been read from the variables and set accordingly. This solutions worked without issues, but it scaled really bad.

Furthermore there are some parameters, that are Klipper specific and are only set in firmware (Pressure Advance, ...)

atl285 commented 4 months ago

But if you have multiple different printers, the Klipper specific values (Pressure Advance,...) are different. So you have to store these values printer specific. This is not the main focus of Spoolman, I think. 🤔

alexr10 commented 4 months ago

I understand what you want to say.

But the functionality would also be useful for other Filament specific values:

In my opinion it would be nice to have the functionality to get more data (other than spool usage), when an filament change was done

atl285 commented 4 months ago

Yes, I would like to have filament values from vendor in the filament settings, like Extruder and Hotbed temperature ranges, print speeds, density, vicat temperature, cooling settings, in the filament dataset. But how should they are usable? I see to functions:

alexr10 commented 4 months ago

You could put placeholders in the slicer software for certain values during slicing and get the real values during printing from klipper.

CooperGerman commented 4 months ago

Hi @alexr10, i stumbled upon your discussion and think this might help in your case.

In this feature request i link to other PRs and discussions that all go back to what you are asking for i think.

If you are using OrcaSlicer you will soon be able to pull the filaments from Spoolman into the slicer directly with their associated attributes (PA, factor, temps ...) this feature leverages the extra fields capability added to spoolman.

I'm currently not storing others attributes in spoolman db but this should be doable through this mechanism.

I'm working on moving my moonraker's spoolman addon modifications to the mmu_server addon as it makes more sense for now.

bofh69 commented 3 weeks ago

I've written a script that generates Orca Slicer (and SuperSlicer) config files from Spoolman data: https://github.com/bofh69/spoolman2slicer

It uses jinja2 templates so it can be customized for whatever extra fields you use. The included Orca Slicer templates use an extra field for pressure advance for example.