- Sol Mate e-Paper Display est un projet qui génère une illustration reflétant la météo actuelle et les conditions de luminosité d’un lieu donné, puis l’affiche sur un écran Waveshare e-Paper connecté à un Raspberry Pi
- Le script prend un lieu en entrée, récupère la météo, puis utilise un prompt créé par gpt-5-mini et gpt-image-1-mini pour produire une image de haute qualité ; un jeton d’API OpenAI est donc nécessaire
- On peut saisir non seulement un lieu réel, mais aussi le lieu d’un ami ou un lieu fictif ; pour un lieu fictif, GPT transmet au service météo la latitude et la longitude du lieu réel le plus proche sur Terre
- Le matériel est basé sur un Raspberry Pi 5 et un écran Waveshare e-Paper 7.3", et l’utilisation d’un écran d’une autre taille nécessite des modifications du code
control.py prend en charge l’affichage à l’écran, l’aperçu local et l’effacement de l’écran ; il faut aussi tenir compte de la recommandation de Waveshare de ne pas laisser la même image affichée trop longtemps ainsi que d’une possible hausse des coûts d’API
Ce que fait Sol Mate e-Paper Display
- Sol Mate e-Paper Display est un ensemble de code permettant de générer et d’afficher des images de bulletin météo avec un Raspberry Pi et un écran Waveshare e-Paper
- Le projet a d’abord été créé avec ☀️ Sol Mate GPT, puis il a donné envie de voir à quoi cela rendrait sur un écran e-Paper, d’où ce projet
- Le lieu saisi peut être un endroit réel, le lieu d’un ami, ou même un lieu fictif
- S’il pleut, l’illustration intègre par exemple des personnes tenant un parapluie, de sorte que la météo actuelle se reflète dans l’image
- Si l’on saisit un lieu fictif, GPT transmet au service météo la latitude et la longitude du lieu réel le plus proche sur Terre qu’il a déterminé
Méthode de génération des images
- Les illustrations sont rendues avec le modèle gpt-image-1-mini
- Les prompts d’image sont générés par gpt-5-mini, avec des paramètres de haute qualité
- En raison de ce flux de génération, l’exécution nécessite un jeton d’API OpenAI
Matériel nécessaire
Exécution et utilisation
- Le projet part du principe qu’il s’exécute sur un Raspberry Pi
- La gestion de l’environnement Python se fait avec uv
uv gère l’environnement virtuel, il n’est donc pas nécessaire de l’activer manuellement
uv sync
- Sur une machine de développement qui n’est ni sous macOS ni sous Linux, la bibliothèque matérielle du Raspberry Pi est ignorée par défaut
- Il faut définir la variable d’environnement
OPENAI_API_KEY
- Les variables d’environnement peuvent être lues depuis un fichier
.env dans le répertoire de travail courant
OPENAI_API_KEY=... uv run python control.py show Barcelona
- Pour une vérification rapide en local, on peut exécuter la commande
preview, qui utilise l’affichage d’images d’iTerm2
- Par défaut, l’image est enregistrée dans le répertoire temporaire du système sous le nom
sol-mate-preview-<timestamp>.png
OPENAI_API_KEY=... uv run python control.py preview "Barcelona"
Gestion de l’écran et mises à jour automatiques
- Waveshare recommande_Manual#Precautions) de ne pas laisser la même image affichée trop longtemps sur l’écran
- Pour effacer l’écran, utilisez la commande
clear
uv run python control.py clear
- L’exemple de configuration met à jour l’image deux fois par jour avec
cron et efface l’écran pendant la nuit
- Les chemins doivent être adaptés à votre propre environnement d’installation
- Des exécutions répétées peuvent entraîner un coût non négligeable
0 8 * * * cd ~/src/sol-mate-eink && OPENAI_API_KEY=... uv run python control.py show Barcelona
0 18 * * * cd ~/src/sol-mate-eink && OPENAI_API_KEY=... uv run python control.py show Barcelona
0 2 * * * cd ~/src/sol-mate-eink && uv run python control.py clear
Backend et ressources de référence
- Il est possible d’utiliser une API privée pour récupérer la météo, mais à condition de ne pas l’appeler de manière excessive
- Si vous avez une idée d’usage à grande échelle, l’auto-hébergement est recommandé
- Le code source du backend se trouve dans blixt/sol-mate
- Photos supplémentaires et étapes de fabrication :
1 commentaires
Avis sur Hacker News
J’utilise un Inkplate 6Color pour un projet similaire
Le contrôleur ESP32 est intégré, donc pas besoin de Pi, et il peut fonctionner uniquement sur batterie
Avec une bonne planification du deep sleep/des réveils, il peut tenir plusieurs semaines sur une seule charge
Ce que je préfère, c’est le panneau rouge On Air accroché à la porte de mon bureau : quand je lance un raccourci sur mon Mac pendant une réunion ou un enregistrement, l’état se met à jour automatiquement et les appareils se mettent en sourdine
Il existe aussi des exemples open source pour l’affichage météo, les actualités et Google Calendar
https://soldered.com/product/inkplate-6color-color-e-paper-b...
Les projets e-ink bon marché sont vraiment amusants et utiles
Un écran e-ink connecté à un Pi Zero affiche simplement Yes/No pour indiquer s’il va pleuvoir dans les 3 prochaines heures
Avec le recul, je n’ai peut-être pas besoin d’aller jusqu’à un écran 7 couleurs
L’écran que j’utilise est celui-ci : https://shop.pimoroni.com/products/inky-impression-7-3?varia..., et il semble moins cher
C’est assez amusant pour donner envie de coller ce genre d’écrans un peu partout dans la maison
Indépendamment, j’ai fabriqué quasiment la même chose il y a une semaine avec le même écran
https://imgz.org/iBLADkCU.jpg
C’est un cadre photo qui récupère la météo actuelle et l’heure d’un lieu donné, puis utilise l’IA pour générer et afficher une image intégrant ce lieu
C’est drôle de voir comment nous sommes arrivés tous les deux indépendamment au même résultat
C’était probablement l’usage le plus évident
C’est un bon exemple pour montrer à un nouvel entrepreneur que son idée n’est pas unique ; en réalité, les idées vraiment uniques sont rares
Ce qui compte, c’est l’exécution
Ça fait un peu Uber et Lyft du panneau météo e-ink ; j’avais déjà tagué des choses similaires sur HN
Dès que j’aurai le temps, j’en fabriquerai un aussi, et tout cela me donne envie de faire du développement ESP32 et de l’automatisation domestique libre et open source
Le projet matériel et l’idée sont cool, mais je ne voudrais surtout pas toucher à l’API OpenAI pour un appareil allumé en permanence
Si jamais je faisais ça pour m’amuser, je pourrais créer une version avec OpenStreetMap et Stable Diffusion hébergé sur le LAN, donc ça vaut le coup de le mettre en favori
J’ai acheté deux écrans identiques après avoir vu des projets similaires
À l’origine, je comptais en faire un affichage de photos couleur comme dans ces deux exemples, mais cette application a l’air intéressante aussi
Bon hacking, et j’espère voir bientôt ici le projet que tu auras réalisé
Sur l’image, Barcelona est affichée avec 26 °C et 2 °C
Je suis allé plusieurs fois à Barcelona, mais j’ai du mal à imaginer ces deux températures le même jour
Je me demande si les données météo sont fiables, ou si tout n’est qu’hallucination et qu’il faut juste profiter de l’animation
Ou alors je connais moins bien la météo de Barcelona que je ne le pensais, et un maximum de 26 degrés avec un minimum de 2 degrés est possible
Les 2 °C ne sont qu’une hallucination issue des 26 °C
Comme c’est un projet perso, j’ai privilégié le fait que le texte ait un aspect unique à chaque fois, généralement plus artistique, plutôt que de le rendre de manière traditionnelle
Mais pour en faire un produit sérieux, les modèles de génération d’images ne sont pas encore assez bons pour cet usage
Je me demande pourquoi il est dit de « ne pas laisser la même image trop longtemps à l’écran »
Est-ce un problème propre à l’e-ink couleur ?
En pratique, je ne pense pas que ce soit un si gros problème, mais il peut y avoir un risque de rémanence si les pixels restent activés trop longtemps
[1]: https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manua...
Contrairement à l’e-ink noir et blanc classique, je me demande s’il y a une différence dans la technologie d’affichage qui impose de faire attention à ne pas laisser la même image trop longtemps
Si je me souviens bien, les écrans e-ink noir et blanc standard ne souffraient pas de burn-in
Je vais ajouter le lien vers la documentation dans le README pour que les gens puissent se renseigner et juger par eux-mêmes
[1]: https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manua...
Je me demande pourquoi ce genre de projets spécifie toujours un petit ordinateur basse consommation comme un Raspberry Pi pour piloter l’écran
Il existe déjà beaucoup d’ordinateurs classiques faisant tourner Debian GNU/Linux
Si je voulais utiliser ce code depuis l’un de ces ordinateurs pour piloter un écran e-paper avec un simple câble USB, ce ne serait pas possible ?
Je ne vois pas de raison d’utiliser absolument quelque chose comme un Raspberry Pi
Sur un gros ordinateur, si le système d’exploitation permet d’utiliser ce genre de périphériques, on peut faire la même chose
Avant que ces petits ordinateurs ne se généralisent, on pouvait utiliser un port parallèle et un petit programme pour envoyer les mêmes signaux bas niveau et communiquer directement avec des périphériques
Le Raspberry Pi dispose de beaucoup de documentation et de code pour démarrer, ce qui le rend pratique pour quelqu’un qui a un peu touché à Linux : on l’allume, on installe des paquets, puis on fait quelque chose
Avec du temps et des connaissances, on peut aussi le faire avec un tout petit microcontrôleur
L’écran lui-même n’a rien de magique, à part parfois des tensions d’alimentation un peu étranges
Le problème le plus courant, c’est que ces écrans ne communiquent pas directement en USB
Pour définir les pixels, ils acceptent une interface numérique SPI ou parallèle ; il faut donc une interface intermédiaire et un logiciel qui dessine l’écran
C’est pourquoi les gens branchent souvent simplement un Raspberry Pi et lui parlent via un protocole plus courant
Garder un ordinateur classique allumé en permanence juste pour alimenter cet écran serait inefficace
Comme toujours, un excellent projet donne envie à quelqu’un d’aller vers la personnalisation
Au-delà des recommandations matérielles, rien que epaper.py[1] vaut le détour comme référence
[1]: https://github.com/blixt/sol-mate-eink/blob/main/epaper.py
Je ne comprends pas bien pourquoi utiliser de l’IA pour récupérer la météo
Il existe des dizaines d’API météo gratuites qu’on peut appeler directement
Convertir le nom familier d’un quartier en latitude/longitude exactes, certaines API le font plus ou moins, mais je ne connais pas d’API gratuite aussi précise que GPT
Et si on saisit « Hogwarts » ou « Tatooine », grâce à l’IA, elle invente aussi consciencieusement la météo de ces lieux[1]
Surtout, elle rédige le prompt pour Dall-E qui générera une image reflétant les conditions météo réelles, le soleil, la lune, etc.
[1]: https://x.com/blixt/status/1724099967361462714