Grotti

Farm-Manager für Moonraker-Drucker
Eine Oberfläche für die ganze Farm: Wand, Warteschlange, Material, Abläufe und Protokoll.
Benannt nach der Mühle Grotti — sie mahlt ohne Pause, was man ihr aufträgt.

Version 3.5.2 Python 3.11+ PostgreSQL Moonraker UI Deutsch Self-hosted

Features · Screenshots · Schnellstart · API · Changelog · Community

---

Druckerwand

## Features | | | | --- | --- | | **Druckerwand & Cockpit** | Live-Status, Temps, Pause/Cancel, Farm-ETA | | **Warteschlange** | Priorität, „nächster freier“, Material-Match, ACE-Map | | **Dateien & Projekte** | Slice-Watch, Senden, Umbenennen, Projektordner | | **Kobra-3-Ablauf** | Druck → Abkühlen → Schieben → Tasten | | **Material** | Spulen, Restgewicht, Bedarf, Chargen | | **Aufträge & Statistik** | Kunden, Lieferschein, Kosten (€ Material+Strom) | | **Betrieb** | Auth (Session/`grt_…`), Telegram/ntfy, PWA | Stack: **Python · Flask · PostgreSQL · Moonraker** (Rinkhals auf Kobra 3 / S1). ## Screenshots

Jetzt-Liste   Warteschlange

Dateien   Material

Statistik   Cockpit

Weitere Bilder und Post-Text: [`docs/community/`](docs/community/README.md). ## Schnellstart **Voraussetzungen:** Python 3.11, PostgreSQL (leere DB `grotti`), Drucker mit Moonraker im LAN. ```powershell cd D:\Projekte\Grotti python -m venv .venv .\.venv\Scripts\pip install -r requirements.txt copy config.example.json config.json .\.venv\Scripts\python.exe server.py ``` Dann . Bedienung unter **Doku** in der App (`docs/Anleitung-*.md`). ### Raspberry Pi (`.deb`) Auf dem Pi (arm64 / Bookworm) bauen und installieren — PostgreSQL und systemd-Dienst werden mit eingerichtet: ```bash bash packaging/build-deb.sh sudo apt install ./packaging/dist/grotti_*_arm64.deb journalctl -u grotti -f ``` Details: [docs/Anleitung-Installation-Pi.md](docs/Anleitung-Installation-Pi.md). Öffentliches apt-Repo folgt später. `config.json` und `data/` bleiben lokal (nicht im Git). Drucker zuerst in `drucker.json`, danach unter Einstellungen. | Schlüssel | Bedeutung | | --- | --- | | `host`, `port` | Oberfläche (Standard `127.0.0.1:8770`) | | `database_url` | PostgreSQL | | `watch_dir` | Slice-Ordner (oder leer = nur Upload) | | `energy` / `telegram` / `alerts` | Kosten und Benachrichtigungen | Schema-Migrationen laufen beim Start (`grotti/migrations/`). Vor Major-Updates: `pg_dump`. ## Ordner | Pfad | Inhalt | | --- | --- | | `server.py` | Start, DB, Hintergrund-Threads | | `grotti/` | Moonraker, Queue, Senden, Abräumen, Watcher, Store | | `web/` | Flask, Templates, CSS/JS, Branding | | `docs/` | Anleitungen (`/doku`), Community-Screens, Technik unter `internal/` | | `CHANGELOG.md` | Versionen | ## API Alles unter `/api/v1`, JSON. Auth: Session oder `Authorization: Bearer grt_…`. | Methode und Pfad | Zweck | | --- | --- | | `POST /auth/setup`, `/auth/login`, `/auth/logout` | Ersten Admin, Login, Logout | | `GET /me`, `/users`, `/tokens` | Konto, Benutzer (Admin), API-Tokens | | `GET /version` | Version | | `GET`/`PATCH /einstellungen`, `POST /telegram/test` | Config und Telegram-Probe | | `GET /drucker?live=1` | Drucker mit Live-Zustand | | `POST /drucker//` | Pause, Fortsetzen, Abbrechen, Fehler löschen | | `POST /drucker//steuern` | Temperatur, Speed, Flow, Lüfter, ACE | | `POST /drucker//abraeumen` | Platte geräumt (`confirm`) | | `GET`/`POST /dateien`, `PATCH`/`DELETE /dateien/` | Bibliothek | | `POST /senden`, `GET`/`POST /druck-queue` | Senden und Warteschlange (`confirm`) | | `GET /spulen`, `POST /spulen//einlegen` | Material | | `GET /laeufe`, `/statistik`, `/ereignisse` | Protokoll und Aktivität | MCP: `python -m grotti.mcp_server` mit `GROTTI_URL` / `GROTTI_TOKEN` → `docs/internal/MCP.md`. ## Sicherheit - Login Pflicht. Rollen: Admin, Operator. - Druckstarts brauchen `confirm: true` (Zwei-Klick in der UI). - Keine freie G-code-Konsole; kein `FIRMWARE_RESTART` über Grotti. - Nach außen: Reverse Proxy mit TLS. ## Versionen - SemVer in `grotti/version.py`, Einträge in [CHANGELOG.md](CHANGELOG.md). - Release: `[Unreleased]` → `[x.y.z] – Datum`, Tag `vX.Y.Z`. - CSS/JS-Cache: `?v=` in `layout.html` mitziehen. ---


Repo: git.gundel.dev/dg/grotti