npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@hanna84/n8n-nodes-bambulab

v1.4.2

Published

n8n community node for controlling and monitoring Bambu Lab 3D printers over the local network via MQTT

Downloads

1,283

Readme

n8n-nodes-bambulab

This is an n8n community node package for controlling and monitoring Bambu Lab printers over the local network.

Bambu Lab is a 3D printer platform. This package communicates with the printer directly via local MQTT (no Bambu Cloud required).

Installation Operations Credentials Compatibility Usage Resources

Installation

Follow the n8n community nodes installation guide and search for @hanna84/n8n-nodes-bambulab.

For local development with the included Docker setup:

npm install
npm run build
docker compose up -d

# After code changes:
npm run build
docker compose restart n8n

n8n is available at http://localhost:5678.

Operations

Node: Bambu Lab Printer

An action node for on-demand operations.

| Operation | Description | | ---------- | ------------------------------------------- | | Get Status | Request a full status push from the printer |

Response mode (Get Status):

  • Summary — Normalized status object with named fields (temperatures, progress, state, etc.)
  • Raw — Full raw MQTT payload from the printer

Node: Bambu Lab Printer Trigger

A trigger node for event-driven workflows. Maintains a persistent MQTT connection and polls the printer on a configurable interval.

| Parameter | Description | | ----------------------- | ---------------------------------------------------------------------------- | | Poll Interval (seconds) | How often to request fresh status from the printer (minimum 5s, default 30s) | | Response Mode | Summary — normalized fields. Raw — full MQTT payload | | Filter Mode | Controls when events are emitted (see below) |

Filter modes:

| Mode | Behaviour | | -------------------------------- | ------------------------------------------------------------------------------------------------- | | Any Field Change (default) | Emits a full snapshot on startup, then fires again whenever a watched field crosses its threshold | | Printer State Only | Fires only when gcode_state changes (e.g. IDLE → RUNNING → FINISH) | | Every Message | Fires on every MQTT message received — use with care |

Any Field Change options (shown when that mode is selected):

| Parameter | Default | Description | | -------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------- | | Trigger On Fields | State, Stage, Layer, Progress, Temps, Error | Checklist of which fields can trigger an event. All fields appear in the output regardless. | | Layer Change Threshold | 1 | Minimum layers between events | | Progress Threshold (%) | 5 | Minimum % progress change between events | | Temperature Threshold (°C) | 2 | Minimum °C change for actual temps (nozzle, bed, chamber) | | Target Temp Threshold (°C) | 1 | Minimum °C change for target temperatures |

Output fields (in Summary mode) include: state, stage, progress_pct, current_layer, total_layers, nozzle_temp_c, bed_temp_c, nozzle_target_c, bed_target_c, chamber_temp_c, task_name, error_code, speed_level, chamber_light, wifi_signal, received_at, and more.

In Any Field Change mode the output also includes a triggered_by object showing which fields changed and their before/after values — useful for debugging unexpected events:

"triggered_by": {
  "current_layer": { "from": 20, "to": 25 },
  "progress_pct": { "from": 23, "to": 28 }
}

Credentials

Credential type: Bambu Lab (Local Network)

| Field | Description | | --------------------- | -------------------------------------------------- | | Printer IP Address | Local IP of the printer | | Printer Serial Number | Uppercase alphanumeric serial (e.g. 01P00C5A...) | | Access Code | 8-character access code |

Where to find these on the printer touchscreen:

  • Settings > Network / WLAN — IP address and Access Code
  • Settings > Device — Serial number

Security notes:

  • Credentials are stored encrypted by n8n and never written into workflow JSON as plaintext.
  • MQTT traffic is TLS-encrypted on port 8883.
  • Certificate verification is disabled for local printer TLS (Bambu printers use a private CA).
  • Do not expose printer network endpoints to the public internet.

Compatibility

  • Minimum tested n8n version: 2.13.4
  • Tested on: Docker image n8nio/n8n:2.13.4
  • Tested printers: Bambu Lab X1C, P1S (reports from community welcome)

Known behavior:

  • Imported workflows require credentials to be re-selected once in the UI to bind local credential IDs.
  • The Bambu MQTT broker is point-to-point — report messages are only delivered to the requesting client, not broadcast. This is why the trigger node sends its own PUSH_ALL request rather than passively subscribing.
  • Bambu printers allow only one MQTT client at a time. If another device connects to the printer while the trigger node is running, the node will be disconnected. It reconnects automatically within a few seconds and resumes polling, but any events that occurred during the reconnect window will be missed.

Usage

Example: Print complete notification

  1. Add a Bambu Lab Printer Trigger node
  2. Set Filter Mode to Printer State Only
  3. Connect an IF node: condition state equals FINISH
  4. Connect a Telegram (or other) node to send a notification

Example: Layer progress updates

  1. Add a Bambu Lab Printer Trigger node
  2. Leave Filter Mode as Any Field Change
  3. Set Layer Change Threshold to 10 (fires every 10 layers)
  4. Uncheck all Trigger On Fields except Current Layer
  5. Use current_layer and total_layers in your downstream nodes

Example: Debugging unexpected events

If the trigger fires more often than expected, check the triggered_by field in the output — it shows exactly which field crossed its threshold (e.g. { "progress_pct": { "from": 23, "to": 28 } }). Uncheck that field in Trigger On Fields or raise its threshold.

Included workflow templates

  • workflows/bambulab-showcase.workflow.json — manual status check and raw command example

Import:

docker compose exec n8n n8n import:workflow \
  --input=/custom-extensions/my-custom-node/workflows/bambulab-showcase.workflow.json

After importing, open the workflow in n8n and re-select your Bambu Lab Local credential on each node.

Resources

Changelog

See CHANGELOG.md for the full release history.