Notification de changement d'état de l'alarme : automatisation perfectible?

Bonjour,

Mon problème

Je viens de me créer une automatisation pour me notifier sur mobile du changement de l’état de mon alarme.
Je me demande si j’ai fait ça correctement. Je n’ai pas encore pu la tester en direct, mais je vous soumet le code pour savoir si on peut mieux faire et améliorer les tests et conditions :slight_smile:

Merci d’avance pour vos retours ^^

Le code YAML de mon automatisation


alias: Notification changement d'état Alarme
description: ""
trigger: []
condition: []
action:
  - if:
      - condition: device
        device_id: 1392c420886e188fed31ab7d3d77dbf8
        domain: alarm_control_panel
        entity_id: 1a6e0ed3a931469f0484af1eaba5866c
        type: is_armed_away
    then:
      - service: notify.mobile_app_iphone_miles
        metadata: {}
        data:
          message: ➡️ Mode absence 🛡️
          title: 🔔 Alarme IMA activée
    else:
      - if:
          - condition: device
            device_id: 1392c420886e188fed31ab7d3d77dbf8
            domain: alarm_control_panel
            entity_id: 1a6e0ed3a931469f0484af1eaba5866c
            type: is_armed_home
        then:
          - service: notify.mobile_app_iphone_miles
            metadata: {}
            data:
              message: ➡️ Mode Nuit 🌃
              title: 🔔 Alarme IMA activée
        else:
          - if:
              - condition: device
                device_id: 1392c420886e188fed31ab7d3d77dbf8
                domain: alarm_control_panel
                entity_id: 1a6e0ed3a931469f0484af1eaba5866c
                type: is_disarmed
            then:
              - service: notify.mobile_app_iphone_miles
                metadata: {}
                data:
                  message: ➡️ Mode présence 🏡
                  title: 🔕 Alarme IMA désactivée
mode: single


Salut

Ton automatisation ne marchera pas.
Il manque toute la partie trigger. C’est ça qui permet de rendre les choses automatiques.
Ce que tu as mis dans les actions (alarme away) est typiquement ce qu’il faut plutôt mettre dans la partie trigger.
La partie action c’est uniquement la notification

2 « J'aime »

Salut :wave:t2:
Merci pour ta clairvoyance :smiling_face:

Du coup , tu proposes de fière comment ?
J’aimerai qu’il n’y ait qu’une seule automatisation pour les 3 états d’alarme que j’ai .

Ps : il faut que je regarde pourquoi depuis le mobile je n’arrive plus à changer l’état de l’alarme avec la carte alarme… ça me fait cette erreur :


Je n’ai pas besoin de code pour activer ou désactiver l’alarme normalement…

Bonjour,
tu fais 3 déclencheurs pour les 3 états d’alarme avec chacun un ID.
image
En action, tu choisis choisir.
dans la 1er condition, tu choisis déclancher par et selection le ID du déclancheur.
Puis tu choisis, l’action de ce déclancheur.
Tu répète l’opération pour les deux autres états.

description: ""
mode: single
trigger:
  - platform: state
    entity_id:
      - alarm_control_panel.alarmo
    to: armed_away
    id: absent
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - absent
        sequence:
          - service: notify.mobile_app_m2101k9g
            metadata: {}
            data: {}
3 « J'aime »

Comme on dirait au jeu des chiffres et des lettres : Pas mieux :wink:

2 « J'aime »

Salut,

Tu veux dire qu’il faut faire 3 automatisations ?
Et que veux-tu dire par « chacun son ID » ?

Pour le reste, j’ai pas tout saisi…
Je regarderais sur un plus gros écran plus tard :slight_smile:

En tout cas, merci pour l’aide :slight_smile:

Non, dans une seul automatisation.

Voici un exemple, avec 3 déclencheurs avec chacun un ID et en action choisir avec les conditions:

