Web based application to monitor multiple bambu printers using mqtt / ftp / rtsp (no custom firmware required)
Technologies used:
- Java 21 https://www.azul.com/
- Quarkus https://quarkus.io/
- Vaadin https://vaadin.com/
Feature | A1 | A1 Mini | P1P | P1S | X1C |
---|---|---|---|---|---|
Remote View | ? | ? | |||
Upload to SD card | ? | ? | ? | ||
Print .3mf from SD card | ? | ? | ? | ||
Print .gcode from SD card | ? | ? | ? | ? | ? |
AMS | ? | ? | ? | ? | |
Send Custom GCode | ? | ? | ? | ? |
Currently only .3mf sliced projects are supported.
In Bambu Studio/Orca slicer, make sure to slice the place and then use the "File -> Export -> Export plate sliced file". This creates a
.3mf
project with embedded.gcode
plate.
More screenshots in docs
Building:
mvn clean install -Pproduction
Create a new directory and copy bambu/target/bambu-web-1.0.0-runner.jar
into it, example:
tfyre@fsteyn-pc:/mnt/c/bambu-farm$ ls -al
total 64264
drwxrwxrwx 1 tfyre tfyre 4096 Jan 17 16:47 .
drwxrwxrwx 1 tfyre tfyre 4096 Jan 18 20:42 ..
-rw-rw-rw- 1 tfyre tfyre 4557 Jan 18 14:01 .env
-rw-rw-rw- 1 tfyre tfyre 65796193 Jan 18 20:38 bambu-web-1.0.0-runner.jar
Running
java -jar bambu-web-1.0.0-runner.jar
You can now access it via http://127.0.0.1:8080 (username: admin / password: admin)
Create an .env
file with the following config:
quarkus.http.host=0.0.0.0
quarkus.http.port=8080
bambu.printers.myprinter1.device-id=REPLACE_WITH_DEVICE_SERIAL
bambu.printers.myprinter1.access-code=REPLACE_WITH_DEVICE_ACCESSCODE
bambu.printers.myprinter1.ip=REPLACE_WITH_DEVICE_IP
bambu.users.admin.password=admin
bambu.users.admin.role=admin
All default options are displayed
# Gobal
bambu.dark-mode=false
# Per user (will default to global if omitted)
bambu.users.myUserName.dark-mode=false
bambu.printers.myprinter1.enabled=true
bambu.printers.myprinter1.name=Name With Spaces
bambu.printers.myprinter1.device-id=REPLACE_WITH_DEVICE_SERIAL
bambu.printers.myprinter1.username=bblp
bambu.printers.myprinter1.access-code=REPLACE_WITH_DEVICE_ACCESSCODE
bambu.printers.myprinter1.ip=REPLACE_WITH_DEVICE_IP
bambu.printers.myprinter1.use-ams=true
bambu.printers.myprinter1.timelapse=true
bambu.printers.myprinter1.bed-levelling=true
bambu.printers.myprinter1.mqtt.port=8883
bambu.printers.myprinter1.mqtt.url=ssl://${bambu.printers.myprinter1.ip}:${bambu.printers.myprinter1.mqtt.port}
bambu.printers.myprinter1.mqtt.report-topic=device/${bambu.printers.myprinter1.device-id}/report
bambu.printers.myprinter1.mqtt.request-topic=device/${bambu.printers.myprinter1.device-id}/request
#Requesting full status interval
bambu.printers.myprinter1.mqtt.full-status=10m
bambu.printers.myprinter1.ftp.port=990
bambu.printers.myprinter1.ftp.url=ftps://${bambu.printers.myprinter1.ip}:${bambu.printers.myprinter1.ftp.port}
bambu.printers.myprinter1.ftp.log-commands=false
bambu.printers.myprinter1.stream.port=6000
bambu.printers.myprinter1.stream.url=ssl://${bambu.printers.myprinter1.ip}:${bambu.printers.myprinter1.stream.port}
#Restart stream if no images received interval
bambu.printers.myprinter1.stream.watch-dog=5m
Remember to encrypt your passwords with bcrypt (eg https://bcrypt-generator.com/)
Current roles supported:
admin
- full accessnormal
- only dashboard with readonly access
#https://bcrypt-generator.com/
#bambu.users.REPLACE_WITH_USERNAME.password=REPLACE_WITH_PASSWORD
#Insecure version:
#bambu.users.myUserName.password=myPassword
#Secure version:
bambu.users.myUserName.password=$2a$12$GtP15HEGIhqNdeKh2tFguOAg92B3cPdCh91rj7hklM7aSOuTMh1DC
bambu.users.myUserName.role=admin
bambu.users.myUserName.dark-mode=false
#Guest account with readonly role
bambu.users.guest.password=guest
bambu.users.guest.role=normal
If you want to modify the CSS, create a file next to the .jar
file called styles.css
/* Add your custom CSS here */
/*Setting 2 display columns on ~1920x1080 display*/
.dashboard-printer .image img {
max-height: 507px !important;
max-width: 900px !important;
}
For debugging the application, add the following to .env and uncomment DEBUG or TRACE logging sections
### Log To File
quarkus.log.file.enable=true
quarkus.log.file.path=application.log
### DEBUG logging
#quarkus.log.category."com.tfyre".level=DEBUG
### TRACE logging
#quarkus.log.min-level=TRACE
#quarkus.log.category."com.tfyre".min-level=TRACE
#quarkus.log.category."com.tfyre".level=TRACE
- Move Axis
- Colour Mapping when printing from frontend