maziggy ee2b674278 Issue 1: Print Start Notification - Estimated Time Unknown
Problem: At print start, the MQTT mc_remaining_time was often 0 or unavailable because the printer hadn't fully processed the gcode yet.

  Solution: Modified the notification system to prioritize the print_time_seconds from the 3MF file parsing (which is always available after archive creation) over the
  MQTT remaining time.

  Files changed:
  - backend/app/services/notification_service.py:
    - Added optional archive_data parameter to on_print_start() method
    - Added priority logic: archive data > MQTT remaining_time > raw_data mc_remaining_time
  - backend/app/main.py:
    - Created _send_print_start_notification() helper function
    - Moved notification sending to AFTER archive creation (when print_time_seconds is available)
    - Added fallback notification sending at early return points (auto_archive disabled, file not found, etc.)

  Issue 2: Timelapse Auto-Assignment

  Problem: Timelapses couldn't be auto-assigned reliably because printer dates could be off in LAN-only mode, making timestamp matching unreliable.

  Solution: Track whether timelapse recording was active during the print via MQTT, and if so, auto-fetch the most recent timelapse file on print completion.

  Files changed:
  - backend/app/services/bambu_mqtt.py:
    - Added _timelapse_during_print instance variable
    - Track when timelapse is active during a print (in both data and xcam parsing)
    - Reset the flag on new print start
    - Include timelapse_was_active in the print complete callback data
  - backend/app/main.py:
    - Added timelapse auto-scan logic in on_print_complete()
    - If timelapse_was_active is True and status is "completed":
        - Wait 5 seconds for timelapse to finalize
      - Scan printer's timelapse directory
      - Find most recent file by mtime
      - Verify it was modified within 30 minutes of print completion
      - Download and attach to archive
      - Send WebSocket update
2025-12-12 15:35:46 +01:00
2025-12-11 14:56:04 +01:00
2025-12-12 09:18:59 +01:00
2025-12-09 17:06:54 +00:00
2025-12-09 08:58:36 +00:00
2025-12-09 17:25:17 +00:00
2025-12-09 17:06:54 +00:00
2025-12-09 17:25:17 +00:00
2025-11-28 10:21:08 +01:00
2025-12-09 08:55:59 +00:00
2025-12-12 10:53:53 +01:00
2025-12-11 12:45:38 +01:00

Bambuddy Logo

Bambuddy

Self-hosted print archive and management system for Bambu Lab 3D printers

Release License Stars Issues Visitors

Features • Screenshots • Quick Start • Documentation • Contributing


Testers Needed! I only have X1C and H2D devices. Help make Bambuddy work with all Bambu Lab printers by reporting your experience!

Why Bambuddy?

  • Own your data — All print history stored locally, no cloud dependency
  • Works offline — Uses LAN Mode for direct printer communication
  • Full automation — Schedule prints, auto power-off, get notified when done
  • Multi-printer support — Manage your entire print farm from one interface

✨ Features

📦 Print Archive

  • Automatic 3MF archiving with metadata
  • 3D model preview (Three.js)
  • Duplicate detection & full-text search
  • Photo attachments & failure analysis
  • Re-print to any connected printer
  • Archive comparison (side-by-side diff)

📊 Monitoring & Stats

  • Real-time printer status via WebSocket
  • Live camera streaming (MJPEG) & snapshots
  • HMS error monitoring with history
  • Print success rates & trends
  • Filament usage tracking
  • Cost analytics & failure analysis
  • CSV/Excel export

⏰ Scheduling & Automation

  • Print queue with drag-and-drop
  • Scheduled prints (date/time)
  • Smart plug integration (Tasmota)
  • Energy consumption tracking
  • Auto power-on before print
  • Auto power-off after cooldown

📁 Projects

  • Group related prints (e.g., "Voron Build")
  • Track progress with target counts
  • Color-coded project badges
  • Assign archives via context menu

🔔 Notifications

  • WhatsApp, Telegram, Discord
  • Email, Pushover, ntfy
  • Custom webhooks
  • Quiet hours & daily digest
  • Customizable message templates

