Annoncer l’heure en français sur un Google Home Mini avec Home Assistant
Avant de commencer. Faire une sauvegarde complète de Home Assistant avant de modifier quoi que ce soit. La nouvelle automatisation se crée à côté des anciennes, et les anciennes sont seulement désactivées, jamais supprimées.
À quoi ça sert
Ce guide montre comment annoncer l’heure en français, à chaque heure pile, sur une petite enceinte connectée. Une seule automatisation remplace une série d’automatisations faites heure par heure. La phrase est naturelle : « Il est vingt-deux heures. », « Il est minuit. ».

Ce qu’il faut avoir
- Home Assistant (testé en version 2026.9).
- Une enceinte compatible Google Cast, par exemple un Google Home Mini.
- La voix française locale Piper (voir le guide « Faire parler Home Assistant en français »).
Les entités à remplacer
| Dans les blocs | À remplacer par |
|---|---|
media_player.enceinte_bureau | l’enceinte qui doit parler |
tts.piper | le moteur Piper |
automation.ancienne_heure_22h … automation.ancienne_heure_6h | les anciennes annonces, s’il y en a |
tts.google_en_com | le moteur de l’ancienne annonce, s’il y en a une (ici, la synthèse Google en anglais) |
automation.nouveau_bureau_heure | créée à l’étape 4 ; son nom vient de son alias au moment de l’enregistrement |
Les étapes
1. Trouver l’ancienne routine
Avant d’ajouter quoi que ce soit, chercher si une annonce existe déjà. Elle peut vivre dans Home Assistant (Paramètres, Automatisations, chercher « heure ») ou dans l’application Google Home, auquel cas Home Assistant ne la voit pas.
Dans la maison où ce guide a été écrit, la routine était dans Home Assistant : neuf automatisations, une par heure, de 22 h à 6 h, toutes en anglais. Chacune ressemblait à ceci :
- alias: Ancienne annonce de 22 h
description: ''
triggers:
- trigger: time
at: '22:00:00'
conditions: []
actions:
- action: tts.speak
metadata: {}
data:
cache: true
media_player_entity_id: media_player.enceinte_bureau
message: 'It is 22 o''clock '
target:
entity_id: tts.google_en_com
mode: single
id: ancienne_heure_22h
Noter pour chacune l’heure, la condition éventuelle et surtout l’enceinte visée.
2. Vérifier la bonne enceinte
C’est le piège principal. Le nom technique d’une enceinte ne dit pas toujours où elle est.
- Une enceinte peut garder un ancien nom technique après un déménagement. Ici, l’entité dont le nom évoquait le bureau était en réalité l’enceinte du garage.
- Une automatisation peut porter « bureau » dans son nom et parler dans une autre pièce. Ici, l’annonce de midi visait la chambre : elle ne faisait pas partie de la routine du bureau, et elle a été laissée telle quelle.
- La pièce n’est pas toujours renseignée dans Home Assistant.
Ce qui fait foi : le nom de l’appareil dans Paramètres, Appareils et services, et le modèle. En cas de doute, ne rien activer et vérifier sur place.
3. Vérifier le fuseau horaire
Paramètres, Système, Général. L’heure annoncée est l’heure locale de Home Assistant. Au Luxembourg, « Europe/Luxembourg » et « Europe/Paris » suivent les mêmes règles, changements d’heure compris.
4. Créer la nouvelle automatisation
Une seule automatisation, déclenchée à chaque heure pile, avec une condition de plage horaire. La plage reprend exactement celle de l’ancienne routine, sans l’élargir :
- alias: nouveau_bureau_heure
description: Annonce l'heure en français sur l'enceinte du bureau, à chaque heure pile de 22 h à 6 h (plage de l'ancienne routine). Volume jamais modifié. Inerte tant qu'une ancienne annonce est active.
triggers:
- trigger: time_pattern
minutes: '0'
seconds: '0'
conditions:
- condition: template
value_template: '{{ now().hour in [22, 23, 0, 1, 2, 3, 4, 5, 6] }}'
- condition: state
entity_id:
- automation.ancienne_heure_22h
- automation.ancienne_heure_23h
- automation.ancienne_heure_0h
- automation.ancienne_heure_1h
- automation.ancienne_heure_2h
- automation.ancienne_heure_3h
- automation.ancienne_heure_4h
- automation.ancienne_heure_5h
- automation.ancienne_heure_6h
state: 'off'
actions:
- variables:
h: '{{ now().hour }}'
- action: tts.speak
target:
entity_id: tts.piper
data:
media_player_entity_id: media_player.enceinte_bureau
message: '{% set mots = [''minuit'', ''une heure'', ''deux heures'', ''trois heures'', ''quatre heures'', ''cinq heures'', ''six heures'', ''sept heures'', ''huit heures'', ''neuf heures'', ''dix heures'', ''onze heures'', ''midi'', ''treize heures'', ''quatorze heures'', ''quinze heures'', ''seize heures'', ''dix-sept heures'', ''dix-huit heures'', ''dix-neuf heures'', ''vingt heures'', ''vingt et une heures'', ''vingt-deux heures'', ''vingt-trois heures''] %}Il est {{ mots[h | int] }}.'
language: fr_FR
cache: true
options:
voice: fr_FR-tom-medium
mode: single
id: nouveau_bureau_heure_annonce
Le texte est calculé au moment de l’annonce, à partir de l’heure locale. La liste des 24 heures est écrite en toutes lettres : « une heure » au singulier, « midi », « minuit », « vingt et une heures ».
La deuxième condition est une garde : la nouvelle annonce ne parle que si toutes les anciennes sont désactivées. Il ne peut jamais y avoir deux annonces la même heure.
Le volume de l’enceinte n’est jamais modifié : l’annonce part au volume du moment.
5. Désactiver la nouvelle juste après l’enregistrement
Home Assistant l’active à l’enregistrement. La désactiver. Même oubliée, elle reste muette tant que les anciennes sont actives, grâce à la garde.
6. Activer
Dans Outils de développement, Actions :
action: automation.turn_on
target:
entity_id: automation.nouveau_bureau_heure
action: automation.turn_off
target:
entity_id:
- automation.ancienne_heure_22h
- automation.ancienne_heure_23h
- automation.ancienne_heure_0h
- automation.ancienne_heure_1h
- automation.ancienne_heure_2h
- automation.ancienne_heure_3h
- automation.ancienne_heure_4h
- automation.ancienne_heure_5h
- automation.ancienne_heure_6h
Le résultat attendu
À 22 h pile, l’enceinte dit « Il est vingt-deux heures. ». À minuit, « Il est minuit. ». De 7 h à 21 h, elle se tait.
Tester sans risque
Le texte se vérifie sans faire parler l’enceinte. Dans Outils de développement, Modèles, coller le message de l’automatisation précédé de {% set h = 0 %}. Le résultat attendu est « Il est minuit. ». Recommencer pour chaque heure de la plage.
La condition de plage se vérifie de la même façon : {{ 7 in [22, 23, 0, 1, 2, 3, 4, 5, 6] }} doit répondre False.
Pour entendre la phrase sans réveiller la maison : Médias, Synthèse vocale, et l’écouter dans le navigateur.
Si ça ne marche pas
- Rien à l’heure pile. Vérifier que toutes les anciennes annonces sont désactivées : il suffit d’une seule active pour que la garde bloque tout.
- La mauvaise pièce parle. Revoir l’étape 2 : le nom technique trompe.
- L’heure est décalée d’une heure. Revoir le fuseau horaire.
- L’annonce est en anglais. L’automatisation appelle encore l’ancien moteur : vérifier
tts.piperetlanguage: fr_FR.
Revenir en arrière
Réactiver les anciennes annonces, puis désactiver la nouvelle. La nouvelle se tait à l’instant même, grâce à sa garde :
action: automation.turn_on
target:
entity_id:
- automation.ancienne_heure_22h
- automation.ancienne_heure_23h
- automation.ancienne_heure_0h
- automation.ancienne_heure_1h
- automation.ancienne_heure_2h
- automation.ancienne_heure_3h
- automation.ancienne_heure_4h
- automation.ancienne_heure_5h
- automation.ancienne_heure_6h
action: automation.turn_off
target:
entity_id: automation.nouveau_bureau_heure
Ce qui est vérifié en usage réel, et ce qui ne l’est pas
Vérifié : le texte des 9 heures de la plage et la condition sur les 24 heures, rendus par Home Assistant lui-même (33 contrôles, aucun échec) ; le fichier audio de la phrase de 1 h, généré sans être diffusé ; l’activation, avec les anciennes désactivées sans changement de leur contenu.
Pas encore vérifié en usage réel au moment de l’écriture : la première annonce entendue à l’heure pile, prévue la nuit suivant l’activation.
Responsabilité. Ce guide décrit un montage réel, donné à titre d’exemple. Chaque installation est différente. L’adapter, le tester et l’utiliser se fait sous la responsabilité de la personne qui l’installe.