Lancer une automatisation dans une automatisation

Bonjour a tous je me lance dans HA, j’ai décidé de quitter Jeedom

Mon problème

Comment envoyer des paramètres depuis une action déclencher une automatisation ?
Je m’explique :
J’ai créé une automatisation qui est déclenché par la fin du cycle de nettoyage de mon aspirateur, et je voudrais envoyer une notification. Mais dans certaine condition que j’ai déjà créé dans une autre automatisation.
Et je voudrais donc lancer cette automatisation et lui passer des paramètres comme un message,l’origine de la notification etc…

Le code de mon action :

service: automation.trigger
target:
  entity_id:
    - automation.centre_de_notification
data:
  notificationqui: MOBILE_JULIEN
  notificationtitre: Aspirateur
  notificationmessage: Laspirateur a terminé son cycle de nettoyage.

j’ai vu que data: n’était pas la bonne méthode ni metadata:
et je ne sais pas non plus comment récupérer dans l’autre automatisation.

Merci pour votre aide, j’ai pas trouvé dans la doc, si jamais vous avez un lien je suis preneur aussi

Bonjour @Guelfes
Franchement je ne vois pas d’option pour passer des datas d’une automatisation à une autre,(input_text peut être) je sais que factoriser le code est une bonne chose mais dupliquer quelques lignes de code pour ne pas se prendre la tête est parfois bénéfique :hugs: même si :
Les détails font la perfection, et la perfection n’est pas un détail.
Léonard de Vinci

1 « J'aime »

Hello,

Regarde du côté des event : Event - Home Assistant

en gros tu déclenche un event dans ton automatisation 1, que tu écoutes dans ton automatisation 2

1 « J'aime »

A mon avis tu mélanges plusieurs notions comme automatisation et script par exemple.

  • Une automatisations c’est:

    • un ou plusieurs trigger (déclencheur) qui vont démarrer l’automatisations.
    • une ou plusieurs conditions qui, si elles ne sont pas respectées, vont arrêter l’automatisation.
    • une suite d’actions à réaliser si les deux elements au dessus ont marché.
      Une automatisation est (comme son nom l’indique) automatique…
  • Un script c’est une suite d’action à réaliser. (dans laquelle on peut passer des paramètres). Que l’on peut appeler dans l’interface (appui bouton par exemple) ou dans une automatisation, ou depuis les outils de développement.
    Un script ne s’execute que si quelque chose l’appelle.

Il y a plusieurs façon de « passer des paramètres » entre automatisation et scripts:

  • utiliser des « helpers » c’est à dire se définir manuellement des entités qui seront accessibles: des bouléens, des nombres, des textes, des compteurs etc (input_boolean, input_number, input_text …) ainsi si tu les modifies dans une automatisation, ils seront aussi disponibles dans une autre jusqu’à la prochaine modif. Un exemple, j’ai une automatisation qui compte le brossage de dents des pitchouns (augmente de 1 un compteur), une qui remet le compteur à zero a minuit et une troisième qui notifie à 20h si le bon nombre de lavage n’a pas été réalisé. L’avantage du helper est qu’il est accessible « en dehors » des automatisations, pour un affichage dashboard par exemple.

  • utiliser un script en lui passant des paramètres (variables, au travers de field => voir la doc officielle) Ainsi tu peux définir par exemple une suite d’action « générique » et l’appeler dans plusieurs automatisations différentes en mettant en variables les elements pertinents dans ton automatisation. Pratique quand on veut se définir une action personnalisée qu’on va utiliser à plusieurs endroit dans sa domotique (dashboard, automatisations, scripts, etc…)

  • utiliser les event pour déclencher d’autres automatisations depuis une automatisation.

De ce à quoi ressemble ton code on dirais que tu cherches à faire un script de notification auquel tu passerai en variable la cible, le titre et le message. Regarde donc la doc du 2eme bullet ci dessus…

1 « J'aime »

Pour compléter mon message, je pense que tu as un exemple ici qui fait exactement ce que tu veux : Custom Events in Home Assistant | skalavala

Sinon sur l’automatisation centre_de_notification, ajouter un trigger qui va être le déclenchement de l’automatisation « déclenché par la fin du cycle de nettoyage de mon aspirateur ». Ajouter un id sur ce trigger, qui sera utilisé en tant que condition dans les actions pour définir les variables etc…
ça rejoint l’idée de @titoumimi mais en utilisant l’event suivant : Events - Home Assistant

Pour donner un exemple, j’ai 2 automatisations :

  • l’une, se déclenche en cas d’absence selon 1 seul trigger
  • l’autre, concerne mon aspirateur robot qui doit se déclencher également en cas d’absence mais aussi sur d’autres déclencheurs qui n’ont rien avoir avec les déclencheurs de la première.

Plutôt que de ré écrire le même trigger de ma première automatisation dans ma seconde, j’ai fais le choix d’utiliser l’event cité juste avant automation_triggered et automatiquement la seconde automatisation se déclenche juste après la première

Voilà le code pour l’exemple juste avant:

- id: "018ebcc3-cc0d"
  alias: "Absent"
  trigger:
    - platform: state
      entity_id: zone.home
      to: "0"
      for:
        minutes: 2
        seconds: 30

- id: "018eba75-9555"
  alias: "Lancement de l'aspirateur Robot"
  trigger:
    - platform: time
      at: sensor.roborock_random
    - platform: event
      event_type: automation_triggered
      event_data:
        entity_id: automation.absent
    - platform: state
      entity_id: binary_sensor.go_to_clean
      from: "off"
      to: "on"
3 « J'aime »

Merci a Tous pour vos retours, en effet après la bonne lecture que vous m’avez donné.
J’ai donc déclenché un script depuis mon automatisation et lui envoi les champs requis.

1 « J'aime »

N’hésite pas à poster ta solution finale, ça aidera le prochain qui rencontrera le même problème que toi :slight_smile:

1 « J'aime »

Bonjour, je suis exactement dans la même problématique que @Guelfes :

Créer un système, script, automation, ou autre, qui reçoit en paramètre ou via des variables les éléments suivants :
quelle personne ou groupe (qui)
un titre
le contenu du message (quoi)
une éventuelle question ask (bouton pour répondre)

Je « maitrise » ces items via Telegram grace au tuto suivant :
https://www.hacf.fr/ha_integration_telegram

@Guelfes pourrais-tu partager ton script, et expliquer comment tu l’appelles dans tes automations, pour la communauté (et pour moi même :stuck_out_tongue: ) s’il te plait ?

Bonjour Mophete,

Comment j’ai procédé, j’ai d’abord créé un Script que j’ai nommé « centre de notification », que j’appel dans chaque automatisation ou j’ai besoin d’envoyer une notification :

Voci mon script

