- Sol Mate e-Paper Display es un proyecto que genera una ilustración que refleja el clima actual y las condiciones de luz de una ubicación especificada, y la muestra en una pantalla Waveshare e-Paper conectada a una Raspberry Pi
- El script recibe una ubicación, obtiene el clima y renderiza una imagen de alta calidad usando un prompt creado por gpt-5-mini y gpt-image-1-mini, por lo que requiere un token de la API de OpenAI
- Se puede ingresar no solo una ubicación real, sino también la ubicación de un amigo o un lugar ficticio; para lugares ficticios, GPT envía al servicio meteorológico la latitud y longitud del lugar más parecido en la Tierra
- El hardware de referencia es una Raspberry Pi 5 y una Waveshare e-Paper 7.3" display; para usar pantallas de otros tamaños hace falta modificar el código
control.py admite mostrar en pantalla, previsualización local y limpiar la pantalla; también hay que considerar la recomendación de Waveshare de no mostrar la misma imagen durante mucho tiempo y la posibilidad de que aumenten los costos de la API
Qué hace Sol Mate e-Paper Display
- Sol Mate e-Paper Display es un conjunto de código que genera y muestra imágenes de reporte del clima con una Raspberry Pi y una pantalla Waveshare e-Paper
- Al principio se creó como ☀️ Sol Mate GPT, y luego surgió este proyecto por curiosidad sobre cómo se vería en una pantalla e-Paper
- La ubicación de entrada puede ser un lugar real, la ubicación de un amigo o incluso un lugar ficticio
- Si llueve, el clima actual se refleja en la ilustración, por ejemplo incluyendo personas con paraguas
- Si se ingresa un lugar ficticio, GPT pasa al servicio meteorológico la latitud y longitud del lugar en la Tierra que considera más parecido
Cómo se generan las imágenes
- La ilustración se renderiza con el modelo gpt-image-1-mini
- El prompt de imagen lo genera gpt-5-mini, usando una configuración de imagen de alta calidad
- Debido a este flujo de generación, para ejecutarlo se necesita un token de la API de OpenAI
Hardware necesario
Ejecución y uso
- El proyecto está pensado para ejecutarse en una Raspberry Pi
- Para la gestión del entorno de Python se usa uv
- Como
uv gestiona el entorno virtual, no hace falta activarlo manualmente
uv sync
- En máquinas de desarrollo que no sean macOS ni Linux, las bibliotecas de hardware de Raspberry Pi se omiten de forma predeterminada
- Hay que definir la variable de entorno
OPENAI_API_KEY
- También puede leer variables de entorno desde un archivo
.env en el directorio de trabajo actual
OPENAI_API_KEY=... uv run python control.py show Barcelona
- Para revisarlo rápidamente en local, se puede ejecutar el comando
preview, que usa la visualización de imágenes de iTerm2
- De forma predeterminada se guarda en el directorio temporal del sistema como
sol-mate-preview-<timestamp>.png
OPENAI_API_KEY=... uv run python control.py preview "Barcelona"
Gestión de pantalla y actualización automática
- Waveshare recomienda_Manual#Precautions) no dejar la misma imagen demasiado tiempo en la pantalla
- Para limpiar la pantalla, se usa el comando
clear
uv run python control.py clear
- La configuración de ejemplo actualiza la imagen dos veces al día con
cron y limpia la pantalla de madrugada
- Las rutas deben modificarse según el entorno de instalación de cada persona
- Las ejecuciones repetidas pueden generar costos no menores
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 y recursos de referencia
- Se puede usar una API privada para obtener el clima, pero con la condición de no hacer llamadas excesivas
- Si tienes una idea de uso masivo, se recomienda alojarlo por tu cuenta
- El código fuente del backend está en blixt/sol-mate
- Fotos adicionales y proceso de fabricación:
1 comentarios
Opiniones de Hacker News
Estoy usando Inkplate 6Color en un proyecto parecido.
Como trae un controlador ESP32 integrado, no hace falta una Pi, y puede funcionar solo con batería.
Si se planifica bien el esquema de deep sleep/despertar, puede durar varias semanas con una sola carga.
Lo que más me gusta es un letrero rojo de On Air que tengo colgado en la puerta de la oficina: cuando ejecuto un atajo en la Mac durante reuniones o grabaciones, el estado se actualiza automáticamente y los dispositivos se silencian.
También hay ejemplos open source para mostrar el clima, noticias y Google Calendar.
https://soldered.com/product/inkplate-6color-color-e-paper-b...
Los proyectos baratos con tinta electrónica son realmente divertidos y útiles.
Una pantalla de tinta electrónica conectada a una Pi Zero muestra solo Yes/No según si va a llover en las próximas 3 horas.
Pensándolo de nuevo, quizá ni siquiera haga falta una pantalla de 7 colores.
La pantalla que uso es https://shop.pimoroni.com/products/inky-impression-7-3?varia... y parece más barata.
Es tan divertido que dan ganas de poner pantallas de estas por toda la casa.
De forma independiente, hace una semana hice casi lo mismo con la misma pantalla.
https://imgz.org/iBLADkCU.jpg
Es un marco que obtiene el clima actual y la hora de una ubicación específica, y muestra una foto generada por IA que incluye ese lugar.
Me parece curioso cómo ambos llegamos hasta aquí de forma independiente.
Probablemente era el uso más obvio.
Es un buen ejemplo para mostrarle a un fundador nuevo que su idea no es la única; de hecho, casi ninguna idea lo es.
Lo importante es la ejecución.
Se siente como el Uber y Lyft de los paneles meteorológicos de tinta electrónica; en HN ya había etiquetado más cosas parecidas.
Cuando tenga tiempo, pienso hacer uno también, y todo esto me inspira para desarrollo con ESP32 y automatización del hogar libre y open source.
El proyecto de hardware y la idea son geniales, pero no quiero tocar ni de lejos usar la API de OpenAI en un dispositivo siempre encendido.
Si algún día hago algo así por diversión, quizá cree una versión con OpenStreetMap y Stable Diffusion alojado en la LAN, así que vale la pena guardarlo en favoritos.
Después de ver proyectos parecidos, compré dos pantallas iguales.
Originalmente pensaba hacer un display de fotos a color como esos dos ejemplos, pero esta aplicación también se ve interesante.
Espero que te vaya bien con el hackeo, y ojalá pronto podamos ver por aquí el proyecto que armes.
En la imagen, Barcelona aparece con 26 °C y 2 °C.
He estado varias veces en Barcelona, pero me cuesta imaginar que alcance ambas temperaturas el mismo día.
Me pregunto si los datos del clima son confiables, o si todo es una alucinación y solo hay que disfrutar la animación.
O quizá no conozco tan bien el clima de Barcelona como pensaba, y sí es posible una máxima de 26 y una mínima de 2.
Los 2 °C son simplemente una alucinación derivada de los 26 °C.
Como es un proyecto hobby, prioricé que el texto se vea distinto cada vez y normalmente más artístico, en lugar de renderizarlo de la forma tradicional.
Pero si se quisiera convertir en un producto serio, los modelos de generación de imágenes todavía no son suficientemente buenos para este uso.
Me pregunto cuál es la razón de “no dejar la misma imagen en la pantalla durante demasiado tiempo”.
¿Es un problema propio de la tinta electrónica a color?
En la práctica no creo que sea un problema tan grande, pero quizá exista el riesgo de que los píxeles se queden pegados si permanecen activos demasiado tiempo.
[1]: https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manua...
Me pregunto si, a diferencia de la tinta electrónica común en blanco y negro, hay alguna diferencia en el método de visualización que haga necesaria la advertencia de no dejar la misma imagen durante mucho tiempo.
Si no recuerdo mal, las pantallas estándar de tinta electrónica en blanco y negro no tenían burn-in.
Voy a poner el enlace a la documentación en el README para que la gente pueda informarse más y decidir.
[1]: https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manua...
Me pregunto por qué este tipo de proyectos siempre especifican usar una computadora pequeña y de bajo consumo, como una Raspberry Pi, para controlar la pantalla
Ya hay muchas computadoras comunes que corren Debian GNU/Linux
Si quisiera usar este código en una de esas computadoras para controlar una pantalla de papel electrónico con un cable USB común, ¿no sería posible?
No parece haber una razón para tener que usar necesariamente algo como una Raspberry Pi
En una computadora grande también podrías usarla igual si el sistema operativo permite acceder a esos periféricos
Antes de que estas computadoras pequeñas se volvieran comunes, se podía usar un puerto paralelo y un programita para comunicarse directamente con periféricos usando las mismas señales de bajo nivel
La Raspberry Pi tiene mucha documentación y código para bootstrap, así que es cómoda para que alguien que haya tocado un poco Linux la encienda, instale paquetes y haga algo
Si tienes tiempo y conocimientos, también se puede hacer con un microcontrolador muy pequeño
La pantalla en sí no tiene nada mágico, salvo que a veces necesita voltajes de alimentación raros
El problema más común es que estas pantallas no se comunican directamente por USB
Para configurar los píxeles reciben SPI o una interfaz digital paralela, así que hace falta una interfaz intermedia y software que dibuje la pantalla
Por eso mucha gente simplemente conecta una Raspberry Pi y le habla usando un protocolo más común
Mantener encendida una computadora común solo para prender esta pantalla es ineficiente
Como suele pasar con los buenos proyectos, este permite que alguien avance hacia la personalización
Además de las recomendaciones de hardware, vale la pena ver epaper.py[1] como referencia
[1]: https://github.com/blixt/sol-mate-eink/blob/main/epaper.py
No termino de entender por qué usan IA para obtener el clima
Hay decenas de APIs gratuitas de clima que se pueden llamar directamente
Convertir el nombre coloquial de un barrio en latitud y longitud exactas es algo que alguna API puede hacer hasta cierto punto, pero no conozco una API gratuita tan precisa como GPT
Además, si ingresas “Hogwarts” o “Tatooine”, gracias a la IA también te inventa diligentemente el clima de ese lugar[1]
Lo más importante es que escribe un prompt para Dall-E para generar una imagen que refleje las condiciones meteorológicas reales, el sol, la luna, etc.
[1]: https://x.com/blixt/status/1724099967361462714