Premier article d'une série sur « Maison », le tableau de bord domestique qui tourne chez moi depuis fin septembre. Celui-ci présente l'ensemble : le point de départ, les choix de fond, ce que la maison sait faire aujourd'hui et ce que ce mois m'a appris. Les articles suivants prendront chaque fonction une par une.
À retenir
- Maison est une application web servie par Home Assistant lui-même, affichée sur une tablette murale et sur un petit écran carré dans l'entrée. Rien ne sort de la box, aucun service tiers n'héberge quoi que ce soit.
- Elle a été écrite en un mois en dialoguant avec Claude Code, à raison de soirées et de week-ends : un peu plus de 80 commits entre le 4 et le 19 octobre, après deux semaines de prototype, et environ 24 000 lignes de TypeScript au final.
- Trois choix structurent tout le reste : Home Assistant comme unique passerelle vers l'extérieur (courses, transports, colis, école, actualités), les listes To-do locales comme base de données partagée entre les écrans, et des écrans qui se mettent à jour seuls.
- La maison fait maintenant beaucoup plus que la lumière et le chauffage : courses à trois enseignes avec comparateur de prix, menus de la semaine, devoirs, agenda, énergie au coût réel, réseau, colis, poubelles, résumés du matin et du soir rédigés par une IA.
- Ce que l'agent ne fait jamais : saisir mes identifiants, valider un panier, toucher un réglage de sécurité. Tout le reste, il l'a fait, et vite.
1. Le point de départ : une domotique pour bricoleur
Ma maison tourne sous Home Assistant depuis des années, sur un boîtier Home Assistant Green. Des lampes Philips Hue partout, un réseau Zigbee2MQTT, l'électroménager Bosch Home Connect, deux Bosch Twinguard qui détectent la fumée et mesurent l'air, un compteur Linky lu par un add-on, une Freebox, et un thermostat Bosch dont j'ai déjà raconté l'intégration. Le tout orchestré par un bon paquet d'automatisations.
Le problème n'était pas technique. Le problème, c'est que tout cela n'était utilisable que par moi, et seulement quand j'avais mon téléphone en main. Les tableaux de bord de Home Assistant sont pensés pour celui qui les construit : ils parlent d'entités, de capteurs, d'états. La domotique restait un hobby de salon pendant que les vraies questions du quotidien, qu'est-ce qu'on mange, est-ce qu'il faut un parapluie, à quelle heure passe le métro, qu'est-ce qu'il y a à faire ce soir, se réglaient au téléphone, application par application.
L'idée de Maison tenait en une phrase : un écran qu'on utilise sans savoir ce qu'est une entité. Au mur, dans la cuisine, et dans l'entrée. Avec des pièces, pas des capteurs. Avec des listes, pas des YAML.
2. Les choix de fond
Une application servie par Home Assistant
Maison est une application web classique, écrite en ReactJS et TypeScript avec Vite. Elle n'est hébergée nulle part ailleurs que dans le dossier www de Home Assistant, qui la sert comme un fichier statique. Les écrans l'ouvrent comme une application installée, en plein écran, et elle parle à Home Assistant par la même connexion WebSocket que l'interface officielle.
Ce choix a une conséquence que j'ai mesurée dès la première semaine : Home Assistant sert ces fichiers avec un cache d'un mois. Les tablettes gardaient donc l'ancienne version après chaque déploiement. La solution tient en quelques lignes : chaque build produit un petit fichier de version, l'application le relit au démarrage, quand l'écran se réveille et toutes les dix minutes, et se recharge une fois quand il change. Depuis, déployer, c'est copier un dossier. Les écrans suivent seuls.
Home Assistant comme seule porte vers l'extérieur
C'est le principe qui a le plus structuré le projet. Maison a besoin de données qui ne vivent pas dans la maison : le catalogue et les commandes de La Belle Vie, les horaires d'Île-de-France Mobilités, le suivi des colis chez 17TRACK, les devoirs sur l'espace numérique de travail ONE, les flux d'actualités, les vacances scolaires. Plutôt que de laisser l'application appeler ces services depuis le navigateur, avec des clés exposées et des problèmes d'origine croisée à chaque fois, tout passe par Home Assistant.
Le mécanisme est toujours le même : une commande REST déclarée côté Home Assistant, avec la clé stockée dans ses secrets, enveloppée dans un script qui renvoie la réponse. L'application appelle le script et récupère le résultat. Les clés ne quittent jamais le boîtier, l'application ne connaît aucun secret, et si je change d'enseigne ou de fournisseur, je change une commande REST, pas l'application.
Pour La Belle Vie, le relais va plus loin : un serveur MCP open source, écrit à l'origine pour brancher l'enseigne à un assistant IA, tourne comme add-on local sur le boîtier. Home Assistant lui parle en JSON-RPC, et Maison dispose du catalogue, du panier, des commandes passées et des créneaux de livraison. Le comparateur de prix interroge en plus Carrefour et Chronodrive par deux autres serveurs MCP.
J'ai appris une règle à la dure : une commande REST qui référence un secret absent empêche le rechargement de toutes les autres. Un soir, un seul secret manquant a rendu muets les transports, les colis et les courses en même temps. Depuis, l'ordre est strict : le secret d'abord, la commande ensuite.
Les listes To-do comme base de données partagée
Deux écrans, bientôt trois, doivent voir la même chose : la liste de courses, le menu de la semaine, les anniversaires à souhaiter, les travaux à faire dans l'appartement, les mots laissés d'un écran à l'autre. Je n'avais aucune envie d'ajouter une base de données.
Home Assistant propose des listes To-do locales, synchronisées en temps réel sur tous les clients connectés. Maison les détourne en tables : chaque élément est un enregistrement, son titre est le libellé, sa description contient un petit JSON avec le reste. La liste de courses porte le prix et le code-barres de chaque produit, le menu porte le repas et la date, les travaux portent le budget et le statut. Et toute nouvelle liste créée dans Home Assistant, par exemple depuis l'application mobile ou par la voix, apparaît aussitôt sur les écrans sans toucher au code.
Une configuration de présentation, pas d'inventaire
Dernier choix, moins visible : l'application ne contient aucune liste d'appareils. Les pièces, les lampes, les thermostats, les capteurs viennent des registres de Home Assistant. Ajouter une lampe dans une pièce côté Home Assistant suffit pour qu'elle apparaisse sur l'écran. Le fichier de configuration de Maison ne contient que des réglages de présentation : l'ordre des pièces, les heures des résumés, les lignes de transport qui m'intéressent.
3. Ce que la maison fait aujourd'hui
L'accueil de la tablette montre d'abord les pièces, puis des tuiles rangées par famille d'usages. Voici le tour, dans l'ordre où on les rencontre.
Les pièces
Salon, cuisine, ma chambre, celle du n°1, celle du n°2, salle de bain, entrée. Chaque pièce affiche ses lampes, ses scènes, sa température, son chauffage, et les appareils qui s'y trouvent. Le thermostat se règle depuis la carte de la pièce. Les appareils Bosch ont leur propre écran : programmes, options, départ différé, et des réglages types partagés entre les écrans, par exemple « lessive de sport » ou « vaisselle éco », qu'on lance d'un geste.
Un mode nuit suit le soleil et attend que la lampe de l'entrée soit éteinte avant de passer la tablette en sombre. L'écran s'atténue après une minute sans contact. Rien de spectaculaire, mais c'est ce qui fait qu'un écran allumé en permanence dans une pièce à vivre ne dérange personne.
Cuisine et courses
C'est la partie qui a le plus grossi, et celle qui a le plus changé mes habitudes. La liste de courses est partagée entre les écrans, avec un scanner de codes-barres qui utilise la caméra de la tablette et interroge Open Food Facts. Chaque produit affiche le prix chez La Belle Vie, où je me fais livrer, et, quand le code-barres est identique, celui de Carrefour et de Chronodrive. Le moins cher passe en premier. Une fiche produit montre l'historique de prix, le rythme d'achat sur douze mois, les valeurs nutritionnelles et les allergènes.
Le menu de la semaine se construit autour des bons plans du moment chez La Belle Vie, dates courtes et promotions, et débouche sur la liste de courses. Un écran recette propose les plats des sept prochains jours et fait rédiger par Claude la recette du plat choisi, avec des minuteurs de cuisine partagés entre les écrans. Un bilan nutrition compare le panier aux objectifs que je me suis fixés et suggère des remplaçants.
Les livraisons reçues sont pointées article par article, ce qui alimente une estimation des stocks de lessive, d'adoucissant et de pastilles. Quand le lave-linge Bosch consomme sa dernière dose, le produit s'ajoute tout seul à la liste de courses. Je raconterai tout cela en détail dans un article à part, parce que l'intégration de La Belle Vie est une histoire en soi.
Famille
L'agenda lit mes calendriers Google. Les devoirs viennent de l'espace numérique de travail ONE, grâce à une intégration communautaire que j'ai dû compléter pour obtenir une semaine de devoirs par cahier de textes, et on peut en ajouter à la main. Les anniversaires à souhaiter remontent dans le résumé du matin. Les mots entre écrans servent de tableau de messages : « le colis est dans le placard » s'affiche dans l'entrée jusqu'à ce qu'on l'efface.
La maison elle-même
L'écran énergie affiche la consommation de la veille appareil par appareil, les cycles de l'électroménager Bosch, le ballon d'eau chaude et le chauffage, avec le coût réel, abonnement compris, calculé à partir des tarifs heures pleines et heures creuses de mon contrat, et une lecture de la journée rédigée par Claude. Pour les lampes, qui ne mesurent rien, l'intégration Powercalc estime la puissance par modèle.
L'écran réseau s'appuie sur la Freebox : appareils connectés par réseau Wi-Fi, accès invité par QR code valable quelques heures, pause d'Internet sur un appareil choisi, et trafic de chaque appareil tenu par le boîtier avec des alertes sur un nouvel appareil ou un pic de nuit. Un audit en lecture seule m'a d'ailleurs fait corriger deux réglages de la box que je n'avais jamais regardés.
Viennent ensuite la santé des appareils et le journal de la maison, le suivi des détecteurs de fuite, le carnet d'entretien, et les travaux de l'appartement avec budget et statut, repris d'une vieille liste que je traînais depuis des mois.
Dehors
Les transports affichent l'état de mes deux lignes de métro et les prochains départs des stations autour de la maison, via les API d'Île-de-France Mobilités, plus les stations Vélib' à proximité. Les colis sont suivis chez 17TRACK à partir de leur numéro, scanné ou saisi, tous transporteurs confondus. Les poubelles rappellent le bac à sortir la veille au soir, les vacances scolaires et jours fériés colorent l'agenda, et un écran actualités regroupe des flux RSS locaux, nationaux et internationaux.
Les résumés du matin et du soir
C'est la fonction que j'utilise le plus. Chaque matin en semaine, l'écran affiche un résumé rédigé par Claude à partir de ce que Home Assistant sait : la météo et la nécessité d'un parapluie, les prochains métros, l'agenda du jour, les devoirs, les anniversaires, les colis attendus. Le soir, un second résumé prépare le lendemain. Le texte est généré à partir de données structurées, par Claude pour les résumés, les recettes et les conseils, par Mistral pour proposer un nom de plat à partir des produits placés sur un repas.
Depuis mi-octobre, je peux aussi parler à la tablette : une instruction dictée au micro est transcrite puis traitée par Claude, pour ajouter un produit, caler un menu ou poser une question. Et un bouton Photo fait lire un courrier, une liste ou un devoir à la caméra et demande à Claude ce qu'il faut en faire.
Le mode télé
Dernière arrivée : la même application s'affiche sur le téléviseur du salon, en une seule page 1920 × 1080, avec un focus visible à trois mètres et une navigation aux flèches de la télécommande. Et depuis fin octobre, un cadre photo numérique détourné de sa fonction l'affiche dans l'entrée. Ce détournement mérite son propre article.
4. Trois mécanismes racontés de près
Le relais Home Assistant, cas concret des transports
Les horaires de transport d'Île-de-France Mobilités sont accessibles par la plateforme PRIM, avec une clé personnelle et un quota journalier. Maison ne la contacte jamais directement. Une commande REST côté Home Assistant porte la clé, un script l'enveloppe, et l'application l'appelle avec les identifiants de ligne et de station. La tuile d'accueil interroge l'état des lignes toutes les cinq minutes, l'écran détaillé interroge les départs toutes les minutes tant qu'il est ouvert. Le quota tient, la clé ne sort pas du boîtier, et le jour où l'API change, je modifie une commande.
Le même schéma sert au suivi des colis, aux vacances scolaires, aux flux RSS, aux appels à l'IA et à la quasi-totalité des fonctions « dehors ». La seule exception est le réseau : l'API de la Freebox demande une signature que les commandes REST ne savent pas produire, donc un petit script Python tourne sur le boîtier, appelé par Home Assistant, et réutilise le jeton de l'intégration Freebox officielle.
La liste To-do détournée, cas concret des travaux
La liste des travaux de l'appartement existait déjà, dans un outil de prise de notes, à l'état de fin mars. Elle est devenue une liste To-do locale dont chaque élément porte, en description, un JSON avec la pièce, le statut, la priorité, le budget et un lien. L'écran Travaux la lit et l'écrit. Résultat : la même liste est modifiable depuis la tablette, depuis l'application mobile de Home Assistant dans sa forme simple, et par l'IA quand je lui demande d'ajouter un chantier. Aucune base, aucune API, aucun compte.
Le mode télé, cas concret de la navigation
Faire tenir un tableau de bord conçu pour le toucher sur un téléviseur piloté à la télécommande a demandé trois choses : une grille qui tient en 1080 pixels de haut sans défilement, un anneau de focus assez gros pour être vu du canapé, et une règle de déplacement du focus qui choisit l'élément le plus proche dans la direction de la flèche, en ignorant les bandeaux. La touche Retour suit l'historique de navigation de l'application. C'est le genre de travail que je n'aurais jamais fait seul un dimanche après-midi ; avec un agent qui écrit, teste et corrige en boucle, il a pris une soirée.
5. Ce que ce mois m'a appris sur le travail avec un agent
Tout le code a été écrit en dialoguant avec Claude Code, le plus souvent le soir. Je décris ce que je veux voir sur l'écran, l'agent lit les registres de Home Assistant, écrit le composant, le déploie, vérifie le rendu par une capture, et corrige. Quelques constats, dans le prolongement de ce que j'écrivais sur les agents dans l'équipe.
Le rythme change la nature des décisions. Quand une fonction coûte une soirée au lieu d'un mois, on arrête de prioriser et on essaie. Plusieurs écrans de Maison n'auraient jamais passé le filtre d'un « est-ce que ça vaut le coup » ; ils existent parce que les essayer coûtait moins cher que d'en débattre. Certains ont été retirés depuis, et c'est très bien.
La vérification visuelle est non négociable. L'agent a accès à un aperçu de l'application avec une connexion simulée, hors de Home Assistant, et à des captures des vrais écrans. Sans cela, une tuile qui déborde ou un texte coupé sur l'écran carré passerait inaperçu jusqu'au lendemain matin. Les bugs les plus coûteux de ce mois étaient tous visibles à l'œil nu et invisibles dans le code.
Les règles s'écrivent après la première erreur. Le fichier d'instructions du projet s'est rempli au fil des incidents : ne jamais écrire une commande REST avant que le secret existe, ne jamais déployer depuis le dépôt sans vérifier que la version en ligne n'est pas plus récente, resynchroniser la copie des YAML après chaque modification sur le boîtier. Chaque ligne est une soirée perdue qui ne le sera plus.
Il y a des choses qu'on ne confie pas. L'agent ne saisit aucun identifiant, ne valide aucun panier, n'ajoute aucun dépôt d'extension et ne change aucun réglage de sécurité. Ces actions sont faites par moi, dans les interfaces prévues pour. Ce n'est pas de la méfiance envers l'outil, c'est la même règle de gouvernance que je défends en entreprise : le mandat d'un agent s'arrête là où commence une conséquence irréversible ou un secret.
L'outillage compte autant que le modèle. Une bonne partie du confort vient de connecteurs : le serveur MCP de Home Assistant pour lire les entités et appeler les services, celui de La Belle Vie pour les courses, l'accès SSH au boîtier pour déployer. Sans eux, Claude écrirait du code à l'aveugle. Avec eux, il travaille sur la vraie maison.
6. Ce qui reste, et pourquoi ce n'est pas un produit
Il reste une liste. Des modes présent et absent unifiés avec le chauffage, des alertes sur les pics de consommation, un diaporama de photos quand l'écran de l'entrée ne sert pas, une gestion des plantes. Il reste aussi des fragilités assumées : le comparateur de prix Carrefour passe par un relais sur mon PC, qui doit donc être allumé ; l'intégration ONE repose sur un fork que je maintiens en attendant que mes modifications soient reprises.
Et non, Maison ne deviendra pas un produit. L'application est cousue sur ma maison : mes pièces, mes enseignes, mes lignes de métro, mes appareils. C'est précisément ce qui la rend utile et ce qui la rend intransmissible. Ce que je peux transmettre, ce sont les mécanismes, et c'est l'objet de la suite.
La suite de la série
Les prochains articles prendront chaque fonction séparément, avec le code et les pièges :
- Les devoirs des enfants : lire l'espace numérique de travail ONE depuis Home Assistant, et ce qu'il a fallu ajouter à l'intégration pour avoir une semaine de devoirs par cahier de textes.
- Les courses : La Belle Vie branchée à Home Assistant par un serveur MCP hébergé sur le boîtier, le comparateur de prix avec Carrefour et Chronodrive, les menus et la nutrition.
- Le pilotage du chauffage : remplacer un planificateur disparu par des automatisations natives, les modes télétravail, invités et enfant malade, et la page qui montre les consignes de la journée.
- Le W100 : les panneaux Aqara W100 de température et d'humidité, un convertisseur à compléter pour Zigbee2MQTT, et la météo envoyée aux panneaux sans saturer le réseau.
- Compléter le capteur du thermostat Bosch : la suite logique de mon article sur le BTH-RM, avec une sonde déportée et ce qui se passe quand la radio décroche.
- Le cadre photo détourné : comment un cadre Frameo à 50 euros est devenu l'écran de l'entrée, en suivant le travail de Wes Bos.
Et probablement d'autres, au gré de ce que la maison réclame.


