Automatiser la rotation des pages du Magic Mirror

Après avoir conçu mes trois vues dans Home Assistant (horloge/météo, organisation familiale, suivi bien-être), il me manquait une pièce maîtresse pour rendre l’expérience fluide et immersive : la rotation automatique entre les pages.

L’objectif : ne jamais toucher l’écran. Le tableau de bord change seul, à intervalles réguliers, comme un carrousel d’informations, adapté à un usage mural, passif, mais toujours pertinent.

Dans cet article, je vous explique comment j’ai mis en place cette rotation automatique — sans module tiers ni JavaScript complexe, uniquement avec les outils de base de Home Assistant.

Préambule

L’article ici présent met en place une version simplifiée de la rotation que j’ai réellement mis en place sur mon Magic Mirror. En effet, sur mon Raspberry Pi d’affichage, j’utilise des services Linux pour faire tourner les onglets Chromium sur l’écran sans intervention humaine. J’ai voulu écrire un article un peu plus accessible pour les personnes n’ayant pas l’habitude des lignes de commandes…

Pourquoi automatiser la rotation ?

Le Magic Mirror n’est pas un écran interactif tactile : c’est un support d’affichage passif. Il doit :

  • afficher un contenu pertinent à tout moment de la journée,
  • changer de vue sans intervention humaine,
  • revenir à une page par défaut au besoin.

Cette logique de "carrousel" permet :

  • de diffuser plus d’informations sans surcharger une seule vue,
  • d’adapter l’information au moment (par exemple, l’agenda le matin, les températures l’après-midi),
  • de renforcer la sensation de fluidité et d’élégance.

Méthode retenue : automation + navigate service

1. Pré-requis

  • Avoir un tableau de bord dédié dans Home Assistant (ex : magicmirror).
  • Avoir défini chaque vue (page) avec un chemin (path) clair :
    • page-1 pour l’heure/météo
    • page-2 pour les calendriers
    • page-3 pour le confort ambiant

2. Utilisation du service navigate

Home Assistant permet de naviguer vers une autre vue via le service :

service: browser_mod.navigate
data:
  path: /lovelace/magicmirror/page-2
  browser_id: magic_mirror_kiosk

🔸 Le browser_id est essentiel. Il identifie l’écran concerné (le Raspberry Pi du Magic Mirror). Il est fourni par l’intégration browser_mod.

3. Créer une automatisation de rotation

Voici une automatisation complète qui fait tourner les vues toutes les 30 secondes :

alias: Rotation Magic Mirror
trigger:
  - platform: time_pattern
    seconds: "/30"
variables:
  pages:
    - /lovelace/magicmirror/page-1
    - /lovelace/magicmirror/page-2
    - /lovelace/magicmirror/page-3
  current_page: >
    {{ state_attr('sensor.magicmirror_current_page', 'path') or '/lovelace/magicmirror/page-1' }}
  next_index: >
    {% set index = pages.index(current_page) %}
    {% if index + 1 >= pages | length %}
      0
    {% else %}
      index + 1
    {% endif %}
  next_page: >
    {{ pages[next_index] }}
action:
  - service: browser_mod.navigate
    data:
      path: "{{ next_page }}"
      browser_id: magic_mirror_kiosk
mode: single

Cette version :

  • détecte la page actuelle (avec un sensor personnalisé ou une intégration comme kiosk-mode),
  • calcule l’index suivant,
  • utilise le service browser_mod.navigate pour changer de vue.

🛠️ Astuce : tu peux aussi créer plusieurs automatisations distinctes (une par page) si tu préfères une logique plus simple et séquencée.

Et côté Raspberry Pi ?

Ton Raspberry Pi (afficheur Magic Mirror) doit lancer Home Assistant en plein écran dans Chromium, avec un identifiant reconnu par browser_mod.

Exemple de lancement via chromium-kiosk.service :

chromium-browser --kiosk --noerrdialogs --disable-infobars --start-fullscreen http://homeassistant.local:8123/lovelace/magicmirror/page-1

Et dans la configuration browser_mod (configuration.yaml) :

browser_mod:
  devices:
    magic_mirror_kiosk:
      name: Magic Mirror

Résultat : un Magic Mirror vraiment magique

Grâce à cette rotation automatisée :

  • les vues s’enchaînent sans interruption,
  • l’écran est toujours à jour,
  • les enfants n’ont rien à manipuler.

On passe ainsi d’un affichage figé à un dashboard vivant, contextuel et toujours utile.

En bonus : rotation intelligente

Tu peux aller plus loin :

  • afficher une page selon l’heure (matin = agenda, soir = températures),
  • afficher une page selon la présence ou l’ouverture d’une porte,
  • suspendre la rotation si un mode "invité" est activé.

Mais ça… on en reparlera potentiellement dans un article bonus 😏

 
Environnement de développement
VSCode
Catégorie
Domotique, Home Assistant, MagicMirror
Statut
Personnel