Moonraker (Klipper) Smart-Home-Integration, kostenlos und Open Source

Verfolge und steuere deine Klipper-3D-Drucker: Fortschritt, Temperaturen, Alarme, Makros.
Verfolge und steuere deine Klipper-3D-Drucker aus Gladys heraus über Moonraker, den API-Server hinter Mainsail und Fluidd: Voron, RatRig, Sovol, Elegoo, gerootete Creality K1 oder K2 und jeder Drucker mit Klipper. Alles bleibt in deinem lokalen Netzwerk: Gladys spricht direkt mit Moonraker, ohne Cloud-Konto.
Die Integration wurde gegen ein echtes Moonraker getestet, das Klipper mit einem simulierten Mikrocontroller (simulavr) steuert: echte Drucke, Pause, Fortsetzen, Abbruch, ein Druckfehler, ein Not-Aus, eine Webcam. Ohne physischen Drucker entwickelt: Rückmeldungen sind willkommen im Gladys-Forum.
Voraussetzungen
- Gladys Assistant 5.1 oder neuer.
- Ein Drucker mit Klipper und Moonraker (installiert mit Mainsail oder Fluidd, KIAUH, MainsailOS, FluiddPi…), vom Gladys-Rechner aus über Port 7125 oder über die Adresse von Mainsail oder Fluidd erreichbar.
- Entweder ein Moonraker, das dem Netzwerk von Gladys vertraut
(
trusted_clientsinmoonraker.conf, bei den meisten Installationen der Standard für lokale Netzwerke), oder ein API-Schlüssel von Moonraker. - Für das Webcam-Bild: eine in Mainsail oder Fluidd eingetragene Webcam mit einer Schnappschuss-Adresse (Standard mit crowsnest oder mjpg-streamer).
Konfiguration
- Öffne den Reiter Konfiguration der Integration.
- Gib unter Moonraker-Adresse die IP-Adresse des Druckers ein, zum
Beispiel
192.168.1.50: Die Integration nutzt dann Port 7125, den von Moonraker. Du kannst auch die Adresse eingeben, mit der du Mainsail oder Fluidd öffnest, etwahttp://192.168.1.50(sein Webserver leitet die Moonraker-API weiter), oder einen eigenen Port (192.168.1.50:7126). Nimm lieber eine IP-Adresse: Namen wievoron.localwerden im Container der Integration nicht aufgelöst. - API-Schlüssel ist nur nötig, wenn Moonraker dem Netzwerk von Gladys
nicht vertraut. Mainsail: Einstellungen → Autorisierung; Fluidd:
Einstellungen → Authentifizierung; oder
http://<drucker>:7125/access/api_keyvon einem vertrauenswürdigen Rechner aus. - Ein zweiter oder dritter Drucker: Fülle Drucker 2 und Drucker 3 genauso aus (je ein Moonraker).
- Sprache legt die Sprache der Funktionsnamen und Texte fest, die die Integration erzeugt (Standard: Französisch). Funktionsnamen werden beim Hinzufügen des Geräts in Gladys festgelegt.
- Speichere. Verbindung testen zeigt den Status jedes Druckers und die Liste seiner Makros.
Füge den Drucker danach im Reiter Entdecken hinzu.
Das Druckergerät
Ein Gerät pro Moonraker, benannt nach dem Hostnamen des Druckers (voron,
mainsailos…) oder „Klipper“. Die Werte kommen live von Moonraker (Klipper
sendet seine Änderungen mehrmals pro Sekunde); die Integration gibt sie
höchstens alle 5 Sekunden an Gladys weiter, Statuswechsel sofort.
| Funktion | Was sie anzeigt |
|---|---|
| Status | Bereit, Druckt, Pausiert, Fertig, Abgebrochen, Druckfehler, Klipper gestoppt (Shutdown), Klipper-Fehler, Klipper startet, Klipper getrennt, Moonraker nicht erreichbar, API-Schlüssel fehlt oder abgelehnt |
| Datei | Die gerade gedruckte Datei oder die letzte |
| Fortschritt | Fortschritt des Drucks, wie auf dem Druckerdisplay (100 % bleiben nach einem fertigen Druck erhalten) |
| Verstrichene Zeit | Seit Beginn des Drucks, in Minuten |
| Restzeit | Aus der Schätzung des Slicers, wenn die Datei eine hat, sonst aus dem Fortschritt hochgerechnet, in Minuten (0 im Ruhezustand) |
| Schicht, Schichten gesamt | Wenn der Slicer sie sendet (SET_PRINT_STATS_INFO, wie die Klipper-Profile von PrusaSlicer, OrcaSlicer und SuperSlicer); sonst 0 |
| Düse, Düse 2, Druckbett… | Temperaturen in ganzen Grad: jeder Extruder, das Heizbett, jeder heater_generic (ein Bauraum…) |
| … (Soll) | Solltemperaturen, nur lesbar: Heizen über das Widget oder die Szenenaktionen |
| Temperatursensoren | Jeder temperature_sensor und temperature_fan von Klipper (Raspberry Pi, MCU, Bauraum…), höchstens sechs |
| Bauteillüfter | Drehzahl des [fan], in Prozent |
| Pausieren, Fortsetzen | Drucktaster |
| Webcam | Der Schnappschuss der ersten Webcam von Mainsail oder Fluidd, jede Minute erneuert |
Es gibt bewusst keine Taste Abbrechen am Gerät: Ein Tippen ohne
Bestätigung würde einen Druck ruinieren. Der Abbruch wird vom Widget (mit
Bestätigung) und von den Szenen angeboten. Temperaturen und Solltemperaturen
sind ebenfalls nur lesbar: Eine Druckerheizung kann nie versehentlich vom
Dashboard aus gestartet werden, auch nicht über HomeKit, Alexa oder Google.
Geheizt wird über das Widget (Vorheizen, Abkühlen) und die Szenenaktionen.
Für Gladys sind es „Gerätetemperaturen“, die nie zur
Raumtemperatur zählen. Die Grenzen jeder Heizung sind Klippers eigenes max_temp.
Was der Drucker hat (Heizungen, Sensoren, Lüfter, Webcam), wird bei jeder Verbindung aus Klipper gelesen. Ändert es sich, schlägt Gladys im Reiter Entdecken vor, das Gerät zu aktualisieren.
Dashboard-Widget
Füge das Widget Klipper-3D-Druck zu einem Dashboard hinzu und wähle den Drucker in seinen Einstellungen. Es zeigt:
- die Fortschrittsanzeige, die Restzeit, die Temperaturen von Düse und Druckbett (live);
- den Status, die Datei, die Schicht, die verstrichene Zeit, die erwartete Endzeit, die aktiven Solltemperaturen;
- die gerade sinnvollen Tasten: Pausieren oder Fortsetzen und Abbrechen (mit Bestätigung) während eines Drucks; Vorheizen und, wenn etwas heizt, Abkühlen im Ruhezustand; Klipper neu starten (mit Bestätigung), nachdem Klipper wegen eines Fehlers gestoppt hat.
Die Vorheiztemperaturen sind Einstellungen des Widgets (standardmäßig 200 °C und 60 °C, PLA). Es gibt keine Not-Aus-Taste: Der Not-Aus von Klipper ist für jemanden gedacht, der neben dem Drucker steht.
Szenenauslöser
In der Kategorie Integrationen des Szeneneditors. Jeder lässt sich auf einen Drucker beschränken.
- Druck gestartet: Variablen Druckername, Datei.
- Druck fertig: Variablen Druckername, Datei, Druckdauer (als Text, wie
1 Std. 05 Min., und in Minuten). - Druck fehlgeschlagen oder abgebrochen: lässt sich auf einen Grund beschränken (abgebrochen, Fehler). Ein Fehler umfasst auch einen Klipper-Stopp während des Drucks. Variablen Druckername, Datei, Druckdauer, Grund.
- Druck pausiert: über Gladys, Mainsail, Fluidd, das Druckerdisplay oder einen Filamentsensor. Variablen Druckername, Datei, verstrichene Zeit.
- Klipper wegen eines Fehlers gestoppt: Klipper ist in Shutdown oder
Fehler gegangen (Heizfehler, verlorener Mikrocontroller, Not-Aus).
Variablen Druckername, Meldung von Klipper (zum Beispiel
MCU 'mcu' shutdown: ADC out of range).
Die Variablen liest du in den folgenden Aktionen zum Beispiel mit
{{triggerEvent.data.file}} und {{triggerEvent.data.duration}}.
Szenenaktionen
- Druck pausieren, fortsetzen oder abbrechen: gibt Ausgeführt falsch zurück, wenn nichts zu pausieren, fortzusetzen oder abzubrechen war (die Szene läuft weiter).
- Drucker vorheizen: Solltemperaturen aller Düsen und des Druckbetts,
standardmäßig 200 °C und 60 °C, innerhalb des
max_tempjeder Heizung. Während eines Drucks abgelehnt (Ausgeführt: falsch): Eine Szene, die zu einer festen Zeit vorheizt, berührt nie einen laufenden Druck. - Heizungen ausschalten:
TURN_OFF_HEATERS, auch während eines Drucks (der dann misslingt). - Klipper-Makro ausführen: führt ein G-Code-Makro des Druckers über
seinen Namen aus, ohne Parameter, zum Beispiel
LIGHTS_ON. Nur die von Klipper gelisteten Makros werden angenommen (siehe Verbindung testen); private Makros (deren Name mit_beginnt) und freier G-Code werden abgelehnt. Ausgeführt: falsch, wenn Klipper nicht bereit ist.
Ein Befehl, den Klipper erst spät bestätigt (eine Pause wartet auf die Bewegungen in seiner Warteschlange, ein Makro kann minutenlang heizen), gilt nach 15 Sekunden als angenommen.
Szenenbeispiele
- Druck fertig → Benachrichtigung: Auslöser Druck fertig, Aktion
„Nachricht senden“:
{{triggerEvent.data.file}} fertig in {{triggerEvent.data.duration}}. - Klipper gestoppt → Alarm: Auslöser Klipper wegen eines Fehlers
gestoppt, Nachricht
Drucker gestoppt: {{triggerEvent.data.message}}. - Rauch erkannt → alles stoppen: Auslöser am Rauchmelder, Aktionen Druck pausieren, fortsetzen oder abbrechen (abbrechen), dann Heizungen ausschalten, dann die smarte Steckdose des Druckers ausschalten.
- Bereit zum Frühstück: werktags um 7 Uhr Drucker vorheizen (ohne Wirkung, wenn ein Druck läuft).
- Licht für die Webcam: Druck gestartet → Klipper-Makro
LIGHTS_ONausführen oder das Werkstattlicht einschalten; Druck fertig oder fehlgeschlagen → ausschalten.
Fehlerbehebung
- Moonraker nicht erreichbar: Prüfe die Adresse vom Gladys-Rechner aus
(
curl http://192.168.1.50:7125/server/info). Nimm eine IP-Adresse stattvoron.local. Hinter Mainsail oder Fluidd gibst du deren Adresse ohne Port ein. - API-Schlüssel fehlt oder abgelehnt: Moonraker vertraut dem Netzwerk von
Gladys nicht. Füge seinen API-Schlüssel ein oder trage das Netzwerk von
Gladys unter
trusted_clientsinmoonraker.confein. Ein neu erzeugter Schlüssel macht den alten ungültig. - Klipper gestoppt (Shutdown) oder Klipper-Fehler: Klipper braucht
deine Aufmerksamkeit (seine Meldung steht im Auslöser und in Mainsail oder
Fluidd). Ist die Ursache behoben, führt Klipper neu starten im Widget
FIRMWARE_RESTARTaus. - Die Schicht bleibt auf 0: Der Slicer sendet kein
SET_PRINT_STATS_INFO; füge es dem G-Code für den Schichtwechsel im Slicer hinzu (siehe die Klipper-Dokumentation). - Die Restzeit ist ungenau: Ohne Slicer-Metadaten wird sie aus dem Dateifortschritt hochgerechnet, am Anfang eines Drucks grob.
- Kein Webcam-Bild: Das Bild muss ein JPEG von höchstens 150 KB sein (eine
Grenze von Gladys): Verringere die Auflösung der Webcam. Eine zu Mainsail
relative Schnappschuss-Adresse (
/webcam/?action=snapshot) wird auf Port 80 des Druckers gelesen. - Protokolle: auf der Integrationsseite von Gladys oder mit
docker logsauf dem Host.LOG_LEVEL=debugzeigt Details. Der API-Schlüssel erscheint nie in den Protokollen.
Grenzen
- Höchstens drei Moonraker.
- Kein Hochladen von Dateien, kein Druckstart aus Gladys, kein freier G-Code, kein Zeitraffer, kein Spoolman, keine Steckdosen („power devices“) von Moonraker.
- Das Webcam-Bild ist ein Schnappschuss, der jede Minute (und auf Abruf) erneuert wird, kein Videostream; nur die erste Webcam wird genutzt.
- Ein Ereignis, das kürzer als eine Viertelsekunde ist, kann von Klipper mit dem nächsten zusammengelegt werden (ein sofort scheiternder Druck wird als fehlgeschlagen gemeldet, ohne „gestartet“).
- Ohne physischen Drucker entwickelt (Klipper mit einem simulierten Mikrocontroller wurde genutzt): Rückmeldungen sind willkommen.
- Nicht mit den Projekten Klipper und Moonraker verbunden.
Konfigurationseinstellungen
Diese Einstellungen fragt Moonraker (Klipper) in seinem Konfigurationsbildschirm in Gladys ab.
| Einstellung | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| Verbinde deinen Klipper-Drucker | section | Nein | Gib die Adresse von Moonraker ein: die IP-Adresse des Druckers (standardmäßig Port 7125) oder die Adresse, mit der du Mainsail oder Fluidd öffnest. Ein API-Schlüssel ist nur nötig, wenn Moonraker deinem Netzwerk nicht vertraut. Bis zu drei Drucker. |
| Moonraker-Adresse | string | Nein | |
| API-Schlüssel (optional) | secret | Nein | Mainsail: Einstellungen, Autorisierung, API-Schlüssel. Fluidd: Einstellungen, Authentifizierung. Leer lassen in einem vertrauenswürdigen Netzwerk. |
| Drucker 2 (optional) | section | Nein | |
| Moonraker-Adresse 2 | string | Nein | |
| API-Schlüssel 2 (optional) | secret | Nein | |
| Drucker 3 (optional) | section | Nein | |
| Moonraker-Adresse 3 | string | Nein | |
| API-Schlüssel 3 (optional) | secret | Nein | |
| Optionen | section | Nein | Sprache der Namen und Texte, die die Integration erzeugt (Funktionsnamen werden beim Hinzufügen des Geräts festgelegt). |
| Sprache | select | Nein |
So installierst du Moonraker (Klipper) in Gladys
- Öffne in Gladys Integrationen: Moonraker (Klipper) erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
- Klicke auf Installieren. Gladys lädt das Docker-Image (
ghcr.io/guim31/gladys-moonraker:1.0.1) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration). - Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
- Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-moonraker.
Moonraker (Klipper) benötigt Gladys >=5.1.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.
Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.
Über externe Integrationen
Moonraker (Klipper) ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von guim31 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.
- Alle externen Integrationen durchsuchen
- Die nativen Integrationen entdecken, die in Gladys eingebaut sind
- Deine eigene externe Integration bauen und veröffentlichen
- Quellcode auf GitHub — Quelle dieser Dokumentation