alias: centre de notification
sequence:
  - alias: Action TAB01
    if:
      - condition: template
        value_template: "{{'TAB01' in notificationqui }}"
    then:
      - metadata: {}
        data:
          title: "{{ notificationtitre }}"
          message: "{{ notificationmessage }}"
          data:
            color: "{{ notificationcolor }}"
        action: notify.mobile
  - if:
      - condition: and
        conditions:
          - condition: device
            device_id: 6fe81a8c603a593
            domain: media_player
            entity_id: b9bd04440
            type: is_on
          - condition: template
            value_template: " {{'TV-SALON' in notificationqui }}"
    then:
      - metadata: {}
        data:
          title: "{{ notificationtitre }}"
          message: "{{ notificationmessage }}"
        action: notify.tv_salon
    alias: Action TV-SALON
  - alias: Action MOBILE-JULIEN
    if:
      - condition: template
        value_template: " {{'MOBILE-JULIEN' in notificationqui }}"
    then:
      - metadata: {}
        data:
          title: "{{ notificationtitre }}"
          message: "{{ notificationmessage }}"
          data:
            color: "{{ notificationcolor }}"
            channel: "{{ notificationchannel }}"
            vibrationPattern: >
              {%- if notificationchannel == "alarme" -%} "100, 1000, 100, 1000,
              100, 100, 1000, 100, 1000, 100, 100, 1000, 100, 1000, 100, 100,
              1000, 100, 1000, 100"  {%- endif %}
            image: "{{ notificationimage }}"
            actions:
              - action: "{{ notificationaction1action }}"
                title: "{{ notificationaction1title }}"
                uri: "{{ notificationaction1uri }}"
              - action: "{{ notificationaction2 }}"
                title: "{{ notificationaction2 }}"
                uri: "{{ notificationuri2 }}"
              - action: "{{ notificationaction3 }}"
                title: "{{ notificationaction3 }}"
                uri: "{{ notificationuri3 }}"
              - action: "{{ notificationaction4 }}"
                title: "{{ notificationaction4 }}"
                uri: "{{ notificationuri4 }}"
        action: notify.mobile
      - metadata: {}
        data:
          title: "{{ notificationtitre }}"
          message: "{{ notificationmessage }}"
          data:
            color: "{{ notificationcolor }}"
        action: notify.notification_html5
      - data:
          entity_id: input_text.historique_texte
          name: MOBILE JULIEN
          message: >
            Titre : " {{ notificationtitre }} "

            Message : " {{ notificationmessage }} "

            Actions : " {{ notificationaction1 }} {{ notificationaction2 }} {{
            notificationaction3 }} {{ notificationaction4 }}"

            Couleur : " {{ notificationcolor }} "
        action: logbook.log
  - alias: Action MOBILE-AUTRE
    if:
      - condition: template
        value_template: " {{'MOBILE-AUTRE' in notificationqui }}"
    then:
      - metadata: {}
        data:
          title: "{{ notificationtitre }}"
          message: "{{ notificationmessage }}"
          data:
            color: "{{ notificationcolor }}"
            channel: "{{ notificationchannel }}"
            vibrationPattern: >
              {%- if notificationchannel == "alarme" -%} "100, 1000, 100, 1000,
              100, 100, 1000, 100, 1000, 100, 100, 1000, 100, 1000, 100, 100,
              1000, 100, 1000, 100"  {%- endif %}
            actions:
              - action: "{{ notificationaction1action }}"
                title: "{{ notificationaction1title }}"
                uri: "{{ notificationaction1uri }}"
              - action: "{{ notificationaction2 }}"
                title: "{{ notificationaction2 }}"
              - action: "{{ notificationaction3 }}"
                title: "{{ notificationaction3 }}"
              - action: "{{ notificationaction4 }}"
                title: "{{ notificationaction4 }}"
        action: notify.mobile
    enabled: true
  - alias: Action MAIL-JULIEN
    if:
      - condition: template
        value_template: " {{'MAIL-JULIEN' in notificationqui }}"
    then:
      - metadata: {}
        data:
          target: xxx@gmail.com
          title: "{{  notificationtitre }}"
          message: "{{ notificationmessage }}"
          data:
            html: "{{ notificationmessage }}"
            images:
              - /media/Images/home-assistant-wordmark-color-on-light.png
        action: notify.notification_mail_famille
  - alias: Action MAIL-AUTRE
    if:
      - condition: template
        value_template: " {{'MAIL-AUTRE' in notificationqui }}"
    then:
      - metadata: {}
        data:
          target: xxx@gmail.com
          title: "{{  notificationtitre }}"
          message: "{{ notificationmessage }}"
          data:
            html: "{{ notificationmessage }}"
        action: notify.notification_mail_famille
  - alias: Action HP-ENTREE
    if:
      - condition: template
        value_template: " {{'HP-ENTREE' in notificationqui }}"
    then:
      - metadata: {}
        data: {}
        target:
          entity_id: media_player.vlc_telnet
        action: media_player.media_stop
      - metadata:
          title: "{{ notificationmessage }}"
          thumbnail: null
          media_class: music
          children_media_class: null
          navigateIds:
            - {}
            - media_content_type: app
              media_content_id: media-source://media_source
            - media_content_type: ""
              media_content_id: media-source://media_source/local/Audios
        data:
          media_content_id: media-source://media_source/local/Audios/{{ notificationmessage }}
          media_content_type: audio/mpeg
        target:
          entity_id: media_player.vlc_telnet
        action: media_player.play_media
  - alias: Action HP-TEXTE
    if:
      - condition: template
        value_template: " {{'HP-TEXTE' in notificationqui }}"
    then:
      - metadata: {}
        data:
          cache: true
          media_player_entity_id: media_player.vlc_telnet
          message: "{{ notificationmessage }}"
          language: fr
        target:
          entity_id: tts.google_en_com
        enabled: false
        action: tts.speak
      - metadata: {}
        data:
          cache: false
          entity_id: media_player.vlc_telnet
          message: "{{ notificationmessage }}"
        action: tts.picotts_say
  - alias: Action TEAMS
    if:
      - condition: template
        value_template: " {{'TEAMS' in notificationqui }}"
    then:
      - action: notify.msteamshomeevjapp
        metadata: {}
        data:
          message: "{{ notificationmessage }}"
          title: "{{ notificationtitre }}"
  - alias: Action TEAMS Alarme
    if:
      - condition: template
        value_template: " {{'TEAMS-Alarme' in notificationqui }}"
    then:
      - action: notify.msteamshomeevjappalarme
        metadata: {}
        data:
          message: "{{ notificationmessage }}"
          title: "{{ notificationtitre }}"
