# Plugin: Moonraker

Die **Moonraker-Integration** besteht aus zwei Komponenten, die zusammen die vollständige Anbindung von Klipper/Moonraker-Druckern an FilaMan ermöglichen:

1. **FilaMan Moonraker Driver Plugin** – wird in FilaMan installiert und stellt den Druckertreiber bereit
2. **FilaMan Moonraker Component** – wird manuell in Moonraker installiert und läuft auf dem Drucker-Server (z. B. Raspberry Pi); übernimmt Extrusionsmessung und Verbrauchsmeldung

**Installation des Driver-Plugins:** → [Admin: Plugin-Verwaltung](/Docs/De/11-Admin#115-system-plugin-verwaltung)

---

## Übersicht

| Eigenschaft | Wert |
|-------------|------|
| **Plugin-Typ** | Driver (Druckertreiber) |
| **Autor** | FilaMan |
| **Quelle** | [Fire-Devils/filaman-plugins](https://github.com/Fire-Devils/filaman-plugins) (Registry) |
| **Verbindung** | HTTP über lokales Netzwerk |
| **Fähigkeiten** | Spulenzuweisung, Extrusionsmessung, automatische Verbrauchserfassung |

---

## Teil 1: FilaMan Moonraker Driver Plugin

Das Driver Plugin wird in FilaMan installiert und ermöglicht die Kommunikation mit dem Moonraker-Server. Es leitet Spulenzuweisungen aus FilaMan an den Moonraker-Endpunkt `/server/filaman/spool_id` weiter.

### Konfiguration

Beim Hinzufügen oder Bearbeiten eines Moonraker-Druckers stehen folgende Konfigurationsfelder zur Verfügung:

| Feld | Pflicht | Beschreibung |
|------|---------|-------------|
| **Moonraker URL** | Ja | Adresse des Moonraker-Servers (z. B. `http://192.168.1.20:7125`) |
| **API Key** | Nein | Moonraker API-Key, sofern in Moonraker konfiguriert |
| **Mode** | Nein | Betriebsmodus: `toolhead_only` (Standard) oder `tray_macros` |
| **Request Timeout (s)** | Nein | Timeout in Sekunden für HTTP-Anfragen (Standard: 10) |
| **Slot Count** | Nein | Anzahl der manuellen Slots (nur bei manueller Konfiguration) |
| **Slot Targets** | Nein | Manuelle Slot-Konfiguration (überschreibt Auto-Discovery) |

Beispielkonfiguration (JSON):

```json
{
  "moonraker_url": "http://192.168.1.20:7125",
  "api_key": "",
  "mode": "toolhead_only",
  "request_timeout_seconds": 10,
  "slot_count": 1,
  "slot_targets": [
    {
      "slot_index": "0-0",
      "slot_name": "Toolhead 1",
      "slot_kind": "toolhead",
      "assign_gcode": "SET_TRAY_SPOOL TRAY=1 SPOOL={spool_id}"
    }
  ]
}
```

### Modi

| Modus | Verhalten |
|-------|-----------|
| `toolhead_only` (Standard) | Spulenzuweisung setzt nur die aktive Spule in Moonraker. Slots werden automatisch aus Moonraker ermittelt (Toolheads und verfügbare Trays). |
| `tray_macros` | Spulenzuweisung setzt die aktive Spule in Moonraker **und** führt zusätzlich das `assign_gcode` des passenden Slots aus. |

### Slot-Discovery (Auto-Erkennung)

Das Plugin erkennt die vorhandenen Slots automatisch aus den Moonraker-Druckerobjekten:

- **Toolhead-Slots** werden aus den Druckerobjekten ermittelt (`extruder`, `extruder1`, ...)
- **Tray-Slots** (AFC/MMU) werden nur angezeigt, wenn Moonraker entsprechende AFC- oder MMU-Objekte meldet
- Wenn keine Tray-Objekte vorhanden sind, werden ausschließlich Toolhead-Slots angezeigt
- Die manuelle Angabe von `slot_targets` in der Konfiguration überschreibt die Auto-Discovery

### Platzhalter für `assign_gcode`

Im Modus `tray_macros` unterstützt das Feld `assign_gcode` folgende Platzhalter:

| Platzhalter | Beschreibung |
|-------------|-------------|
| `{spool_id}` | FilaMan Spulen-ID |
| `{slot_index}` | Index des Slots (z. B. `0-0`) |
| `{ams_id}` | AMS/Tray-Einheit |
| `{tray_id}` | Tray-Slot-Nummer |
| `{material_type}` | Materialtyp (z. B. `PLA`) |
| `{color}` | Farbe der Spule (Hex) |

---

## Teil 2: FilaMan Moonraker Component (manuelle Installation)

Die Moonraker-Komponente ist eine native Moonraker-Erweiterung, die auf demselben Server wie Moonraker läuft (meist ein Raspberry Pi). Sie übernimmt:

- **Verbrauchsmessung** – Extrusionslänge aus Klipper-Toolhead-Updates messen
- **Gewichtsberechnung** – Länge (mm) in Gewicht (g) umrechnen anhand der Filament-Metadaten
- **Verbrauchsmeldung** – Verbrauch automatisch an FilaMan melden (`/api/v1/spools/{id}/consumptions`)
- **Spool-Tracking** – Aktive Spule per Moonraker-Endpunkt und Remote-Method verwalten

> **Hinweis:** Die Moonraker-Komponente ist **optional**, aber empfohlen. Ohne sie kann FilaMan keine automatische Verbrauchserfassung für Klipper-Drucker durchführen.

### Voraussetzungen

- Moonraker und Klipper sind installiert und lauffähig
- FilaMan ist im lokalen Netzwerk erreichbar
- SSH-Zugriff auf den Drucker-Server (z. B. Raspberry Pi)

### Installation

**Schritt 1: Komponentendatei herunterladen**

Verbinden Sie sich per SSH mit dem Drucker-Server und laden Sie die Datei `filaman.py` in das Moonraker-Komponentenverzeichnis herunter:

```bash
cd ~/moonraker/moonraker/components
wget https://github.com/Fire-Devils/FilaMan-Moonraker-Komponente/raw/main/filaman.py
```

Alternativ können Sie die Datei manuell herunterladen und per SFTP/SCP übertragen.

**Schritt 2: Moonraker-Konfiguration anpassen**

Öffnen Sie die Datei `moonraker.conf` (in der Regel unter `~/printer_data/config/moonraker.conf` oder `~/klipper_config/moonraker.conf`) und fügen Sie den folgenden Abschnitt hinzu:

```ini
[filaman]
server: http://192.168.1.50:8000
api_key: uak.123.xxxxxxxxxxxxxxxxxxxxx
sync_rate: 5
default_density_g_cm3: 1.24
default_diameter_mm: 1.75
```

Ersetzen Sie `http://192.168.1.50:8000` durch die tatsächliche URL Ihrer FilaMan-Instanz.

**Schritt 3: Moonraker neu starten**

```bash
sudo systemctl restart moonraker
```

Überprüfen Sie anschließend die Moonraker-Logs auf Fehler:

```bash
journalctl -u moonraker -n 50
```

### Konfigurationsoptionen

| Option | Pflicht | Standardwert | Beschreibung |
|--------|---------|--------------|-------------|
| `server` | Ja | – | Basis-URL der FilaMan-Instanz |
| `api_key` | Empfohlen | – | FilaMan API-Key (`uak.<id>.<geheimnis>`) |
| `sync_rate` | Nein | `5` | Meldeintervall in Sekunden |
| `default_density_g_cm3` | Nein | `1.24` | Fallback-Dichte für Gewichtsberechnung (g/cm³) |
| `default_diameter_mm` | Nein | `1.75` | Fallback-Filamentdurchmesser in mm |

### HTTP-Endpunkte

Nach der Installation stellt die Komponente folgende Endpunkte bereit:

| Methode | Endpunkt | Beschreibung |
|---------|----------|-------------|
| `GET` / `POST` | `/server/filaman/spool_id` | Aktive Spule abrufen oder setzen |
| `GET` | `/server/filaman/status` | Verbindungs- und Synchronisierungsstatus |
| `POST` | `/server/filaman/proxy` | Proxy-Anfragen an FilaMan weiterleiten |

Zusätzlich sind Spoolman-kompatible Aliase immer aktiv:

| Methode | Endpunkt |
|---------|----------|
| `GET` / `POST` | `/server/spoolman/spool_id` |
| `GET` | `/server/spoolman/status` |
| `POST` | `/server/spoolman/proxy` |

### Remote-Methoden (GCode-Makros)

Die Komponente registriert folgende Remote-Methoden, die in Klipper-Makros aufgerufen werden können:

- `filaman_set_active_spool`
- `spoolman_set_active_spool` (Spoolman-kompatibler Alias)

### GCode-Makros einrichten

Fügen Sie diese Makros in Ihre `printer.cfg` oder eine eingebundene Konfigurationsdatei ein, um die aktive Spule über GCode steuern zu können:

```ini
[gcode_macro SET_ACTIVE_SPOOL]
gcode:
  {% if params.ID %}
    {% set id = params.ID|int %}
    {action_call_remote_method("filaman_set_active_spool", spool_id=id)}
  {% else %}
    {action_respond_info("Parameter 'ID' is required")}
  {% endif %}

[gcode_macro CLEAR_ACTIVE_SPOOL]
gcode:
  {action_call_remote_method("filaman_set_active_spool", spool_id=None)}
```

Anschließend können Sie in Ihrem Druckstart-Makro oder manuell über die Konsole die aktive Spule setzen:

```
SET_ACTIVE_SPOOL ID=42
CLEAR_ACTIVE_SPOOL
```

---

## Zusammenspiel beider Komponenten

```
FilaMan              Moonraker-Server (Pi)
─────────            ─────────────────────
Driver Plugin  ←──►  Moonraker Component
  │                    │
  │  POST spool_id     │  Extrusionsdaten
  │  (Zuweisung)       │  (Verbrauchsmeldung)
  └──────────────────► └──────────────────► FilaMan API
```

- Das **Driver Plugin** sendet Spulenzuweisungen aus FilaMan an Moonraker
- Die **Moonraker-Komponente** misst den Extrusionsfortschritt und meldet den Verbrauch direkt an FilaMan zurück

> **Tipp:** Beide Komponenten arbeiten unabhängig voneinander. Sie können das Driver Plugin ohne die Moonraker-Komponente nutzen (nur Zuweisung, keine Verbrauchsmessung) oder umgekehrt.

---

← [Zurück: FilaManDB Community-Datenbank](/Docs/De/18-Filamandb) | [Weiter: Installation auf dem Raspberry Pi →](/Docs/De/20-Installation-Raspberry-Pi)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9