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

Au pire je vais jouer avec le crontab du rpi !

C’est le mot je pense…

Pour moi, si tu veux rester propre dans ta démarche, il faut que les fichiers créés par ton instance home assistant soient supprimés par celle-ci.

L’intégration que je t’ai fourni et la solution la plus simple à mon sens… Mais je ne l’utilise pas.

Je n’ai pas besoin d’avoir une sauvegarde de mes snapshot… Car de toute façon j’ai une sauvegarde des vidéos et les snapshot je les retrouve sur ma boîte mail, donc je n’utilise pas d’horodatage.

Si je devais partir pour supprimer le fichier créé… Je partirai plus sur une command_line

1 « J'aime »

Ok je vais suivre ton conseil merci.

Après pour les notifications actionnables @barto_95 je dois les rajouter au fichier .yaml du blueprint ?
Le problème c’est que je vois quoi mettre avec l’article que j’avais créé sur les notifications actionnables.
Par contre je ne sais pas comment les implémenter niveau syntaxe…

Voici la notification actionnable que je vais utiliser :

alias: Notification de définition de l'heure de chauffe de la sdb le matin
trigger:
  - platform: time
    at: '20:00:00'
action:
  - service: notify.mobile_app_nikos_iphone
    data:
      title: Chauffage Salle de bain
      message: On chauffe à quelle heure demain ?
      data:
        push:
          category: chauffage
mode: single

Mais je ne sais pas, si je dois bien le mettre dans le .yaml du blueprint, à quel endroit… Pas bon en syntaxe yaml…
Et sur l’automation à base du blueprint, je ne peux pas rajouter d’action en GUI, que en yaml…?

.yaml de l’automatisation du blueprint :

alias: Envoi notification avec photo intrusion cam_principale
description: ''
use_blueprint:
  path: vorion/send-camera-snapshot-notification-on-motion.yaml
  input:
    notification_message: Intrusion détectée dans la maison
    motion_sensor: binary_sensor.cam_principale_motion_detection
    camera: camera.principale_mainstream
    notify_device: c9bc97a76f0e2d5da3b2948725a359b7
    notification_title: Mouvement détecté
    delay: 0
    is_ios: true

Et là le code du .yaml du blueprint en question :

blueprint:
  name: Send a camera snapshot when motion is detected
  description: >
    This automation blueprint creates a camera snapshot if motion is detected 
    and sends a notification to your phone with the picture.
  domain: automation
  input:
    motion_sensor:
      name: Motion sensor
      description: The sensor wich triggers the snapshot creation
      selector:
          entity:
            domain: binary_sensor
            device_class: motion

    camera:
      name: Camera
      description: The camera which creates the snapshot
      selector:
        entity:
          domain: camera

    notify_device:
      name: Device to notify
      description: Device needs to run the official Home Assistant app to receive notifications
      selector:
        device:
          integration: mobile_app

    is_ios:
      name: Is it an iOS device?
      description: Toggle if your selected device runs iOS, default is Android
      selector:
        boolean:
      default: false

    notification_title:
      name: Notification title (Optional)
      description: 'Default: "Motion detected!"'
      default: "Motion detected!"

    notification_message:
      name: Notification message (Optional)
      description: 'Default: "{{ motion_sensor_name }} detected movement!"'
      default: "{{ motion_sensor_name }} detected movement!"
      
    delay:
      name: Delay (Optional)
      description: Wait before creating camera snapshot
      default: ""
      selector:
        number:
            min: 0
            max: 60
            unit_of_measurement: seconds
            mode: slider

trigger:
  platform: state
  entity_id: !input motion_sensor
  from: "off"
  to: "on"

variables:
  motion_sensor: !input motion_sensor
  motion_sensor_name: "{{ states[motion_sensor].name }}"
  camera: !input camera
  notify_device: !input notify_device
  is_ios: !input is_ios
  notification_title: !input notification_title
  notification_message: !input notification_message
  delay: !input delay
  snapshot_create_file_path: "/config/www/tmp/snapshot_{{ states[camera].object_id }}.jpg"
  snapshot_access_file_path: "{{ snapshot_create_file_path | replace('/config/www','/local') }}"

action:
  - delay: "{{ delay }}"

  - service: camera.snapshot
    entity_id: !input camera
    data:
      filename: "{{ snapshot_create_file_path }}"

  - device_id: !input notify_device
    domain: mobile_app
    type: notify
    title: "{{ notification_title }}"
    message: "{{ notification_message }}"
    data: >
      {% set android_data = {"image": "%s"} | format(snapshot_access_file_path) %}
      {% set ios_data = {"attachment": {"url": "%s", "content_type": "JPEG"}} | format(snapshot_access_file_path) %}
      {{ ios_data if is_ios else android_data }}

