3D-Druck Dokumentations-Automation¶
Status: ✅ In Betrieb – 3 Bugfixes (2026-03-06) Erstellt: 2026-02-11 Hardware: Elegoo Centauri Carbon (CC1, FDM) Slicer: OrcaSlicer
Changelog¶
2026-03-06 — Bugfixes: Script-Abbrüche & Dateiname-Überschreibung¶
Diagnose: 3 fehlende Wiki-Einträge entdeckt (03.03 + 04.03). Automation feuerte korrekt, Script brach aber lautlos ab (set -e).
- 🐛 Bug 1 – openssh-client fehlt nach HAOS-Neustart
- HAOS löscht
openssh-clientbei jedem Neustart - Script startet mit
set -eund ruft sofort SSH auf → sofortiger Abbruch ohne Fehlermeldung - Fix:
apk add --no-cache openssh-clientam Scriptanfang (mit|| true) - 🐛 Bug 2 – Thumbnail-SSH gibt exit 1 wenn G-Code nicht auf NAS
- Python
sys.exit(1)wenn G-Code-Datei nicht gefunden → SSH-Exit-Code 1 →set -ebricht ab - Betroffen: Drucke ohne G-Code auf NAS (nur STL vorhanden)
- Fix:
|| trueam Ende des SSH-Thumbnail-Calls in3d_druck_wiki.sh - 🐛 Bug 3 – Dateiname wird bei SSH-Aussetzer überschrieben
- SSH-Sensoren (60s Polling) →
print_statusgeht kurz unavailable→printing - Druckstart-Automation feuert erneut,
centauri_carbon_file_nameist noch unavailable - Speichert "" oder "unknown" als Dateiname → Condition-Check im Druckende schlägt fehl
- Fix: Condition in Druckstart-Automation (
automations.yaml, ID 1739300001000): - Nur speichern wenn
file_name not in ["unknown", "unavailable", "", "None"] - ✅ 3 fehlende Wiki-Einträge manuell nachgeholt (alle 04.03.2026):
ECC_0.4_Gridfinity_UltraLightBin_PlainLabelEdition_1x5x6_Full_PLA0.2_5h5m.gcodeECC_0.4_Gridfinity_UltraLightBin_PlainLabelEdition_2x2x6_Center_PETG0.15_5h36m.gcodeECC_0.4_Gridfinity_UltraLightBin_PlainLabelEdition_1x1x4_Full_PLA0.2_16m7s.gcode- Statistiken nach manuellen Nachträgen: 21 Drucke | 55h 2min | 14,05 €
2026-02-24 — Notification-Link zur DokuWiki-Seite¶
- 🆕 Fertig-Notification öffnet jetzt direkt die erstellte DokuWiki-Seite
clickActionundurlin Notification-Daten der Automation ergänzt- URL wird aus Dateiname + Datum berechnet (identische Logik wie Shell-Script)
2026-02-21 — Automatische Statistik-Aktualisierung¶
- 🆕 Statistiken werden jetzt automatisch berechnet nach jedem Druck
3d_druck_wiki.shliest nach jedem Druck alle Einzelseiten- Berechnet: Gesamt-Drucke, Gesamt-Druckzeit, Gesamtkosten
- Aktualisiert Statistik-Tabelle in
3d_drucke:00_uebersichtautomatisch
2026-02-20 - Bugfix: Parser & Wiki-Tabelle¶
- 🐛 Parser-Bug behoben (
parse_gcode.py): Filament-Verbrauch nicht ausgelesen → Fix: letzte 100KB statt 500 Zeilen - 🐛 Tabellen-Bug behoben (
3d_druck_wiki.sh): Leere Bash-Conditionals brachen Tabelle auf → Fix: Tabelle als Variable außerhalb Heredoc
2026-02-11 - Erstimplementierung¶
- Vollständige Automation: G-Code Parsing, Thumbnail, Kamerabild, DokuWiki-Upload, Push-Notification
- Multi-STL Support über
EXCLUDE_OBJECT_DEFINE
Projektziel¶
Automatische Dokumentation abgeschlossener 3D-Druckjobs ins DokuWiki.
Was wird dokumentiert¶
- Kamerabild vom fertigen Druck
- STL-Dateien (auch mehrere bei Multi-Part Prints!)
- Slicer-Einstellungen (aus G-Code: Layer-Höhe, Infill, Temperaturen)
- Druckzeit (tatsächlich + geschätzt)
- Filament-Verbrauch und -Kosten (aus G-Code)
- Stromverbrauch und -Kosten (Shelly Plug)
- Gesamtkosten (Filament + Strom)
- Fehlerinfo bei abgebrochenen Drucken
NAS-Konfiguration¶
| Parameter | Wert | | SMB-Share | \\192.168.178.20\Sonstiges\3d_prints\ | | Berechtigte User | anatol, dockeruser | | Inhalt | STL + G-Code Dateien gemeinsam |
Scripts¶
G-Code Parser¶
Pfad: /config/scripts/parse_gcode.py (auch auf NAS unter 3d_prints/)
Extrahiert aus OrcaSlicer G-Code:
- Alle STL-Namen aus EXCLUDE_OBJECT_DEFINE Zeilen
- Filament-Verbrauch (g) und Kosten
- Layer-Höhe, Infill, Temperaturen (Düse, Bett)
- Geschätzte Druckzeit, Filament-Typ, Support
DokuWiki Upload Script¶
Pfad: /config/scripts/3d_druck_wiki.sh
- Wichtig: Enthält
apk add openssh-clientam Anfang (HAOS-Neustart-Safe) || truenach SSH-Thumbnail-Call (kein Abbruch wenn G-Code fehlt)- Ruft Parser via SSH auf NAS auf
- Berechnet Gesamtkosten, erstellt DokuWiki-Seite
- Listet alle STLs (mit ✓ wenn auf NAS vorhanden)
- Aktualisiert Übersicht und Statistiken automatisch
Preise¶
| Typ | Wert | | Strompreis | 0.153 EUR/kWh (HA Energy) | | Filament | aus G-Code, Fallback 9.50 EUR/kg |
HA-Konfiguration¶
Input Numbers / Text¶
input_number.centauri_energie_start- Energiezählerstand bei Druckstartinput_number.centauri_letzter_druck_energie- Energieverbrauch letzter Druckinput_number.centauri_letzter_druck_kosten- Stromkosten letzter Druckinput_number.filament_preis_kg- Filament-Preis pro kg (Fallback)input_text.centauri_letzter_dateiname- Dateiname bei Druckstart gespeichert
Shell Command¶
In /config/configuration.yaml:
create_3d_print_wiki: /config/scripts/3d_druck_wiki.sh "filename" "print_time" ...
Automationen¶
- 3D-Druck: Energie bei Druckstart speichern — Trigger:
print_status→printing - Speichert Energiezählerstand
- Speichert Dateinamen NUR wenn
file_namenicht unknown/unavailable/leer - 3D-Druck: Dokumentation bei Druckende erstellen — Trigger:
complete/stopped - Kamerabild speichern, G-Code parsen, DokuWiki-Eintrag erstellen, Push-Notification
Workflow¶
- User sliced in OrcaSlicer → STL + G-Code auf NAS exportieren
- User startet Druck am Centauri → Automation speichert Energiezählerstand + Dateinamen
- Druck endet → Automation erstellt DokuWiki-Eintrag automatisch
Bekannte Einschränkungen¶
- G-Code muss auf NAS liegen — ohne G-Code kein Thumbnail, aber Wiki-Eintrag wird trotzdem erstellt
- SSH-Polling 60s —
complete-State kann zwischen zwei Polls verpasst werden (selten)