Fehler: value should be a string @ data['target'][0]

Hallo, ich brauche einmal eure Hilfe.

Die Automation hat eigentlich zuverlässig funktioniert, aktuell bekomme ich aber die Fehlermeldung:

Fehler: value should be a string @ data['target'][0]

Der Fehler ist im letzten Abschnitt bei der Benachrichtigung:

action: notify.all_devices
metadata: {}
data:
  message: Bewegung vor der Haustür!
  target:
    entity_id: camera.doorbell_klar
  data:
    image: URL/local/tmp/snapshot_doorbell.jpg

Thx

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

(Beitrag vom Verfasser gelöscht)

Ein String ist eine Zeichenkette und die scheint HA hier zu erwarten, aber nicht zu bekommen. In der Regel eingeschlossenen von Anführungszeichen ". Vielleicht muss die URL zum Bild in Anführungszeichen eingeschlossen werden.

Edit: Gleiches gilt für den Punkt message. Dort ist in der Doku auch der Text in Anführungszeichen. Entweder reicht es dort, oder auch bei image.

Das “URL” hat da eigentlich nichts zu suchen. :slightly_smiling_face: Wenn dann:

data:
  filename:

und dann den Pfad zu dem Ordner wo die Snapshots gespeichert werden sollen und auf die ein Zugriff auch möglich ist. Also z.B. etwas in der Art:
data:
filename: /config/www/
data:
filename: /config/tmp/

Ich nutze für die Aufnahme von Kamera-Stream z.B. den Odner media, sodass bei mir der Pfad lautet:

