Ajouter et diffuser un message sur une enceinte Google Cast

Nous allons voir dans cet article comment se servir de nos enceintes connectées pour diffuser des messages sur toutes les enceintes ou sur une seul.

Vous pourrez y diffuser des alertes des messages de bienvenue ou tout autres choses.

Prérequis, matériels nécessaires & utilisés :

Ajouter une enceinte.

L’avantage des enceinte compatible Google Cast est quelles sont automatiquement détectées.

Dans configuration, intégrations vous devriez voir ceci. Cliquez sur configurer puis soumettre.

  • Google Cast Discovery Home Assistant

Intégration automatique Google Cast Home Assistant.

Il vous affiche la liste des enceintes compatibles découvertes. Sélectionner une pièce pour chacune d’elle puis TERMINER.

Installer une synthèse vocale.

Si vous souhaitez faire parler vos enceintes, il va falloir ajouter une synthèse vocale à notre Home Assistant. Nous allons installer celle de Google mais il y en a d’autres .

Dans configuration.yaml Ajouter ceci.

tts:
  - platform: google_translate
    language: 'fr'

Vérifier configuration.yaml puis redémarrer Home Assistant.

Diffuser un message Audio

Pour tester notre ajout, il y a trois manières.

Sur la carte Lovelace de votre enceinte. (il faudra l’ajouter).

Démarrer votre enceinte puis cliquer sur les ... ensuite il ne vous reste qu’a saisir un texte et appuyer sur lecture.

Via le création d’un script. Je vous mets la version graphique et la version script.yaml.

Cet exemple vous permettra de les intégrer dans vos scripts et automatisations.

Version script.yaml.

'1590524359903':
  alias: essaie tts
  sequence:
  - data:
      volume_level: 0.3
    entity_id: media_player.salle_a_manger
    service: media_player.volume_set
  - data:
      language: fr
      message: bonjour la temperature est de 19°
    data_template:
      entity_id: media_player.salle_a_manger
    service: tts.google_translate_say

Ensuite il faudra aller recharger les scripts dans configuration, contrôle du serveur.

Un petit bonus. Faites diffuser la température d’un de vos capteurs.

'1590524359903':
  alias: essaie tts
  sequence:
  - data:
      volume_level: 0.3
    entity_id: media_player.salle_a_manger
    service: media_player.volume_set
  - data:
      language: fr
    data_template:
      entity_id: all
      message: la temperature des WC est de {{states('sensor.environnement_wc_temperature')}}.
    service: tts.google_translate_say

Conclusion.

Vous avez maintenant de quoi diffuser des messages sur vos enceintes. Cela peut être très utile pour des alertes, souhaiter la bienvenue, une alarme etc. A vous de jouer maintenant.

Trucs & astuces.

  • Vide

To do :

  • RAS

Mise à jour : (détails)

  • 26/05/2020 : V1 Création de l’article @McFly

Sources.

3 J'aime

Super
Maintenant quand quelqu’un arrive chez moi, le google home lui souhaite la bienvenue :wink:

Merci @McFly pour ce tuto :+1:, cela m’a permis de dicter des indications de sensor T° et imprimante :wink:
Il a fallu que je rajoute une ligne supplémentaire pour que cela fonctionne :
base_url: https://xxxxxx.duckdns.org:8123

Ok c’est sûrement pour cela que c ne marche plus chez moi.

Merci pour l’infos

1 J'aime

Hello

bizarre mais quand je passe par la carte mon Google prononce en anglais alors que j’ai bien mis fr dans mon fichier de configuration…

Tu peux partager ta configuration ?

Bonjour,

Pour ma part ça ne fonctionne pas ni par l’UI ni pas le script

Quand je passe par l’ui, je fais ça
G1
G2

Ce qui donne le YAML suivant

alias: essaie tts
sequence:
  - data:
      volume_level: 0.6
    entity_id: media_player.salon
    service: media_player.volume_set
  - service: tts.google_translate_say
    data:
      message: test test test
mode: single

Avec pour message d’erreur : required key not provided @data[entity.id]

et si je copie le YAML que tu partages, quand je l’exécute :

  • le son se paramètre bien
  • Le « tilt » (de Google home avant qu’il parle) retentit bien mais aucun message ne sort
  • la modif UI donne ça

Voilà, je suis preneur d’un peu d’aide.

Merci à vous

Essaie comme ceci :

alias: essaie tts
sequence:
  - data:
      volume_level: 0.6
    entity_id: media_player.salon
    service: media_player.volume_set
  - service: tts.google_translate_say
    data:
      message: test test test
    entity_id: media_player.salon
mode: single

Hello,

toujours le même problème :

  • le son de met au bon niveau
  • le tilt a eu lieu (une seule fois )
  • Google ne dit rien

sur mon app google home, l’enceinte se met bien en mode cast mais rien.

alias: essaie tts 3
sequence:
  - data:
      volume_level: 0.6
    entity_id: media_player.salon
    service: media_player.volume_set
  - service: tts.google_translate_say
    data:
      message: Bonjour
    entity_id: media_player.salon
mode: single

Et que dit le log de HA ?

Comme tu entends le bip, tout se passe bien sauf l’envoi du mp3 casté j’ai l’impression.

