# Notification multi-utilisateur avec présence

**URL:** <https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328>\
**Category:** Automatisation / Scène / Script / BluePrint\
**Tags:** notification, script\
**Created:** [Juillet 27, 2024, 11:44 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328 "2024-07-27T11:44:19Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Juillet 27, 2024, 11:44 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/1 "2024-07-27T11:44:19Z")

</div>

Bonjour à tous,

Dans l’idée d’améliorer la communication de la maison vers les utilisateurs, j’ai conçu un script HA qui retient les notifications jusqu’à retour en zone de la personne ou de l’appareil mobile.  
C’est librement inspiré de ce qu’a fait Horizon Domotique sous AppDeamon : [https://www.youtube.com/watch?v=chJylIK0ASo](https://www.youtube.com/watch?v=chJylIK0ASo)  
C’est une solution clé en main qui peut être utilisé comme la centrale de toutes vos notifications. Cela devrait vous décharger de toutes cette partie là dans vos automates et vos scripts

Les notifications peuvent être habillées (icônes, couleurs, illustration) et jusqu’à trois boutons action peuvent être ajoutée.  
Le script prend en charge simultanément 6 personnes / appareils / user\_id avec une zone de surveillance personnalisable pour chaque appel du script

J’ai préféré le format script HA pour pouvoir le personnaliser depuis un téléphone sans logiciel, matériel ou connaissance en développement.

Ce script propose de multiple paramétrage grâce aux champs. L’idée est d’exploiter tout le potentiel des notifications sans utiliser de code qui très bien documenté sur [Introduction | Home Assistant Companion Docs](https://companion.home-assistant.io/docs/notifications/notifications-basic)  
L’usage du champ **persistant** peut être amélioré avec l’automate [Renvoyer une notification persistante](https://forum.hacf.fr/t/renvoyer-une-notification-persistante/45372) cela vous permettra de créer de véritable notification persistante avec gestion des réponses utilisateurs.

> **Listes des champs avec leurs explications**
>
> - **personnes** : Qui notifier ? Personnes ou appareil mobile. Vide pour notifier tous les appareils… **pensez à personnaliser le choix proposé par défaut**
> - **prox\_zone** : Zone à surveiller. Si vide, pas de détection retour zone
> - **prox\_distance** : Distance pour l’entrée en zone de surveillance. Si vide, pas de détection retour zone
> - **timeout** : Durée de retention des notifications. 18h si vide ou omis
> - **titre** : Titre utilisé pour la notification
> - **message** : Corp du message, possible d’utiliser du HTML
> - **resume** : Texte court affiché quand la notification n’est pas déroulée
> - **tag** : Pour remplacer une notification ayant le même tag
> - **icone** : Icône illustrant la notification
> - **couleur** : Couleur de la notification
> - **illustration** : Illustration placée à droite de la notification
> - **collant** : Rester affiché après ouverture de la notification
> - **persistant** : Force l’affichage, doit être effacé par une autre notification. Ne fonctionne plus depuis Android 14 et doit être renvoyé par un automate
> - **click** : Action suite au clic
> - **log** : Ajouter une notification persistante dans HA
> - **actions** : Mode avancé : 3 actions de notification maximum
> - **source** : Informations sur le déclencheur. Code à adapter… généralement celui proposé fonctionne presque partout

Precisions :

- Si **personnes** est vide, tous les appareils notifiable sont automatiquement pris en compte. Il est possible de passer la valeur d’un **user\_id** qui serait communiqué par un automate ou un autre script.
- **timeout** permet d’affiner la durée de rétention. Parce que savoir en rentrant du travail 12h après l’évènement «&nbsp;la cuisson du four est terminé&nbsp;» n’est pas pertinent (normalement un autre habitant est là sur place). Dans ce cas 1h suffit. Pour une machine à laver 18h ou plus de délais permet de couvrir une période d’absence lié à une activité professionnelle conventionnelle.
- **illustration** doit être accessible sur le web ou dans le dossier **/media/local/**
- **persistant** peut être renvoyer avec [un automate](https://forum.hacf.fr/t/renvoyer-une-notification-persistante/45372) en utilisant un **tag** …
- **actions** vous pouvez indiquer à HA que l’action demandé est faite… avec un automate dédié vous pouvez effacer la notification chez tous les utilisateurs ou uniquement sur celui qui a répondu… [une démo couvrant cette usage est proposée](https://forum.hacf.fr/t/renvoyer-une-notification-persistante/45372/2)
- **log** : envoi un notification persistante dans HA, permet d’avoir un log simplifié dans la zone de notification de HA… si **source** est activé, ce sera affiché à cet emplacement
- **source** : permet de remonter la source de la notification, utile pour améliorer ses scripts et automate… fonctionne si **log** est activé

> **Vue graphique du fonctionnement**
>
> ![Capture d’écran du 2024-07-27 13-01-20](https://forum.hacf.fr/uploads/default/original/3X/0/a/0ae41feff659a3ccc91001253f95449b77f66090.png)

Voici le code du script. En dehors des lignes 626 et 627, il n’y a pas de personnalisation à effectuer pour le faire fonctionner immédiatement.  
J’ai pris le temps d’harmoniser la structure du code et de placer des labels à toutes les étapes.  
Cela fait deux mois que je n’ai plus apporté d’amélioration. Je le considère comme stable et fiable pour couvrir 95% des usages.

> **Code du script Notification multi-utilisateur avec présence**
>
> ```auto
> alias: Notification multi-utilisateur avec présence
> sequence:
> - alias: Définition de CIBLE
> variables:
> cible: |-
> {# Si vide, extraction de tout les mobile_app #}
> {% if personnes == '' or personnes is not defined %}
> {{ integration_entities('mobile_app') 
> | select('match','device_tracker')
> | list }}
> {% else %}
> {# Convertion chaine en liste #}
> {% if personnes.entity_id is string %}
> {% set personnes = { 'entity_id': [personnes.entity_id]} %}
> {% endif %}
> {# Récupération des person et device_tracker en liste #}
> {% set non_id = personnes.entity_id | select('match', 'person|device_tracker') | list %}
> {# Conversion des usr_id en person #}
> {% set id = personnes.entity_id | reject('search', '\.') | list %}
> {% set id_people = states.person 
> | selectattr('attributes.user_id', 'in', id) 
> | map(attribute='entity_id') | list %}
> {# Définition liste de person et device_tracker sans doublon #}
> {{ (non_id + id_people) | unique | list }}
> {% endif %}
> - alias: Définition de TIMEOUT à 18h par défaut
> variables:
> timeout: |-
> {% if timeout == '' or timeout is not defined %}
> 18:00:00
> {% else %}
> {{timeout}}
> {% endif %}
> - alias: Notif persistante si LOG
> if:
> - alias: LOG est activé
> condition: template
> value_template: "{{ log == true }}"
> then:
> - alias: Gestion TAG pour notification persistante HA
> if:
> - alias: Si un TAG existe, écrasement de la notification persistante
> condition: template
> value_template: "{{ tag is defined }}"
> then:
> - alias: Effacement si clear_notification
> if:
> - alias: Message est clear_notification
> condition: template
> value_template: "{{ message == \"clear_notification\" }} "
> then:
> - alias: Effacement notification persistante
> service: persistent_notification.dismiss
> metadata: {}
> data:
> notification_id: "{{tag}}"
> else:
> - alias: "Notification persistante dans HA avec écrasement "
> service: notify.persistent_notification
> data:
> title: "{{titre}}"
> message: >-
> {{ now().strftime('%H:%M:%S')
> }}<br>{{message}}<br><br>*Source: {% if source is defined
> %}{{ source }}{% elif this is defined %}{{
> this.attributes.friendly_name }}{% else %}déclenchement
> manuel{% endif %}*
> data:
> notification_id: "{{tag}}"
> else:
> - alias: "Notification persistante dans HA sans écrasement "
> service: notify.persistent_notification
> data:
> title: "{{titre}}"
> message: >-
> {{ now().strftime('%H:%M:%S') }}<br>{{message}}<br><br>*Source:
> {% if source is defined %}{{ source }}{% elif this is defined
> %}{{ this.attributes.friendly_name }}{% else %}déclenchement
> manuel{% endif %}*
> - alias: Notif mobile vers CIBLE présente
> parallel:
> - alias: Entrée n°1 de CIBLE
> if:
> - alias: Si entrée n°1 de CIBLE existe
> condition: template
> value_template: "{{ cible[0] is defined }}"
> then:
> - alias: Variables Personne/Appareil et Zone
> variables:
> cible_tmp: "{{cible[0]}}"
> prox_zone: "{% if prox_zone is defined %}{{prox_zone.entity_id}}{% endif %}"
> - alias: Attendre si hors zone
> if:
> - alias: La CIBLE est à plus de xx mètres de la zone
> condition: template
> value_template: >-
> {% if prox_zone is defined and prox_distance is defined %}
> 
> {{ (distance( prox_zone, cible_tmp ) * 1000) | int >
> prox_distance | float(0) }}
> 
> {% endif %}
> then:
> - alias: Attendre arrivée dans la zone de surveillance
> wait_for_trigger:
> - alias: Lorsque CIBLE est à moins de xx mètres de la zone
> platform: template
> value_template: >-
> {{ (distance( prox_zone, cible_tmp ) * 1000) | int <
> prox_distance | float(0) }}
> timeout: "{{timeout}}"
> continue_on_timeout: false
> - alias: Identification de l'appareil mobile à notifier
> variables:
> device_name: >-
> {# Conversion de person en mobile_app #}
> 
> {% if 'person.' in cible_tmp %}
> 
> {{ expand(cible_tmp)
> 
> | map(attribute='attributes.source')
> 
> | list
> 
> | join
> 
> | replace('device_tracker.', 'mobile_app_') }}
> 
> {# Conversion de device_tracker avec GPS en mobile_app #}
> 
> {% elif 'device_tracker.' in cible_tmp and
> (state_attr(cible_tmp,'gps_accuracy') or 0 ) > 0 %}
> 
> mobile_app_{{ state_attr(cible_tmp,'friendly_name') | slugify }}
> 
> {# Déjà un mobile_app #}
> 
> {% elif 'mobile_app_' in cible_tmp %}
> 
> {{ cible_tmp }}
> 
> {# Les autres cas sont ignoré #}
> 
> {% endif %}
> - alias: Notification si l'appareil mobile est connu sinon log erreur
> if:
> - alias: L'appareil mobile est trouvé
> condition: template
> value_template: "{{ device_name != '' }}"
> then:
> - alias: Envoie une notification ciblé
> service: notify.{{device_name}}
> data:
> title: "{{titre}}"
> message: "{{message}}"
> data:
> subject: "{{resume}}"
> tag: "{{tag}}"
> notification_icon: "{{icone}}"
> color: "{{couleur}}"
> icon_url: "{{illustration}}"
> sticky: "{{collant}}"
> persistent: "{{persistant}}"
> clickAction: "{{click}}"
> actions: "{{actions}}"
> else:
> - alias: Log erreur
> service: persistent_notification.create
> metadata: {}
> data:
> title: Notifs avec proximité
> message: >-
> Vous avez choisi une entité qui ne peut pas être
> notifiée<br>Veuillez enlever de la
> liste<br> **{{cible_tmp}}**
> - alias: Entrée n°2 de CIBLE
> if:
> - alias: Si entrée n°2 de CIBLE existe
> condition: template
> value_template: "{{ cible[1] is defined }}"
> then:
> - alias: Variables Personne/Appareil et Zone
> variables:
> cible_tmp: "{{cible[1]}}"
> prox_zone: "{% if prox_zone is defined %}{{prox_zone.entity_id}}{% endif %}"
> - alias: Attendre si hors zone
> if:
> - alias: La CIBLE est à plus de xx mètres de la zone
> condition: template
> value_template: >-
> {% if prox_zone is defined and prox_distance is defined %} {{
> (distance( prox_zone, cible_tmp ) * 1000) | int >
> prox_distance | float(0) }} {% endif %}
> then:
> - alias: Attendre arrivée dans la zone de surveillance
> wait_for_trigger:
> - alias: Lorsque CIBLE est à moins de xx mètres de la zone
> platform: template
> value_template: >-
> {{ (distance( prox_zone, cible_tmp ) * 1000) | int <
> prox_distance | float(0) }}
> timeout: "{{timeout}}"
> continue_on_timeout: false
> - alias: Identification de l'appareil mobile à notifier
> variables:
> device_name: >
> {% if 'person.' in cible_tmp %}
> 
> {{ expand(cible_tmp)
> 
> | map(attribute='attributes.source')
> 
> | list
> 
> | join
> 
> | replace('device_tracker.', 'mobile_app_') }}
> 
> {% elif 'device_tracker.' in cible_tmp and
> (state_attr(cible_tmp, 'gps_accuracy') or 0 ) > 0 %}
> 
> mobile_app_{{ state_attr(cible_tmp,'friendly_name') 
> 
> | slugify }}
> 
> {% elif 'mobile_app_' in cible_tmp %}
> 
> {{ cible_tmp }}
> 
> {% endif %}
> - alias: Notification si l'appareil mobile est connu sinon log erreur
> if:
> - alias: L'appareil mobile est trouvé
> condition: template
> value_template: "{{ device_name != '' }}"
> then:
> - alias: Envoie une notification ciblé
> service: notify.{{device_name}}
> data:
> title: "{{titre}}"
> message: "{{message}}"
> data:
> subject: "{{resume}}"
> tag: "{{tag}}"
> notification_icon: "{{icone}}"
> color: "{{couleur}}"
> icon_url: "{{illustration}}"
> sticky: "{{collant}}"
> persistent: "{{persistant}}"
> clickAction: "{{click}}"
> actions: "{{actions}}"
> else:
> - alias: Log erreur
> service: persistent_notification.create
> metadata: {}
> data:
> title: Notifs avec proximité
> message: >-
> Vous avez choisi une entité qui ne peut pas être
> notifiée<br>Veuillez enlever de la
> liste<br> **{{cible_tmp}}**
> - alias: Entrée n°3 de CIBLE
> if:
> - alias: Si entrée n°3 de CIBLE existe
> condition: template
> value_template: "{{ cible[2] is defined }}"
> then:
> - alias: Variables Personne/Appareil et Zone
> variables:
> cible_tmp: "{{cible[2]}}"
> prox_zone: "{% if prox_zone is defined %}{{prox_zone.entity_id}}{% endif %}"
> - alias: Attendre si hors zone
> if:
> - alias: La CIBLE est à plus de xx mètres de la zone
> condition: template
> value_template: >-
> {% if prox_zone is defined and prox_distance is defined %} {{
> (distance( prox_zone, cible_tmp ) * 1000) | int >
> prox_distance | float(0) }} {% endif %}
> then:
> - alias: Attendre arrivée dans la zone de surveillance
> wait_for_trigger:
> - alias: Lorsque CIBLE est à moins de xx mètres de la zone
> platform: template
> value_template: >-
> {{ (distance( prox_zone, cible_tmp ) * 1000) | int <
> prox_distance | float(0) }}
> timeout: "{{timeout}}"
> continue_on_timeout: false
> - alias: Identification de l'appareil mobile à notifier
> variables:
> device_name: >
> {% if 'person.' in cible_tmp %}
> 
> {{ expand(cible_tmp)
> 
> | map(attribute='attributes.source')
> 
> | list
> 
> | join
> 
> | replace('device_tracker.', 'mobile_app_') }}
> 
> {% elif 'device_tracker.' in cible_tmp and
> (state_attr(cible_tmp, 'gps_accuracy') or 0 ) > 0 %}
> 
> mobile_app_{{ state_attr(cible_tmp,'friendly_name') 
> 
> | slugify }}
> 
> {% elif 'mobile_app_' in cible_tmp %}
> 
> {{ cible_tmp }}
> 
> {% endif %}
> - alias: Notification si l'appareil mobile est connu sinon log erreur
> if:
> - alias: L'appareil mobile est trouvé
> condition: template
> value_template: "{{ device_name != '' }}"
> then:
> - alias: Envoie une notification ciblé
> service: notify.{{device_name}}
> data:
> title: "{{titre}}"
> message: "{{message}}"
> data:
> subject: "{{resume}}"
> tag: "{{tag}}"
> notification_icon: "{{icone}}"
> color: "{{couleur}}"
> icon_url: "{{illustration}}"
> sticky: "{{collant}}"
> persistent: "{{persistant}}"
> clickAction: "{{click}}"
> actions: "{{actions}}"
> else:
> - alias: Log erreur
> service: persistent_notification.create
> metadata: {}
> data:
> title: Notifs avec proximité
> message: >-
> Vous avez choisi une entité qui ne peut pas être
> notifiée<br>Veuillez enlever de la
> liste<br> **{{cible_tmp}}**
> - alias: Entrée n°4 de CIBLE
> if:
> - alias: Si entrée n°4 de CIBLE existe
> condition: template
> value_template: "{{ cible[3] is defined }}"
> then:
> - alias: Variables Personne/Appareil et Zone
> variables:
> cible_tmp: "{{cible[3]}}"
> prox_zone: "{% if prox_zone is defined %}{{prox_zone.entity_id}}{% endif %}"
> - alias: Attendre si hors zone
> if:
> - alias: La CIBLE est à plus de xx mètres de la zone
> condition: template
> value_template: >-
> {% if prox_zone is defined and prox_distance is defined %} {{
> (distance( prox_zone, cible_tmp ) * 1000) | int >
> prox_distance | float(0) }} {% endif %}
> then:
> - alias: Attendre arrivée dans la zone de surveillance
> wait_for_trigger:
> - alias: Lorsque CIBLE est à moins de xx mètres de la zone
> platform: template
> value_template: >-
> {{ (distance( prox_zone, cible_tmp ) * 1000) | int <
> prox_distance | float(0) }}
> timeout: "{{timeout}}"
> continue_on_timeout: false
> - alias: Identification de l'appareil mobile à notifier
> variables:
> device_name: >
> {% if 'person.' in cible_tmp %}
> 
> {{ expand(cible_tmp)
> 
> | map(attribute='attributes.source')
> 
> | list
> 
> | join
> 
> | replace('device_tracker.', 'mobile_app_') }}
> 
> {% elif 'device_tracker.' in cible_tmp and
> (state_attr(cible_tmp, 'gps_accuracy') or 0 ) > 0 %}
> 
> mobile_app_{{ state_attr(cible_tmp,'friendly_name') 
> 
> | slugify }}
> 
> {% elif 'mobile_app_' in cible_tmp %}
> 
> {{ cible_tmp }}
> 
> {% endif %}
> - alias: Notification si l'appareil mobile est connu sinon log erreur
> if:
> - alias: L'appareil mobile est trouvé
> condition: template
> value_template: "{{ device_name != '' }}"
> then:
> - alias: Envoie une notification ciblé
> service: notify.{{device_name}}
> data:
> title: "{{titre}}"
> message: "{{message}}"
> data:
> subject: "{{resume}}"
> tag: "{{tag}}"
> notification_icon: "{{icone}}"
> color: "{{couleur}}"
> icon_url: "{{illustration}}"
> sticky: "{{collant}}"
> persistent: "{{persistant}}"
> clickAction: "{{click}}"
> actions: "{{actions}}"
> else:
> - alias: Log erreur
> service: persistent_notification.create
> metadata: {}
> data:
> title: Notifs avec proximité
> message: >-
> Vous avez choisi une entité qui ne peut pas être
> notifiée<br>Veuillez enlever de la
> liste<br> **{{cible_tmp}}**
> - alias: Entrée n°5 de CIBLE
> if:
> - alias: Si entrée n°5 de CIBLE existe
> condition: template
> value_template: "{{ cible[4] is defined }}"
> then:
> - alias: Variables Personne/Appareil et Zone
> variables:
> cible_tmp: "{{cible[4]}}"
> prox_zone: "{% if prox_zone is defined %}{{prox_zone.entity_id}}{% endif %}"
> - alias: Attendre si hors zone
> if:
> - alias: La CIBLE est à plus de xx mètres de la zone
> condition: template
> value_template: >-
> {% if prox_zone is defined and prox_distance is defined %} {{
> (distance( prox_zone, cible_tmp ) * 1000) | int >
> prox_distance | float(0) }} {% endif %}
> then:
> - alias: Attendre arrivée dans la zone de surveillance
> wait_for_trigger:
> - alias: Lorsque CIBLE est à moins de xx mètres de la zone
> platform: template
> value_template: >-
> {{ (distance( prox_zone, cible_tmp ) * 1000) | int <
> prox_distance | float(0) }}
> timeout: "{{timeout}}"
> continue_on_timeout: false
> - alias: Identification de l'appareil mobile à notifier
> variables:
> device_name: >
> {% if 'person.' in cible_tmp %}
> 
> {{ expand(cible_tmp)
> 
> | map(attribute='attributes.source')
> 
> | list
> 
> | join
> 
> | replace('device_tracker.', 'mobile_app_') }}
> 
> {% elif 'device_tracker.' in cible_tmp and
> (state_attr(cible_tmp, 'gps_accuracy') or 0 ) > 0 %}
> 
> mobile_app_{{ state_attr(cible_tmp,'friendly_name') 
> 
> | slugify }}
> 
> {% elif 'mobile_app_' in cible_tmp %}
> 
> {{ cible_tmp }}
> 
> {% endif %}
> - alias: Notification si l'appareil mobile est connu sinon log erreur
> if:
> - alias: L'appareil mobile est trouvé
> condition: template
> value_template: "{{ device_name != '' }}"
> then:
> - alias: Envoie une notification ciblé
> service: notify.{{device_name}}
> data:
> title: "{{titre}}"
> message: "{{message}}"
> data:
> subject: "{{resume}}"
> tag: "{{tag}}"
> notification_icon: "{{icone}}"
> color: "{{couleur}}"
> icon_url: "{{illustration}}"
> sticky: "{{collant}}"
> persistent: "{{persistant}}"
> clickAction: "{{click}}"
> actions: "{{actions}}"
> else:
> - alias: Log erreur
> service: persistent_notification.create
> metadata: {}
> data:
> title: Notifs avec proximité
> message: >-
> Vous avez choisi une entité qui ne peut pas être
> notifiée<br>Veuillez enlever de la
> liste<br> **{{cible_tmp}}**
> - alias: Entrée n°6 de CIBLE
> if:
> - alias: Si entrée n°6 de CIBLE existe
> condition: template
> value_template: "{{ cible[5] is defined }}"
> then:
> - alias: Variables Personne/Appareil et Zone
> variables:
> cible_tmp: "{{cible[5]}}"
> prox_zone: "{% if prox_zone is defined %}{{prox_zone.entity_id}}{% endif %}"
> - alias: Attendre si hors zone
> if:
> - alias: La CIBLE est à plus de xx mètres de la zone
> condition: template
> value_template: >-
> {% if prox_zone is defined and prox_distance is defined %} {{
> (distance( prox_zone, cible_tmp ) * 1000) | int >
> prox_distance | float(0) }} {% endif %}
> then:
> - alias: Attendre arrivée dans la zone de surveillance
> wait_for_trigger:
> - alias: Lorsque CIBLE est à moins de xx mètres de la zone
> platform: template
> value_template: >-
> {{ (distance( prox_zone, cible_tmp ) * 1000) | int <
> prox_distance | float(0) }}
> timeout: "{{timeout}}"
> continue_on_timeout: false
> - alias: Identification de l'appareil mobile à notifier
> variables:
> device_name: >
> {% if 'person.' in cible_tmp %}
> 
> {{ expand(cible_tmp)
> 
> | map(attribute='attributes.source')
> 
> | list
> 
> | join
> 
> | replace('device_tracker.', 'mobile_app_') }}
> 
> {% elif 'device_tracker.' in cible_tmp and
> (state_attr(cible_tmp, 'gps_accuracy') or 0 ) > 0 %}
> 
> mobile_app_{{ state_attr(cible_tmp,'friendly_name') 
> 
> | slugify }}
> 
> {% elif 'mobile_app_' in cible_tmp %}
> 
> {{ cible_tmp }}
> 
> {% endif %}
> - alias: Notification si l'appareil mobile est connu sinon log erreur
> if:
> - alias: L'appareil mobile est trouvé
> condition: template
> value_template: "{{ device_name != '' }}"
> then:
> - alias: Envoie une notification ciblé
> service: notify.{{device_name}}
> data:
> title: "{{titre}}"
> message: "{{message}}"
> data:
> subject: "{{resume}}"
> tag: "{{tag}}"
> notification_icon: "{{icone}}"
> color: "{{couleur}}"
> icon_url: "{{illustration}}"
> sticky: "{{collant}}"
> persistent: "{{persistant}}"
> clickAction: "{{click}}"
> actions: "{{actions}}"
> else:
> - alias: Log erreur
> service: persistent_notification.create
> metadata: {}
> data:
> title: Notifs avec proximité
> message: >-
> Vous avez choisi une entité qui ne peut pas être
> notifiée<br>Veuillez enlever de la
> liste<br> **{{cible_tmp}}**
> fields:
> description:
> name: Description
> description: >-
> Retient les notifications jusqu'à retour en zone de la personne ou de
> l'appareil mobile. Les notifications peuvent être habillée et trois
> boutons action peuvent être ajouté
> selector:
> text:
> multiline: true
> personnes:
> name: Personnes
> description: >-
> Qui notifier ? Personnes ou appareil mobile. Vide pour notifier tous les
> appareils
> selector:
> target: {}
> default:
> entity_id:
> - person.USER1
> - person.USER2
> prox_zone:
> name: Zone
> description: Zone à surveiller. Si vide, pas de détection retour zone
> selector:
> target: {}
> default:
> entity_id: zone.home
> prox_distance:
> name: Distance
> description: >-
> Distance pour l'entrée en zone de surveillance. Si vide, pas de détection
> retour zone
> selector:
> number:
> min: 0
> max: 1000
> step: 50
> default: 200
> timeout:
> name: Timeout
> description: Durée de retention des notifications. 18h si vide ou omis
> selector:
> time: {}
> default: "18:00:00"
> titre:
> name: Titre
> selector:
> template: {}
> default: Titre facultatif
> message:
> name: Message
> description: Possible d'utiliser du HTML
> selector:
> template: {}
> required: true
> default: Placez votre message
> resume:
> name: Résumé
> description: Texte court affiché quand la notification n'est pas déroulée
> selector:
> text: null
> tag:
> name: Tag
> description: Pour remplacer une notification ayant le même tag
> selector:
> text: null
> icone:
> name: Icône
> selector:
> icon: {}
> default: mdi:bell
> couleur:
> name: Couleur
> description: Couleur de la notification
> selector:
> text: {}
> illustration:
> name: Illustration
> description: Illustration placée à droite de la notification
> selector:
> text: null
> collant:
> name: Collé
> description: Rester affiché après ouverture de la notification
> selector:
> boolean: {}
> persistant:
> name: Persistant
> description: >-
> Force l'affichage, doit être effacé par une autre notification. Ne
> fonctionne plus depuis Android 14 et doit être renvoyé par un automate
> selector:
> boolean: {}
> click:
> name: Click
> description: Action suite au clic
> selector:
> text: null
> log:
> name: log
> description: Ajouter une notification persistante dans HA
> selector:
> boolean: {}
> default: true
> actions:
> name: Actions
> description: "Mode avancé : 3 actions de notification maximum"
> selector:
> object: {}
> default:
> - action: traitement
> title: Effectué
> - action: refus
> title: Plus tard
> - action: URI
> title: Historique
> uri: settings://notification_history
> source:
> selector:
> template: {}
> name: Source
> description: Informations sur le déclencheur. Code à adapter...
> default: >-
> {% if source is defined %}{{ source }}
> 
> {% elif trigger is defined and trigger.from_state is defined %}{{
> trigger.from_state.attributes.friendly_name }} depuis {{
> this.attributes.friendly_name }}
> 
> {% elif trigger is defined and trigger.event and trigger.event.data.action is defined
> %}réponse {{ trigger.event.data.action }} dans {{
> this.attributes.friendly_name }}
> 
> {% elif this is defined %}{{ this.attributes.friendly_name }}
> 
> {% else %}déclenchement manuel depuis [nom du script où vous êtes]
> 
> {% endif %}
> mode: parallel
> icon: mdi:bell-badge
> max: 100
> 
> ```

Amusez vous bien avec, je reste disponible pour debugger ce qui m’a échappé et pour apporter du support sur son utilisation

---

<div class="post-metadata">

**Author:** ![titof2375](https://forum.hacf.fr/user_avatar/forum.hacf.fr/titof2375/32/39471_2.png) [@titof2375](https://forum.hacf.fr/u/titof2375)\
**Post date:** [Juillet 27, 2024, 12:20 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/2 "2024-07-27T12:20:32Z")

</div>

Super Boulot, es que qu’il gère aussi le premier revenu dans la zone reçoit les notifications et pas les autres personnes ?

---

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Juillet 27, 2024, 1:21 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/3 "2024-07-27T13:21:36Z")

</div>

Ha j’avais pas envisagé ce cas… à tu un exemple où ce serait pertinent ?

J’ai dans l’idée qu’à la maison la répartition des tâches ménagère doit être au même niveau. Si le premier rentre, ce n’est pas forcément lui qui va étendre le linge.  
Et si les notifications sont traité par le premier arrivé, ça permet aux suivants de savoir ce qu’il s’est passé en son absence.

---

<div class="post-metadata">

**Author:** ![titof2375](https://forum.hacf.fr/user_avatar/forum.hacf.fr/titof2375/32/39471_2.png) [@titof2375](https://forum.hacf.fr/u/titof2375)\
**Post date:** [Juillet 28, 2024, 7:16 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/4 "2024-07-28T07:16:28Z")

</div>

Alors je ne pensais pas au tâche ménagère, mes à la boîte au lettres par exemple.

---

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Juillet 28, 2024, 8:40 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/5 "2024-07-28T08:40:13Z")

</div>

Techniquement c’est possible sans trop compliquer le code.  
J’imagine qu’en attribuant un tag aléatoire qui serait utilisé plus loin à l’étape «&nbsp; **Attendre si hors zone** &nbsp;», permettrait de détecter si une première notification a bien été délivré… dans ce cas, une destruction des notifications en attente est possible.  
Pour couvrir l’usage de l’option «&nbsp;tag&nbsp;», cet élément aléatoire devra être en préfixe ou en suffixe. Cela permet de supporter les tag personnalisé + tag aléatoire

A ce jour je ne suis pas certains de développer cette fonctionnalité. Si il y a de la demande je pourrai l’ajouter. Je reste intéressé pour travailler à plusieurs sur ce sujet. Autant que mes heures de travail puisse être réutilisé par d’autres

---

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Juillet 28, 2024, 10:27 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/6 "2024-07-28T10:27:06Z")

</div>

@titof2375 je viens d’ajouter l’automate [Renvoyer une notification persistante](https://forum.hacf.fr/t/renvoyer-une-notification-persistante/45372) qui permet d’améliorer l’usage du champ **persistant**  
Les deux combiné ensemble permette d’avoir un super rendu

---

<div class="post-metadata">

**Author:** ![kristobal](https://forum.hacf.fr/user_avatar/forum.hacf.fr/kristobal/32/57375_2.png) [@kristobal](https://forum.hacf.fr/u/kristobal)\
**Post date:** [Août 21, 2024, 5:39 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/7 "2024-08-21T05:39:38Z")

</div>

Bonjour,  
Je suis novice depuis quelques mois et j’ai vu ce post qui m’intéresse et que je vais tester.  
Je voulais savoir si il y avait l’option pour les notifications critiques ?  
Merci.

---

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Août 21, 2024, 10:36 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/8 "2024-08-21T22:36:06Z")

</div>

Qu’est-ce que tu appel les notifications critique ?

Grâce à ce script tu peut exploiter graphiquement toutes les options d’habillage comme la mise en couleurs (ex rouge), le choix de l’icône (ex triangle ou alarme) voir ajouter une image d’illustration

---

<div class="post-metadata">

**Author:** ![ddfdom](https://forum.hacf.fr/user_avatar/forum.hacf.fr/ddfdom/32/137369_2.png) [@ddfdom](https://forum.hacf.fr/u/ddfdom)\
**Post date:** [Août 21, 2024, 11:18 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/9 "2024-08-21T23:18:38Z")

</div>

> [@percherie](#):
>
> Qu’est-ce que tu appel les notifications critique ?

> **[Critical notifications | Home Assistant Companion Docs](https://companion.home-assistant.io/docs/notifications/critical-notifications/)**
>
> The configuration and behavior of critical notifications differ between iOS and Android.

---

<div class="post-metadata">

**Author:** ![kristobal](https://forum.hacf.fr/user_avatar/forum.hacf.fr/kristobal/32/57375_2.png) [@kristobal](https://forum.hacf.fr/u/kristobal)\
**Post date:** [Août 22, 2024, 6:09 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/10 "2024-08-22T06:09:54Z")

</div>

C’est quand même ton téléphone est en silence il sonne quand même.

 ![image](https://forum.hacf.fr/uploads/default/original/3X/6/e/6e74935742e7d52b43ada778d167da02f4821c5d.png)

---

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Août 22, 2024, 6:54 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/11 "2024-08-22T06:54:39Z")

</div>

Bonne idée d’évolution. Je vais étudier ça à mon retour de vacances

Merci pour la suggestion

---

<div class="post-metadata">

**Author:** ![kristobal](https://forum.hacf.fr/user_avatar/forum.hacf.fr/kristobal/32/57375_2.png) [@kristobal](https://forum.hacf.fr/u/kristobal)\
**Post date:** [Août 22, 2024, 6:56 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/12 "2024-08-22T06:56:49Z")

</div>

Pas de soucis.  
Pour l’instant j’ai pas réussi a envoyé la notification sur mon téléphone. J’ai du passer à coté de quelques chose je pense.

---

<div class="post-metadata">

**Author:** ![ddfdom](https://forum.hacf.fr/user_avatar/forum.hacf.fr/ddfdom/32/137369_2.png) [@ddfdom](https://forum.hacf.fr/u/ddfdom)\
**Post date:** [Août 22, 2024, 7:05 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/13 "2024-08-22T07:05:09Z")

</div>

Tu as vu mon lien @kristobal ?

---

<div class="post-metadata">

**Author:** ![kristobal](https://forum.hacf.fr/user_avatar/forum.hacf.fr/kristobal/32/57375_2.png) [@kristobal](https://forum.hacf.fr/u/kristobal)\
**Post date:** [Août 22, 2024, 7:16 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/14 "2024-08-22T07:16:34Z")

</div>

oui oui. C’est un des 1er trucs que j’ai testé quand j’ai commencé HA.  
Les critiques fonctionnent bien.  
C’est avec le script il trouve pas mon téléphone. J’ai loupé un truc.

---

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Août 22, 2024, 7:46 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/15 "2024-08-22T07:46:16Z")

</div>

Est-ce que les appareils sont bien assigné à des personnes ?  
Pour cela va dans les paramètres de HA puis rubrique personnes. Associe ton appareil à ton compte pour que la prise en charge par personne fonctionne

Sans faire l’association, il faudra passer par appareil au lieu de personne. Sur la capture écran en demo j’ai indiqué mon compte et l’appareil d’un autre utilisateur sans indiquer son nom

 ![Screenshot_20240822_094456_Home Assistant](https://forum.hacf.fr/uploads/default/original/3X/5/d/5d22708e515bc3d27286bab6e6ec2140b5e2c393.jpeg)

---

<div class="post-metadata">

**Author:** ![kristobal](https://forum.hacf.fr/user_avatar/forum.hacf.fr/kristobal/32/57375_2.png) [@kristobal](https://forum.hacf.fr/u/kristobal)\
**Post date:** [Août 22, 2024, 8:20 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/16 "2024-08-22T08:20:07Z")

</div>

Oui mon téléphone est bien associé à la personne.

 ![IMG_3893](https://forum.hacf.fr/uploads/default/original/3X/4/7/476bde70954e87ac169345133489872a15005606.png)

Et dans le script j’ai mis comme ça.

 ![IMG_3894](https://forum.hacf.fr/uploads/default/original/3X/2/7/2754b01ba0506c9166af1ea85987aa333f217d96.png)

---

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Août 22, 2024, 12:09 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/17 "2024-08-22T12:09:44Z")

</div>

Nickel jusqu’ici c’est bon pour la suite le script de notification doit être appelé par un automate ou un autre script dans la rubrique actions

Tu pourras le retrouver avec le nom que tu a donner au script qui tu viens de me montrer

Tu aura ce type de rendu

 ![Screenshot_20240822_140743_Home Assistant](https://forum.hacf.fr/uploads/default/original/3X/7/a/7ab06513656696f3becfa753dbca108620f404e3.jpeg)

Pour tester tu peut exécuter l’action

---

<div class="post-metadata">

**Author:** ![kristobal](https://forum.hacf.fr/user_avatar/forum.hacf.fr/kristobal/32/57375_2.png) [@kristobal](https://forum.hacf.fr/u/kristobal)\
**Post date:** [Août 22, 2024, 5:42 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/18 "2024-08-22T17:42:21Z")

</div>

J’ai repris sur une automatisation existante qui m’envoie une notif quand mon nuc est allumé.  
Donc je fais action → script et je choisi le script  
Voici l’erreur que j’ai pour le téléphone.

 ![image](https://forum.hacf.fr/uploads/default/original/3X/5/0/50662754963fe070df6f4954cbc0829c412409b8.png)

Par contre je la recoit bien sur HA.  
 ![image](https://forum.hacf.fr/uploads/default/original/3X/e/1/e146b232e06f027eee2124122de55b36c4d6bf2d.png)

---

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Août 22, 2024, 7:10 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/19 "2024-08-22T19:10:31Z")

</div>

Je n’ai pas eu l’occasion de tester avec un iPhone et c’est probablement mal supporté. Je suis en congé mais est-ce qu’il est possible de faire un échange en MP sur ton problème ? Je suppose que ce n’est pas si complexe que ça à régler

---

<div class="post-metadata">

**Author:** ![Theshwal](https://forum.hacf.fr/user_avatar/forum.hacf.fr/theshwal/32/8315_2.png) [@Theshwal](https://forum.hacf.fr/u/Theshwal)\
**Post date:** [Août 19, 2025, 6:57 UTC](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328/20 "2025-08-19T18:57:15Z")

</div>

ca marche super bien bravo.

[Page suivante](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328.md?page=2)
