Skip to content

hubermaxi/3dPrintAutomation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

3D Print Automation (MVP)

Setup (Windows)

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env
python -m app.main

Setup (Raspberry Pi OS / Linux)

sudo apt update
sudo apt install -y python3 python3-venv python3-pip

cd /home/pi/3dPrintAutomation
./scripts/setup_pi.sh

Status API

Der Dienst startet jetzt zusätzlich einen kleinen HTTP-Server (FastAPI) auf http://<host>:<port> (standardmäßig 0.0.0.0:8000). Du kannst den Host/Port mit den Umgebungsvariablen API_HOST und API_PORT anpassen.

Wichtige Endpunkte:

  • GET /health - Gesundheitsstatus (Anzahl konfigurierte Drucker + Gesamtzahl Jobs)
  • GET /current - Aktueller laufender Druckjob (wenn vorhanden)
  • GET /prints - Liste der letzten Jobs
  • GET /prints/{job_id} - Details zu einem Job
  • POST /prints - Upload einer neuen Datei + Anlegen eines Druckjobs (Datei wird automatisch archiviert)
  • POST /prints/{job_id}/cancel - Abbrechen eines laufenden Drucks
  • GET /printers - Status aller konfigurierten Drucker (Moonraker erreichbar/Status)

Beispiel:

curl http://localhost:8000/health

Fehlerbehandlung & automatische Wiederholungen

Wenn ein Job beim Upload/Druck fehlschlägt (z. B. weil Moonraker offline ist), wird der Job automatisch wieder in die Warteschlange gestellt und später erneut versucht. Die Einstellungen lassen sich über folgende Umgebungsvariablen anpassen:

  • MAX_RETRIES (Standard 3) – Anzahl Wiederholungsversuche
  • RETRY_DELAY_SECONDS (Standard 10) – Pause vor dem nächsten Versuch (vervielfacht sich mit jedem Versuch)

Multiple printers (Moonraker farm)

Die Automatisierung unterstützt mehrere Drucker, wenn sie jeweils eine eigene Moonraker-Instanz haben. Konfiguriere diese in printers.yaml:

printers:
  - id: "printer1"
    name: "Kobra 3"
    inbox: "inbox/printer1"
    moonraker_base_url: "http://192.168.178.52:7125"
    moonraker_api_key: ""
  - id: "printer2"
    name: "Kobra 3 (zweiter)"
    inbox: "inbox/printer2"
    moonraker_base_url: "http://192.168.178.53:7125"
    moonraker_api_key: ""

Moonraker Upload/Start-Flow (intern im Worker):

  • Upload: POST /printer/files/upload?path=local
  • Start: POST /printer/print/start mit {"filename":"local:<gcode_name>"}

Das Script erstellt automatisch die entsprechenden Inbox-Ordner (z. B. inbox/printer1).

Hinweis: Das Skript erstellt ein virtualenv, installiert Abhängigkeiten, legt .env an und richtet einen systemd-Dienst ein. Wenn du es auf einem Windows-System testen möchtest, kannst du es in WSL ausführen.

Autostart auf Raspberry Pi (systemd, optional)

Datei anlegen: /etc/systemd/system/print-automation.service

[Unit]
Description=3D Print Automation Service
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/3dPrintAutomation
Environment=PYTHONUNBUFFERED=1
ExecStart=/home/pi/3dPrintAutomation/.venv/bin/python -m app.main
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now print-automation.service
sudo systemctl status print-automation.service
journalctl -u print-automation.service -f

Ergebnis von TB-01

  • Konfiguration aus .env
  • Automatisches Anlegen von Ordnern: inbox, gcode, archive, logs
  • Logging auf Konsole + Datei logs/automation.log

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors