Script d'annonce Google Home

Bonjour,
J’ai 2 Google Home sur lesquelles je fait des annonces en TTS
Je m’embête dans chacune de mes automatisations de faire les enchainement suivant.

  • augmenter le volume des 2 Ghome à 1
  • Parler sur Ghome 1
  • Attendre 3s
  • Parler sur Ghome 2
  • Diminuer le volume des 2 Ghomes à 0.5

Plus malin que tout le monde je me suis dit, bah je vais faire un script qui va me permettre de faire ces actions dans toutes mes automatisations.
C’est pas une mauvaise idée je pense :slight_smile:

Voiçi mon script.

sequence:
  - action: media_player.volume_set
    metadata: {}
    target:
      entity_id:
        - media_player.googlehome5583
        - media_player.googlehome2453
    data:
      volume_level: 1
  - action: tts.speak
    metadata: {}
    target:
      entity_id: tts.google_translate_fr_fr
    data:
      cache: true
      media_player_entity_id: media_player.googlehome5583
  - delay:
      hours: 0
      minutes: 0
      seconds: 3
      milliseconds: 0
  - action: tts.speak
    metadata: {}
    target:
      entity_id: tts.google_translate_fr_fr
    data:
      cache: true
      media_player_entity_id: media_player.googlehome2453
  - action: media_player.volume_set
    metadata: {}
    target:
      entity_id:
        - media_player.googlehome5583
        - media_player.googlehome2453
    data:
      volume_level: 0.5
alias: 2GHOME-PARLE
description: ""

j’ai essayé de le tester dans une automatisation et ca failed :frowning:

alias: ENFANT-COUVERT
description: >-
  Annonce vocale qui dit qui doit mettre le couvert. Vacances, week-end ou
  mercredi : Lisa à midi, Adam le soir. Hors vacances (jours normaux) : Lisa le
  lundi et jeudi, Adam le mardi et vendredi (uniquement le soir).
triggers:
  - at:
      - "12:00:00"
    trigger: time
    id: midi
  - at:
      - "12:55:00"
    trigger: time
    id: midi
  - at:
      - "19:00:00"
    trigger: time
    id: soir
  - at:
      - "19:56:00"
    trigger: time
    id: soir