Après si tu vois @Clemalex où il faut le mettre ! Ça serait génial !

Et pour finir je vais mettre ça dans mon configuration.yaml

ios:
  push:
    categories:
      - name: Chauffauge_Salle_de_bain_Matin
        identifier: 'chauffage'
        actions:
          - identifier: 'NE_PAS_CHAUFFER_DEMAIN'
            title: 'Pas demain !'
            activationMode: 'background'
            authenticationRequired: false
            destructive: true
            behavior: 'default'
          - identifier: 'DEFINITION_DE_L_HEURE'
            title: 'Définir heure'
            activationMode: 'background'
            authenticationRequired: false
            destructive: false
            behavior: 'textInput'
            textInputButtonTitle: 'OK'
            textInputPlaceholder: '06:15'
      - name: Seche_Serviette_Matin
        identifier: 'seche_serviette'
        actions:
          - identifier: 'NE_PAS_CHAUFFER_SERVIETTE'
            title: 'Pas demain !'
            activationMode: 'background'
            authenticationRequired: true
            destructive: true
            behavior: 'default'
          - identifier: 'SDB_SERVIETTE'
            title: 'Définir heure'
            activationMode: 'background'
            authenticationRequired: false
            destructive: false
            behavior: 'textInput'
            textInputButtonTitle: 'OK'
            textInputPlaceholder: '06:00'
      - name: Camera_Principale
        identifier: 'cam_principale'
        actions:
          - identifier: 'VOIR_PHOTO_PRINCIPALE'
            title: 'Voir photo'
            activationMode: 'background'
            authenticationRequired: true
            destructive: true
            behavior: 'default'
          - identifier: 'STOP_NOTIFICATIONS_PRINCIPALE'
            title: 'Arrêt notifications'
            activationMode: 'background'
            authenticationRequired: false
            destructive: false
            behavior: 'textInput'
		  - identifier: 'DESACTIVER_ALARM'
            title: 'Désactiver l'alarme'
            activationMode: 'background'
            authenticationRequired: true
            destructive: true
            behavior: 'default'
      - name: Camera_Entee
        identifier: 'cam_entree'
        actions:
          - identifier: 'VOIR_PHOTO_ENTREE'
            title: 'Voir photo'
            activationMode: 'background'
            authenticationRequired: true
            destructive: true
            behavior: 'default'
          - identifier: 'STOP_NOTIFICATIONS_ENTREE'
            title: 'Arrêt notifications'
            activationMode: 'background'
            authenticationRequired: false
            destructive: false
            behavior: 'textInput'
		  - identifier: 'DESACTIVER_ALARM'
            title: 'Désactiver l'alarme'
            activationMode: 'background'
            authenticationRequired: true
            destructive: true
            behavior: 'default'

j’ai demander au mec qui a fait le blueprint de rajouter la possibiliter de decider d’un temps de « silence » pour les notifications il y a aussi celui la :

il permet de faire une notification et de bloquer la notif si par exemple tu et chez toi pas besoin de notif et j’ai aussi demander de rajouter une action pour arrêter les notif temporairement

et pour l’ajout des actions je suis au même niveau que toi quand je fait le nécessaire j’ai une error lors de l’import du blueprint …

1 « J'aime »

Ok… Tu peux partager ce que tu as essayé ?
@Clemalex tu as une idée ?

Je regarde dès que je peux… :innocent:

Je m’étais mis un rappel :+1:

1 « J'aime »

@Nikos3296

voici mon blueprint:

Au top !
Comme ça tu pourras regarder avec le blueprint de @barto_95

C’est ça que je vais t’indiquer…

@Nikos3296 @barto_95

Vous essayer de faire quoi finalement ?

:upside_down_face: :face_with_monocle:

mdrrrrrr

faire fumer nos HA hahahah

en gros faire une notification sur detection de mouvement (ce qui fonctionne déjà) mais ajouter la possibilité d’avoir un bouton pour arrêter les notifications pendant XX minutes

exemple : chez mon père des mec qui travaillais le machin ma blinder de notification…

Désolé j’étais pas dispo ce we…
Du coup @Clemalex t’as pu jeter un oeil au blueprint de @barto_95 sur ce qui pouvait ne pas fonctionner ?

Non pas de disponibilité en ce moment…

Désolé,mais continuez à poster ca permet de voir la démarche :+1:

Hello @barto_95 et @Clemalex

J’ai réussi à avoir une notification et des boutons actionnables en faisant une automatisation simple sans blueprint.
D’abord j’ai modifié le fichier configuration.yaml avec la catégorie ios qui ressemble à ça :

