Examples
Simple test
Connects to WiFi and to the printer via MQTT, requests a full state snapshot
with pushall(), and prints every available
status field — temperatures, fan speeds, print progress, nozzle info, and
the raw JSON response.
Requires the following keys in settings.toml:
CIRCUITPY_WIFI_SSID = "your-ssid"
CIRCUITPY_WIFI_PASSWORD = "your-password"
BAMBU_BROKER = "us.mqtt.bambulab.com"
BAMBU_ACCESS_TOKEN = "your-access-token"
USER_ID = "your-user-id"
DEVICE_ID = "your-printer-serial-number"
examples/bambulabs_simpletest.py
1# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
2# SPDX-FileCopyrightText: Copyright (c) 2026 Paul Cutler
3#
4# SPDX-License-Identifier: MIT
5
6import json
7import os
8
9import wifi
10
11import bambulabs as bl
12
13# You will need a settings.toml file with the following to connect via MQTT:
14# bambu_broker = os.getenv("BAMBU_BROKER")
15# access_token = os.getenv("BAMBU_ACCESS_TOKEN")
16# user_id = os.getenv("USER_ID")
17# DEVICE_ID = "your_printer_serial_number"
18
19# Set up networking
20print("Connecting to AP...")
21wifi.radio.connect(os.getenv("CIRCUITPY_WIFI_SSID"), os.getenv("CIRCUITPY_WIFI_PASSWORD"))
22print(f"Connected to {os.getenv('CIRCUITPY_WIFI_SSID')}")
23print(f"My IP address: {wifi.radio.ipv4_address}")
24
25device_id = os.getenv("DEVICE_ID")
26
27printer = bl.BambuPrinter(device_id)
28printer.connect()
29
30status = printer.pushall()
31
32if status is None:
33 print("Timed out waiting for pushall response.")
34else:
35 # Print out each individual status
36 print("--- Printer Status ---")
37 print(f"State: {status.gcode_state}")
38 print(f"File: {status.gcode_file}")
39 print(f"Job: {status.subtask_name}")
40 print(f"Progress: {status.print_percentage}%")
41 print(f"Remaining: {status.remaining_time} min")
42 print(f"Layer: {status.current_layer} / {status.total_layers}")
43 print(f"Print speed: {status.print_speed}")
44 print(f"Print error: {status.print_error_code}")
45 print(f"Nozzle temp: {status.nozzle_temperature} / {status.nozzle_temperature_target} C")
46 print(f"Bed temp: {status.bed_temperature} / {status.bed_temperature_target} C")
47 print(f"Chamber temp: {status.chamber_temperature} C")
48 print(f"Part fan: {status.part_fan_speed}")
49 print(f"Aux fan: {status.aux_fan_speed}")
50 print(f"Chamber fan: {status.chamber_fan_speed}")
51 print(f"Nozzle type: {status.nozzle_type}")
52 print(f"Nozzle diameter: {status.nozzle_diameter} mm")
53 print(f"WiFi signal: {status.wifi_signal}")
54 print(f"Light state: {status.light_state}")
55 print(f"Firmware version: {status.firmware_version}")
56 print()
57 # Print the entire JSON response
58 print("--- Raw JSON ---")
59 print(json.dumps(status.raw))