Activation d'alarme avec temporisation

Bonjour,
Je souhaiterais mettre en place l’activation d’un mode alarme via la présence des téléphones.
Scénario imaginer :

  • Lorsque l’ensemble des téléphones quittent une zone.
  • Envois d’une notification avec deux choix cliquables sur les apps Home Assistant via l’action : notify.mobile_app_
  • En fonction du choix (Oui/Non), activation du mode alarme ou non.
  • En cas de non-réponse en fonction d’un délai, activation du mode alarme.

Je me demandais donc comment mettre en place la fonction délais et les boutons qui activeront l’automation où non.

action: notify.mobile_app_oneplus
data:
  title: Notification test
  message: |
    Ceci est un test
  data:
    actions:
      - action: ALARM
        title: Sound Alarm
      - action: Alarm
        title: Non alarm
enabled: true

Après tu utilise un bloc de construction choisir et tu crée des options selon tes retours dans data.

Salut,

Pour la tempo, c’est facile, un simple trigger avec une durée de valeur

Pour le reste, regarde un peu sur le forum; il doit y avoir des exemples similaires

Pour avoir quelque chose comme cela ?

alias: Test notification Apps avec bouton
description: ""
trigger:
  - event_type: telegram_callback
    platform: event
    event_data:
      data: /maison
  - event_type: telegram_command
    platform: event
    event_data:
      command: /maison
condition: []
action:
  - action: notify.mobile_app_oneplus
    data:
      title: Notification test
      message: |
        Ceci est un test
      data:
        actions:
          - action: ALARM
            title: Sound Alarm
          - action: URI
            title: Open Url
            uri: https://google.com
    enabled: true
  - delay:
      hours: 0
      minutes: 0
      seconds: 30
      milliseconds: 0
mode: single

Mais je ne sais pas comment lancer une automation et ne trouve pas sur la doc.
Loin d’être sur aussi de mon trigger pour la tempo.

Ton trigger c’est quand la zone maison passe a zero.

Après tu envois ta notification avec les actions possibles.

En fonction de ce qui est renvoyé tu fais un multioptions avec option 1 : j’active l’alarme ; option 2 : je ne fait rien ; option 3 : j’ai pas répondu.

On part donc là-dessus :

alias: Test notification Apps avec bouton
description: ""
trigger:
  - platform: device
    device_id: 1336b603037d01a61d6de3e445a6d7f4
    domain: device_tracker
    entity_id: 3c34acff9ef18d3543b58b398a1b2362
    type: leaves
    zone: zone.home
    enabled: false
condition: []
action:
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - action: notify.mobile_app_oneplus
    data:
      title: Notification test
      message: |
        Ceci est un test
      data:
        actions:
          - action: Alarme
            title: Activer l'alarme
          - action: Ne pas activer
            title: Ne pas activer l'alarme
          - action: Nothing
            title: Pas de réponses
    enabled: true
  - choose:
      - conditions: []
        sequence: []
mode: single

Par contre, comment je récupère la valeur sélectionnée ?

Tu dois utiliser le test « si un model est vrai ».

condition: template
value_template: "{{ wait.trigger.event.data.action ==  }}"

Tu as la doc ici :

Regarde l’exemple que je t’ai donné :wink: tu as juste à faire exactement pareil

@Pulpy-Luke
Pour le « timer », on a donc :

alias: Test notification Apps avec bouton
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - zone.home
    for:
      hours: 0
      minutes: 0
      seconds: 5
    below: 1
condition: []
action:
  - action: notify.mobile_app_oneplus
    data:
      title: Notification test
      message: |
        Ceci est un test
      data:
        actions:
          - action: Alarme
            title: Activer l'alarme
          - action: Ne pas activer
            title: Ne pas activer l'alarme
          - action: Nothing
            title: Pas de réponses
    enabled: true
mode: single

@Idaho947 par contre, je ne trouve pas comment récupérer la réponse et la traiter.
J’imagine que c’est dans cette partie, mais je ne vois pas comment l’adapter.

# inside a automation actions or script sequence
- alias: "Set up variables for the actions"
  variables:
    # Including an id in the action allows us to identify this script run
    # and not accidentally trigger for other notification actions
    action_open: "{{ 'OPEN_' ~ context.id }}"
    action_close: "{{ 'CLOSE_' ~ context.id }}"
- alias: "Ask to close or open the blinds"
  action: notify.mobile_app_<your_device>
  data:
    message: "The blinds are half-open. Do you want to adjust this?"
    data:
      actions:
        - action: "{{ action_open }}"
          title: Open
        - action: "{{ action_close }}"
          title: Close
- alias: "Wait for a response"
  wait_for_trigger:
    - platform: event
      event_type: mobile_app_notification_action
      event_data:
        # waiting for the specific action avoids accidentally continuing
        # for another script/automation's notification action
        action: "{{ action_open }}"
    - platform: event
      event_type: mobile_app_notification_action
      event_data:
        action: "{{ action_close }}"
