Ziel-MQTT-Broker
Splitter — Rauschunterdrückung
Numerische Werte werden nur neu publiziert wenn sie sich um mehr als die Toleranz ändern. 0 = jede Änderung publishen, Setpoints (bed_target / nozzle_target) sind immer exakt.
Inventory
Storage- & Task-Publisher (MQTT)
Topics werden absolut publiziert (kein target_topic_prefix davor) damit sie sich nicht mit anderen Geräten auf deinem Broker beißen.
Lager und AMS sind retained Snapshots. Tasks laufen als nicht-retained Event-Stream auf ein gemeinsames Topic — eine Message pro Task-Erstellung oder -Resolution, kein Replay.
Hinweis: Die Bambu-Drucker pushen ihre Daten automatisch — kein Polling nötig.
Bei (Re)Connect schickt der Router selbständig ein pushall für einen vollen Snapshot.
Notifications (Push & Badge)
Web-Push-Provider läuft in-process in diesem Container. VAPID-Schlüsselpaar wird beim ersten Start erzeugt und in der SQLite hinterlegt.
Voraussetzungen: HTTPS (außer localhost), Browser unterstützt Web Push, Service Worker installiert (geschieht automatisch beim ersten Login). iOS: App vorher zum Homescreen hinzufügen.
Darstellung (lokal pro Gerät)
Wird nur auf diesem Gerät gespeichert (IndexedDB). Auf Tablet, Handy und Desktop kannst du jeweils andere Werte einstellen.
Test-Mode (Sandbox + Rollback)
Beim Start wird ein vollständiger SQLite-Snapshot angelegt (Backup im Volume).
Im Test-Mode kannst du Lager, Katalog, Spulen, Settings — alles — ändern, ohne dass deine echten Daten betroffen sind.
Beim Stop spielt das System den Snapshot zurück.
Während Test-Mode aktiv ist: Drucker → Broker-Routing läuft, AMS-Insert/Removes werden weiterhin als Tasks geschrieben — aber die bambu_storage, bambu_storage/ams und bambu_tasks Topics werden nicht an den Broker geschickt.
Passwort ändern
Ersten Account anlegen / Passwort zurücksetzen geht auch per Console: docker exec bambu-router python -m app.usercli set baer DEIN_PASSWORT
Filament-Katalog Import
JSON-Import: Dedupe per code (Bambu-Filament-Code) — bei fehlendem Code Fallback auf (brand,material,sub_brand,color_name,color_hex). Vorhandene Einträge werden nicht überschrieben. sub_brand wird im Schema Material Linie geschrieben (z.B. PLA Matte).