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))