Homeassistant und Octoprint

Homeassistant und Octoprint

Octoprint ist eine freie open-source Software, die es Laien ermöglicht in einer webbasierten Oberfläche 3D-Drucker anzusteuern und zu überwachen. Sie stellt eine vielseitige API zum monitoren des 3D-Druckers bereit, die einfach und unkompliziert in Homeassistant mit der offiziellen Octoprint Integration genutzt werden kann.

Octoprint API-Key generieren

Zur erfolgreichen Einbindung der Octoprint Integration muss ein Eintrage in der configuration.yaml erfolgen, die anschließend Sensoren zum Drucker und weitere Binary Sensoren bereitstellt.
Im ersten Schritt muss jedoch ein API-Key in der Octoprint Weboberfläche erstellt werden. Dazu muss in der Weboberfläche zu Einstellungen > API navigiert werden und der API-Key in die Zwischenablage kopiert werden.

Homeassistant Konfiguration

In der configuration.yaml muss zwingend die IP-Adresse des Octoprint Servers angegeben werden. Diese sollte idealerweise statisch sein und sich nicht bei jedem Neustart ändern:

octoprint:
  host: IP-ADDRESSE
  api_key: API-KEY
  name: Anycubic
  number_of_tools: 1
  bed: true

Je nach Druckermodell können mehrere Druckdüsen (Nozzles) vorhanden sein. Die Anzahl der Düsen sollte in der Konfiguration generell gesetzt werden, da sonst kein Sensor zur Überwachung der Temperatur bereitgestellt wird. Ebenso verhält es sich mit dem Eintrag bed: true. Wenn ein beheiztes Druckbett vorhanden ist, sollte also der boolsche Wert auf true gesetzt werden.

Lovelace Card

Was nützen einem Sensorwerte, wenn sie nicht auch anschaulich dargestellt werden. Ich nutze dafür eine Picture Elements Card und habe dafür, entsprechend meines Druckermodells (Anycubic i3 Mega), eine Bilddatei erstellt und diese in der Lovelace UI eingebunden. Dieses Bild kann micht einem Rechtsklick gespeichert und in Homeassistant ./config/www/-Ordner platziert werden. In meinem Beispiel lautet der Pfad zum Bild ./config/www/entitypictures/anycubic.png. Die Card sieht folgendermaßen aus:

Picture Entities Card für Anycubic i3 Mega Drucker

Dieses Bild muss dazu mit einem Rechtsklick im ./config/www Ordner gespeichert werden:

Custom Cards in HACS installieren

Zur Darstellung der Lovelace Card verwende ich 3 Custom Cards, die einfach über HACS installiert werden können:

  1. custom:bar-card, zur Darstellung der Fortschrittsbalken
  2. custom:button-card, zur Darstellung der unteren 4 Icons
  3. custom:vertical-stack-in-card, zur Anordnung der Karten übereinander, ohne sichtbare Abgrenzung zueinander

Darstellung in der Lovelace Card

Dargestellt werden Informationen zum Druckfortschritt, der Bett- und Düsentemperatur, zum Druckstatus, zur Fehlerindikation und zur verbleibenden Druckzeit.

Die gesamte Config der Card sieht wie folgend aus:

type: 'custom:vertical-stack-in-card'
cards:
  - type: picture-elements  
    image: /local/entitypictures/anycubic.png
    elements:
      - type: 'custom:bar-card'
        animation: true
        color: '#90ee90'
        entity: sensor.anycubic_job_percentage
        entity_row: true
        height: 36px
        name: Progress
        positions:
          icon: 'off'
          indicator: 'off'
          minmax: inside
          title: outside
        speed: 1000
        style:
          left: 72%
          top: 20%
          width: 50%
      - type: 'custom:bar-card'
        animation: true
        entity: sensor.anycubic_actual_bed_temp
        entity_row: true
        height: 36px
        max: 60
        name: Bed
        positions:
          icon: 'off'
          indicator: 'off'
          minmax: inside
          title: outside
        severity:
          - color: '#f08080'
            from: 0
            to: 40
          - color: '#ff9966'
            from: 40
            to: 55
          - color: '#90ee90'
            from: 55
            to: 65
        style:
          left: 72%
          top: 50%
          width: 50%
      - type: 'custom:bar-card'
        animation: true
        entity: sensor.anycubic_actual_tool0_temp
        entity_row: true
        height: 36px
        max: 200
        name: Nozzle
        positions:
          icon: 'off'
          indicator: 'off'
          minmax: inside
          title: outside
        severity:
          - color: '#f08080'
            from: 0
            to: 120
          - color: '#ff9966'
            from: 120
            to: 180
          - color: '#90ee90'
            from: 180
            to: 220
        style:
          left: 72%
          top: 80%
          width: 50%
  - type: horizontal-stack          
    cards:
      - type: 'custom:button-card'
        color: auto-no-temperature
        color_type: icon
        entity: binary_sensor.anycubic_printing
        icon: 'mdi:printer-3d-nozzle'
        name: Printing
        show_name: true
        show_state: false
        size: 34%
        tap_action:
          action: more-info
      - type: 'custom:button-card'
        color: auto-no-temperature
        color_off: 'rgb(54, 95, 140)'
        color_type: icon
        entity: binary_sensor.anycubic_printing_error
        icon: 'mdi:printer-3d-nozzle-alert'
        name: Error
        show_name: true
        show_state: false
        size: 34%
        tap_action:
          action: more-info
        units: d
      - type: 'custom:button-card'
        color: auto-no-temperature
        color_off: 'rgb(54, 95, 140)'
        color_type: icon
        entity: sensor.anycubic_current_state
        show_name: false
        show_state: true
        size: 34%
        tap_action:
          action: more-info
      - type: 'custom:button-card'
        color: auto-no-temperature
        color_off: 'rgb(54, 95, 140)'
        color_type: icon
        entity: sensor.anycubic_time_remaining
        name: Restart
        show_name: false
        show_state: true
        size: 34%
        tap_action:
          action: more-info

Welche Werte müssen händisch angepasst werden?

Es müssen die jeweiligen max-Werte in den Bar Cards angepasst werden, die festlegen mit welcher Bett- und Düsentemperatur gedruckt werden. Ebenso muss der vollständige Pfad zur Bilddatei angepasst werden. Danach ist die Konfiguration abgeschlossen.

Viel Spaß!