Kamera Snapshot erstellen und über Telegram verschicken (mit Home Assistant) in 2 Schritten

Wie kann man in Home Assistant einen Kamera Snapshot erstellen und diesen über Telegram verschicken? Als smarte Benachrichtigung habe ich dies zuletzt umgesetzt und möchte dich daran teilhaben lassen.

Im Rahmen meines Versuches, möglichst wenige Geräte und Anwendungen in meinem Smarthome zu nutzen, die ausschließlich über eine Anbindung an die Cloud funktionieren, habe ich zuletzt auch die bislang geliebte Netatmo Presence Kamera gegen eine andere Kamera getauscht.

Kamera Snapshot erstellen und über Telegram verschicken (mit Home Assistant)

Tatsächlich ist die Netatmo Presence noch im Einsatz, da ich die automatische Flutlichtfunktion sehr schätze. Aber zeitgleich nutze ich nun auch eine UniFi Protect G4 Dome:

Ubiquiti Networks UniFi Protect G4 Dome Camera UVC-G4-DOME,...*
  • W125935142
  • Ubiquiti Networks UniFi Protect G4 Dome Camera UVC-G4-DOME, IP...

Nachdem die Kamera in Home Assistant integriert ist, ist das erstellen von Snapshots des Kamera-Feeds sehr einfach. Darüber hinaus diesen Snapshot zu verschicken, ist auch nicht wirklich schwer. Aber der Reihe nach;

Home Assistant Kamera Snapshot erstellen und speichern

Für das Erstellen von Snapshots (also Momentaufnahmen) eines Kamera-Feeds bringt Home Assistant eigentlich schon alles benötigte mit. Hierfür nutzen wir den Service „camera.snapshot“ (Home Assistant Camera Snapshot), welcher von Automatisierungen oder Skripten aufgerufen werden kann.

Alles, was man dann noch machen muss, ist diesem Service mitzuteilen, von welcher Kamera ein Snapshot erstellt werden soll, wo der Snapshot gespeichert werden soll und wie dieser Snapshot heißen soll.

Das alles kann dann wie folgt aussehen:

action:
  - service: camera.snapshot
    target:
      entity_id: camera.g4_dome_high
    data:
      filename: '/config/www/cam_captures/dome_{{ now ().year }}_{{ now ().month }}_{{ now ().day }}_{{ now ().hour }}_{{ now ().minute }}.jpg'

Ein wenig Erklärung zu dem Code:

  • Wir erstellen einen Snapshot von der Entität camera.g4_dome_high. So heißt bei mir die Kamera von UniFi Protect halt. Bei dir wird der Name natürlich ein anderer sein 😉
  • Als „filename“ definieren wir zum einen den Speicherort, welche „config/www/cam_captures/“ ist. In diesem Ordner der Home Assistant Instanz legen wir die Bilddateien also ab. Zum anderen benennen wir die erstellten Bilder/Snapshots dahingehend eindeutig, als das wir das aktuelle Datum und die aktuelle Uhrzeit als Dateinamen nutzen.

Konkret würde ein solches Snapshot-Bild dann wie folgt heißen können:

dome_2022_2_24_14_30.jpg

Erstellten Kamera Snapshot verschicken

Nun haben wir also einen Snapshot der Kamera erstellt und diesen mit einem eindeutigen Dateinamen gespeichert. Diesen kann man dann natürlich auch verschicken.

Was nützt dir der Snapshot, wenn du ihn nicht automatisch angezeigt bekommst?

Ich persönlich nutze hierfür Telegram. Man muss Telegram nicht mögen, ich persönlich finde die Möglichkeiten in Kombination mit Home Assistant aber sehr interessant. Entsprechend beschreibe ich mit meinem Code-Beispiel, wie ein Snapshot mittels Telegram verschickt werden kann.

Ich setze somit voraus, dass du Telegram als Notify-Möglichkeit entsprechend eingerichtet hast!

Hier ein Code-Beispiel, wie der Versand umgesetzt werden kann:

  - service: notify.telegram
    data:
      title: Dome-Alarm!
      data:
        photo:
          - file: '/config/www/cam_captures/dome_{{ now ().year }}_{{ now ().month }}_{{ now ().day }}_{{ now ().hour }}_{{ now ().minute }}.jpg'
            capture: Snapshot

