Moonraker lane_data: Use filament_id to match user-defined filament presets #105

Open
opened 2026-04-05 16:18:28 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @ducati1198 on 3/28/2026

Is there an existing issue for this feature request?

  • I have searched the existing issues

When using Moonraker's lane_data to sync filament information from an MMU system (e.g., ACE Pro, Happy Hare), Orca currently uses only the material field to determine which filament preset to select. This works well when the material name matches one of the built-in preset names (e.g., "ABS", "PLA"). However, if the user has created a custom preset with a unique name (e.g., "AF Sunlu ABS"), Orca cannot match it, because the material field contains the custom name but the preset matching only looks for built‑in identifiers. As a result, Orca falls back to a generic material type (e.g., "ABS") and the user loses the ability to select their custom preset automatically.

Steps to reproduce

Create a custom filament preset in Orca with a unique name (e.g., "AF Sunlu ABS").

Configure Moonraker to serve lane_data for that filament, using the custom name in the material field.

Observe that in the Prepare tab, the filament selection for that lane does not show your custom preset; it shows a generic preset (e.g., "ABS") instead.

The lane's material is displayed correctly in the tooltip, but the active filament selection does not match.

Proposed enhancement
Extend the Moonraker lane_data integration to also consider the filament_id field (or a similar dedicated identifier) when matching a filament preset. Many Moonraker components (like the ACE Pro driver) already publish a filament_id that exactly matches the user's custom preset name. If filament_id is present and matches a user‑defined preset, Orca should select that preset. If not, it should fall back to the current behavior of using material to find a built‑in preset.

This change would allow users to maintain their own filament profiles while still benefiting from automatic lane sync. It would also align with how other MMU systems (e.g., Happy Hare) are already handled, where the material name is often the custom name.

Additional context

The ACE Pro dashboard (a third‑party Klipper extension) already publishes filament_id in the lane_data JSON.

Happy Hare also typically publishes the material name as the actual filament type.

The current code in MoonrakerPrinterAgent::fetch_moonraker_filament_data only reads material (line ~660). It does not look for a filament_id field.

The filament_id could be used as the primary key for matching user presets, leaving material for the generic fallback.

System information

OrcaSlicer version: 2.3.2 (build c724a3f5)

OS: macOS

Moonraker version: v2.1.6

MMU: ACE Pro (but the issue would affect any custom filament name)

Thank you for considering this enhancement! I'm happy to test or provide further details if needed.

Which printers will be beneficial to this feature?

Klipper

Describe the solution you'd like

The current code in MoonrakerPrinterAgent::fetch_moonraker_filament_data only reads material (line ~660). It does not look for a filament_id field

Describe alternatives you've considered

No response

Additional context

No response

*Originally created by @ducati1198 on 3/28/2026* ### Is there an existing issue for this feature request? - [x] I have searched the existing issues ### Is your feature request related to a problem? When using Moonraker's lane_data to sync filament information from an MMU system (e.g., ACE Pro, Happy Hare), Orca currently uses only the material field to determine which filament preset to select. This works well when the material name matches one of the built-in preset names (e.g., "ABS", "PLA"). However, if the user has created a custom preset with a unique name (e.g., "AF Sunlu ABS"), Orca cannot match it, because the material field contains the custom name but the preset matching only looks for built‑in identifiers. As a result, Orca falls back to a generic material type (e.g., "ABS") and the user loses the ability to select their custom preset automatically. Steps to reproduce Create a custom filament preset in Orca with a unique name (e.g., "AF Sunlu ABS"). Configure Moonraker to serve lane_data for that filament, using the custom name in the material field. Observe that in the Prepare tab, the filament selection for that lane does not show your custom preset; it shows a generic preset (e.g., "ABS") instead. The lane's material is displayed correctly in the tooltip, but the active filament selection does not match. Proposed enhancement Extend the Moonraker lane_data integration to also consider the filament_id field (or a similar dedicated identifier) when matching a filament preset. Many Moonraker components (like the ACE Pro driver) already publish a filament_id that exactly matches the user's custom preset name. If filament_id is present and matches a user‑defined preset, Orca should select that preset. If not, it should fall back to the current behavior of using material to find a built‑in preset. This change would allow users to maintain their own filament profiles while still benefiting from automatic lane sync. It would also align with how other MMU systems (e.g., Happy Hare) are already handled, where the material name is often the custom name. Additional context The ACE Pro dashboard (a third‑party Klipper extension) already publishes filament_id in the lane_data JSON. Happy Hare also typically publishes the material name as the actual filament type. The current code in MoonrakerPrinterAgent::fetch_moonraker_filament_data only reads material (line ~660). It does not look for a filament_id field. The filament_id could be used as the primary key for matching user presets, leaving material for the generic fallback. System information OrcaSlicer version: 2.3.2 (build c724a3f5) OS: macOS Moonraker version: v2.1.6 MMU: ACE Pro (but the issue would affect any custom filament name) Thank you for considering this enhancement! I'm happy to test or provide further details if needed. ### Which printers will be beneficial to this feature? Klipper ### Describe the solution you'd like The current code in MoonrakerPrinterAgent::fetch_moonraker_filament_data only reads material (line ~660). It does not look for a filament_id field ### Describe alternatives you've considered _No response_ ### Additional context _No response_
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#105