Automatisation Interaction avec votre smartphone

Bj

je vous partage une automatisation interactive qui va affiché un popup sur votre votre téléphone en cas d’absence .

Pour commence crée un binary_sensor du style:


  - platform: template 
    sensors:

      presence_domicile:
        unique_id: presence_domicile_tracker
        friendly_name: " Présence Domicile Tracker "
        value_template: >-
          {{is_state('device_tracker.phone_XXXX', 'home') or is_state('device_tracker.phone_XXXX', 'home')}}

Ensuite aller dans automatisation et collé ceci ( pensé a modifier les jours semaine si besoin, les devices

pour mes chauffages quand tout le monde est absent

alias: "[ INTERACTION ] Les chauffages sont restés allumés"
description: ""
trigger:
  - platform: state
    entity_id:
      - binary_sensor.home_presence
    from: "on"
    to: "off"
condition:
  - condition: and
    conditions:
      - condition: time
        weekday:
          - mon
          - tue
          - wed
          - thu
          - fri
          - sat
          - sun
        alias: Est-ce un jour de semaine ?
      - condition: or
        conditions:
          - condition: state
            entity_id: climate.thermostat_chambre
            state: heat
          - condition: state
            entity_id: climate.thermostat_cuisine
            state: heat
          - condition: state
            entity_id: climate.thermostat_salle_de_bain
            state: heat
          - condition: state
            entity_id: climate.thermostat_salon
            state: ""
        alias: Les chauffages sont-ils allumés ?
action:
  - alias: Définir des variables pour les actions
    variables:
      action_no: "{{ 'NO_' ~ context.id }}"
      action_turnoff: "{{ 'TURNOFF_' ~ context.id }}"
  - alias: Notify Mobile
    service: notify.mobile_app_XXXXXXX
    data:
      message: Les chauffages sont toujours allumées. Éteindre ?
      data:
        actions:
          - action: "{{ action_turnoff }}"
            title: Éteindre les chauffages
          - action: "{{ action_no }}"
            title: Laisser Allumé
    enabled: false
  - alias: Notify Mobile
    service: notify.mobile_app_XXXXXXX
    data:
      message: Les chauffages sont toujours allumées. Éteindre ?
      data:
        actions:
          - action: "{{ action_turnoff }}"
            title: Éteindre les chauffages
          - action: "{{ action_no }}"
            title: Laisser Allumé
  - alias: Attendre la réponse
    wait_for_trigger:
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: "{{ action_no }}"
        context:
          user_id:
            - 543e2d3b33644370ba8216600c3c965e
            - 065aee2fc9284c4e9d463c1b04e8659a
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: "{{ action_turnoff }}"
        context:
          user_id:
            - 543e2d3b33644370ba8216600c3c965e
            - 065aee2fc9284c4e9d463c1b04e8659a
  - alias: Exécuter l'action
    choose:
      - conditions: "{{ wait.trigger.event.data.action == action_no }}"
        sequence: []
      - conditions: "{{ wait.trigger.event.data.action == action_turnoff }}"
        sequence:
          - service: climate.turn_off
            data: {}
            target:
              entity_id:
                - climate.thermostat_chambre
                - climate.thermostat_cuisine
                - climate.thermostat_salle_de_bain
                - climate.thermostat_salon
mode: single

Donc en cas d’absence de la famille , HA envoi ceci sur votre smartphone

1 « J'aime »

Un second pour la lumières
Qui est lui fonction avec le levé du soleil

C’est ta dire que quand le soleil se lève et que HA voit une lumière allumé il vous prévient

alias: "[ INTERACTION ] Les lumières du salon sont restées allumées"
description: ""
trigger:
  - platform: sun
    event: sunrise
    offset: 0
condition:
  - condition: and
    conditions:
      - condition: time
        weekday:
          - mon
          - tue
          - wed
          - thu
          - fri
          - sat
          - sun
        alias: Est-ce un jour de semaine ?
      - condition: or
        conditions:
          - condition: state
            entity_id: light.lumiere_salon_gauche
            state: "on"
          - condition: state
            entity_id: light.lumiere_salon_centre
            state: "on"
          - condition: state
            entity_id: light.lumiere_salon_droit
            state: "on"
          - condition: state
            entity_id: light.lumiere_lampadaire
            state: "on"
        alias: Les lumières du salon sont-elles allumées ?
action:
  - alias: Définir des variables pour les actions
    variables:
      action_no: "{{ 'NO_' ~ context.id }}"
      action_turnoff: "{{ 'TURNOFF_' ~ context.id }}"
  - alias: Notify Mobile
    service: notify.mobile_app_XXXXXXXXX
    data:
      message: Les lumières du salon sont toujours allumées. Éteindre ?
      data:
        actions:
          - action: "{{ action_turnoff }}"
            title: Éteindre les lumières
          - action: "{{ action_no }}"
            title: Laisser Allumé
  - alias: Notify Mobile
    service: notify.mobile_app_XXXXXXX
    data:
      message: Les lumières du salon sont toujours allumées. Éteindre ?
      data:
        actions:
          - action: "{{ action_turnoff }}"
            title: Éteindre les lumières
          - action: "{{ action_no }}"
            title: Laisser Allumé
  - alias: Attendre la réponse
    wait_for_trigger:
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: "{{ action_no }}"
        context:
          user_id:
            - 543e2d3b33644370ba8216600c3c965e
            - 065aee2fc9284c4e9d463c1b04e8659a
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: "{{ action_turnoff }}"
        context:
          user_id:
            - 543e2d3b33644370ba8216600c3c965e
            - 065aee2fc9284c4e9d463c1b04e8659a
  - alias: Exécuter l'action
    choose:
      - conditions: "{{ wait.trigger.event.data.action == action_no }}"
        sequence: []
      - conditions: "{{ wait.trigger.event.data.action == action_turnoff }}"
        sequence:
          - service: light.turn_off
            data: {}
            target:
              entity_id:
                - light.lumiere_palier
                - light.lumiere_entree
                - light.lumiere_cuisine
                - light.lumiere_hotte
                - light.lumiere_evier
                - light.lumiere_salon_centre
                - light.lumiere_salon_droit
                - light.lumiere_salon_gauche
                - light.lumiere_lampadaire
                - light.lumiere_toilette
                - light.lumiere_chevet_gauche
                - light.lumiere_chambre
                - light.lumiere_chevet_droit
                - light.lumiere_salle_de_bain
                - light.mirroir
mode: single

2 « J'aime »

Salut

Tu n’es pas obligé de créer un binary_sensor, tu peux utiliser l’entité native « zone.home » qui te donne le nombre de personnes présente.
Donc si zone.home = 0 => il n’y a plus personne.

1 « J'aime »

Je sais
chacun fait a sa sauce pour ce qui du/des déclencheurs

j’ai plusieurs automation qui fonctionne avec un binary d’autre avec zone avec le leve et couché du soleil …

J’ai juste donné une base pour les nouveaux venu pour qui comprenne un peu comment cela fonctionne

:slight_smile:

Je cherche également a créer une notification pour activer un scénario lorsque je quitte le domicile.
Comment toujours, je n’arrive à rien car je ne comprend pas les différentes lignes de code que je trouve dans les docs’ officielles ni dans les vidéos.

Voici ce que je renseigne :

Et voici le résultat sur mon téléphone :

aucun bouton…

Dans data tu dois juste mettre un identifiant que tu inventes pour action. ex :

actions:
  - action: activer_protect
    title : "Activer protection"

Ensuite tu crée une nouvelle automatisation pour récupérer cette infos (ou un nouveau déclencheur) . Le déclencheur/trigger est Événement manuel. Tu peux le configurer dans l’interface.

  • Type d’événement : mobile_app_notification_action
  • Données de l’événement : action: activer_protect
  • Tu peux aussi limiter à une personne (celui qui va cliquer sur la notif) ou pas.

En YAML ça donne un truc comme ça :

platform: event
event_type: mobile_app_notification_action
event_data:
  action: activer_protect
context:
  user_id:
    - XXXXXXXXXXXXXX

Ensuite tu met la ou les actions à faire dans la suite de l’automatisation.

je suis largué… je dois créer une 2ème automatisation qui surveille la première ?
Là j’avoue c’est bien trop complexe pour mon niveau.

Pas forcement, tu peux aussi rajouter un déclencheur Événement manuel dans ton automatisation actuelle.

En gros quand quelqu’un clique sur une action de notification, c’est comme si un capteur remontais l’info dans Home Assistant. Donc pour utiliser cette info, il faut la surveiller/attendre avec un déclencheur/trigger.

Une solution simple mais pas vraiment recommandée est j’ajouter une action Attendre un déclencheur (wait_for_trigger). En déclencheur tu met un Evènement manuel (event), avec comme type d’évènement mobile_app_notification_action, et comme données action: activer_protect (la meme action que tu a mis dans data de ta notification. N’oublie pas de mettre un délai (timeout).
En image :