Skip to main content
PythonFlaskAPI RESTE-INKRaspberry Pi

Un tableau de bord e-ink pour la maison, quand la domotique rencontre le papier électronique

2024

Vue d'ensemble du dashboard E-ink

Le dashboard en situation réelle

TL;DR : Dashboard E-ink

Le projet :Un écran e-ink accroché dans le couloir qui affiche météo, agenda, capteurs et trains sans aucune interaction.

La Stack :Python, Flask, API REST, Raspberry Pi Zero W, impression 3D.

Le défi :Découpler le rendu e-ink (plusieurs secondes) du serveur web via une file d'attente asynchrone pour garder l'interface fluide.

Le résultat :Tourne en autonomie totale depuis deux ans. Utilisé tous les jours.

Un écran accroché dans le couloir. Pas de LED, pas de scroll. Juste l'essentiel, météo, agenda, capteurs, trains, affiché sur du e-ink comme sur du papier. De l'idée au produit fini, boîtier 3D compris.

01.Le problème

Ça part toujours d'un truc bête.

« Ah, on mange chez les Martin demain soir ? J'avais complètement oublié… » Le calendrier partagé est sur mon téléphone. Mais encore faut-il penser à le regarder.

« T'as pas l'impression qu'il caille ici ? » Bonne question. Je sors le téléphone, j'ouvre l'app domotique, je cherche le capteur du salon…

Toutes ces infos existaient. Elles étaient juste coincées derrière un écran de verrouillage, à portée de pouce mais jamais sous les yeux. Ce qu'il me manquait, c'est un point de synthèse permanent. Visible en passant. À jour en permanence. Sans rien toucher.

02.Le concept

Le principe tient en une phrase : un tableau de bord passif, posé dans un lieu de passage, qui affiche tout ce dont j'ai besoin d'un seul coup d'œil.

Pourquoi du e-ink ? Pas de rétroéclairage qui agresse à 6h du matin. Une conso électrique quasi nulle. Et une lisibilité parfaite, lumière directe, pénombre, peu importe. C'est du papier. Connecté.

Le cahier des charges s'est écrit tout seul : • Météo du jour et prévisions sur les prochaines heures • Températures pièce par pièce, en temps réel • Agenda de la semaine • Liste de courses • Produits qui périment dans les 3 jours (remontés depuis ma web app Anti-Gaspi) • Prochains trains (uniquement le matin en semaine, inutile d'afficher ça le dimanche)

Un regard. Aucune interaction.

03.La partie hardware

Vue de côté du dashboard E-ink
Vue arrière du dashboard E-ink

Le boîtier a été réalisé en impression 3D pour s'intégrer parfaitement à l'écran et au Raspberry Pi.

L'écran, c'est un Waveshare 7.5 pouces bicolore (noir et rouge), piloté par un Raspberry Pi Zero W qui tourne en continu.

La particularité du e-ink, et ce qui en fait tout l'intérêt ici : l'écran ne consomme d'énergie qu'au moment du rafraîchissement. Entre deux mises à jour, l'image reste figée sans aucune alimentation. L'exact opposé d'un moniteur classique, et exactement ce qu'il faut pour un objet qui doit disparaître dans le décor.

Le revers de la médaille ? Le temps de rafraîchissement. Quelques secondes à chaque mise à jour. Ça élimine tout usage dynamique. Mais pour un tableau de bord qu'on consulte en passant, c'est un non-sujet.

Le boîtier a été dessiné et imprimé en 3D sur mesure, pour épouser l'écran et le Pi. Propre, discret, intégré.

04.La partie software

Page login de l'interface web
Homepage de l'interface web
Page configuration de l'interface web

Page login de l'interface web

Le vrai défi côté logiciel : fiabilité et maintenabilité. Pas juste "ça marche".

Première décision structurante : séparer ce qui parle à l'utilisateur de ce qui pilote l'écran. Rafraîchir un afficheur e-ink prend plusieurs secondes. Si le serveur attendait la fin du rendu pour répondre, l'interface web deviendrait inutilisable à chaque mise à jour. La solution ? Un serveur web qui répond instantanément, et un processus en arrière-plan qui gère les rendus via une file d'attente.

Ce découplage a l'air anodin. Il ne l'est pas. Si le rendu plante, le serveur continue de tourner. Si le processus de rendu redémarre, il reprend sa file. Chaque brique peut être surveillée, relancée, mise à jour, indépendamment de l'autre.

Le rendu du tableau de bord lui-même est composé comme une mise en page imprimée : deux colonnes, typo soignée, icônes météo. Et un comportement contextuel que j'aime bien : le matin en semaine, le bas de la colonne de droite bascule automatiquement sur les horaires de train. Le soir ou le week-end, cet espace disparaît. Afficher ce qui est pertinent, au bon moment. C'est le cœur du projet.

05.La connectivité

Présentation des interactions entre le dashboard et les différents services

Présentation des interactions entre le dashboard et les différents services

Ce dashboard ne tourne pas en vase clos. Il s'insère dans un écosystème domotique plus large, et c'est là qu'il prend toute sa saveur.

Home Assistant joue le rôle de système nerveux central. Il collecte les données de tous les capteurs et orchestre les automatisations. Le tableau de bord e-ink est un consommateur de cet écosystème : il lit les températures, la liste de courses, sans jamais rien modifier.

Les autres données arrivent de sources variées : la météo via l'API officielle Météo-France, le calendrier via un serveur CalDAV, les horaires de train via l'API Île-de-France Mobilités, et les produits bientôt périmés via l'API de ma web app Anti-Gaspi.

Le détail qui change la donne : la relation avec Home Assistant va dans les deux sens. Le dashboard expose sa propre API, ce qui permet à n'importe quelle automatisation de déclencher un rafraîchissement de l'écran. Retour à la maison, mise à jour de la liste de courses, heure fixe le matin, bouton physique dans l'entrée. L'écran réagit. Il n'est plus un simple afficheur passif. C'est un acteur du système.

Ce projet résume ce que je préfère faire : partir d'un agacement quotidien et en tirer un objet tangible, conçu de bout en bout. Ce n'est pas une prouesse domotique. Juste un écran qui fait bien son travail. Il tourne en autonomie depuis deux ans. Il m'a donné l'occasion de mêler hardware, impression 3D et architecture logicielle asynchrone dans un seul projet. Et au fond, c'est ça que je cherche : prendre une contrainte banale et la transformer en quelque chose d'utile, de fini, et qui sait se faire oublier.