Zum Inhalt springen

Benachrichtigung zum 3D-Druck-Status

Mit der Companion-App von Home Assistant können auch Benachrichtigungen verschickt werden, zum Beispiel auf Smartphones und Tablets. Es gibt dabei aber auch wichtige Unterschiede zwischen Android und iOS, wenn es um bestimmte Funktionen geht.

HACS-Integration

Es wird zwingend die Installation von HACS benötigt, damit wir auf die Daten des 3D-Druckers zugreifen können!
Was HACS ist und wie es installiert werden kann, wird auf der Website von Simon42 ausführlich erklärt: HACS installieren – Home Assistant Anleitung 2024

Integration HACS benötigt Link
Bambu Lab Ja ⚠️ Github.com

Das HACS-Repository für Bambu Lab muss für dieses Dashboard installiert sein! Danach muss Home Assistant einmal neugestartet werden und im Anschluss folgt die Installation der Integration von Bambu Lab über Einstellungen > Geräte und Dienste. Um die Installation abzuschließen, ist es noch notwendig, den 3D-Drucker über die neue Integration einzubinden (LAN only oder Cloud).

Vorschau

In diesem Beispiel wird ein Android-Smartphone mit Android 15 verwendet. Die Funktionalität bzw. Darstellung kann je nach Android-Version unterschiedlich sein.

Wichtiger Hinweis

In den Screenshots und YAML-Code wäre immer wieder die Seriennummer meines 3D-Druckers zu sehen. Aus Datenschutzgründen habe ich die letzten Stellen dieser Seriennummer unkenntlich gemacht. Das bedeutet, dass du meinen Code nicht blind übernehmen darfst, sondern unbedingt das Modell und die Seriennummer deines 3D-Druckers eintragen musst!

Konfiguration der Hauptautomation

Damit du diese Benachrichtigung nachbauen kannst, zeige ich dir Schritt für Schritt, was dafür konfiguriert werden sollte.

Auslöser

Als Auslöser wird der Druckfortschritt definiert, damit sich der Fortschrittsbalken bei einer Änderung aktualisiert, zum Beispiel von 19 % auf 20 %. Ansonsten wird im Auslöser nichts weiter konfiguriert.

YAML-Code

trigger: state
entity_id:
  - sensor.p1s_01p00a3xxxxxxxx_druckfortschritt

Dann

Nachdem der Auslöser für die Automation definiert ist, geht es darum, die eigentliche Benachrichtigung zu konfigurieren. In diesem Abschnitt werden zwei unterschiedliche Benachrichtigungen konfiguriert. Die erste Benachrichtigung zeigt den aktuellen Druckstatus mit einem Fortschrittsbalken (Android) und dem voraussichtlichen Druckende an und die zweite Benachrichtigung zeigt ein Foto vom fertigen Druck und ersetzt die vorherige Benachrichtigung.

Bedingung

Damit die beiden Benachrichtigungen unabhängig voneinander angezeigt werden können, wird in diesem Schritt der Baustein Bedingung ausgewählt.

Wenn

In dieser Bedingung wird unter Wenn die Entität des Druckfortschritts definiert. Die Obergrenze wird als Feste Zahl mit Unter 100 konfiguriert. Somit tritt Wenn immer dann ein, wenn sich der Druckfortschritt zwischen 0 % und 99 % befindet.

YAML-Code für die Wenn-Bedingung

condition: numeric_state
entity_id: sensor.p1s_01p00a3xxxxxxxx_druckfortschritt
below: 100

Dann

Dieser Abschnitt ist aufgrund der Verwendung von Templates leider noch nicht im visuellen Editor nutzbar. Diese Templates müssen an drei Stellen angepasst werden und sind wie folgt angegeben:

  • {{ states('sensor.p1s_01p00a3xxxxxxxx_druckfortschritt') }}
  • {{ states('sensor.p1s_uhrzeit_fertigstellung') }}

Wichtige Hinweise

In dieser Benachrichtigung werden die Schlüssel (Keys) progress und progress_max verwendet. Diese Schlüssel existieren derzeit nur für Android, jedoch nicht für iOS! Damit du diese Benachrichtigung auch unter iOS nutzen kannst, musst die diese Schlüssel aus dem Code entfernen, andernfalls wird die Benachrichtigung unter iOS einfach nicht angezeigt.

In diesen Templates müssen die jeweiligen Entitäten durch jene ersetzt werden, die dein 3D-Drucker zur Verfügung stellt. Außerdem musst du auch die Entität notify.mobile_app_DEIN_GERAET am Anfang des Codes durch die deines Smartphones/Tablets ersetzen, auf dem die Companion-App installiert ist.

Im Bereich actions werden Auslöser für andere Automationen definiert, um dir ein aktuelles Bild der Webcam des 3D-Druckers oder weitere Informationen zum aktuellen Druck schicken lassen zu können. Dies wird weiter unten in diesem Beitrag erklärt.

YAML-Code für die Dann-Bedingung

action: notify.mobile_app_DEIN_GERAET
metadata: {}
data:
  title: >-
    Druckfortschritt: {{ states('sensor.p1s_01p00a3xxxxxxxx_druckfortschritt') }}%
  message: >-
    Fertig um {{ states('sensor.p1s_uhrzeit_fertigstellung') }} Uhr
  data:
    car_ui: true
    vibrationPattern: []
    visibility: public
    channel: 3D-Print
    importance: default
    tag: 3dprint-progress
    progress: "{{ states('sensor.p1s_01p00a3xxxxxxxx_druckfortschritt') }}"
    progress_max: 100
    persistent: true
    sticky: true
    actions:
      - action: SEND_3D_PRINT_IMAGE
        title: 📸   Bild senden
      - action: SEND_3D_PRINT_INFO
        title: ℹ️   Infos senden
