3D Printer Card
Follow and control Bambu Lab, OctoPrint, Klipper and Prusa 3D printers.
Cards for 3D printers: a drawn printer animated by its state inside a progress ring, the time left and the layers, the temperatures, the Bambu Lab AMS spools, the print thumbnail and camera, and pause, resume and stop buttons.
Highlights
- Bambu Lab, OctoPrint, Moonraker (Klipper) and PrusaLink, several printers
- Progress ring around a drawn printer, animated by its state
- Time left, estimated end, layers and the Bambu Lab stage and errors
- Nozzle, bed and chamber temperatures with their targets
- Bambu Lab AMS spools: colour, filament, remaining amount, humidity
- Print thumbnail and camera, pause / resume / stop with a confirmation
- Mini card with a detail button showing the full card
Cards
type: custom:printer-3d-cardInstall
- 1Open the repository in the Marketplace with the Add to Marketplace button above, or add
github.com/juju35/ha-3d-printer-cardas a custom repository (category Dashboard). - 2Download it from the Marketplace.
- 3Reload the browser and add the card from the dashboard editor.
Gallery 18
Documentation
From the README Features
Features
- Two cards: a full 3D Printer Card (
custom:printer-3d-card) and a compact 3D Printer Mini Card (custom:printer-3d-mini-card) - Bambu Lab, OctoPrint, Moonraker (Klipper) and PrusaLink printers, several printers supported, the Bambu Lab AMS units merged with their printer
- Progress ring around a drawn printer, animated by its state (see Animations): the toolhead sweeps across and the spool turns while printing, heat rises while preparing, the toolhead parks when paused, the part sparkles when finished, the alert badge blinks on an error
- Header icon of a 3D printer with the integration's logo as a badge (opens its site), tinted with the printer state: blue printing or preparing, orange paused, green finished, red on an error or offline, grey idle; buttons in the integration's color
- Remaining time and estimated end (computed from each other when the integration gives only one), current / total layers, the Bambu Lab stage (heating, levelling, filament change…) and its HMS error messages
- Nozzle (or left and right nozzles on a dual-nozzle Bambu Lab), bed and chamber temperatures, with their target while heating
- Bambu Lab AMS and external spool: color swatch, filament type and name, remaining amount, active slot, AMS humidity and temperature
- Print job details: start time, weight, filament length, speed, material and file
- Print thumbnail (Bambu Lab cover image, PrusaLink and Moonraker previews) and camera
- Pause / resume / stop buttons, each with a confirmation at the top of the card, and a light button (chamber light, case light…)
- Collapsible sections (print job folded by default), folded back by a click anywhere else
- Sections view: the full card takes 12 columns by default and at least 6, the mini card 6; narrow widths get their own layout (see Screenshots)
- Detail button on the mini card (top right): it switches the mini card to the full card's content and back; a click anywhere outside the card brings the compact view back
- Click any value to open its Home Assistant history (more-info dialog)
- Visual editor in the dashboard UI for both cards (no YAML needed)
- Light and dark mode, English, French, German, Spanish, Serbian (Cyrillic and Latin), Italian, Dutch, European Portuguese, Polish, Romanian, Danish, Swedish, Bulgarian, Russian, Ukrainian, Hungarian, Slovak, Czech, Slovenian, Latvian and Greek, each language loaded only when needed
- Single file, no external dependency, the logos are embedded
Supported integrations
Supported integrations
| Integration | Printers | What the cards show |
|---|---|---|
bambu_lab) |
Bambu Lab X1, P1, A1, H2D… | Everything: state and stage, progress, remaining time and end, layers, nozzle(s) / bed / chamber, AMS and external spool, HMS errors, cover image, camera, chamber light, pause / resume / stop, weight, length, speed profile |
| Any printer driven by OctoPrint | State, progress, estimated finish and start time, tool and bed (and chamber) temperatures, file, printing error, camera, pause / resume / stop | |
moonraker) |
Klipper printers (Voron, Creality K1 with Moonraker, RatRig…) | Print state (or Klipper state), progress, time left and ETA, layers, extruder / bed / chamber temperatures and targets, file, filament used, speed, thumbnail, cameras, lights, pause / resume / cancel |
| Prusa MK4, MK3.9, XL, MINI, CORE One… | State, progress, start and finish time, nozzle and bed temperatures and targets, file, material, speed, job preview, pause / resume / cancel |
OctoPrint and Moonraker give most of their entities no translation key: the card recognizes them by their names, which these integrations write in English (Job Percentage, Print Time Left…). If you renamed one, set it by hand with entities. Details in How it works.
Prerequisites
Prerequisites
Home Assistant 2024.8 or later, with at least one of the supported integrations configured.
Configuration
Configuration
Card types#
| Card | Type |
|---|---|
| 3D Printer Card | custom:printer-3d-card |
| 3D Printer Mini Card | custom:printer-3d-mini-card |
Note
A custom element name must start with a letter, so the types cannot be
3d-printer-card: they areprinter-3d-cardandprinter-3d-mini-card(the file keeps the repository's name,3d-printer-card.js).
Visual editor#
Edit a dashboard, click Add card and search for 3D Printer Card or 3D Printer Mini Card. The first printer is preselected; pick another one in the list if you have several, set an optional title, the sections to display, a camera or light entity of your own and the language. The preview updates live, and options left at their default are kept out of the generated YAML.
Minimal#
type: custom:printer-3d-card
type: custom:printer-3d-mini-card
Full options#
type: custom:printer-3d-card
device: X1 Carbon
title: Workshop X1
show_title: true
show_subtitle: true
show_controls: true
show_light: true
show_thumbnail: true
show_temperatures: true
show_ams: true
show_job: true
show_camera: true
collapsed:
- job
camera_entity: camera.x1_carbon_camera
light_entity: light.x1_carbon_chamber_light
entities:
chamber: sensor.enclosure_temperature
language: fr
type: custom:printer-3d-mini-card
device: Voron 2.4
title: Voron
show_controls: true
show_light: false
zoom: true
language: fr
Options reference#
| Option | Card | Default | Description |
|---|---|---|---|
device |
both | First printer | Printer to display: its name (as shown in Home Assistant) or its device id (set by the visual editor) |
title |
both | Device name | Card title |
show_title |
both | true |
Show the title in the header (e.g. false under a section heading of your own) |
show_subtitle |
both | true |
Show the subtitle under the title (file being printed, else the printer model) |
show_controls |
both | true |
Pause / resume / stop buttons while a print is under way, each asking for a confirmation |
show_light |
both | true |
Light button (the printer's light, or light_entity) |
zoom |
mini | true |
Detail button at the top right of the mini card: it shows the full card's content (with the same options, so show_ams, collapsed… can be set on the mini card too) and switches back to the compact view; a click outside the card also brings the compact view back. false removes the button |
show_thumbnail |
full | true |
Thumbnail of the print next to the ring (cover image or job preview; the camera when show_camera is false) |
show_temperatures |
full | true |
Nozzle, bed and chamber temperatures |
show_ams |
full | true |
Filaments of the Bambu Lab AMS units and external spool |
show_job |
full | true |
Print job details: start time, weight, filament length, speed, material, file |
show_camera |
full | true |
Camera picture (click it for the live view) |
collapsed |
full | [job] |
Sections folded by default, among ams, job and camera ([] to unfold everything). Click a section title (or Tab to it and press Enter or Space) to fold or unfold it; a click anywhere else folds them back |
camera_entity |
full | — | Camera or image entity to show instead of the integration's camera |
light_entity |
both | — | Light or switch entity for the light button |
entities |
both | — | Entities set by hand, by key, on top of the ones found: status, progress, remaining, end_time, start_time, layer, total_layers, nozzle, nozzle_target, bed, bed_target, chamber, chamber_target, file, cover, camera, light, pause, resume, continue, stop, weight, length, speed, material |
language |
both | Auto | Force language: fr, en, de, es, sr, sr-Latn, it, nl, pt, pl, ro, da, sv, bg, ru, uk, hu, sk, cs, sl, lv or el (auto-detects from HA settings) |
How it works
How it works
Entity discovery#
The card reads the entity and device registries (hass.entities, hass.devices): every entity of a supported integration (its platform) is attached to its device, and recognized by its translation_key (Bambu Lab, PrusaLink, the OctoPrint state and file) or, for the integrations that have none, by its name (OctoPrint, Moonraker). A device with a state or progress entity is a printer; a Bambu Lab AMS or external spool (each a device of its own, linked to its printer) brings its trays, humidity or spool to its printer. On Moonraker, a Klipper shutdown or error wins over the print state. Entity ids and the Home Assistant language do not matter.
States#
Each integration's states are mapped to the card's phases, which set the chip, the icon color, the buttons and the animation:
| Phase | Bambu Lab | OctoPrint | Moonraker | PrusaLink |
|---|---|---|---|---|
| Printing | running |
printing, printing_sd, finishing, resuming |
printing |
printing |
| Preparing | prepare, slicing, init |
starting, connecting, transferring_file |
(Klipper startup) |
busy |
| Paused | pause |
pausing, paused |
paused |
paused; attention (needs attention) |
| Finished | finish |
— | complete |
finished |
| Failed / error | failed |
error, offline_after_error |
error, Klipper error |
error |
| Cancelled / stopping | — | cancelling |
cancelled |
stopped |
| Idle | idle |
operational |
standby (Klipper ready) |
idle, ready |
| Offline | offline, unavailable |
offline, unavailable |
Klipper shutdown (over the print state), unavailable |
unavailable |
Controls#
Pause, Resume and Stop press the integration's own button entities (button.press), after a confirmation at the top of the card; Escape or Cancel closes it. They show only while a print is under way: Pause and Stop while printing or preparing, Resume and Stop while paused (on a PrusaLink printer that needs attention, Resume presses its Continue button). Bambu Lab and PrusaLink make a button unavailable when the printer cannot take it — no Pause or Stop while a Bambu Lab printer heats and levels, for instance: the card then greys it out. The light button toggles the light (or switch) entity: the light the integration names (Bambu Lab chamber light), else the printer's first light, or light_entity.
Changelog
CHANGELOG.md 1.0.1Nov 13, 2026Latest
Fixes
- Folding back on a tap elsewhere now works on iOS (Safari and the companion app): a tap on something that is not clickable sent no click to the page, so the unfolded sections, the confirmation popup and the detailed view of the mini card stayed open. The press and the release are caught instead; a press in the card released outside of it and a scroll do not fold anything.
- Leaving the card (another dashboard view, a conditional card hidden) brings it back in its default state: sections folded as configured, popup closed, mini card compact.
1.0.0Nov 13, 2026
Features
- Two cards: a full 3D Printer Card (
custom:printer-3d-card) and a compact 3D Printer Mini Card (custom:printer-3d-mini-card) with a detail button that switches it to the full card's content and back. - Bambu Lab (ha-bambulab), OctoPrint, Moonraker / Klipper and PrusaLink printers, found automatically from the Home Assistant registries.
- Progress ring around a drawn printer animated by its state: the toolhead sweeps and the spool turns while printing, heat rises while preparing, the toolhead parks when paused, the part sparkles when finished, the alert badge blinks on an error.
- Remaining time and estimated end (each computed from the other when the integration gives only one), current and total layers, Bambu Lab stage and HMS errors.
- Nozzle (single or dual), bed and chamber temperatures with their targets.
- Bambu Lab AMS units and external spool: filament color, type, name, remaining amount, active slot, AMS humidity and temperature.
- Print job details: start time, weight, filament length, speed, material, file.
- Print thumbnail (cover image) and camera.
- Pause / resume / stop buttons with an in-card confirmation, and a light button.
- Collapsible sections, visual editor, light and dark themes, 22 languages loaded on demand.