- alias: "Perform the action"
  choose:
    - conditions: "{{ wait.trigger.event.data.action == action_open }}"
      sequence:
        - action: cover.open_cover
          target:
            entity_id: cover.some_cover
    - conditions: "{{ wait.trigger.event.data.action == action_close }}"
      sequence:
        - action: cover.close_cover
          target:
            entity_id: cover.some_cover

5 secondes pour les tests c’est valable, mais dans la vraie vie, c’est surement trop court

La réponse envoyée est a mettre dans « {{ wait.trigger.event.data.action == }} »

Ta notification sur portable lorsqu’elle est séléctionnée renvoi une « action » qui correspond à ce que tu as mis dans la parties :
image

Par exemple si tu cliques sur « Activer l’alarme » cela renvera la data action « Alarme ».

Donc tu attends le trigger .event.data.action « Alarme » pour déclacher l’option de la mise en action de l’alarme.

Attention il y a une subtilité pour géré la non réponse. Tu n’a pas a faire de paragraphe action mais utiliser {{ wait.trigger is none }} et bien activer la coche «  »

Oui le 5s, c’est pour la phase de test, je passerais en 30s ou 1mns pour la prod.

Par contre, je sèche pour la partie wait.trigger.event.data.action.
Je ne vois pas vraiment pas comment l’ajouter à mon code

alias: Test notification Apps avec bouton
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - zone.home
    for:
      hours: 0
      minutes: 0
      seconds: 5
    below: 1
condition: []
action:
  - action: notify.mobile_app_oneplus
    data:
      title: Notification test
      message: |
        Ceci est un test
      data:
        actions:
          - action: Alarme
            title: Activer l'alarme
          - action: Ne pas activer
            title: Ne pas activer l'alarme
          - action: Nothing
            title: Pas de réponses
    enabled: true
  - "[object Object]": null
mode: single

comme je te le dis plus haut c’est un bloc de construction multioption. Chaque option est déclanchée par un template.
Mais tu dois aussi mettre une action attente de trigger avant pour pouvoir recevoir le data.action correspondant.

Comme cela :

alias: Test notification Apps avec bouton
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - zone.home
    for:
      hours: 0
      minutes: 0
      seconds: 5
    below: 1
condition: []
action:
  - action: notify.mobile_app_oneplus
    data:
      title: Notification test
      message: Ceci est un test
      data:
        actions:
          - action: Alarme
            title: Activer l'alarme
          - action: Ne pas activer
            title: Ne pas activer l'alarme
          - action: Nothing
            title: Pas de réponses
    enabled: true
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ wait.trigger.event.data.action == Alarme }}"
        sequence:
          - action: automation.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: automation.frigate_away
mode: single

tu as pas mis le bloc d’attente « wait_for_trigger ».

Je l’ai ajouté, j’avais effectivement oublié. Mais l’action ne s’exécute pas.

alias: Test notification Apps avec bouton
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - zone.home
    for:
      hours: 0
      minutes: 0
      seconds: 30
    below: 0.9
condition: []
action:
  - action: notify.mobile_app_oneplus
    data:
      title: Notification test
      message: Ceci est un test
      data:
        actions:
          - action: alarme
            title: Activer l'alarme
          - action: ne_pas_activer
            title: Ne pas activer l'alarme
          - action: Nothing
            title: Pas de réponses
    enabled: true
  - wait_for_trigger:
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: alarme
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: ne_pas_activer
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ wait.trigger.event.data.action == alarme }}"
        sequence:
          - action: automation.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: automation.frigate_away
mode: single

Tu as quoi dans l’historique d’execution ?


Triggered by the event 'telegram_command' at August 26, 2024 at 3:16:52 PM
Perform action 'Notifications: Send a notification via mobile_app_oneplus'
Wait for 2 triggers
4 seconds later
Choose: No action executed
Finished at August 26, 2024 at 3:16:56 PM (runtime: 4.04 seconds)

Mets ton alarme entre «  » peut-être ?

J’ai tenté avec les «  » et avec un ou deux triggers (dans le doute qu’il n’attente pas d’avoir les deux) mais, j’ai le même résultat :

alias: Test notification Apps avec bouton
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - zone.home
    for:
      hours: 0
      minutes: 0
      seconds: 30
    below: 0.9
condition: []
action:
  - action: notify.mobile_app_oneplus
    data:
      title: Notification test
      message: Ceci est un test
      data:
        actions:
          - action: " alarme "
            title: Activer l'alarme
          - action: " ne_pas_activer "
            title: Ne pas activer l'alarme
    enabled: true
  - wait_for_trigger:
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: " alarme "
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ wait.trigger.event.data.action == alarme }}"
        sequence:
          - action: automation.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: automation.frigate_away
mode: single