As tu ajouter le repertoire tts à la liste des dossiers autorisés pour l’envoi de fichiers ?

homeassistant:
  allowlist_external_dirs:
    - /home/homeassistant/.homeassistant/tts

pour ma configuration HA core

Sinon, faut changer le dossier utiliser pour le cache.

Et comme ca:

alias: essaie tts 3
sequence:
  - data:
      volume_level: 0.6
    entity_id: media_player.salon
    service: media_player.volume_set
  - service: tts.google_translate_say
    data:
      message: Bonjour
      entity_id: media_player.salon
mode: single

avec une tabulation en plus !

1 J'aime

@jpub
J’ai supprimé ton message contenant le log car il contenait effectivement des informations privées.

Cependant, tu as bien un problème d’accès (voir message plus haut) en plus du problème repéré pzr @oncleben31

hello,

alors je n’ai jamais autorisé ça effectivement, je vais m’y pencher

pour les logs (et cette fois-ci anonymisés)

2020-11-14 19:10:25 ERROR (Thread-11) [homeassistant.components.cast.media_player] Failed to cast media https://xxxx.duckdns.org:8123/api/tts_proxy/f30ecbf5b1cbfsdfdf85c631fdec0b39678550973cfcbc_fr_-_google_translate.mp3 from external_url (https://xxxx.duckdns.org:8123). Please make sure the URL is: Reachable from the cast device and either a publicly resolvable hostname or an IP address

2020-11-14 19:10:27 ERROR (Thread-11) [homeassistant.components.cast.media_player] Failed to cast media https://xxxx.duckdns.org:8123/api/tts_proxy/a1b90f679bbd7e3877bazozpzpb4f3047bb5b08de7c775_fr_-_google_translate.mp3 from external_url (https://xxxx.duckdns.org:8123). Please make sure the URL is: Reachable from the cast device and either a publicly resolvable hostname or an IP address

2020-11-14 19:10:28 ERROR (Thread-11) [homeassistant.components.cast.media_player] Failed to cast media https://xxxx.duckdns.org:8123/api/tts_proxy/a1b90f679bbd7e387ozozzz7bab4f3047bb5b08de7c775_fr_-_google_translate.mp3 from external_url (https://xxxx.duckdns.org:8123). Please make sure the URL is: Reachable from the cast device and either a publicly resolvable hostname or an IP address

2020-11-14 19:10:29 ERROR (Thread-11) [homeassistant.components.cast.media_player] Failed to cast media https://xxxx.duckdns.org:8123/api/tts_proxy/f30ecbf5b1cb85c631fdejdjdjjc0b39678550973cfcbc_fr_-_google_translate.mp3 from external_url (https://xxxx.duckdns.org:8123). Please make sure the URL is: Reachable from the cast device and either a publicly resolvable hostname or an IP address

2020-11-14 19:10:32 ERROR (Thread-11) [homeassistant.components.cast.media_player] Failed to cast media https://xxxx.duckdns.org:8123/api/tts_proxy/f30ecbf5b1cb85c631fdjdjjdjec0b39678550973cfcbc_fr_-_google_translate.mp3 from external_url (https://xxxx.duckdns.org:8123). Please make sure the URL is: Reachable from the cast device and either a publicly resolvable hostname or an IP address

oui merci, je l’ai fait aussi, dsl c’est tout moi ça lol

Ça semble être le problème que je t’ai indiqué plus haut

1 J'aime

Je regarde de suite,

en revanche pour la dernière solution pour le moment même comportement, je vous dit quand j’ai autorisé l’accès et si ça marche

Tu avais bien un problème de tabulation, c’était présent dans le log supprimé.

Il ne reste maintenant que le problème d’autorisation.

1 J'aime

Bon

alors pour la 1ère méthode, j’ai ajouté ça à mon Configuration.YAML

homeassistant:
  allowlist_external_dirs:
    - /config/tts

il ne se passe rien, Google refuse de parler

Pour la solution 2 pas mieux…

je pense que la solution est par là

GOOGLE CAST DEVICES

The Google cast devices (Google Home, Chromecast, etc.) present the following problems:

  • They reject self-signed certificates.
  • They do not work with URLs that contain hostnames established by local naming means. Let’s say your Home Assistant instance is running on a machine made known locally as ha. All your machines on your local network are able to access it as ha. However, try as you may, your cast device won’t download the media files from your ha machine. That’s because your cast device ignores your local naming setup. In this example, the say service creates a URL like http://ha/path/to/media.mp3 (or https://... if you are using SSL). If you are not using SSL then setting a internal URL that contains the IP address of your server works around this issue. By using an IP address, the cast device does not have to resolve the hostname.
  • If you are using an SSL (e.g., https://yourhost.example.org/...) then you must use the hostname in the certificate (e.g., base_url: https://yourhost.example.org). You cannot use an IP address since the certificate won’t be valid for the IP address, and the cast device will refuse the connection.

mais je ne la trouve pas

Quand tu reprends ton log et que tu récupère les adresse de cast :

Et que tu l’a mets dans ton navigateur, est-ce que ça marche ?

Prends bien la dernière information de ton log pour avoir la dernière adresse valide.

Alors non ça ne marche pas mais si je remplace https://xxxx.duckdns.org par l’adresse ip:8123 , ça marche …