description: ""
mode: single
trigger:
  - platform: state
    entity_id:
      - alarm_control_panel.alarmo
    to: disarmed
    id: désactiver
  - platform: state
    entity_id:
      - alarm_control_panel.alarmo
    to: armed_away
    id: absence
  - platform: state
    entity_id:
      - alarm_control_panel.alarmo
    to: armed_night
    id: nuit
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - désactiver
        sequence:
          - service: notify.mobile_app_m2101k9g
            metadata: {}
            data:
              message: ➡️ Mode présence 🏡
              title: 🔕 Alarme IMA désactivée
      - conditions:
          - condition: trigger
            id:
              - absence
        sequence:
          - service: notify.mobile_app_m2101k9g
            metadata: {}
            data:
              message: ➡️ Mode absence 🛡️
              title: 🔔 Alarme IMA activée
      - conditions:
          - condition: trigger
            id:
              - nuit
        sequence:
          - service: notify.mobile_app_m2101k9g
            metadata: {}
            data:
              message: ➡️ Mode Nuit 🌃
              title: 🔔 Alarme IMA activée
description: Notif alarme HA
trigger:
  - platform: state
    entity_id:
      - alarm_control_panel.alarme
    to: null
condition: []
action:
  - variables:
      title: >
        {%- set state = states('alarm_control_panel.alarme') |
        replace('pending', 'en suspens') | replace('triggered', 'déclenchée') |
        replace('disarmed', 'désarmée') | replace('armed_away', 'armée') |
        replace('armed_home', 'armée (présent)') | replace('armed_night', 'armée
        (nuit)') | replace('arming', 'armement') -%}

        {%- if state == "désarmée" or state == "armement" -%}
          🏠 Alarme {{ state }}
        {%- elif state == "armée"  or  state == "armée (présent)" or  state ==
        "armée (nuit)" -%}
          🚨 Alarme {{ state }}
        {%- else -%}
          ⚠️ Alarme {{ state }}
        {%- endif -%}
  - variables:
      message: >
        {%- set state = states('alarm_control_panel.alarme') |
        replace('pending', 'en suspens') | replace('triggered', 'déclenchée') |
        replace('disarmed', 'désarmée') | replace('armed_away', 'armée') |
        replace('armed_home', 'armée (présent)') | replace('armed_night', 'armée
        (nuit)') | replace('arming', 'armement') -%}

        {{ states.sensor.date_court.state }} à {{ states.sensor.time.state }} 
        {{"\n"}}

        {%- if state != "désarmée" and  state != "armement" -%} {% set sensor =
        states('sensor.serrure_ouverte') -%} {% if sensor != False -%} 🔑 {{
        sensor }}{{"\n"}} {%- endif -%}

        {% set sensor = states('sensor.lumiere_etat') -%} {% if sensor !=
        "Aucune" -%} 💡 {{ sensor }}{{"\n"}} {%- endif -%}

        {% set sensor = states('sensor.porte_on') -%} {% if sensor != "Aucune"
        -%} 🚪 {{ sensor }}{{"\n"}} {%- endif -%}

        {% set sensor = states('sensor.mouv_on') -%} {% if sensor != "Aucun" -%}
        🏃🏻 {{ sensor }}{{"\n"}} {%- endif -%}

        {% set sensor = states('sensor.presents') -%} {% if sensor != "Personne"
        -%} 👤 {{ sensor }}{{"\n"}} {% endif %} {%- else -%} {% set sensor =
        states('sensor.serrure_ouverte') -%} {% if sensor != False  -%} 🔑 {{
        sensor }}{{"\n"}} {%- endif -%} {% set sensor =
        states('sensor.presents') -%} {% if sensor != "Personne" -%} 👤 {{
        sensor }}{{"\n"}} {%- endif -%} {%- endif -%}
  - alias: désarmée
    if:
      - condition: state
        entity_id: alarm_control_panel.alarme
        state: disarmed
    then:
      - service: notify.notify
        data:
          title: "{{ title }}"
          message: "{{ message }}"
          data:
            group: alarme
            tag: alarme_desarmee
            push:
              interruption-level: time-sensitive
              sound:
                name: default
                critical: 0
                volume: 0
            actions:
              - action: DESACTIVER_ALARME
                title: 🏠 Désactiver l'alarme
                destructive: true
              - action: ACTIVER_ALARME
                title: 🚨 Armer l'alarme
                destructive: false
              - action: rien
                title: Rien
      - service: notify.ha
        data:
          title: "{{ title }}"
          message: "{{ message }}"
      - delay:
          hours: 0
          minutes: 0
          seconds: 5
          milliseconds: 0
      - service: notify.notify
        data:
          message: clear_notification
          data:
            tag: alarme_armee
  - if:
      - condition: state
        entity_id: alarm_control_panel.alarme
        state: arming
    then:
      - service: notify.mobile_app_iphone_aurel
        data:
          title: "{{ title }}"
          message: "{{ message }}"
          data:
            group: alarme
            tag: alarme_armee
            push:
              interruption-level: passive
            actions:
              - action: DESACTIVER_ALARME
                title: 🏠 Désactiver l'alarme
                destructive: true
              - action: ACTIVER_ALARME
                title: 🚨 Armer l'alarme
                destructive: false
              - action: rien
                title: Rien
    alias: armement
  - alias: armée
    if:
      - condition: or
        conditions:
          - condition: state
            entity_id: alarm_control_panel.alarme
            state: armed_away
          - condition: state
            entity_id: alarm_control_panel.alarme
            state: armed_home
          - condition: state
            entity_id: alarm_control_panel.alarme
            state: armed_night
    then:
      - service: notify.notify
        data:
          title: "{{ title }}"
          message: "{{ message }}"
          data:
            group: alarme
            tag: alarme_armee
            push:
              interruption-level: time-sensitive
              sound:
                name: default
                critical: 0
                volume: 0
            actions:
              - action: DESACTIVER_ALARME
                title: 🏠 Désactiver l'alarme
                destructive: true
              - action: ACTIVER_ALARME
                title: 🚨 Armer l'alarme
                destructive: false
              - action: rien
                title: Rien
      - service: notify.ha
        data:
          title: "{{ title }}"
          message: "{{ message }}"
  - alias: Suspens ou déclenchée
    if:
      - condition: or
        conditions:
          - condition: state
            entity_id: alarm_control_panel.alarme
            state: pending
          - condition: state
            entity_id: alarm_control_panel.alarme
            state: triggered
    then:
      - service: notify.notify
        data:
          title: "{{ title }}"
          message: "{{ message }}"
          data:
            group: alarme
            tag: alarme_declenchee
            push:
              sound:
                name: default
                critical: 1
                volume: 0
            actions:
              - action: DESACTIVER_ALARME
                title: 🏠 Désactiver l'alarme
                destructive: true
              - action: ACTIVER_ALARME
                title: 🚨 Armer l'alarme
                destructive: false
              - action: rien
                title: Rien
      - service: notify.ha
        data:
          title: "{{ title }}"
          message: "{{ message }}"
mode: single

Ca me donne état alarme, date et heure, adapte le style de notif (silencieuse ou non), et me donne si besoin les indicateurs :

  • personnes présentes,
  • portes ouvertes,
  • lumières allumées,
  • serrures déverrouillées,
  • mouvements déclenchés…

Et en plus, une sauvegarde des notifs vers Telegram qui me sert de journal.

Salut :slight_smile:
@WarC0zes Ton automatisation fonctionne bien :wink:
Reste que je n’ai pas trop compris l’histoire de l’ID…

@herveaurel Intéressant ce que tu proposes, mais c’est un peu trop complexe pour moi à comprendre.
Tu aurais une capture pour voir ce que ça donne ?

Salut

L’ID c’est juste un moyen de différencier les triggers dans la suite de l’automatisation, tu lui donnes un nom (ce que tu veux) et tu peux tester plus loin si le trigger a le nom1 ou le nom2 etc

2 « J'aime »

le ID permet de différencier un déclencheur si t’en utilise plusieurs. Comme en action on utilise choisir, faut pouvoir différencier ces déclencheurs. D’ou l’utilité de mettre un ID ( un nom ).

edit:
@Pulpy-Luke trop rapide !

1 « J'aime »

Ok, merci pour les précisions, je comprends mieux ^^

Version HA, pas sous la main, car mes notifs s’effacent automatiquement sous conditions (options géniales des notifs HA)

Version Telegram :

image

Salutations :wave:t2:

Petite question sur l’automatisation conseillée par @WarC0zes que j’ai mise en place.
Ça fonctionne assez bien , j’ai bien les notifications quand l’alarme change d’état.
Mais j’ai aussi des notifications de temps à autre alors que l’alarme n’a pas changé d’état : la notification montre le même état que le précédent.
J’ai vu hier après un reboot de mon routeur que j’ai reçu une notification alors qu’entre temps l’alarme n’a pas changé d’état.
Une idée de ce qui peut faire ça avec la notification ?

Rajoute une condition par action dans choisir, qui vérifie si l’alarme est activé ou pas.

action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - désactiver
          - condition: state
            entity_id: alarm_control_panel.alarmo
            state: disarmed
        sequence:
          - service: notify.mobile_app_m2101k9g
            metadata: {}
            data:
              message: ➡️ Mode présence 🏡
              title: 🔕 Alarme IMA désactivée

Faut verifier si ton entité alarmo passe pas en indisponible.

test dans condition, le premier template, ou peut être les deux.

condition:
  - condition: template
    value_template: |
      {{ trigger.to_state.state not in ['unknown', 'unavailable'] }}

  - condition: template
    value_template: |
      {{ trigger.from_state.state != trigger.to_state.state}}

Bonjour @WarC0zes
Je teste ta première solution.

Code YAML
alias: Notification changement d'état de l'alarme
description: ""
trigger:
  - platform: state
    entity_id:
      - alarm_control_panel.alarme_maison
    to: disarmed
    id: désactiver
  - platform: state
    entity_id:
      - alarm_control_panel.alarme_maison
    to: armed_away
    id: absence
  - platform: state
    entity_id:
      - alarm_control_panel.alarme_maison
    to: armed_home
    id: nuit
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - désactiver
          - condition: state
            entity_id: alarm_control_panel.alarme_maison
            state: disarmed
        sequence:
          - service: notify.mobile_app_iphone
            metadata: {}
            data:
              message: ➡️ Mode présence 🏡
              title: 🔕 Alarme IMA désactivée
      - conditions:
          - condition: trigger
            id:
              - absence
          - condition: state
            entity_id: alarm_control_panel.alarme_maison
            state: armed_away
        sequence:
          - service: notify.mobile_app_iphone
            metadata: {}
            data:
              message: ➡️ Mode absence 🛡️
              title: 🔔 Alarme IMA activée
      - conditions:
          - condition: trigger
            id:
              - nuit
          - condition: state
            entity_id: alarm_control_panel.alarme_maison
            state: armed_home
        sequence:
          - service: notify.mobile_app_iphone
            metadata: {}
            data:
              message: ➡️ Mode Nuit 🌃
              title: 🔔 Alarme IMA activée
mode: single

Et en parcourant le code je me suis aperçu qu’un des états n’était pas celui retourné par mon alarme : le mode activé en présence, que j’appelle mode nuit, et qui n’active que les portes de garages et de mon cabanon.
Chez moi c’est armed_home qu’il s’appelle.
Je verrais si les notifications arrivent alors qu’il n’y a pas eu de changement véritable ^^

Merci pour l’aide.
Je me dis que j’ajouterais bien un peu de texte comme l’a fait @herveaurel pour savoir à quelle heure le changement de statut a été déclenché, qui l’a déclenché (via le code que j’ai mis dans l’alarme, ça devrait être faisable non ?)
Et aussi les fenêtres ouvertes quand j’aurais mis des capteurs dessus ^^
Car mon alarme ne renvoie pas cette information… c’est bien dommage :sweat_smile: