Blame
|
1 | # Plugin: Moonraker |
||||||
| 2 | ||||||||
| 3 | Die **Moonraker-Integration** besteht aus zwei Komponenten, die zusammen die vollständige Anbindung von Klipper/Moonraker-Druckern an FilaMan ermöglichen: |
|||||||
| 4 | ||||||||
| 5 | 1. **FilaMan Moonraker Driver Plugin** – wird in FilaMan installiert und stellt den Druckertreiber bereit |
|||||||
| 6 | 2. **FilaMan Moonraker Component** – wird manuell in Moonraker installiert und läuft auf dem Drucker-Server (z. B. Raspberry Pi); übernimmt Extrusionsmessung und Verbrauchsmeldung |
|||||||
| 7 | ||||||||
| 8 | **Installation des Driver-Plugins:** → [Admin: Plugin-Verwaltung](/Docs/De/11-Admin#115-system-plugin-verwaltung) |
|||||||
| 9 | ||||||||
| 10 | --- |
|||||||
| 11 | ||||||||
| 12 | ## Übersicht |
|||||||
| 13 | ||||||||
| 14 | | Eigenschaft | Wert | |
|||||||
| 15 | |-------------|------| |
|||||||
| 16 | | **Plugin-Typ** | Driver (Druckertreiber) | |
|||||||
| 17 | | **Autor** | FilaMan | |
|||||||
| 18 | | **Quelle** | [Fire-Devils/filaman-plugins](https://github.com/Fire-Devils/filaman-plugins) (Registry) | |
|||||||
| 19 | | **Verbindung** | HTTP über lokales Netzwerk | |
|||||||
| 20 | | **Fähigkeiten** | Spulenzuweisung, Extrusionsmessung, automatische Verbrauchserfassung | |
|||||||
| 21 | ||||||||
| 22 | --- |
|||||||
| 23 | ||||||||
| 24 | ## Teil 1: FilaMan Moonraker Driver Plugin |
|||||||
| 25 | ||||||||
| 26 | 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. |
|||||||
| 27 | ||||||||
| 28 | ### Konfiguration |
|||||||
| 29 | ||||||||
| 30 | Beim Hinzufügen oder Bearbeiten eines Moonraker-Druckers stehen folgende Konfigurationsfelder zur Verfügung: |
|||||||
| 31 | ||||||||
| 32 | | Feld | Pflicht | Beschreibung | |
|||||||
| 33 | |------|---------|-------------| |
|||||||
| 34 | | **Moonraker URL** | Ja | Adresse des Moonraker-Servers (z. B. `http://192.168.1.20:7125`) | |
|||||||
| 35 | | **API Key** | Nein | Moonraker API-Key, sofern in Moonraker konfiguriert | |
|||||||
| 36 | | **Mode** | Nein | Betriebsmodus: `toolhead_only` (Standard) oder `tray_macros` | |
|||||||
| 37 | | **Request Timeout (s)** | Nein | Timeout in Sekunden für HTTP-Anfragen (Standard: 10) | |
|||||||
| 38 | | **Slot Count** | Nein | Anzahl der manuellen Slots (nur bei manueller Konfiguration) | |
|||||||
| 39 | | **Slot Targets** | Nein | Manuelle Slot-Konfiguration (überschreibt Auto-Discovery) | |
|||||||
| 40 | ||||||||
| 41 | Beispielkonfiguration (JSON): |
|||||||
| 42 | ||||||||
| 43 | ```json |
|||||||
| 44 | { |
|||||||
| 45 | "moonraker_url": "http://192.168.1.20:7125", |
|||||||
| 46 | "api_key": "", |
|||||||
| 47 | "mode": "toolhead_only", |
|||||||
| 48 | "request_timeout_seconds": 10, |
|||||||
| 49 | "slot_count": 1, |
|||||||
| 50 | "slot_targets": [ |
|||||||
| 51 | { |
|||||||
| 52 | "slot_index": "0-0", |
|||||||
| 53 | "slot_name": "Toolhead 1", |
|||||||
| 54 | "slot_kind": "toolhead", |
|||||||
| 55 | "assign_gcode": "SET_TRAY_SPOOL TRAY=1 SPOOL={spool_id}" |
|||||||
| 56 | } |
|||||||
| 57 | ] |
|||||||
| 58 | } |
|||||||
| 59 | ``` |
|||||||
| 60 | ||||||||
| 61 | ### Modi |
|||||||
| 62 | ||||||||
| 63 | | Modus | Verhalten | |
|||||||
| 64 | |-------|-----------| |
|||||||
| 65 | | `toolhead_only` (Standard) | Spulenzuweisung setzt nur die aktive Spule in Moonraker. Slots werden automatisch aus Moonraker ermittelt (Toolheads und verfügbare Trays). | |
|||||||
| 66 | | `tray_macros` | Spulenzuweisung setzt die aktive Spule in Moonraker **und** führt zusätzlich das `assign_gcode` des passenden Slots aus. | |
|||||||
| 67 | ||||||||
| 68 | ### Slot-Discovery (Auto-Erkennung) |
|||||||
| 69 | ||||||||
| 70 | Das Plugin erkennt die vorhandenen Slots automatisch aus den Moonraker-Druckerobjekten: |
|||||||
| 71 | ||||||||
| 72 | - **Toolhead-Slots** werden aus den Druckerobjekten ermittelt (`extruder`, `extruder1`, ...) |
|||||||
| 73 | - **Tray-Slots** (AFC/MMU) werden nur angezeigt, wenn Moonraker entsprechende AFC- oder MMU-Objekte meldet |
|||||||
| 74 | - Wenn keine Tray-Objekte vorhanden sind, werden ausschließlich Toolhead-Slots angezeigt |
|||||||
| 75 | - Die manuelle Angabe von `slot_targets` in der Konfiguration überschreibt die Auto-Discovery |
|||||||
| 76 | ||||||||
| 77 | ### Platzhalter für `assign_gcode` |
|||||||
| 78 | ||||||||
| 79 | Im Modus `tray_macros` unterstützt das Feld `assign_gcode` folgende Platzhalter: |
|||||||
| 80 | ||||||||
| 81 | | Platzhalter | Beschreibung | |
|||||||
| 82 | |-------------|-------------| |
|||||||
| 83 | | `{spool_id}` | FilaMan Spulen-ID | |
|||||||
| 84 | | `{slot_index}` | Index des Slots (z. B. `0-0`) | |
|||||||
| 85 | | `{ams_id}` | AMS/Tray-Einheit | |
|||||||
| 86 | | `{tray_id}` | Tray-Slot-Nummer | |
|||||||
| 87 | | `{material_type}` | Materialtyp (z. B. `PLA`) | |
|||||||
| 88 | | `{color}` | Farbe der Spule (Hex) | |
|||||||
| 89 | ||||||||
| 90 | --- |
|||||||
| 91 | ||||||||
| 92 | ## Teil 2: FilaMan Moonraker Component (manuelle Installation) |
|||||||
| 93 | ||||||||
| 94 | Die Moonraker-Komponente ist eine native Moonraker-Erweiterung, die auf demselben Server wie Moonraker läuft (meist ein Raspberry Pi). Sie übernimmt: |
|||||||
| 95 | ||||||||
| 96 | - **Verbrauchsmessung** – Extrusionslänge aus Klipper-Toolhead-Updates messen |
|||||||
| 97 | - **Gewichtsberechnung** – Länge (mm) in Gewicht (g) umrechnen anhand der Filament-Metadaten |
|||||||
| 98 | - **Verbrauchsmeldung** – Verbrauch automatisch an FilaMan melden (`/api/v1/spools/{id}/consumptions`) |
|||||||
| 99 | - **Spool-Tracking** – Aktive Spule per Moonraker-Endpunkt und Remote-Method verwalten |
|||||||
| 100 | ||||||||
| 101 | > **Hinweis:** Die Moonraker-Komponente ist **optional**, aber empfohlen. Ohne sie kann FilaMan keine automatische Verbrauchserfassung für Klipper-Drucker durchführen. |
|||||||
| 102 | ||||||||
| 103 | ### Voraussetzungen |
|||||||
| 104 | ||||||||
| 105 | - Moonraker und Klipper sind installiert und lauffähig |
|||||||
| 106 | - FilaMan ist im lokalen Netzwerk erreichbar |
|||||||
| 107 | - SSH-Zugriff auf den Drucker-Server (z. B. Raspberry Pi) |
|||||||
| 108 | ||||||||
| 109 | ### Installation |
|||||||
| 110 | ||||||||
| 111 | **Schritt 1: Komponentendatei herunterladen** |
|||||||
| 112 | ||||||||
| 113 | Verbinden Sie sich per SSH mit dem Drucker-Server und laden Sie die Datei `filaman.py` in das Moonraker-Komponentenverzeichnis herunter: |
|||||||
| 114 | ||||||||
| 115 | ```bash |
|||||||
| 116 | cd ~/moonraker/moonraker/components |
|||||||
| 117 | wget https://github.com/Fire-Devils/FilaMan-Moonraker-Komponente/raw/main/filaman.py |
|||||||
| 118 | ``` |
|||||||
| 119 | ||||||||
| 120 | Alternativ können Sie die Datei manuell herunterladen und per SFTP/SCP übertragen. |
|||||||
| 121 | ||||||||
| 122 | **Schritt 2: Moonraker-Konfiguration anpassen** |
|||||||
| 123 | ||||||||
| 124 | Ö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: |
|||||||
| 125 | ||||||||
| 126 | ```ini |
|||||||
| 127 | [filaman] |
|||||||
| 128 | server: http://192.168.1.50:8000 |
|||||||
| 129 | api_key: uak.123.xxxxxxxxxxxxxxxxxxxxx |
|||||||
| 130 | sync_rate: 5 |
|||||||
| 131 | default_density_g_cm3: 1.24 |
|||||||
| 132 | default_diameter_mm: 1.75 |
|||||||
| 133 | ``` |
|||||||
| 134 | ||||||||
| 135 | Ersetzen Sie `http://192.168.1.50:8000` durch die tatsächliche URL Ihrer FilaMan-Instanz. |
|||||||
| 136 | ||||||||
| 137 | **Schritt 3: Moonraker neu starten** |
|||||||
| 138 | ||||||||
| 139 | ```bash |
|||||||
| 140 | sudo systemctl restart moonraker |
|||||||
| 141 | ``` |
|||||||
| 142 | ||||||||
| 143 | Überprüfen Sie anschließend die Moonraker-Logs auf Fehler: |
|||||||
| 144 | ||||||||
| 145 | ```bash |
|||||||
| 146 | journalctl -u moonraker -n 50 |
|||||||
| 147 | ``` |
|||||||
| 148 | ||||||||
| 149 | ### Konfigurationsoptionen |
|||||||
| 150 | ||||||||
| 151 | | Option | Pflicht | Standardwert | Beschreibung | |
|||||||
| 152 | |--------|---------|--------------|-------------| |
|||||||
| 153 | | `server` | Ja | – | Basis-URL der FilaMan-Instanz | |
|||||||
| 154 | | `api_key` | Empfohlen | – | FilaMan API-Key (`uak.<id>.<geheimnis>`) | |
|||||||
| 155 | | `sync_rate` | Nein | `5` | Meldeintervall in Sekunden | |
|||||||
| 156 | | `default_density_g_cm3` | Nein | `1.24` | Fallback-Dichte für Gewichtsberechnung (g/cm³) | |
|||||||
| 157 | | `default_diameter_mm` | Nein | `1.75` | Fallback-Filamentdurchmesser in mm | |
|||||||
| 158 | ||||||||
| 159 | ### HTTP-Endpunkte |
|||||||
| 160 | ||||||||
| 161 | Nach der Installation stellt die Komponente folgende Endpunkte bereit: |
|||||||
| 162 | ||||||||
| 163 | | Methode | Endpunkt | Beschreibung | |
|||||||
| 164 | |---------|----------|-------------| |
|||||||
| 165 | | `GET` / `POST` | `/server/filaman/spool_id` | Aktive Spule abrufen oder setzen | |
|||||||
| 166 | | `GET` | `/server/filaman/status` | Verbindungs- und Synchronisierungsstatus | |
|||||||
| 167 | | `POST` | `/server/filaman/proxy` | Proxy-Anfragen an FilaMan weiterleiten | |
|||||||
| 168 | ||||||||
| 169 | Zusätzlich sind Spoolman-kompatible Aliase immer aktiv: |
|||||||
| 170 | ||||||||
| 171 | | Methode | Endpunkt | |
|||||||
| 172 | |---------|----------| |
|||||||
| 173 | | `GET` / `POST` | `/server/spoolman/spool_id` | |
|||||||
| 174 | | `GET` | `/server/spoolman/status` | |
|||||||
| 175 | | `POST` | `/server/spoolman/proxy` | |
|||||||
| 176 | ||||||||
| 177 | ### Remote-Methoden (GCode-Makros) |
|||||||
| 178 | ||||||||
| 179 | Die Komponente registriert folgende Remote-Methoden, die in Klipper-Makros aufgerufen werden können: |
|||||||
| 180 | ||||||||
| 181 | - `filaman_set_active_spool` |
|||||||
| 182 | - `spoolman_set_active_spool` (Spoolman-kompatibler Alias) |
|||||||
| 183 | ||||||||
| 184 | ### GCode-Makros einrichten |
|||||||
| 185 | ||||||||
| 186 | Fügen Sie diese Makros in Ihre `printer.cfg` oder eine eingebundene Konfigurationsdatei ein, um die aktive Spule über GCode steuern zu können: |
|||||||
| 187 | ||||||||
| 188 | ```ini |
|||||||
| 189 | [gcode_macro SET_ACTIVE_SPOOL] |
|||||||
| 190 | gcode: |
|||||||
| 191 | {% if params.ID %} |
|||||||
| 192 | {% set id = params.ID|int %} |
|||||||
| 193 | {action_call_remote_method("filaman_set_active_spool", spool_id=id)} |
|||||||
| 194 | {% else %} |
|||||||
| 195 | {action_respond_info("Parameter 'ID' is required")} |
|||||||
| 196 | {% endif %} |
|||||||
| 197 | ||||||||
| 198 | [gcode_macro CLEAR_ACTIVE_SPOOL] |
|||||||
| 199 | gcode: |
|||||||
| 200 | {action_call_remote_method("filaman_set_active_spool", spool_id=None)} |
|||||||
| 201 | ``` |
|||||||
| 202 | ||||||||
| 203 | Anschließend können Sie in Ihrem Druckstart-Makro oder manuell über die Konsole die aktive Spule setzen: |
|||||||
| 204 | ||||||||
| 205 | ``` |
|||||||
| 206 | SET_ACTIVE_SPOOL ID=42 |
|||||||
| 207 | CLEAR_ACTIVE_SPOOL |
|||||||
| 208 | ``` |
|||||||
| 209 | ||||||||
| 210 | --- |
|||||||
| 211 | ||||||||
| 212 | ## Zusammenspiel beider Komponenten |
|||||||
| 213 | ||||||||
| 214 | ``` |
|||||||
| 215 | FilaMan Moonraker-Server (Pi) |
|||||||
| 216 | ───────── ───────────────────── |
|||||||
| 217 | Driver Plugin ←──► Moonraker Component |
|||||||
| 218 | │ │ |
|||||||
| 219 | │ POST spool_id │ Extrusionsdaten |
|||||||
| 220 | │ (Zuweisung) │ (Verbrauchsmeldung) |
|||||||
| 221 | └──────────────────► └──────────────────► FilaMan API |
|||||||
| 222 | ``` |
|||||||
| 223 | ||||||||
| 224 | - Das **Driver Plugin** sendet Spulenzuweisungen aus FilaMan an Moonraker |
|||||||
| 225 | - Die **Moonraker-Komponente** misst den Extrusionsfortschritt und meldet den Verbrauch direkt an FilaMan zurück |
|||||||
| 226 | ||||||||
| 227 | > **Tipp:** Beide Komponenten arbeiten unabhängig voneinander. Sie können das Driver Plugin ohne die Moonraker-Komponente nutzen (nur Zuweisung, keine Verbrauchsmessung) oder umgekehrt. |
|||||||
| 228 | ||||||||
| 229 | --- |
|||||||
| 230 | ||||||||
| 231 | ← [Zurück: FilaManDB Community-Datenbank](/Docs/De/18-Filamandb) | [Weiter: Installation auf dem Raspberry Pi →](/Docs/De/20-Installation-Raspberry-Pi) |
|||||||