Skip to content

Spoolman Idea 1: Add OpenSpool spool_id extension to enable Spoolman in AFC-Lite#285

Closed
paxx12 wants to merge 10 commits into
developfrom
afc-spool_id-spoolman
Closed

Spoolman Idea 1: Add OpenSpool spool_id extension to enable Spoolman in AFC-Lite#285
paxx12 wants to merge 10 commits into
developfrom
afc-spool_id-spoolman

Conversation

@paxx12
Copy link
Copy Markdown
Contributor

@paxx12 paxx12 commented Feb 15, 2026

This PR adds Spoolman integration to AFC and extends the RFID filament protocol to support spool_id.

Workflow: This requires a specially programmed NFC tags to include spool_id.

Changes

  • RFID Protocol: Added spool_id field to filament protocol NDEF for tracking spools
  • AFC Integration: Enhanced AFC lane management with Spoolman API support for automatic spool tracking
  • Moonraker Proxy: Added Spoolman proxy configuration to Moonraker
  • Configuration: New AFC config with Spoolman-related macros and settings

RFID support

rfid_read

Spoolman support

spoolman

@github-actions
Copy link
Copy Markdown

✅ Build Artifacts

Version: 1.1.1-paxx12-test-pr-285
Build: 5b5d38e (merge of a4163ed into develop)
Duration: 4m 47s

Artifact Size
basic-build 205.31 MB
extended-build 240.74 MB
basic-devel-build 205.72 MB
extended-devel-build 241.15 MB

View workflow run

@paxx12 paxx12 force-pushed the afc-spool_id-spoolman branch from a4163ed to 3d7d56f Compare February 15, 2026 10:36
@github-actions
Copy link
Copy Markdown

✅ Build Artifacts

Version: 1.1.1-paxx12-test-pr-285
Build: 0609378 (merge of 3d7d56f into develop)
Duration: 5m 1s

Artifact Size
basic-build 205.31 MB
extended-build 240.74 MB
basic-devel-build 205.72 MB
extended-devel-build 241.15 MB

View workflow run

@paxx12 paxx12 force-pushed the afc-spool_id-spoolman branch from 3d7d56f to e83dcf3 Compare February 15, 2026 10:57
@github-actions
Copy link
Copy Markdown

✅ Build Artifacts

Version: 1.1.1-paxx12-test-pr-285
Build: 9ace5ff (merge of e83dcf3 into develop)
Duration: 4m 47s

Artifact Size
basic-build 205.31 MB
extended-build 240.74 MB
basic-devel-build 205.72 MB
extended-devel-build 241.15 MB

View workflow run

@paxx12 paxx12 changed the title Add AFC Spoolman Integration with spool_id Support Add RFID support for spool_id parsing to enable Spoolman in AFC Feb 15, 2026
@paxx12 paxx12 changed the title Add RFID support for spool_id parsing to enable Spoolman in AFC Add OpenSpool spool_id extension to enable Spoolman in AFC Feb 15, 2026
@paxx12 paxx12 force-pushed the afc-spool_id-spoolman branch from e83dcf3 to 8f0fba6 Compare February 15, 2026 11:55
@github-actions
Copy link
Copy Markdown

✅ Build Artifacts

Version: 1.1.1-paxx12-test-pr-285
Build: 6bc1da9 (merge of 8f0fba6 into develop)
Duration: 4m 42s

Artifact Size
basic-build 205.31 MB
extended-build 240.74 MB
basic-devel-build 205.72 MB
extended-devel-build 241.15 MB

View workflow run

@github-actions
Copy link
Copy Markdown

✅ Build Artifacts

Version: 1.1.1-paxx12-test-pr-285
Build: 54eda98 (merge of 49b2d3c into develop)
Duration: 4m 46s

Artifact Size
basic-build 205.31 MB
extended-build 240.74 MB
basic-devel-build 205.72 MB
extended-devel-build 241.15 MB

View workflow run

@paxx12 paxx12 force-pushed the afc-spool_id-spoolman branch from 49b2d3c to c2ed582 Compare February 16, 2026 11:19
@github-actions
Copy link
Copy Markdown

✅ Build Artifacts

Version: 1.1.1-paxx12-test-pr-285
Build: 20cfaf1 (merge of c2ed582 into develop)
Duration: 5m 34s

Artifact Size
basic-build 205.31 MB
extended-build 240.74 MB
basic-devel-build 205.72 MB
extended-devel-build 241.15 MB

View workflow run

@paxx12 paxx12 force-pushed the afc-spool_id-spoolman branch from c2ed582 to 37bbd20 Compare February 16, 2026 11:34
@github-actions
Copy link
Copy Markdown

✅ Build Artifacts

Version: 1.1.1-paxx12-test-pr-285
Build: 5999e47 (merge of 37bbd20 into develop)
Duration: 4m 44s

Artifact Size
basic-build 205.31 MB
extended-build 240.74 MB
basic-devel-build 205.72 MB
extended-devel-build 241.15 MB

View workflow run

@matissrapsa
Copy link
Copy Markdown

Hey @paxx12 any chanche this will be included in v1.2.0-paxx12-14

@paxx12
Copy link
Copy Markdown
Contributor Author

paxx12 commented Mar 24, 2026

Unlikely, as this requires updates in various places, but after this, likely yes.

