Syntaxe fichier yaml

Mon problème

Bonjour à tous,

Je tourne en rond depuis plusieurs jours.
Je voudrais diffuser un message vocal sur ma nest qui m informerait de l’etat de plusieurs portes .

Exemple: si mon portail et ma porte de garage sot ouvertes, je voudrais entendre :
« portail, porte de garage ouverte »
et si il n’y a que le portail:
« portail ouvert »

voici ce que j ai fait mais qui ne fonctionne pas

sequence:
  - service: tts.google_translate_say
    data:
      cache: false
      entity_id: media_player.nest
      message: >-
        {% if binary_sensor.capteur_porte_garage_fermee_contact = on %} 
        Garage. 
        {% endif %}
        {% if binary_sensor.capteur_portail_ferme_n_contact = on %} 
        Portail
        {% endif %}
        {% if binary_sensor.capteur_porte_atelier_contact = on %} 
        Atelier. 
        {% endif %}

Ma configuration


[center]

System Information

version core-2024.4.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.1.73-haos-raspi
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.34.0
Stage running
Available Repositories 1401
Downloaded Repositories 8
HACS Data ok
Home Assistant Cloud
logged_in true
subscription_expiration 4 mai 2024 à 02:00
relayer_connected true
relayer_region eu-central-1
remote_enabled false
remote_connected false
alexa_enabled true
google_enabled true
remote_server eu-central-1-18.ui.nabu.casa
certificate_status ready
instance_id 922112ff862e406c9e9d77e9a3abefa8
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 12.2
update_channel stable
supervisor_version supervisor-2024.04.0
agent_version 1.6.0
docker_version 25.0.5
disk_total 28.3 GB
disk_used 8.2 GB
healthy true
supported true
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Z-Wave JS (0.4.5), Advanced SSH & Web Terminal (17.2.0), Studio Code Server (5.15.0), Zigbee2MQTT (1.36.1-1), Samba share (12.3.1), go2rtc (1.8.5), openWakeWord (1.10.0), Whisper (2.0.0), Piper (1.5.0)
Dashboards
dashboards 10
resources 3
views 13
mode storage
Recorder
oldest_recorder_run 7 avril 2024 à 20:44
current_recorder_run 16 avril 2024 à 14:41
estimated_db_size 360.71 MiB
database_engine sqlite
database_version 3.44.2
[/center]

Bonjour @Marco91390
Pourrais-tu mettre en forme ton code avec la balise de l’éditeur et préciser où tu as mis ce code :
image

Cdt
Bob

desolé je n avais pas fait attention.
voilà c’est fait

Bonjour,
pour le TTS , c’est le service tts.speak qu’il faut utiliser. tts.google_translate_say c’est un ancien service.
Faut configurer le TTS, qui va te créer une entité

service: tts.speak
data:
  media_player_entity_id: media_player.nest_mini
  message: blablabla
target:
  entity_id: tts.google_fr_fr

pour le message, fait comme telle:

      message: >-
        {% if states('binary_sensor.capteur_porte_garage_fermee_contact') == 'on' %} 
        Garage
        {% endif %}
        {% if states('binary_sensor.capteur_portail_ferme_n_contact') == 'on' %} 
        Portail 
        {% endif %}
        {% if states('binary_sensor.capteur_porte_atelier_contact') == 'on' %} 
        Atelier 
        {% endif %}

Merci, j ai mis en place ce service. mais, …
Peux tu me dire comment regler le volume et la syntaxe que j utilise pour faire un message est elle idéale?

Pour le volume ta des services pour. Faut d’abord changer le volume, puis faire l’annonce de tom message. Pour faire un truc propre, remettre le volume initial a la fin de l’annonce.

exemple:

service: media_player.volume_set
target:
  entity_id: media_player.nest_mini
data:
  volume_level: 0.5

c’est basique, faudrais améliorer.

Bonjour,

Après un peu de travail, voici le résultat de mon code .
Merci pour l’aide
Marc

  - service: media_player.volume_set
    target:
      entity_id: media_player.salon_2
    data:
      volume_level: '{{ state_attr(''media_player.salon_2'', ''volume_level'') + 0.2 }}'
    enabled: true
  - service: tts.google_translate_say
    data:
      entity_id: media_player.salon_2
      message:
         "{% set message_complet = \"\" %} 
          {% set tag = 0 %} 
          {% set mess = {\n  \"garage\": \"la porte du garage\",\n  \"portail\": \"le portail\",\n
               \ \"atelier\": \"la porte de l'atelier\" } \n%}
         {% if is_state(\"binary_sensor.capteur_porte_garage_fermee_contact\",\"on\")  -%} 
         {% set tag =  1 %} 
         {% set tag2 =  \"f\" %} 
         {% set message_complet =  mess.garage ~ ', ' %} 
         {% endif %}
         {% if is_state(\"binary_sensor.capteur_portail_ferme_n_contact\",\"on\")  -%} 
         {% set tag =  tag + 1 %} 
         {% set tag2 =  \"m\" %} 
         {% set message_complet = message_complet ~ mess.portail%} 
         {% endif %}  
         {% if is_state(\"binary_sensor.capteur_porte_atelier_contact\",\"on\")  -%} 
         {% set tag = tag + 1 %}  
         {% set tag2 =  \"f\" %}  
         {% set message_complet = message_complet ~ mess.atelier%}  
         {% endif %}  
         {% if tag == 0 -%}  Les portes sont toutes fermées  
         {% elif tag == 1 -%}  
         {% if tag2 == \"f\" -%}  
         {{ message_complet }} est ouverte.  
         {% else %}  
        {{ message_complet }} est ouvert.  
        {% endif %}
        {% elif tag == 2 -%}  
        {{ message_complet }} sont ouverts.  
        {% elif tag == 3 -%}  {{ message_complet }} sont ouverts.  
        {% endif %}"
        language: fr
  - service: media_player.volume_set
    target:
      entity_id: media_player.salon_2
    data:
      volume_level: '{{ state_attr(''media_player.salon_2'', ''volume_level'') - 0.2 }}'
    enabled: true

Et tu es resté sur la syntaxe « tts.google_translate_say » plutôt que " tts.speak" !

Bob

1 « J'aime »

Je lui déja dit en plus, que le service a changer. De plus ta une note dans la DOC.

Ben oui, il ne t’écoute pas @Marco91390 :upside_down_face:
Bob

Sis si je l ai écoute mais j ai envoyé une version intermédiaire
J envoie la dernière version ce soir

Voici le code définitif avec le bon service pour éviter que [WarC0zes] me creve les yeux :wink:

      - variables:
          volume: '{{ state_attr("media_player.salon_2", "volume_level") }}'
      - service: media_player.volume_set
        target:
          entity_id: media_player.salon_2
        data:
          volume_level: 0.7
        enabled: true
      - service: tts.speak
        data:
          media_player_entity_id: media_player.salon_2
          language: fr
          entity_id: media_player.salon_2
          message: "{% set message_complet = \"\" %}  {% set tag = 0 %}  {% set mess
            = {\n  \"garage\": \"la porte du garage\",\n  \"portail\": \"le portail\",\n
            \ \"atelier\": \"la porte de l'atelier\" } \n%}  {% if is_state(\"binary_sensor.capteur_porte_garage_fermee_contact\",\"on\")
            -%} {% set tag =  1 %} {% set tag2 =  \"f\" %} {% set message_complet
            =  mess.garage ~ ', ' %}  {% endif %}  {% if is_state(\"binary_sensor.capteur_portail_ferme_n_contact\",\"on\")
            -%}  {% set tag =  tag + 1 %}  {% set tag2 =  \"m\" %}  {% set message_complet
            = message_complet ~ mess.portail%}  {% endif %}  {% if is_state(\"binary_sensor.capteur_porte_atelier_contact\",\"on\")
            -%}  {% set tag = tag + 1 %}  {% set tag2 =  \"f\" %}  {% set message_complet
            = message_complet ~ mess.atelier%}  {% endif %}  {% if tag == 0 -%}  Les
            portes sont toutes fermées  {% elif tag == 1 -%}  {% if tag2 == \"f\"
            -%}  {{ message_complet }} est ouverte.  {% else %}  {{ message_complet
            }} est ouvert.  {% endif %}  {% elif tag == 2 -%}  {{ message_complet
            }} sont ouverts.  {% elif tag == 3 -%}  {{ message_complet }} sont ouverts.
            \ {% endif %}"
        target:
          entity_id: tts.google_en_com
      - service: notify.mobile_app_iphone_de_marc
        metadata: {}
        data:
          title: Alarme
          message: Alarme en mode nuit
      - service: media_player.volume_set
        target:
          entity_id: media_player.salon_2
        data:
          volume_level: '{{ volume }}'
        enabled: true

pourquoi ta mis des \ devant les " ?
ca fonctionne sans \. Utilise des ' au lieu de " , ca fonctionne aussi.

C’est lorsque je j ai fait copier/coller que le \ ont été intégrés.
Dans mon code ils n y sont pas.

1 « J'aime »