Inventar App für Bambu X2D

Stand 23.08.2026 · Version 26.08.23

Der Drucker steht seit dem 12. August hier. Nach zwei Wochen war klar, dass ich den Überblick verliere: welche Rolle liegt im AMS, welche im Vakuumbeutel, wie viel ist noch drauf, und darf das Zeug überhaupt ins AMS. Also eine kleine App dafür — PHP, JSON-Dateien als Speicher, keine Datenbank, kein Framework, nichts zum Nachinstallieren.

Der erste Beitrag beschrieb den Stand vom 18. August. Seitdem ist das Meiste dazugekommen.

Das AMS im Blick

Der eigentliche Grund für die App. Über der Filamentliste stehen fünf gleich breite Felder: die vier AMS-Schächte und die externe Spule rechts am X2D. Jedes zeigt Farbe und Material, leere Schächte stehen gestrichelt als frei da.

In der Liste selbst tragen belegte Rollen ein rundes Abzeichen mit der Nummer 1 bis 5 — 5 ist die externe Spule. Es steht vor den Warnsymbolen, damit die Zeile von links nach rechts erst sagt wo die Rolle steckt und dann worauf zu achten ist. Der Name dieser Rollen steht dafür normal statt fett; zwei fette Signale nebeneinander heben sich gegenseitig auf.

Die Nummer ist kein zweites Feld, sondern die Position des Lagerorts in der Liste. Belegungszeile und Abzeichen können also nicht auseinanderlaufen.

Ein Auge in der Kopfzeile der Liste blendet die belegten Rollen aus — sie stehen ohnehin oben. Der Zustand bleibt über Sitzungen erhalten.

Materialwechsel in einem Vorgang

Ein Symbol in der Kopfzeile, oder ein Klick direkt auf eine Platzkachel. Drei Schritte, die nacheinander aufklappen:

  1. Welcher Platz — AMS 1 bis 4 oder rechts am X2D.
  2. Was kommt hinein — alle Rollen mit Farbe und Restmenge zur Auswahl, „keines" ist auch eine Antwort. Was gerade auf dem Platz liegt, ist ausgeblendet. Liegt die gewählte Rolle auf einem anderen Platz, steht der Hinweis dabei, dass der frei wird.
  3. Wohin mit der ausgebauten Rolle — Regal, Trockner, Vakuum, oder aufgebraucht.

Die Restmenge wird bei jedem Ausbau abgefragt, nicht nur beim Aufbrauchen. Die Rolle war im Einsatz, und das ist der Moment, in dem die Waage ohnehin danebensteht. Der bisherige Wert steht schon im Feld.

Bei aufgebraucht schlägt die App eine Stückzahl weniger vor — aus 2 wird 1, aus 1 wird 0. Fällt sie auf null, bleibt die Position erhalten (Verlauf und Anschaffungswert hängen daran), bekommt den Vermerk aufgebraucht und verschwindet aus Rollen, Arten und der Fast-leer-Warnung.

Ausbau und Einbau gehen gemeinsam in die Daten. Ein Abbruch auf halber Strecke kann keinen Platz mit zwei oder null Rollen hinterlassen. Jeder Wechsel steht als eigene Art im Verlauf.

Darf das ins AMS?

Die Antwort steht jetzt am Material, nicht an der einzelnen Rolle. Alle 23 Materialeinträge haben ein Feld ams, gefüllt aus der AMS-Spalte der Bambu-Materialtabelle, abgeglichen mit der X2D-Kompatibilitätsseite und der Spezifikation der AMS 2 Pro.

Angezeigt wird bewusst nur der Ausschluss: ein roter Chip nicht AMS fähig! mit der Begründung als Tooltip. Eine Freigabe ist der Normalfall und braucht kein Etikett. Ein Neuzugang erbt die Bewertung automatisch.

Bei Faserfüllung wird differenziert: PLA-CF und PA-CF nur in der herstellereigenen Variante, PETG-CF dagegen generell zulässig. Gesperrt bleiben TPU, PET-CF, PA-GF, ASA-CF, PPA-CF und PPS-CF. Auch bei den freigegebenen Fasersorten steht der Hinweis dabei, dass sie die PTFE-Kanäle mit der Zeit ausschmirgeln.

Wo die Bambu-Tabelle schweigt, steht [abgeleitet] in der Begründung — dann ist es meine Schlussfolgerung und nicht deren Angabe.

Zwei Funde aus der Recherche, die ich vorher nicht wusste:

  • PPS-CF druckt der X2D überhaupt nicht. Die Hauptdüse ist in jeder Größe gesperrt; das Material bleibt der H2-Serie und dem X1E vorbehalten. PEEK führt die Kompatibilitätstabelle gar nicht.
  • Refills haben keine Spule. Nur einen Pappkern. Sie tragen deshalb einen eigenen Hinweis „Leerspule nötig" — ohne wiederverwendbare Spule gehen sie gar nicht erst ins AMS.

Spulenkunde

Ein eigener Block in der Materialübersicht, weil es kein Materialthema ist: ob eine Rolle auf Karton oder Kunststoff sitzt, hängt am Hersteller, nicht am Kunststoff.

  • Maße: Die AMS 2 Pro nimmt Ø 197–202 mm bei 50–68 mm Breite. Im Zweifel nachmessen, die Herstellerangaben schwanken chargenweise.
  • Pappspulen funktionieren, sind aber die Schwachstelle: sie können durchrutschen und geben Pappstaub ab. Abhilfe sind ausgedruckte Spulenringe.
  • Im Bestand: Kartonspulen bei eSUN, Elegoo, Polymaker PolyTerra und Protopasta. Protopasta hat 2025 von 203 auf 199,5 mm verkleinert — ältere Rollen von vor der Umstellung passen nicht.

Ein Lagerort statt zwei Feldern

„Lagerung" und „Lagerort" sagten dasselbe und liefen regelmäßig auseinander — eine Rolle stand auf Lagerung AMS und Lagerort Regal. Geblieben ist der Lagerort, jetzt als Auswahlfeld: AMS 1 bis 4, rechts am X2D, in Regal, im Trockner, Vakuum verpackt.

Geräte und Zubehör stehen an freien Orten wie „Werkstatt" oder „verbaut". Solche Altwerte hängt der Dialog als zusätzliche Option an, statt sie beim Speichern zu schlucken.

Bedienung

  • Start auf Filament. Die Liste öffnet direkt in der Filamentansicht und damit in der Kompaktzeile.
  • Kennzahlen im Kopf. Rollen, Arten, Gesamtmenge und Fast-leer stehen in der Kopfzeile und klappen weg, sobald man scrollt. Ganz oben sind sie wieder da.
  • Druckzeit neben den Kilogramm. Wie lange der Bestand am Stück reicht, gerechnet mit 30 g/h. Das ist ein Mittelwert über einen ganzen Druck, nicht der Spitzenfluss aus dem Datenblatt — hergeleitet aus dem eigenen Bewegungslog (1400 g auf 50 Betriebsstunden ≈ 28 g/h).
  • Inventur. Hakenbox je Zeile, Zähler und Rücksetzer in der Kopfzeile. Bewusst ohne Sicherung gespeichert, damit eine Inventur nicht die zehn aufbewahrten Sicherungen echter Änderungen verdrängt.
  • Arten- und Herstellerfilter in einer Zeile, mit den tatsächlich vorhandenen Arten samt Anzahl.
  • Betriebshinweise hängen am Ding — an einer Position oder an einem Material, nicht mehr als Block am Seitenende. Warndreieck auf der Karte, Text in einer Einblendung. Umgesetzt mit der nativen Popover-API, ohne JavaScript-Bibliothek.
  • Merkliste als eigene Seite mit eigener Datei, damit eine abgehakte Zeile keine Sicherung des Bestands auslöst.
  • Bestellimport über ein JSON-Schema mit Prüfformular, dazu ein Token-geschützter Endpunkt für einen iOS-Kurzbefehl.
  • Bewegungslog für jede Mengenänderung, mit Grund und Bezug.

Technik

PHP 8, JSON-Dateien, nginx. Keine Datenbank, keine externen Abhängigkeiten, kein Build-Schritt. Die Materialdaten liegen als material.php statt .json, weil der Autosync keine JSON-Dateien überträgt — als PHP wandert die Datei automatisch mit und ist über HTTP nicht auslesbar.

Ein paar Dinge, die unterwegs auffielen und die ich hier festhalte, weil sie typisch sind:

  • „PLA Carbon Fiber" wurde als reines PLA geführt. Die Präfixsuche griff auf PLA, bevor PLA-CF geprüft wurde. Trocknung, Bauplatte und Düsenanforderung standen falsch — und der Artikel galt als AMS-tauglich, obwohl er es nicht ist.
  • Der Sync-Zeitstempel wurde am Ende des Laufs gesetzt. Ein Lauf dauert einige Sekunden; jede Datei, die in diesem Fenster entstand, war danach älter als der Stempel und wurde nie wieder als geändert erkannt. Still, dauerhaft, ohne Fehlermeldung.
  • config.php passte in die Endungs-Allowlist des Syncs. Sie wäre bei der nächsten lokalen Änderung in den Webroot gewandert, samt Passwort-Hash und API-Token. Jetzt pfadgenau ausgeschlossen — ebenso die interne Projektdokumentation, die als .md denselben Weg genommen hätte.

Stand

40 Positionen, davon 23 Filamente mit 26 Rollen, dazu Bauplatten, Zubehör und Geräte. 23 Materialeinträge mit Belüftungsstufe, Trocknung, Bauplatte, Düsenanforderung und AMS-Bewertung.