Über den Service „notify.telegram“ verschicken wir ein vorhandenes Bild, und zwar konkret den zuvor erstellten Snapshot. Entsprechend geben wir unter „file“ exakt den gleichen Dateinamen an, den wir zuvor beim Erstellen des Snapshots genutzt haben.

Dies setzt natürlich voraus, dass beide Services unmittelbar nacheinander aufgerufen werden, da sonst aufgrund des Bezuges zur aktuellen Uhrzeit, die Dateinamen abweichen können.

Automatisierung zum Versand von Kamera Snapshots

In Summe kann man aus den zuvor gezeigten Code-Beispielen nun eine Automatisierung bauen, die einen informiert, sobald eine Bewegung erkannt wird.

Konkret möchte ich nun folgendes erreichen: sobald die Kamera eine Bewegung erkennt, soll es eine Telegram-Nachricht geben, mit dem Snapshot als Inhalt. Somit werde ich automatisch informiert, sobald die Kamera eine Bewegung erkannt hat.

Ergänzend schränke ich diese Benachrichtigung nun jedoch noch ein, nämlich um eine Bedingung: Die Benachrichtigung soll nur erfolgen, wenn niemand zu Hause ist.

- alias: "Dome Movement"
  trigger:
  - platform: state
    to: 'on'
    entity_id: binary_sensor.g4_dome_motion
  condition:
    - condition: state
      entity_id: group.awesome_people
      state: 'not_home'
  action:
  - service: camera.snapshot
    target:
      entity_id: camera.g4_dome_high
    data:
      filename: '/config/www/cam_captures/dome_{{ now ().year }}_{{ now ().month }}_{{ now ().day }}_{{ now ().hour }}_{{ now ().minute }}.jpg'
  - delay: 
      seconds: 10
  - service: notify.telegram
    data:
      title: Dome-Alarm!
      message: Bewegung erkannt!
      data:
        photo:
          - file: '/config/www/cam_captures/dome_{{ now ().year }}_{{ now ().month }}_{{ now ().day }}_{{ now ().hour }}_{{ now ().minute }}.jpg'
            capture: Snapshot

Der untere Teil des Codes ist eine 1:1 Kopie der hier bereits gezeigten Codes. Entsprechend gehe ich nun „nur noch“ auf die neuen, wesentlichen Code-Zeilen ein!

Im Wesentlichen sind nun nur noch folgende Code-Zeilen „neu“:

trigger:
  - platform: state
    to: 'on'
    entity_id: binary_sensor.g4_dome_motion
  condition:
    - condition: state
      entity_id: group.awesome_people
      state: 'not_home'

Die UniFi Protect G4 Dome Kamera liefert einen weiteren Sensor, nämlich den Binary-Sensor, welcher den Status „on“ erhält, sobald eine Bewegung erkannt wurde.

Wenn dieser Sensor auf „on“ wechselt, soll unsere Automatisierung ausgeführt werden, allerdings nur, wenn die direkt folgende Kondition erfüllt wird.

Als Kondition prüfen wir nun, ob die Gruppe „group.awesome_people“ nicht zu Hause ist. Hierfür habe ich in meiner configuration.yaml zuvor bereits diese Gruppe „awesome_people“ definiert, welche aus mehreren Handys des Haushaltes besteht. Sobald also auch nur ein relevantes Handy zu Hause ist, gilt die Gruppe als zu Hause.

Nur, wenn also niemand zu Hause ist, erhalte ich eine Benachrichtigung mit dem aktuellen Kamera-Snapshot, sobald eine Bewegung von der Kamera erkannt wurde!

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um den hass.io Home Assistant.

AngebotBestseller Nr. 1
Netatmo Smarte Wetterstation - WLAN, Funk, Innen- und...*
  • MESSUNG DER UMGEBUNGSTEMPERATUR INNEN UND AUSSEN IN ECHZEIT:...
  • WARNMELDUNGEN IN ECHZEIT: Mit unserer Wetterstation können Sie...

*= Preis inkl. MwSt., ggf. zzgl. Versandkosten. Letzte Aktualisierung vor 60 Minuten / Affiliate Links / Bilder von der Amazon Product Advertising API. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.

Schreibe einen Kommentar

Die folgenden im Rahmen der DSGVO notwendigen Bedingungen müssen gelesen und akzeptiert werden:
Durch Abschicken des Formulares wird dein Name, E-Mail-Adresse und eingegebene Text in der Datenbank gespeichert. Für weitere Informationen wirf bitte einen Blick in die Datenschutzerklärung.