4.3 KiB
ACE-Farben in Grotti (Moonraker)
Stand 12.10.2026: An Kobra 3 da26 (10.10.1.60) liefert Moonraker die ACE-Spulenfarben unter mmu, nicht unter filament_hub (steht oft nicht in objects/list).
- Relevante Felder:
gate_color(HexAARRGGBBoderRRGGBB),gate_material, optionalgate_statusbzw. Listen pro Platz. - Grotti liest das in
grotti/moonraker.py(extract_slots) und zeigt die Farben als Swatches auf der Druckerwand. - Fallback:
filament_hub/filament_hubs[].slotsmitcolorundtype, falls vorhanden.
Senden: welches Material welcher Slot
12.10.2026: In Dateien bei Druckern mit Slots die Slice-Farbe (paint_index) einem ACE-Platz (ams_index, 0-basiert) zuordnen. Grotti schreibt Dateiname.gcode.acm und lädt sie vor print/start hoch. Ohne Sidecar: auf da26 oft HTTP 400 „cannot parse the file“. Siehe Grotti-Senden-Queue.
12.10. Abbruch tulip pla.gcode auf da26 — kein ACE-Blink
Beobachtung: Material ging initial zum Extruder, ACE-Slot blinkte nicht, kein Nachschub vom ACE. Andere Kobra 3 (92ee/6e41) drucken dieselbe Datei von der externen Spule weiter; nicht angefasst.
Ursache (Moonraker-Log da26, lesend):
- Job
000009(tot-printing, 0 mm Filament) und00000A(~695 s Druck, ~658 mm) beidecancelledauf10.10.1.60. - Bei jedem MQTT-Start:
mmu_ace.patch_print_data→detected_tools unknown … skipping auto-feed (no trailer found). Ohne Trailer/Tools kein Auto-Feed → kein Slot-Blinken, kein ACE-Nachschub. - Metadaten-Extrakt für die Datei scheitert (
Unable to extract metadata/mmu_ace_metadataabgebrochen). - Grotti-Sidecar
tulip pla.gcode.acm:paint_index 0 → ams_index 1(Farbe Datei#000000, Slot-Farbe002B49). Parallel liegttulip pla.acmmit Identity-Map T0–T3 → Plätze 0–3. MQTT-Payload nutzte die 4er-Map, nicht Grotti-1er-Map. - Start ohne
bed_leveling: Grotti übergibtams_settingsnur als.acm; Moonraker baut die MQTT-ams_settingsselbst.auto_leveling: 0. - Initialer Extruder-Feed ohne Blink: Restfilament im Pfad / Extrusion aus dem Schlauch, nicht ACE-Auswahl. Nach Abbruch:
mmu.gate/tool= −1,active_filamentleer; vier Plätze weiter belegt.
Grotti-DB sends: da26 zweimal tulip pla.gcode (ohne persistiertes ace_map; Mapping nur in der Queue im Speicher und in der .acm auf dem Drucker). Queue-API leer nach Abschluss.
Nächster Start auf da26: gewünschten ACE-Platz in Grotti setzen (bei schwarzer Slice-Farbe zuletzt Platz 1 = dunkelblau). Alte tulip pla.acm nicht mit Grotti-.gcode.acm vermischen. Ohne erfolgreichen Trailer/Metadaten bleibt Auto-Feed aus — dann blinkt der ACE weiterhin nicht.
Fix Grotti (12.10.2026, nach Diagnose)
Anycubic erwartet die Sidecar als gleichen Basename + .acm: Start tulip pla.gcode → tulip pla.gcode.acm. Grotti lädt Grotti-Map zusätzlich nach tulip pla.acm hoch (Überschreiben), damit eine alte Identity-Map nicht gewinnt.
Mit gesetzter ACE-Zuordnung startet Grotti den Druck per MQTT und setzt ams_box_mapping aus Grotti-Map — nicht mehr nur über Moonraker-print/start (dort Identity-Fallback / falsche .acm). Bettnetz-Checkbox steuert weiter nur auto_leveling.
13.10.2026: Fehlt ; referenced_tools beim Senden mit ACE-Zuordnung, hängt Grotti ihn an — aus T-Befehlen, sonst aus paint_info / der gewählten paint_index-Map (Einzelfarbe oft 0). Zusätzlich die Rinkhals-Kopfzeile ; processed by MmuAcePatcher. Warnung nur noch, wenn danach immer noch kein Trailer da ist.
13.10.2026 — MQTT 10101 trotz Moonraker cancelled (da26 / Gridfinity)
Nach Grotti-Send Gridfinity_bin_1x1x6u_PLA_0.2_49m32s.gcode an da26 (10.10.1.60): Moonraker print_stats.state = cancelled, Anycubic-MQTT-Task blieb aktiv → nachfolgender Start mit code 10101 („已存在打印任务“ / Print task already exists). Grotti abbrechen traf nur Moonraker /printer/print/cancel, nicht den Anycubic-Task.
Klärung: MQTT action: stop, taskid: "-1" auf Topic …/slicer/printer/{modelId}/{deviceId}/print (Rinkhals-Docs). Report state: stopping, code 200; danach MQTT-Info data.state: free. Grotti abbrechen macht seither Moonraker-cancel und best-effort MQTT-stop (anycubic_lan.cancel_print). Wenn MQTT-stop nicht greift: Display abbrechen oder Reboot als letzte Option.