data:
  filename: /media/{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4

D.h. bei mir gibt es in der configuration.yaml dafür dann:

homeassistant:
  allowlist_external_dirs:
    - "/media"
    - "/config"

damit ich eben die *.mp4 Aufnahmen dort auch speichern kann.

D.h. meine kompl. Automatisierung wenn jemand an der Haustür an meiner Video-Türklingel klingelt sieht dann so aus:

alias: DB61iOnvif digital input eingeschaltet Aufnahme Dahua starten
description: DB61iOnvif digital input eingeschaltet Aufnahme Dahua starten
mode: single
triggers:
  - type: turned_on
    device_id: 8273c79def13b414fe676801a237aeaa
    entity_id: 0146382a94541df4bb876cb3cd8209cd
    domain: binary_sensor
    trigger: device
conditions: []
actions:
  - metadata: {}
    data:
      duration: 30
      lookback: 0
      filename: /media/{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4
    target:
      entity_id: camera.dahua_hof_mediaprofile_channel1_substream2
    action: camera.record

Nur das dann nicht von der Video-Türklingel eine 30 Sek. Aufnahme des Streams erfolgt sondern von einer anderen Kamera die auch die Haustür im Blick hat.

Eine Desktop Benachrichtigung wenn jemand klingel sieht bei mir dann z.B. so aus:

alias: DB61i Benachrichtigung
description: DB61i Benachrichtigung
triggers:
  - type: turned_on
    device_id: 8273c79def13b414fe676801a237aeaa
    entity_id: 0146382a94541df4bb876cb3cd8209cd
    domain: binary_sensor
    trigger: device
conditions: []
actions:
  - action: notify.persistent_notification
    metadata: {}
    data:
      message: Es hat geklingelt
mode: single

VG Jim

Hallo Jim,

danke für dein Ausführliches Beispiel.
Kurz zur Erklärung, an der Stelle beim “image:” ist “URL” nur Platzhalter.
Der Pfad hat auch ein paar Wochen funktioniert, wenn ich diesen auf https://.......de/config/www/snapshot_doorbell.jpg ändere funktioniert es leider auch nicht.

Wenn ich den Wert des Strings in Anführungszeichen " setzte, werde diese nach dem Speicher automatisch gelöscht (seit dem letzten Update).

(Beitrag vom Verfasser gelöscht)

Moin,

ich weiß nicht welche Pfade Du da wo und wie eingerichtet hast und was da mal wie funktioniert hat. Ich kann Dir nur sagen wie es bei mir schon lange funktioniert und wie ich es eingerichtet habe. :slightly_smiling_face:

Wie gesagt lasse ich die Video-Aufnahmen unter dem Ordner media speichern, sodass sie dann dort erscheinen
HA_Media_Speicherort

Dazu nutze ich halt diesen Pfad

    data:
      duration: 30
      lookback: 0
      filename: /media/{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4

und zusätzlich muss der Ordner media als externes Verzeichnis erlaubt werden.

  allowlist_external_dirs:
    - "/media"

Das einzige was ich zu diesem Thema sonst noch weiß ist das es bei HA im Laufe der Zeit natürlich auch Änderungen bei dem speichern von Medien-Daten gegeben hat und das es vermutlich auch noch irgendwelche andere Wege geben könnte/wird wie und wo man etwas speichern kann. Aber da es bei mir - wie schon gesagt - genau so funktioniert wie ich es hier gepostet habe, interessieren mich mögliche andere Wege nicht wirklich. :slightly_smiling_face:

VG Jim

Moin, ja das mit dem Pfad war so eine Sache, er muss ja öffentlich sein.
Den Variante www......de/local/tmp/ hatte ich in einem Beitrag gefunden.

Gestern Abend habe ich dann alles einmal alles auf /media/ geändert, nach vielem testen habe ich herausgefunden das der Fehler nicht wie angegeben vom Snapshot kommt sondern doch vom “target” entity_id: camera.doorbell_fliessend (Reolink).
Sobald ich das “Target” entferne bekomme ich wieder die Snapshot’s, hast du eine Idee was die Fehlermeldung in dem Zusammenhang bedeuten könnte?

actions:
  - action: camera.snapshot
    metadata: {}
    data:
      filename: /media/snapshot/doorbell_snapshot.jpg
    target:
      entity_id: camera.doorbell_schnappschusse_klar
  - action: notify.all_devices
    data:
      message: Bewegung vor der Haustür!
      data:
        image: https://......de/media/doorbell_snapshot.jpg
      target:
        entity_id: camera.doorbell_fliessend
mode: single

Viele Grüße, Xioon

Edit: OK jetzt habe ich glaube ich verstanden was Dein Ziel und Problem ist, :laughing: aber das müsste ich bei mir erst einmal selber probieren und nachstellen. Heute habe ich dafür aber leider keine Zeit mehr. Vielleicht hat ein anderer User für Dich ja noch die Lösung.

Falls es darum gehen sollte einen Snapshot als Attachment zu versenden könnte das hier ggf helfen:

Edit 2: Ich habe es eben doch schon mal kurz durchgespielt. :wink: Also falls Dein Ziel sein sollte das irgendein Auslöser (z.B. die Klingel) eine Benachrichtigung auslöst und dabei ein Snapshot von einer Kamera erstellt werden soll, dann habe ich das eben bei mir auf die Schnelle so umgesetzt. Hier jetzt mal ohne einen Auslöser:

alias: Dahua Hof Snapshot
description: Dahua Hof Snapshot
triggers: []
conditions: []
actions:
  - action: camera.snapshot
    metadata: {}
    data:
      filename: /media/{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg
    target:
      device_id: 5501deb146ecbe0a3a2a7850c3128e94
  - action: notify.persistent_notification
    metadata: {}
    data:
      message: Dies ist ein Testnachricht wenn ein Snapshot erstellt wird.
mode: single

Auf dem Desktop erscheint die Benachrichtung
Benachrichtigung_Snapshot
und unter /media werden die Snapshots gespeichert.
HA_Media_Snapshots

Ergo: Deine Message Action darf als Ziel nicht die “camera.doorbell_fliessend” enthalten. Was auch immer das für ein Ziel sein soll. :slightly_smiling_face:

Falls Du vielleicht doch etwas anderes erreichen willst dann beschreib hier mal was genau das Ziel ist, sprich was soll genau passieren wenn jemand den Klingelknopf bei Dir drückt?

Edit 3: So bin wieder zu Hause. :slightly_smiling_face: Hier dann kompl. mit Klingelknopf drücken bei meiner Dahua DB61i Video-Türklingel.

alias: Dahua Hof Snapshot Klingel
description: Dahua Hof Snapshot Kllngel
triggers:
  - type: turned_on
    device_id: 8273c79def13b414fe888801a237aeaa
    entity_id: 0146382a94541df4bb561cb3cd8209cd
    domain: binary_sensor
    trigger: device
conditions: []
actions:
  - action: camera.snapshot
    metadata: {}
    data:
      filename: /media/{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg
    target:
      device_id: 503d6bc11faeba3fb135b76358cc3465
  - action: notify.persistent_notification
    metadata: {}
    data:
      message: "Jemand hat geklingelt. "
mode: single

Die Device-IDs werden halt automatisch ausgewählt wenn man das entsprechende Gerät über den visuellen Editor hinzufügt. Stattdessen könnte man natürlich auch die entity_id des Gerätes verwenden. Bei der notify-Aktion kannst Du dann ja auch auswählen wo bzw. wohin eine Benachrichtigung gesendet werden soll.
BTW: Die Erstellung kann man kompl. per visuellen Editor machen. Erst wenn man den Pfad für den Speicherort hinzufügt - hier bei mir also filename: /media/{{ now().strftime(“%Y%m%d-%H%M%S”) }}.jpg - muss ab dann die Bearbeitung per yaml-Code erfolgen.

VG Jim

Mit diesem Code funktioniert das Senden eines Snapshots von einer Reolink zur HA Companion App auf einem IPHONE:

  - action: camera.snapshot
    metadata: {}
    data:
      filename: /media/snapshot/doorbell_snapshot.jpg
    target:
      entity_id: camera.doorbell_fliessend
  - action: notify.mobile_app_iphone
    data:
      message: Test
      data:
        image: /media/local/snapshot/doorbell_snapshot.jpg
mode: single