Skip to content

Add plugin MultiFilamentScale WiFi - #1503

Merged
jneilliii merged 3 commits into
OctoPrint:gh-pagesfrom
jelinj8:add-filamentscale
Oct 25, 2026
Merged

jneilliii merged 3 commits into
OctoPrint:gh-pagesfrom
jelinj8:add-filamentscale

Conversation

@jelinj8

@jelinj8 jelinj8 commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor
  • You have read the "Registering a new Plugin" guide.
  • You want to and are able to maintain the plugin you are registering, long-term.
  • You understand why the plugin you are registering works.
  • You have read and acknowledge the Code of Conduct.

What is the name of your plugin?

MultiFilamentScale WiFi (identifier filamentscale)

What does your plugin do?

It shows the remaining filament on up to five spools in a sidebar panel. The spools sit on a separate ESP8266 WiFi scale with HX711 load cells (firmware, schematic, printed parts and build guide). OctoPrint polls the scale's JSON API on the local network and pushes the readings to the browser, so the browser never talks to the scale directly and the panel also works over remote access. You can save a snapshot of the weights to see how much filament a print used. In the settings, you can show or hide, rename, tare and set the current weight of each spool. Calibration stays in the scale's own web interface.

Where can we find the source code of your plugin?

https://github.com/jelinj8/plugin-OctoPrint-FilamentScale

Was any kind of genAI (ChatGPT, Copilot etc) involved in creating this plugin?

Yes. The code was written with Claude Code (Anthropic) under my direction. I specified the features and made the design decisions, for example that OctoPrint polls the scale server-side instead of the browser fetching from it, and where the shared state is kept. I tested every version on my own printer with the real scale, and I will maintain the plugin. The firmware of the scale was made the same way, and its README says so.

I'm mainly Java developer with C++, C# and assembly background, just not fluent in Python and Javascript.

Is your plugin commercial in nature?

No.

Does your plugin rely on some cloud services?

No. It only talks to the scale on the local network (plain HTTP, as the embedded device serves it) and sends nothing to the internet.

Further notes

The name is meant to set it apart from the existing "Filament Scale Enhanced" (filament_scale), which reads a single HX711 wired to the Raspberry Pi's GPIO. This plugin reads a separate WiFi scale with up to five spools. Updates come through the Software Update hook (github_release, identifier filamentscale).

@jelinj8
jelinj8 marked this pull request as ready for review October 23, 2026 16:55

@jneilliii jneilliii left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

before proceeding with full plugin code review, let's start by cleaning up this PR first.

Comment thread _plugins/filamentscale.md Outdated
Comment thread _plugins/filamentscale.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jelinj8

jelinj8 commented Oct 24, 2026

Copy link
Copy Markdown
Contributor Author

both updated

@jelinj8
jelinj8 requested a review from jneilliii October 24, 2026 19:29

@jneilliii jneilliii left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The plugin's pyproject.toml needs a little work and setup.py needs to be added for backwards compatibility with setuptools<77. Recommend re-creating that to match the OctoPrint cookiecutter template: https://github.com/OctoPrint/cookiecutter-octoprint-plugin/tree/master/%7B%7Bcookiecutter.repo_name%7D%7D. Other than that I think the plugin's code itself looks pretty solid and don't see anything that stands out as a concern.

@jelinj8

jelinj8 commented Oct 25, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the review! The packaging now follows the cookiecutter template: pyproject.toml reworked (dynamic license, include-package-data with packages.find, wheel in build requirements), setup.py added with the license for setuptools<77, plus MANIFEST.in. I checked that it builds and installs with setuptools 68 and 80. Released as 0.5.2 (no functional changes).

@jacopotediosi

Copy link
Copy Markdown
Member

For security reasons, could you set text_escape: true in your PNotify call? It helps against XSS attacks, if you don't need to use HTML within your notifications.

@jacopotediosi jacopotediosi left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jelinj8

jelinj8 commented Oct 25, 2026

Copy link
Copy Markdown
Contributor Author

For security reasons, could you set text_escape: true in your PNotify call? It helps against XSS attacks, if you don't need to use HTML within your notifications.

done

@jneilliii
jneilliii merged commit 5a4f1e7 into OctoPrint:gh-pages Oct 25, 2026
4 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in OctoPrint Backlog Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants