Bambu Router
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
Korrigiert Spulen, die fälschlich als „Lager (offen)" angezeigt werden obwohl sie noch im AMS sind.
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).