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!