73 lines
2.6 KiB
Markdown
73 lines
2.6 KiB
Markdown
# Bambu Web Helper
|
|
|
|
Multi-user web application for Bambu Cloud monitoring with Docker, Postgres,
|
|
user management, and a separate private MQTT broker configuration for every user.
|
|
|
|
## Features
|
|
|
|
- Web interface on port `3923`
|
|
- Postgres database through `docker compose`
|
|
- Login, self-service password changes, and admin password resets
|
|
- Admin-managed per-user printer limits, initially `1`
|
|
- Per-printer Bambu Cloud token storage
|
|
- Live printer status through Bambu Cloud MQTT
|
|
- Per-user MQTT broker with optional authentication, TLS, and certificate-error override
|
|
- Per-user Bambu push and MQTT sync intervals
|
|
|
|
## Start with Docker
|
|
|
|
1. Ensure Docker Desktop is running.
|
|
2. Run `docker compose up --build -d`.
|
|
3. Open `http://localhost:3923`.
|
|
|
|
The initial admin is set in `.env`:
|
|
|
|
- Username: `bambumin`
|
|
- Password: `ChangeMe123!`
|
|
|
|
## Defaults
|
|
|
|
The `.env` file supplies defaults for newly created users:
|
|
|
|
- `DEFAULT_USER_PRINTER_LIMIT=1`
|
|
- `DEFAULT_USER_PUSH_INTERVAL_MS=600000`
|
|
- `DEFAULT_USER_SYNC_INTERVAL_MS=30000`
|
|
- `BRIDGE_REFRESH_INTERVAL_MS=30000`
|
|
|
|
## Private MQTT
|
|
|
|
After login, every user configures their own MQTT broker in the web interface.
|
|
Enter only the hostname or IP address, such as `mqtt.example.net`; enter the port
|
|
separately. Enabling TLS uses `mqtts`. Enabling the certificate-error option sets
|
|
the MQTT client's `rejectUnauthorized` option to `false`.
|
|
|
|
Each printer publishes retained payloads to the configured user broker:
|
|
|
|
- `{baseTopic}/{serial}/availability`
|
|
- `{baseTopic}/{serial}/state`
|
|
- `{baseTopic}/{serial}/raw`
|
|
- `{baseTopic}/{serial}/{custom-suffix}` for configured individual scalar values
|
|
|
|
In the printer tab, users can map selected fields from `raw` or the normalized
|
|
`state` to their own topic suffix. Examples include `print.nozzle_temper` and
|
|
`nozzleTemp`. Scalar values are published directly as text, number, or boolean,
|
|
so subscribers do not need to parse the JSON status payload.
|
|
|
|
The push interval sends Bambu's `pushall` request. The MQTT sync interval republishes
|
|
the last known state; new live updates are always published immediately.
|
|
|
|
## Bambu Cloud
|
|
|
|
The integration follows the connection pattern used by
|
|
[Keralots/BambuHelper](https://github.com/Keralots/BambuHelper):
|
|
|
|
- `us.mqtt.bambulab.com` for `US` and `EU`, `cn.mqtt.bambulab.com` for `CN`
|
|
- TLS on port `8883`
|
|
- Username `u_{uid}` and the access token as password
|
|
- Status topic `device/{SERIAL}/report`
|
|
- Request topic `device/{SERIAL}/request`
|
|
|
|
The application requests complete status snapshots with `pushall`. A printer owner
|
|
can additionally switch the chamber light and pause, resume, or stop an active print
|
|
from the printer page. Stopping always requires a confirmation in the web interface.
|