Zum Inhalt

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-client bei jedem Neustart
  • Script startet mit set -e und ruft sofort SSH auf → sofortiger Abbruch ohne Fehlermeldung
  • Fix: apk add --no-cache openssh-client am 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 -e bricht ab
  • Betroffen: Drucke ohne G-Code auf NAS (nur STL vorhanden)
  • Fix: || true am Ende des SSH-Thumbnail-Calls in 3d_druck_wiki.sh
  • 🐛 Bug 3 – Dateiname wird bei SSH-Aussetzer überschrieben
  • SSH-Sensoren (60s Polling) → print_status geht kurz unavailable→printing
  • Druckstart-Automation feuert erneut, centauri_carbon_file_name ist 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.gcode
  • ECC_0.4_Gridfinity_UltraLightBin_PlainLabelEdition_2x2x6_Center_PETG0.15_5h36m.gcode
  • ECC_0.4_Gridfinity_UltraLightBin_PlainLabelEdition_1x1x4_Full_PLA0.2_16m7s.gcode
  • Statistiken nach manuellen Nachträgen: 21 Drucke | 55h 2min | 14,05 €
  • 🆕 Fertig-Notification öffnet jetzt direkt die erstellte DokuWiki-Seite
  • clickAction und url in 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.sh liest nach jedem Druck alle Einzelseiten
  • Berechnet: Gesamt-Drucke, Gesamt-Druckzeit, Gesamtkosten
  • Aktualisiert Statistik-Tabelle in 3d_drucke:00_uebersicht automatisch

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-client am Anfang (HAOS-Neustart-Safe)
  • || true nach 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 Druckstart
  • input_number.centauri_letzter_druck_energie - Energieverbrauch letzter Druck
  • input_number.centauri_letzter_druck_kosten - Stromkosten letzter Druck
  • input_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_statusprinting
  • Speichert Energiezählerstand
  • Speichert Dateinamen NUR wenn file_name nicht unknown/unavailable/leer
  • 3D-Druck: Dokumentation bei Druckende erstellen — Trigger: complete / stopped
  • Kamerabild speichern, G-Code parsen, DokuWiki-Eintrag erstellen, Push-Notification

Workflow

  1. User sliced in OrcaSlicer → STL + G-Code auf NAS exportieren
  2. User startet Druck am Centauri → Automation speichert Energiezählerstand + Dateinamen
  3. 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 60scomplete-State kann zwischen zwei Polls verpasst werden (selten)

← Zurück zu HA Projekte