enabled: true

Sonst

In diesem Abschnitt wird jetzt definiert, dass die aktuelle Benachrichtigung mit einem Bild und einem kurzen Text ersetzt wird.

Zuerst wird ein Schnappschuss von der Webcam gemacht und anschließend wird 2 Sekunden gewartet, damit das Bild in Ruhe gespeichert werden kann, bevor dieses verschickt wird.

YAML-Code für die Sonst-Bedingung für die Kamera

action: camera.snapshot
metadata: {}
data:
  filename: /config/www/3dprinter/3dprinter.jpg
target:
  entity_id: camera.p1s_01p00a3xxxxxxxx_kamera
delay:
  hours: 0
  minutes: 0
  seconds: 2
  milliseconds: 0

Jetzt folgt nur noch die Aktion für das Versenden des Schnappschusses als Benachrichtigung mit ein wenig Text. Da in diesem Schritt auch wieder mit Templates gearbeitet wird, ist der visuelle Editor auch hier nicht verfügbar.

YAML-Code für die Benachrichtigung nach Druckende

action: notify.mobile_app_DEIN_GERAET
metadata: {}
data:
  title: Der 3D-Druck ist fertig!
  message: Fertig seit {{ states('sensor.p1s_uhrzeit_fertigstellung') }} Uhr
  data:
    car_ui: true
    persistent: true
    sticky: true
    tag: 3dprint-progress
    image: /local/3dprinter/3dprinter.jpg

Konfiguration der zusätzlichen Automation

In der vorherigen Automation wurden actions definiert, worauf die folgende Automation auslösen kann, damit du dir Bilder oder weitere Informationen zum Druck in Textform zuschicken lassen kannst.

Auslöser

Als Auslöser werden die Auslöser-IDs image und info definiert, worauf die folgenden Dann-Aktionen reagieren können. In den Ereignisdaten werden die jeweils zuvor erwähnten actions angegeben.

YAML-Code

event_type: mobile_app_notification_action
event_data:
  action: SEND_3D_PRINT_IMAGE
trigger: event
context: {}
id: image
event_type: mobile_app_notification_action
event_data:
  action: SEND_3D_PRINT_INFO
trigger: event
context: {}
id: info

Bedingung

Jetzt werden in einer Bedingung die Aktionen definiert, die durch die jeweiligen Auslöser aufgerufen werden.

Wenn

In diesem Schritt wird konfiguriert, dass etwas passieren soll, wenn wir den Auslöser mit der ID image aufgerufen haben. Das passiert, wenn du in der Benachrichtigung auf den Schalter Bild senden drückst.

YAML-Code

condition: trigger
id:
  - image

Dann

In diesem Abschnitt wird jetzt definiert, dass eine zusätzliche Benachrichtigung mit einem Bild und einem kurzen Text verschickt wird.

Zuerst wird ein Schnappschuss von der Webcam gemacht und anschließend wird 2 Sekunden gewartet, damit das Bild in Ruhe gespeichert werden kann, bevor dieses verschickt wird.

Als Nächstes folgt jetzt das Verschicken des Schnappschusses. Damit immer das aktuelle Bild verschickt wird, übergebe ich dem Dateinamen den aktuellen Zeitstempel, ansonsten würde die Companion-App ggf. ein altes Bild anzeigen.

Achtung:
Damit du diesen Abschnitt über den visuellen Editor bearbeiten kannst, musst du vorher die Entität des Smartphones im YAML-Code anpassen!

YAML-Code

data:
  message: Aktuelles Bild vom Druckfortschritt
  title: 3D-Drucker
  data:
    image: /local/3dprinter/3dprinter.jpg?{{ now().timestamp() }}
    persistent: true
    sticky: true
    data:
      vibrationPattern: []
      visibility: public
      channel: 3D-Print
      importance: default
action: notify.mobile_app_DEIN_GERAET

Sonst

Zu guter Letzt fehlt nur noch das Schicken der Informationen zum Druck in Textform. Da in diesem letzten Schritt wieder mit Templates gearbeitet wird, steht der visuelle Editor nicht zur Verfügung und du musst die passenden Entitäten händisch eintragen.

YAML-Code

action: notify.mobile_app_DEIN_GERAET
metadata: {}
data:
  data:
    persistent: true
    sticky: true
  title: Informationen zum 3D-Druck
  message: >-

    Datei: {{ states('sensor.p1s_01p00xxxxxxxxxx_name_der_aufgabe')}}

    Temp Hotend: {{states('sensor.p1s_01p00xxxxxxxxxx_temperatur_der_duse')}}°C
    / {{states('sensor.p1s_01p00xxxxxxxxxx_zieltemperatur_der_duse')}}°C

    Temp Bed: {{states('sensor.p1s_01p00xxxxxxxxxx_druckbetttemperatur')}}°C /
    {{states('sensor.p1s_01p00xxxxxxxxxx_zieltemperatur_des_druckbett')}}°C

    Fortschritt: {{states('sensor.p1s_01p00xxxxxxxxxx_druckfortschritt')}}%

    Fertig um: {{states('sensor.p1s_uhrzeit_fertigstellung')}} Uhr

 

Fertig

Ich wünsche dir viel Spaß mit deinen neuen Benachrichtigungen!

Published in3D-DruckHome AssistantSmarthome