How cptkirki/printsphere works
PrintSphere is ESP32-S3 firmware for a Bambu printer companion display. At boot, the application loads persisted settings, brings up Wi-Fi and setup access, starts cloud/local printer and camera clients, then updates the on-device UI with printer, power, and notification state. The product also exposes Web Config for provisioning, profiles, display options, and OTA updates. Cloud and LAN are distinct status/control sources; hybrid selection is part of the documented workflow. Unsampled portal, UI, and resolver internals are represented at their implementation paths; edges are limited to visible calls or documented relationships.
Main entry points: application.cpp Application Loop · bambu_cloud_client.cpp Bambu Cloud Client · printer_client.cpp Local Printer Client · setup_portal.cpp Web Config Portal
Components 24
Application
- Firmware Entry
main/app_main.cpp - Application Loop
main/src/application.cpp - Config Store
main/src/config_store.cpp - Web Config Portal
main/src/setup_portal.cpp - USB Provisioning
main/src/serial_provisioner.cpp
Network and Printer
- Wi-Fi Manager
main/src/wifi_manager.cpp - Bambu Cloud Client
main/src/bambu_cloud_client.cpp - Local Printer Client
main/src/printer_client.cpp - Status Resolver
main/src/status_resolver.cpp - Printer State
main/src/printer_state.cpp - Camera Snapshots
main/src/p1s_camera_client.cpp - Status Mapping
main/src/bambu_status.cpp - Error Lookup
main/src/error_lookup.cpp - MQTT Telemetry
main/include/printsphere/mqtt_telemetry.hpp
Display and Interaction
- Display UI
main/src/ui.cpp - Sound Notifications
main/src/audio_notifier.cpp
Device Services
- Power Management
main/src/pmu.cpp - Time and Timezone
main/src/time_sync.cpp
Board Hardware
- AMOLED Board Support
components/esp32_s3_touch_amoled_1_75/esp32_s3_touch_amoled_1_75.c - LCD Board Support
components/esp32_s3_touch_lcd_2_8c/esp32_s3_touch_lcd_2_8c.c - Power Chip Definitions
components/XPowersLib/src/XPowersParams.hpp
Other components
- Device User
- Bambu Printer
- Bambu Cloud
Connections 25
- Device User → Web Config Portal: configures
README.md - Firmware Entry → Application Loop: starts
main/app_main.cpp - Application Loop → Config Store: initializes and loads
main/src/application.cpp - Application Loop → Wi-Fi Manager: initializes
main/src/application.cpp - Application Loop → Web Config Portal: starts
main/src/application.cpp - Application Loop → USB Provisioning: starts
main/src/application.cpp - Application Loop → Power Management: initializes
main/src/application.cpp - Application Loop → Display UI: initializes
main/src/application.cpp - Application Loop → Sound Notifications: initializes
main/src/application.cpp - Application Loop → Time and Timezone: sets timezone
main/src/application.cpp - Application Loop → Bambu Cloud Client: configures and starts
main/src/application.cpp - Application Loop → Local Printer Client: configures and starts
main/src/application.cpp - Application Loop → Camera Snapshots: configures and starts
main/src/application.cpp - Web Config Portal → Config Store: manages settings
- Bambu Cloud Client → Bambu Cloud: connects to
README.md - Bambu Cloud Client → Bambu Printer: receives status and sends commands
README.md - Local Printer Client → Bambu Printer: receives status and sends commands
README.md - Camera Snapshots → Bambu Printer: fetches snapshots
README.md - Application Loop → Status Resolver: selects status source
- Status Resolver → Printer State: resolves printer state
- Bambu Cloud Client → Printer State: updates status
- Local Printer Client → Printer State: updates status
- Application Loop → AMOLED Board Support: uses board support
main/src/application.cpp - Application Loop → LCD Board Support: uses board support
main/src/application.cpp - AMOLED Board Support → Power Chip Definitions: power integration