SONOFF ZBDongle-E (Zigbee/Thread-USB-Stick)
Mein Thread-Funkmodul für den Border Router – darüber hängt auch die Matter-Steckdose, die den Drucker mit Strom versorgt.
Dieser Artikel enthält Affiliate-Links. Kaufst du darüber, bekomme ich eine kleine Provision – für dich ändert sich am Preis nichts. Mehr dazu
Mein 3D-Drucker, ein Elegoo Neptune 4 Pro, stand lange als Insel im Haus: Druck starten, ab und zu hinlaufen, nachschauen, am Ende von Hand ausschalten. Weil auf dem Drucker ohnehin Klipper mit Moonraker läuft, lag die Idee nahe, ihn in Home Assistant zu holen. Hier erzähle ich euch, wie ich das umgesetzt habe, welche Automationen bei mir laufen und wo es unerwartet gehakt hat.
Der Neptune 4 Pro bringt ab Werk Klipper als Firmware mit. Dazu gehören Moonraker, eine API-Schicht, über die andere Programme mit Klipper sprechen, und Fluidd als Weboberfläche. Das ist für Home Assistant eine sehr gute Ausgangslage, denn Moonraker liefert praktisch alles, was man wissen will: Druckstatus, Fortschritt, Restzeit, Temperaturen, Dateiname und mehr.
Moonraker macht den Drucker für Home Assistant sichtbar – darauf bauen alle Automationen auf.
Wer mit dem Gedanken spielt, sich einen Drucker zuzulegen, und ihn später ins Smart Home holen will: Achtet darauf, dass er Klipper mit Moonraker nutzt. Den Elegoo Neptune 4 Pro kann ich dafür empfehlen, auch wenn der Weg ins WLAN etwas holprig war.
Bei mir hing der Drucker anfangs per Kabel am Netz. Für den Dauerbetrieb wollte ich WLAN, und hier kam die erste Überraschung: Am Touchscreen gibt es keinen Menüpunkt für WLAN oder Netzwerk. Die Einrichtung läuft ausschließlich per SSH auf dem kleinen Linux-Rechner im Drucker.
Viele Anleitungen im Netz empfehlen dafür nmtui vom NetworkManager. Bei meinem Gerät ist der NetworkManager aber deaktiviert, der Weg funktioniert also nicht. Stattdessen läuft das Netzwerk über wpa_supplicant mit einer eigenen Konfigurationsdatei für das WLAN-Interface, die per systemd-Dienst beim Booten geladen wird. Nachdem ich das verstanden hatte, war es schnell erledigt und hat auch mehrere Neustarts überstanden.
Noch ein Hinweis zur Hardware: Der WLAN-Stick belegt den einzigen USB-A-Port. Wer gleichzeitig einen USB-Stick für Druckdateien oder Updates nutzen will, braucht einen kleinen Hub.
Für die Anbindung nutze ich die HACS-Integration Moonraker (von marcolivierarsenault). Nach der Installation über HACS und einem Neustart legt ihr sie ganz normal unter Einstellungen → Geräte & Dienste an.
Zwei Kleinigkeiten haben mich dabei kurz aufgehalten:
Danach tauchen gut 60 Entitäten auf: Druckstatus, Fortschritt, geschätzte Restzeit, Düsen- und Betttemperatur, aktueller Dateiname, dazu Buttons für Pause, Fortsetzen, Abbrechen, Not-Aus und Homing sowie ein Vorschaubild des aktuellen Drucks als Kamera-Entität.
Ehrlicher Hinweis: Das Projekt ist im README als „currently unmaintained“ markiert, auch wenn es zuletzt noch Releases gab. Falls die Integration irgendwann bricht, kann man die Werte auch direkt per REST aus der Moonraker-API holen. Für mich ist das der Plan B.
Außerdem schön: Wenn der Drucker aus- und wieder eingeschaltet wird, kommen die Entitäten von selbst zurück. Im Log erzeugt das Ausschalten allerdings Verbindungsfehler. Wen das stört, kann in den Optionen der Integration unerreichbare Geräte stumm schalten.
Der Drucker hängt bei mir an einer Matter-Steckdose, die über Thread angebunden ist. Das Ziel: Nach einem fertigen oder abgebrochenen Druck soll sie sich selbst abschalten.
Die naheliegende Lösung „Druck fertig → Strom aus“ ist allerdings keine gute Idee. Wird der Strom bei heißer Düse gekappt, steht auch der Hotend-Lüfter still. Die Restwärme wandert dann nach oben in den Kühlkörper (Heat Creep), und das Filament kann dort weich werden und die Düse verstopfen. Deshalb wartet meine Automation, bis der Extruder unter 50 °C gefallen ist.
Vereinfacht sieht das so aus:
triggers:
- trigger: state
entity_id: sensor.drucker_current_print_state
from: printing
to:
- complete
- cancelled
actions:
- wait_for_trigger:
- trigger: numeric_state
entity_id: sensor.drucker_extruder_temperature
below: 50
timeout: "00:30:00"
- condition: not
conditions:
- condition: state
entity_id: sensor.drucker_current_print_state
state: printing
- action: switch.turn_off
target:
entity_id: switch.drucker_steckdose
Zwei Details sind mir dabei wichtig:
Ein Hinweis noch: Wenn die Steckdose in Home Assistant als „nicht verfügbar“ erscheint, ist sie bei mir meist schlicht ausgesteckt – nicht gleich an ein Thread-Problem denken.
Die zweite Automation schickt mir eine Push-Nachricht, wenn etwas schiefgeht. Sie hat zwei Auslöser: den Druckstatus, der auf „error“ springt, und den Status von Klipper selbst. Der zweite ist wichtig, weil schwere Fehler wie ein Thermal Runaway oder eine abgerissene Verbindung zum Mainboard nicht immer im Druckstatus auftauchen.
In der Nachricht stehen Fehlermeldung, Dateiname, Fortschritt und Temperaturen. Tippe ich darauf, öffnet sich direkt Fluidd. Bewusst schaltet diese Automation nichts ab. So bleibt der Fehlerzustand erhalten und ich kann in Ruhe nachsehen, was passiert ist.
Beim Testen bin ich über eine Template-Falle gestolpert: Wenn man eine Automation manuell ausführt, ist die Variable trigger trotzdem definiert, nur ist trigger.platform dann leer. Eine Prüfung auf trigger is defined erkennt eine Testauslösung also nicht. Wer das unterscheiden will, sollte auf trigger.platform is none prüfen.
Eine eigene Push-Nachricht „Druck fertig“ habe ich übrigens nicht gebaut. Mein Signal ist die Steckdose, die sich ausschaltet, und die Restzeit sehe ich jederzeit im Dashboard. Wer eine Fertig-Meldung möchte, hängt einfach eine notify-Aktion an den Trigger von Automation 1.
Weil Moonraker die Gesamtmenge an Filament und die gesamte Druckzeit mitzählt, habe ich mir noch eine verbrauchsabhängige Wartungserinnerung gebaut: Extruder, Lüfter, Mechanik und Düse haben jeweils ein einstellbares Intervall in Kilogramm oder Stunden. Wird es überschritten, kommt eine Push-Nachricht mit „Erledigt“-Button.
Dabei gab es drei Fallen:
Rein zeitbasierte Aufgaben wie das Druckbett waschen stehen bei mir dagegen einfach im Kalender. Nicht alles muss in Home Assistant landen.
Für das Dashboard nutze ich eine Fortschrittskarte aus HACS, die Jinja-Templates erlaubt. Tipp: Den Prozentwert auf 100 deckeln, sonst sprengt ein überfälliges Intervall den Balken.
Klipper und Moonraker machen es Home Assistant leicht: Die Integration ist schnell eingerichtet und liefert mehr Werte, als ich je brauche. Der eigentliche Mehrwert entsteht aber erst durch zwei, drei durchdachte Automationen – vor allem das Abschalten nach dem Abkühlen. Die größte Hürde war bei mir nicht Home Assistant, sondern das WLAN auf dem Drucker. Wenn ihr wisst, dass das nur per SSH geht, spart ihr euch eine Menge Sucherei.
Mein Thread-Funkmodul für den Border Router – darüber hängt auch die Matter-Steckdose, die den Drucker mit Strom versorgt.
Kommentare
Fragen, Ergänzungen oder eigene Erfahrungen? Ich freue mich über deinen Kommentar. Zum Kommentieren brauchst du ein kostenloses GitHub-Konto.
Beim Laden werden Daten an GitHub übertragen. Mehr dazu in der Datenschutzerklärung.