fields:
  notificationqui:
    selector:
      select:
        options:
          - MOBILE-JULIEN
          - MOBILE-AUTRE
          - TAB01
          - TV-SALON
          - HP-TEXTE
          - MAIL-AUTRE
          - MAIL-JULIEN
        multiple: true
    name: notificationqui
    required: true
  notificationmessage:
    selector:
      text: null
    name: notificationmessage
    required: true
  notificationtitre:
    selector:
      text: null
    name: notificationtitre
    default: Infos
    required: false
  notificationcolor:
    selector:
      text: null
    name: notificationcolor
    default: blue
  notificationchannel:
    selector:
      text: null
    name: notificationchannel
    default: General
  notificationaction1:
    selector:
      text: null
    name: notificationaction1
  notificationaction2:
    selector:
      text: null
    name: notificationaction2
  notificationaction3:
    selector:
      text: null
    name: notificationaction3
  notificationaction4:
    selector:
      text: null
    name: notificationaction4
  notificationuri1:
    selector:
      text: null
    name: notificationuri1
  notificationuri2:
    selector:
      text: null
    name: notificationuri2
  notificationuri3:
    selector:
      text: null
    name: notificationuri3
  notificationuri4:
    selector:
      text: null
    name: notificationuri4
  notificationimage:
    selector:
      text: null
    name: notificationimage
mode: parallel
icon: mdi:bell-cog-outline
max: 10

Et voici ce je met quand je dois appeler ce script dans mon automatisation :

metadata: {}
data:
  variables:
    notificationqui:
      - MOBILE-JULIEN
      - TAB01
      - MOBILE-AUTRE
      - TV-SALON
    notificationtitre: Aspirateur
    notificationmessage: >-
      L'aspirateur a terminé son cylce de nettoyage, {{
      states("sensor.robot_aspirateur_current_clean_area") | round(1) }} m²
      nettoyé en {{ (states("sensor.robot_aspirateur_current_clean_duration") |
      int / 60 ) | round(1) }} min.
    notificationcolor: green
target:
  entity_id: script.centre_de_notification
enabled: true
action: script.turn_on

Aussi si besoin un fichier audio :

J’espère que j’ai pu t’aider, si tu as besoin d’autres exemple fait moi signe.
Cdt
Julien

3 « J'aime »

Très intéressant !

Ca vaudrait le coup que tu expliques un peu comment est organisé ton script car il y a l’air d’y avoir plein de bonnes idées dedans !

Ravi que tu sois arrivé à un tel résultat.
:+1:

1 « J'aime »