ios:
  push:
    categories:
      - name: Chauffauge_Salle_de_bain_Matin
        identifier: 'chauffage'
        actions:
          - identifier: 'NE_PAS_CHAUFFER_DEMAIN'
            title: 'Pas demain !'
            activationMode: 'background'
            authenticationRequired: false
            destructive: true
            behavior: 'default'
          - identifier: 'DEFINITION_DE_L_HEURE'
            title: 'Définir heure'
            activationMode: 'background'
            authenticationRequired: false
            destructive: false
            behavior: 'textInput'
            textInputButtonTitle: 'OK'
            textInputPlaceholder: '06:15'
      - name: Seche_Serviette_Matin
        identifier: 'seche_serviette'
        actions:
          - identifier: 'NE_PAS_CHAUFFER_SERVIETTE'
            title: 'Pas demain !'
            activationMode: 'background'
            authenticationRequired: true
            destructive: true
            behavior: 'default'
          - identifier: 'SDB_SERVIETTE'
            title: 'Définir heure'
            activationMode: 'background'
            authenticationRequired: false
            destructive: false
            behavior: 'textInput'
            textInputButtonTitle: 'OK'
            textInputPlaceholder: '06:00'
      - name: Camera_Principale
        identifier: 'cam_principale'
        actions:
          - identifier: 'VOIR_PHOTO_PRINCIPALE'
            title: 'Voir photo'
            activationMode: 'background'
            authenticationRequired: true
            destructive: true
            behavior: 'default'
          - identifier: 'STOP_NOTIFICATIONS_PRINCIPALE'
            title: 'Arrêt notifications'
            activationMode: 'background'
            authenticationRequired: false
            destructive: false
            behavior: 'textInput'
          - identifier: 'DESACTIVER_ALARM'
            title: 'Désactiver l alarme'
            activationMode: 'background'
            authenticationRequired: true
            destructive: true
            behavior: 'default'

Ensuite j’ai créé une automatisation dont voici le code en .yaml :

alias: Automation test snapshot
description: ''
trigger:
  - type: motion
    platform: device
    device_id: 332dc8f83a3b9472af47a8adf877e0d0
    entity_id: binary_sensor.cam_principale_motion_detection
    domain: binary_sensor
    for:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 0
condition: []
action:
  - service: notify.mobile_app_nikos_iphone
    data:
      message: Catastrophe
      title: Oulala
      data: 
        image: http://loginCAM:MdpCAM@IPCAM/cgi-bin/snapshot.cgi
        push:
          category: cam_principale
mode: single

Et j’obtiens ça :

Après l’URL utilisée pour prendre la photo est celle de l’API de ma caméra et la stocke là où je lui ai indiqué dans le paramétrage de la caméra et le nettoyage se fait tout seul.

A affiner pour les réponses aux actions de la notification mais c’est bien parti et ça fait ce que je voulais !

ok mais le bouton arrêt notification il fonctionne ?

Non pas pour l’instant (pas eu le temps) mais là c’est plus simple, il suffit de reprendre ce que j’avais mis dans mon article précédent des notifications actionnables :

https://forum.hacf.fr/t/notification-personnalisee-ios-compagnon/2175

Bon ça y est je suis bloqué…

Si j’utilise l’url de l’API de ma caméra en mode ip locale, ça fonctionne quand je suis connecté en wifi au même réseau mais pas depuis l’extérieur.

Et c’est ça le but…

Après j’ai fait quelques tests pour mettre dans mon automatisation un appel au service snapshot.camera et envoyer ça avec le service notify mais ça ne m’envoie pas la photo même sur le réseau local…

alias: Notifications motion detection cam_principale
description: ''
trigger:
  - type: motion
    platform: device
    device_id: 332dc8f83a3b9472af47a8adf877e0d0
    entity_id: binary_sensor.cam_principale_motion_detection
    domain: binary_sensor
    for:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 0
condition: []
action:
  - service: camera.snapshot
    target:
      entity_id: camera.principale_mainstream
    data:
      filename: /config/www/tmp/snapshot.jpg
  - service: notify.mobile_app_nikos_iphone
    data:
      message: Mouvement détecté à l'intérieur
      title: Attention
      data:
        image: /config/www/tmp/snapshot.jpg
        push:
          category: camera_principale
mode: single

J’ai bien la notification, ça prend bien en compte ma catégorie pour les notifications actionnables mais je n’ai pas l’image ni sur le réseau local ni depuis l’extérieur…

Une idée @Clemalex @barto_95 ?

si tu va voir l’image avec le chemin que tu indique tu trouve bien la photo ? l’utilisateur HA a le droit de lecture la dessus ?