3D Drucker automatisch ausschalten mit Home Assistant

Gerade bei längeren Drucken lasse ich meine Drucker oft unbeaufsichtigt und beobachte den Fortschritt sporadisch mittels der App und des Webcam Streams. Meist bin ich dann direkt nach Fertigstellung nicht sofort Vorort und komme erst später dazu das Objekt vom Druckbett zu lösen.

Hier habe ich schon lange den Komfort vermisst, dass der Drucker sich automatisch abschaltet wenn er fertig ist. Da ich Home Assistant benutze sollte sich da doch was machen lassen!

Kommen wir erst einmal dazu was “mit dem Drucken fertig” im Detail bedeutet: Der Drucker hat den GCODE Komplett ausgeführt und den Auftrag somit beendet. Wenn man den Drucker jetzt einfach abschaltet würde das Hotend noch über 200 °C heiß sein. Dann würde die aktive Kühlung sich auch abschalten und das Gerät könnte Schaden nehmen. Daher sollte man mit dem Abschalten warten bis das Hotend mindestens auf 50 °C heruntergekühlt ist (zumindest schaltet mein Prusa dann die Lüfter ab).

Was benötigen wir nun:

  • eine lauffähige Home Assistant Installation
  • einen 3D Drucker, dessen Daten in Home Assistant verfügbar sind (Integration oder MQTT)
  • eine smarte Steckdose (z.B. via Zigbee gekoppelt), in der der Drucker steckt

Es ist theoretisch absolut egal was für einen 3D Drucker ihr habt: Hauptsache man kann per LAN oder WLAN seine Sensordaten abfragen. Das ist bei jedem Drucker, der Klipper als Basis nutzt der Fall oder wenn der Hersteller eine App bereit stellt gibt es sicherlich jemanden, der eine inoffizielle Integration für Home Assistant entwickelt hat.

Wir benötigen folgende Sensor-Daten:

  • Drucker Status (z.B. “Druckt”, “Leerlauf”, “Fertig”)
  • Hotend Temperatur
Automatisierungen für Home Assistant
Diese Automatisierungen brauchen wir in Home Assistant

Automatisierung A (“3D Drucker auf fertig setzen”)

yaml

alias: 3D Drucker auf fertig setzen
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.prusaprinter
    from: busy
    to: idle
  - trigger: state
    entity_id:
      - sensor.prusaprinter
    from: printing
    to: finished
  - trigger: state
    entity_id:
      - sensor.prusaprinter
    from: busy
    to: finished
  - trigger: state
    entity_id:
      - sensor.prusaprinter
    from: printing
    to: idle
conditions: []
actions:
  - action: input_boolean.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.3d_drucker_fertig_mit_drucken
mode: single

Automatisierung B (“Reset 3D Drucker fertig mit Drucken”)

yaml

alias: Reset 3D Drucker fertig mit Drucken
description: ""
triggers:
  - type: turned_on
    device_id: ae03228b62525453690ad1b13f9d2846
    entity_id: af25ab19273db4ec614a612cb968fc33
    domain: switch
    trigger: device
conditions: []
actions:
  - action: input_boolean.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.3d_drucker_fertig_mit_drucken
mode: single

Automatisierung C (“3D Drucker automatisch Abschalten”)

yaml

alias: 3D Drucker automatisch Abschalten
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.prusaprinter_nozzle_temperature
    for:
      hours: 0
      minutes: 0
      seconds: 10
    below: 50
conditions:
  - condition: state
    entity_id: sensor.prusaprinter
    state: idle
  - condition: state
    entity_id: input_boolean.3d_drucker_automatisch_abschalten
    state: "on"
  - condition: state
    entity_id: input_boolean.3d_drucker_fertig_mit_drucken
    state: "on"
actions:
  - type: turn_off
    device_id: ae03228b62525453690ad1b13f9d2846
    entity_id: af25ab19273db4ec614a612cb968fc33
    domain: switch
  - action: notify.mobile_app_redmi_note_9_pro
    metadata: {}
    data:
      message: Der 3D-Drucker wurde automatisch ausgeschaltet.
mode: single

Ihr musst natürlich die Sensoren auf eure eigene Anpassen.