Home Assistant projects
All projects

3D Printer Card

Lovelace card · Appliances
v1.0.1 · Nov 13, 2026 HA 2024.8.0+ Marketplace

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

printer-3d-cardprinter-3d-mini-card
type: custom:printer-3d-card

Install

  1. 1Open the repository in the Marketplace with the Add to Marketplace button above, or addgithub.com/juju35/ha-3d-printer-card as a custom repository (category Dashboard).
  2. 2Download it from the Marketplace.
  3. 3Reload the browser and add the card from the dashboard editor.

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 (custom, 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
OctoPrint (core) 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 (custom, 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
PrusaLink (core) 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 are printer-3d-card and printer-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.

Support

Support

If you find this project useful, you can support its development:

Buy Me a Coffee

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.