@paxx12 paxx12 force-pushed the afc-spool_id-spoolman branch from 37bbd20 to f2f40b9 Compare March 30, 2026 09:01
@github-actions
Copy link
Copy Markdown

✅ Build Artifacts

Version: 1.2.0-paxx12-test-pr-285
Build: c99487d (merge of f2f40b9 into develop)
Duration: 4m 24s

Artifact Size
extended-devel-build 225.55 MB
extended-build 225.15 MB

View workflow run

@paxx12 paxx12 force-pushed the develop branch 2 times, most recently from e374a6e to a5b2d91 Compare March 30, 2026 14:36
@paxx12 paxx12 force-pushed the afc-spool_id-spoolman branch from f2f40b9 to 7882a74 Compare March 30, 2026 14:38
@github-actions
Copy link
Copy Markdown

✅ Build Artifacts

Version: 1.2.0-paxx12-test-pr-285
Build: 90b9923 (merge of 7882a74 into develop)
Duration: 3m 54s

Artifact Size
extended-devel-build 225.55 MB
extended-build 225.15 MB

View workflow run

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 4, 2026

✅ Build Artifacts

Version: 1.2.0-paxx12-test-pr-285
Build: 96b634e (merge of 9e9771c into develop)
Duration: 3m 39s

Artifact Size
extended-devel-build 225.48 MB
extended-build 225.08 MB

View workflow run

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 4, 2026

✅ Build Artifacts

Version: 1.2.0-paxx12-test-pr-285
Build: 67b8d82 (merge of b6baaab into develop)
Duration: 3m 58s

Artifact Size
extended-devel-build 225.48 MB
extended-build 225.08 MB

View workflow run

@paxx12 paxx12 changed the title Add OpenSpool spool_id extension to enable Spoolman in AFC Spoolman Idea 1: Add OpenSpool spool_id extension to enable Spoolman in AFC Apr 4, 2026
@paxx12 paxx12 changed the title Spoolman Idea 1: Add OpenSpool spool_id extension to enable Spoolman in AFC Spoolman Idea 1: Add OpenSpool spool_id extension to enable Spoolman in AFC-Lite Apr 4, 2026
@paxx12 paxx12 force-pushed the afc-spool_id-spoolman branch from b6baaab to 7d13836 Compare April 5, 2026 16:54
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 5, 2026

✅ Build Artifacts

Version: 1.2.0-paxx12-test-pr-285
Build: 5ed7bfe (merge of 7d13836 into develop)
Duration: 4m 6s

Artifact Size
extended-devel-build 225.49 MB
extended-build 225.08 MB

View workflow run

@paxx12
Copy link
Copy Markdown
Contributor Author

paxx12 commented May 10, 2026

Why spool_id (PR #285) was closed in favour of card_uid (PR #364)

Problem with the spool_id approach

PR #285 extends the RFID NDEF record with a spool_id field that maps directly
to a Spoolman spool. The mapping lives on the tag, which creates several issues:

  • The tag must be specially programmed with a spool_id - only works with
    OpenSpool-compatible tooling (SpoolPainter, etc.).
  • Any tag not programmed this way is excluded - blank tags, manufacturer
    tags, read-only or undecryptable tags cannot participate.
  • The tag is the source of truth, not Spoolman. This makes migration,
    re-binding, and tag replacement unnecessarily painful.
  • Maintaining two parallel identification paths adds complexity and test surface
    with limited benefit.

Why card_uid in Spoolman (PR #364) is correct

PR #364 flips the model: instead of storing the Spoolman spool ID on the tag,
it stores the tag's hardware CARD_UID in Spoolman's lot_nr field. The field is subject to be defined.

  • Spoolman becomes the single source of truth - not the tag.
  • Any NFC tag works - blank, pre-programmed, OpenSpool, read-only - as long
    as the reader can obtain its UID. The tag does not need to be writable,
    decryptable, or compliant with any particular NDEF schema.
  • First-time setup: assign a spool to a lane via Fluidd once, firmware
    binds the CARD_UID into lot_nr. Every subsequent insertion is automatic.
  • Future-proof: the same lot_nr lookup can extend to barcodes, QR codes,
    serial numbers, or any unique identifier - no firmware changes needed.
  • Mobile apps: can update Spoolman database already, since they already fetch available spools from Spoolman.
  • Mobile apps are not required: user might or might not use Mobile apps, since tag is never written by printer, the printer can create the mapping as well.

End-user experience

Both approaches produce the same outcome at print time: insert a spool, the
printer resolves it to a Spoolman entry and tracks usage automatically.
The difference is invisible during printing. The only practical change is the
one-time setup - a UI click instead of physical tag programming.

Migration from spool_id tags

Spools programmed with OpenSpool spool_id data continue to be read for
color/material metadata. The card_uid mapping in #364 uses the tag UID as the
key instead of spool_id. Re-binding is done through the normal UI flow
(one click per spool side), or via a planned mobile migration tool that reads
the UID and updates Spoolman's lot_nr in bulk.

Long story short

This follows the same pattern as explained in here: https://help.simplyprint.io/en/article/all-about-nfc-rfid-for-filament-spools-bambu-openprinttag-creality-qidi-anycubic-more-19luyni/#3-the-problem-that-this-solves

@paxx12 paxx12 closed this May 10, 2026
@paxx12 paxx12 deleted the afc-spool_id-spoolman branch May 10, 2026 07:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

proof-of-concept Label to indicate that this feature is proof of concept

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants