Schéma : ligne du temps de 22 h à 6 h, avec une annonce de l'heure à chaque heure pile.
| | | | | |

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. ».

Schéma : ligne du temps de 22 h à 6 h, avec une annonce de l'heure à chaque heure pile.

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_bureaul’enceinte qui doit parler
tts.piperle moteur Piper
automation.ancienne_heure_22h … automation.ancienne_heure_6hles anciennes annonces, s’il y en a
tts.google_en_comle moteur de l’ancienne annonce, s’il y en a une (ici, la synthèse Google en anglais)
automation.nouveau_bureau_heurecréé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.piper et language: 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.

À lire aussi