CUB-33: Integrate Moonraker filament usage polling #22

Closed
Dex wants to merge 4 commits from agent/dex/CUB-33-moonraker-usage-polling into dev
Owner

What

Extends the Moonraker client integration to poll Elegoo Centauri Carbon printers for filament usage data and persist it to the database.

New files

  • Domain/Interfaces/IMoonrakerClient.cs — Interface for Moonraker REST API communication
  • Domain/Interfaces/IFilamentUsageService.cs — Interface for filament usage persistence
  • Infrastructure/Services/MoonrakerClient.cs — HTTP client implementation calling Moonraker /api/objects?print_stats and /api/objects?history endpoints
  • Infrastructure/Services/FilamentUsageService.cs — EF Core–backed service for recording and querying filament usage
  • Infrastructure/Services/MoonrakerUsagePoller.cs — Background service that polls Moonraker printers every 30s, records completed print usage, and deduplicates jobs

Modified files

  • Program.cs — Registers IMoonrakerClient, IFilamentUsageService, and MoonrakerUsagePoller in DI
  • appsettings.json — Adds MoonrakerPoller configuration section

Key design decisions

  • Poller queries only active Moonraker printers from the DB
  • Deduplicates completed jobs by printerId:gcodeFileName key
  • Calculates grams from mm extruded using spool diameter and material density
  • Falls back to any active spool if no AMS slot found for the printer
  • Full error handling: API unreachable, malformed responses, DB errors
  • Configurable via MoonrakerPoller config section (enabled, poll interval, request timeout)

Linear

Closes CUB-33

## What Extends the Moonraker client integration to poll Elegoo Centauri Carbon printers for filament usage data and persist it to the database. ### New files - **Domain/Interfaces/IMoonrakerClient.cs** — Interface for Moonraker REST API communication - **Domain/Interfaces/IFilamentUsageService.cs** — Interface for filament usage persistence - **Infrastructure/Services/MoonrakerClient.cs** — HTTP client implementation calling Moonraker `/api/objects?print_stats` and `/api/objects?history` endpoints - **Infrastructure/Services/FilamentUsageService.cs** — EF Core–backed service for recording and querying filament usage - **Infrastructure/Services/MoonrakerUsagePoller.cs** — Background service that polls Moonraker printers every 30s, records completed print usage, and deduplicates jobs ### Modified files - **Program.cs** — Registers IMoonrakerClient, IFilamentUsageService, and MoonrakerUsagePoller in DI - **appsettings.json** — Adds MoonrakerPoller configuration section ### Key design decisions - Poller queries only active Moonraker printers from the DB - Deduplicates completed jobs by `printerId:gcodeFileName` key - Calculates grams from mm extruded using spool diameter and material density - Falls back to any active spool if no AMS slot found for the printer - Full error handling: API unreachable, malformed responses, DB errors - Configurable via `MoonrakerPoller` config section (enabled, poll interval, request timeout) ## Linear Closes CUB-33
Dex added 1 commit 2026-04-27 17:29:03 -04:00
CUB-33: integrate Moonraker filament usage polling
Some checks failed
Dev Build / build-test (pull_request) Failing after 57s
Dev Build / deploy-dev (pull_request) Has been skipped
Dev Build / notify-success (pull_request) Has been skipped
Dev Build / notify-failure (pull_request) Successful in 3s
a8b5fd42c3
Rex added 2 commits 2026-04-27 18:16:49 -04:00
# Conflicts:
#	backend/Domain/Interfaces/IMoonrakerClient.cs
#	backend/Infrastructure/Services/MoonrakerClient.cs
#	backend/Program.cs
#	backend/appsettings.json
merge(dev): Re-apply changes after conflict resolution
Some checks failed
Dev Build / build-test (pull_request) Failing after 1m9s
Dev Build / deploy-dev (pull_request) Has been skipped
Dev Build / notify-success (pull_request) Has been skipped
Dev Build / notify-failure (pull_request) Successful in 4s
e209c3891e
Dex added 1 commit 2026-04-27 20:22:38 -04:00
Merge remote-tracking branch 'origin/dev' into agent/dex/CUB-33-moonraker-usage-polling
Some checks failed
Dev Build / build-test (pull_request) Failing after 1m5s
Dev Build / deploy-dev (pull_request) Has been skipped
Dev Build / notify-success (pull_request) Has been skipped
Dev Build / notify-failure (pull_request) Successful in 3s
a108c6bcc0
# Conflicts:
#	backend/Domain/Interfaces/IMoonrakerClient.cs
#	backend/Infrastructure/Services/MoonrakerClient.cs
Otto closed this pull request 2026-04-29 11:50:36 -04:00
Some checks failed
Dev Build / build-test (pull_request) Failing after 1m5s
Dev Build / deploy-dev (pull_request) Has been skipped
Dev Build / notify-success (pull_request) Has been skipped
Dev Build / notify-failure (pull_request) Successful in 3s

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: CubeCraft-Creations/Extrudex#22