actions:
  - variables:
      is_vacances: "{{ is_state('sensor.vacances_scolaires_aujourd_hui_zone_a', 'on') }}"
      is_weekend: "{{ now().weekday() in [5, 6] }}"
      is_mercredi: "{{ now().weekday() == 2 }}"
      jour: "{{ now().weekday() }}"
      periode: "{{ trigger.id }}"
      enfant: >
        {% set est_vacances_ou_mercredi_ou_weekend = is_vacances or is_weekend
        or is_mercredi %}

        {% if est_vacances_ou_mercredi_ou_weekend %}
          {# Cas 1 : Vacances, Week-end ou Mercredi : Lisa (midi), Adam (soir) #}
          {% if trigger.id == 'midi' %}
            Lisa
          {% elif trigger.id == 'soir' %}
            Adam
          {% else %}
            aucun
          {% endif %}
        {% else %}
          {# Cas 2 : Jours normaux (Lundi, Mardi, Jeudi, Vendredi) #}
          {% if trigger.id == 'midi' %}
            aucun # Pas d'annonce à midi les jours d'école normaux
          {% elif trigger.id == 'soir' %}
            {# Lundi (0) et Jeudi (3): Lisa | Mardi (1) et Vendredi (4): Adam #}
            {% if jour in [0, 3] %}
              Lisa
            {% elif jour in [1, 4] %}
              Adam
            {% else %}
              aucun
            {% endif %}
          {% else %}
            aucun
          {% endif %}
        {% endif %}
      salutation: |
        {% if trigger.id == 'midi' %}
          Bonjour
        {% else %}
          Bonsoir
        {% endif %}
  - if:
      - condition: template
        value_template: "{{ enfant != 'aucun' }}"
    then:
      - action: media_player.volume_set
        metadata: {}
        target:
          entity_id:
            - media_player.googlehome5583
            - media_player.googlehome2453
        data:
          volume_level: 1
        enabled: false
      - alias: Annonce vocale unique (Lisa ou Adam)
        data:
          cache: true
          media_player_entity_id: media_player.googlehome5583
          message: >-
            {{ salutation }}, ce {{ periode }} {{ enfant }} doit mettre le
            couvert.
        target:
          entity_id: tts.google_translate_fr_fr
        action: tts.speak
        enabled: false
      - action: media_player.volume_set
        metadata: {}
        target:
          entity_id:
            - media_player.googlehome5583
            - media_player.googlehome2453
        data:
          volume_level: 0.5
        enabled: false
      - action: shell_command.smartled_msg
        data:
          message: "{{ enfant }} doit mettre le couvert."
          intensity: 0
          speed: 60
          static: 0
      - action: script.2ghome_parle
        metadata: {}
        data: {}
        response_variable: >-
          {{ salutation }}, ce {{ periode }} {{ enfant }} doit mettre le
          couvert.
mode: single

Si ça peut t’aider j’ai un script supervison avec volume normal

La condition binary_sensor.jour_nuit est optionnelle je ne veux pas d’annonce la nuit

script Supervision

`alias: 02 TTS Supervision
sequence:

  • if:
    • condition: state
      entity_id: binary_sensor.jour_nuit
      state: « on »
      then:
    • data:
      volume_level: 0.4
      action: media_player.volume_set
      target:
      entity_id: media_player.salon
    • action: media_player.play_media
      target:
      entity_id: media_player.salon
      data:
      media:
      media_content_id: >-
      media-source://tts/tts.google_translate_fr_ca?message={{message}}&language=fr-ca
      media_content_type: provider
      metadata:
      title: « {{message}} »
      thumbnail: https://brands.home-assistant.io/_/tts/logo.png
      media_class: app
      children_media_class: null
      navigateIds:
      - {}
      - media_content_type: app
      media_content_id: media-source://tts
      - media_content_type: provider
      media_content_id: >-
      media-source://tts/tts.google_translate_fr_ca?message={{message}}&language=fr-ca
      mode: single
      fields:
      message:
      selector:
      text: null
      name: message
      description: message tts
      description: «  »
      `

et un script pour des annonces alerte avec un volume plus fort

Script Attention

`alias: 02 TTS Attention
sequence:

  • if:
    • condition: state
      entity_id: binary_sensor.jour_nuit
      state: « on »
      then:
    • data:
      volume_level: 0.7
      action: media_player.volume_set
      target:
      entity_id: media_player.salon
    • action: media_player.play_media
      target:
      entity_id: media_player.salon
      data:
      media:
      media_content_id: >-
      media-source://tts/tts.google_translate_fr_ca?message={{message}}&language=fr-ca
      media_content_type: provider
      metadata:
      title: « {{message}} »
      thumbnail: https://brands.home-assistant.io/_/tts/logo.png
      media_class: app
      children_media_class: null
      navigateIds:
      - {}
      - media_content_type: app
      media_content_id: media-source://tts
      - media_content_type: provider
      media_content_id: >-
      media-source://tts/tts.google_translate_fr_ca?message={{message}}&language=fr-ca
      mode: single
      fields:
      message:
      selector:
      text: null
      name: message
      description: message tts
      `

Salut

  • 1er point lire et essayer de comprendre le message en rouge.
  • 2ème point adapter le script (passage de paramètres), il y a des exemples sur le forum.
  • 3ème point vérifier si 3s c’est assez long pour que tous les messages soient terminés avant de redescendre le volume

Hello,

Tu as jeté un oeil à l’article et au topic sur le diffuseur contextuel? une fois mis en place tu l’appelles avec tout ce que tu veux :wink: [Article] Notifications dynamiques en fonction de la pièce occupée

cdt

Merci.
J’ai modifier le script avec des champs fields

alias: 2GHOME-PARLE
description: Annonce vocale sur deux Google Home avec message paramétrable
mode: queued
fields:
  message:
    name: Message à annoncer
    description: Texte qui sera lu par les Google Home
    example: Attention, une coupure réseau est en cours
    required: true
    selector:
      text: null
  volume:
    name: Volume temporaire
    description: Volume utilisé pendant l'annonce
    example: 1
    default: 1
    selector:
      number:
        min: 0
        max: 1
        step: 0.1
sequence:
  - target:
      entity_id:
        - media_player.googlehome5583
        - media_player.googlehome2453
    data:
      volume_level: "{{ volume }}"
    action: media_player.volume_set
  - target:
      entity_id: tts.google_translate_fr_fr
    data:
      message: "{{ message }}"
      cache: true
      media_player_entity_id: media_player.googlehome5583
    action: tts.speak
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - target:
      entity_id: tts.google_translate_fr_fr
    data:
      message: "{{ message }}"
      cache: true
      media_player_entity_id: media_player.googlehome2453
    action: tts.speak
  - target:
      entity_id:
        - media_player.googlehome5583
        - media_player.googlehome2453
    data:
      volume_level: 0.5
    action: media_player.volume_set

Ce sujet a été automatiquement fermé après 60 jours. Aucune réponse n’est permise dorénavant.