🔧 Integrations

  • Spoolman filament sync
  • Bambu Cloud profile management
  • K-profiles (pressure advance)
  • External sidebar links
  • Webhooks & API keys

🛠️ Maintenance

  • Maintenance scheduling & tracking
  • Interval reminders (hours/days)
  • Print time accuracy stats
  • File manager for printer storage

🎛️ Printer Control

  • AMS/AMS-HT temperature & humidity monitoring
  • Chamber temperature & light control
  • Speed profiles & fan controls
  • AI detection modules (spaghetti, first layer)
  • Automated calibration (bed level, vibration)
  • Dual nozzle support

Plus: Dark/light theme • Mobile responsive • Keyboard shortcuts • Multi-language (EN/DE) • Auto updates • Database backup/restore • System info dashboard


📸 Screenshots

Click to expand screenshots

Printers
Real-time printer monitoring with AMS status

Archives
Print archive with 3D preview and project assignment

Projects
Group related prints into projects

Queue
Print scheduling and queue management

Statistics
Customizable statistics dashboard

Maintenance
Maintenance tracking per printer

Maintenance Settings
Configure maintenance types and intervals

Cloud Profiles
Bambu Cloud filament profiles

Cloud Profiles Edit
Edit filament preset settings

K-Profiles
Pressure advance (K-factor) profiles

K-Profiles Edit
Edit K-factor profile settings

Settings
General configuration and integrations

Smart Plugs
Smart plug control and energy monitoring

Notifications
Multi-provider notification system

API Keys
API keys and webhook endpoints


🚀 Quick Start

Requirements

  • Python 3.10+ (3.11/3.12 recommended)
  • Bambu Lab printer with LAN Mode enabled
  • Same local network as printer

Installation

# Clone and setup
git clone https://github.com/maziggy/bambuddy.git
cd bambuddy
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# Run
uvicorn backend.app.main:app --host 0.0.0.0 --port 8000

Open http://localhost:8000 and add your printer!

Need detailed instructions? See the Installation Guide

Enabling LAN Mode

  1. On printer: Settings → Network → LAN Mode
  2. Enable LAN Mode and note the Access Code
  3. Find IP address in network settings
  4. Find Serial Number in device info

📚 Documentation

Full documentation available at wiki.bambuddy.cool:


🖨️ Supported Printers

Series Models Status
H2 H2C, H2D, H2S ✅ Tested (H2D)
X1 X1, X1 Carbon ✅ Tested (X1C)
P1 P1P, P1S 🧪 Needs testing
A1 A1, A1 Mini 🧪 Needs testing

🛠️ Tech Stack

Component Technology
Backend Python, FastAPI, SQLAlchemy
Frontend React, TypeScript, Tailwind CSS
Database SQLite
3D Viewer Three.js
Communication MQTT (TLS), FTPS

🤝 Contributing

Contributions welcome! Here's how to help:

  1. Test — Report issues with your printer model
  2. Translate — Add new languages
  3. Code — Submit PRs for bugs or features
  4. Document — Improve wiki and guides
# Development setup
git clone https://github.com/maziggy/bambuddy.git
cd bambuddy

# Backend
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
DEBUG=true uvicorn backend.app.main:app --reload

# Frontend (separate terminal)
cd frontend && npm install && npm run dev

See CONTRIBUTING.md for guidelines.


📄 License

MIT License — see LICENSE for details.


🙏 Acknowledgments

  • Bambu Lab for amazing printers
  • The reverse engineering community for protocol documentation
  • All testers and contributors

Made with ❤️ for the 3D printing community

Report Bug • Request Feature • Documentation

S
Description
Your Bambu Lab. No Cloud. Your Rules. Self-hosted command center for Bambu Lab — from one A1 to an entire print farm.
Readme AGPL-3.0
853 MiB
Languages
Python 40%
TypeScript 34.8%
JavaScript 24.5%
Shell 0.5%
HTML 0.1%