Notifications Actionnables iOS +++ Avec pièces jointes (photos)

Mon problème

Je reviens vers vous par rapport au sujet que j’avais créé avec @Clemalex sur les notifications actionnables iOS :
https://forum.hacf.fr/t/notification-personnalisee-ios-compagnon/2175
Je voudrais aller un peu plus loin :

J’ai lu sur cet article qu’il était possible de joindre des pièces (photos, videos, …) sur les notifications.

Voilà ce que j’aimerai faire :

Lorsque mon voisin vient nourrir mes chats quand je suis en vacances, je reçois une alerte du motion detection de mes caméras me disant qu’un mouvement a été detecté. Je souhaiterai que dans cette notification, une photo faite par la caméra me montre qui c’est et si c’est bien mon voisin, je demande de désactiver les notifications des alertes du motion detection pendant un certain temps (parce qu’il reste un petit moment chez moi et du coup j’aimerai que mes notifications cessent le temps qu’il parte !)
Je sais comment prendre un photo, là où elle est stockée (sur mon NAS Synology) mais je ne comprends pas bien comment l’insérer dans cette notification…

L’idée finale est : je vois qui rentre chez moi avec le motion detection, c’est mon voisin, ok j’actionne un bouton pour désactiver les notifications du motion detection

Auriez-vous des idées ? Avez-vous compris mes explications et là où je veux en venir ?

Merci d’avance pour votre aide

PI : Il est au courant qu’il est filmé et de ses droits de consultation

Ma configuration


System Health

version core-2021.5.5
installation_type Home Assistant Container
dev false
hassio false
docker true
virtualenv false
python_version 3.8.9
os_name Linux
os_version 5.10.17-v7l+
arch armv7l
timezone Europe/Paris
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 5000
Installed Version 1.11.3
Stage startup
Available Repositories 1
Installed Repositories 1
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Lovelace
dashboards 1
resources 6
views 8
mode storage
___

Tu as un blueprint disponible sur le forum anglais

il envoie une notification avec une photo de la cam

il faut donc l’adapter a ton besoin pour avoir en plus le bouton que tu demande pour stop les notification sur detection de mouvement avec je pense un timer sur cette désactivation temporaire

Perso j’ai utiliser le blueprint en question avec du ubiquiti sa fonctionne très bien

il y a aussi celui la :

qui ajoute justement le bouton pour arrêter les notifications pendant XX minutes donc sans doute a récupéré cette partie dans ton automation

1 « J'aime »

Merci @barto_95 Je vais regarder ça.
Je te tiens au courant !

Donc ça fonctionne avec tes caméras Ubiquiti ? J’ai pris des Dahua.

Bon je vais chercher, si je trouve la solution, je la posterai sinon je reviendrai vers toi !

Bonne journée

oui après peut importe la camera du moment quel remonte dans ha :slight_smile:
je suis entrain de voir si j’arrive a faire une blueprint avec notification + pause/Stop pendant X minutes.

Hello,
Oui elle remonte dans HA via le protocole ONVIF
Je vais essayer de lire déjà l’histoire du blueprint.
Maintenant si tu trouve la solution avant moi je serai preneur ! :laughing:

Hello,
Alors déjà je ne sais pas comment utiliser le service take snapshot sur ha avec mes caméras…
T’as une idée ?

Et en suivant la documentation, tu bloque où ?

Moi j’ai ça :

#automation.yaml
  action:
  - data:
      entity_id: camera.camera_001_mijia
      filename: /home/homeassistant/.homeassistant/camera/snapshot1.jpg
    service: camera.snapshot
#configuration.yaml
homeassistant:
  allowlist_external_dirs:
    - /home/homeassistant/.homeassistant/camera

La config est pour une installation venv.

C’est quoi une installation venv ?
Effectivement je n’avais spécifié nulle part le chemin d’enregistrement des fichiers .jpg ni dans le configuration.yaml, ni via l’interface web de HA (d’ailleurs je ne sais même pas si cela est possible…

@Clemalex

Déjà est-ce que je suis bon si je mets dans mon fichier configuration.yaml ceci

#configuration.yaml
homeassistant:
  allowlist_external_dirs:
    - /config/tmp/

En sachant que mon HA tourne sous docker et voici la configuration de mon docker-compose.yml :

version: '3.7'
services:
  homeassistant:
    image: homeassistant/raspberrypi4-homeassistant:2021.5.5
    container_name: home-assistant
    logging:
      driver: "json-file"
      options:
        max-size: "50M"
        max-file: "5"
    volumes:
      - /opt/docker/homeassistant/config:/config
      - NFSShare:/config/tmp/
    environment:
      - TZ=France/Paris
#    devices: 
#      - /dev/Z-Wave:/dev/Z-Wave
    restart: always
    network_mode: host
    ports:
      - 8123:8123
  mosquitto:
    build:
      context: ./mosquitto/build/
      dockerfile: dockerfile
    container_name: mosquitto
    ports:
      - 1883:1883
      - 9883:9883
      - 10883:10883
      - 11883:11883
    volumes:
      - /opt/docker/mosquitto/data:/mosquitto/data
      - /opt/docker/mosquitto/logs:/mosquitto/logs
      - /opt/docker/mosquitto/config:/mosquitto/config
      - /opt/docker/mosquitto/ca_certificates:/mosquitto/ca_certificates
      - /opt/docker/mosquitto/certs:/mosquitto/certs
      - /opt/docker/mosquitto/config/conf.d:/mosquitto/config/conf.d
      - /opt/docker/mosquitto/build:/mosquitto/build
    restart: always
  node-red:
    image: nodered/node-red:1.3.4-12
    container_name: node-red
    environment:
      - TZ=Europe/Paris
    devices:
      - /dev/Enocean:/dev/Enocean
    ports:
      - 1880:1880
    volumes:
      - /opt/docker/node-red/data:/data
    restart: always
  deconz:
    image: marthoc/deconz:latest
    container_name: deconz
    restart: always
    volumes:
      - /opt/docker/deconz:/root/.local/share/dresden-elektronik/deCONZ
    devices:
      - /dev/Zigbee:/dev/ttyACM0
    environment:
      - TZ=Europe/Paris
      - DECONZ_DEVICE=/dev/ttyACM0
      - DECONZ_WEB_PORT=80
      - DECONZ_WS_PORT=443
      - DEBUG_INFO=1
      - DEBUG_APS=0
      - DEBUG_ZCL=0
      - DEBUG_ZDP=0
      - DEBUG_OTAU=0
    network_mode: host
  zwavejs2mqtt:
    container_name: zwavejs
    image: zwavejs/zwavejs2mqtt:4.5.0
    restart: always
    tty: true
    stop_signal: SIGINT
    environment:
      - SESSION_SECRET=tatayoyo123
      - TZ=Europe/Paris
    devices:
      - /dev/Z-Wave:/dev/Z-Wave
    volumes:
      - /opt/docker/zwavejs/store:/usr/src/app/store
    ports:
      - 8091:8091 # port for web interface
      - 3000:3000 # port for zwave-js websocket server
    network_mode: host

volumes:
  NFSShare:
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.X.X,rw,,nfsvers=4
      device: :/volume1/Cameras/

Alors j’ai mis ce que j’ai écris plus haut dans mon configuration.yaml, j’ai redémarré HA, puis j’essaie de créer une automation avec ceci :

alias: Photo
action:
 - data:
     entity_id: camera.principale_mainstream
     filename: /config/tmp/snapshot1.jpg
   service: camera.snapshot

Et j’ai cette erreur :

Message malformed: required key not provided @ data[‹ trigger ›]

Ce n’est que la partie action que je t’ai donné

Ajoute (avant de copier l’action) un déclencheur via l’ui…:innocent:

1 « J'aime »

Je dirais qu’il faut que le dossier temp existe dans ton dossier config.

J’enlèverais le NFS, car si le flux arrive dans HA, pas besoin du NFS… Sauf si tu veux un historique (mais dans ce cas ajoute l’horodatage dans le nom de la capture).

2 « J'aime »

Fait l’automation par la gui directement au lieu de passer par le yaml

1 « J'aime »

Alors voici l’automation :

alias: Motion Detect
description: ''
trigger:
  - platform: mqtt
    topic: homeassistant/binary_sensor/cam_principale_motion_detection/state
    payload: 'on'
condition: []
action:
  - service: camera.snapshot
    target:
      entity_id: camera.principale_mainstream
    data:
      filename: /config/tmp/snapshot1.jpg
mode: single

Ça éxécute l’automation et ça prend la photo mais j’ai du faire sauter le NFS qui me cassait les pieds pour l’écriture du fichier

Je continue dans ce sens pour l’avoir sur mon tel maintenant et après je ferai la notification actionnable

Oui je sais mais comme @Clemalex est un pro du yaml ! :laughing:

J’ai enlevé le NFS.
Par contre la photo prise est sur dans le répertoire indiqué. Il faut faire quelque chose en particulier pour le vider après avoir reçu la notification par exemple ?

@barto_95

J’ai importé le blueprint dont tu te sers :

https://community.home-assistant.io/t/send-camera-snapshot-notification-on-motion/254565

Je suppose qu’il faut modifier son blueprint manuellement pour lui donner le chemin d’accès des snapshots.

Voilà les deux lignes modifiées :

  snapshot_create_file_path: /config/tmp/snapshot_{{ states[camera].object_id }}.jpg
  snapshot_access_file_path: '{{ snapshot_create_file_path | replace(''/config/tmp'',''/local'') }}'

Donc je reçois bien la notification mais pas le screenshot et voici l’erreur que j’ai sur mon mobile ios :

Tu peux utiliser cette intégration pour le nettoyage :

1 « J'aime »

Ok je regarderai. Y’a pas besoin de hacs ? Car il ne fonctionne plus. J’ai essayé de le supprimer mais il apparait toujours dans mes intégrations installées… C’est un autre sujet. Je créerai un topic pour ça plus tard !
Merci !

Finalement j’ai remis la config par défaut du Blueprint, j’ai changé mon docker-compose de cette manière :

version: '3.7'
services:
  homeassistant:
    image: homeassistant/raspberrypi4-homeassistant:2021.5.5
    container_name: home-assistant
    logging:
      driver: "json-file"
      options:
        max-size: "50M"
        max-file: "5"
    volumes:
      - /opt/docker/homeassistant/config:/config
      - /opt/docker/homeassistant/config/www/tmp:/config/www/tmp:rw
    environment:
      - TZ=France/Paris
#    devices: 
#      - /dev/Z-Wave:/dev/Z-Wave
    restart: always
    network_mode: host
    ports:
      - 8123:8123

Et j’ai bien le snapshot présent. Faut juste que je change le paramètre du blueprint pour avoir un horodatage au nom du fichier (on verra plus tard)

Je vais coupler ça aux notifications actionnables