- Sol Mate e-Paper Display é um projeto que gera uma ilustração refletindo o clima atual e as condições de iluminação do local especificado e a exibe em uma tela Waveshare e-Paper conectada a um Raspberry Pi
- O script recebe uma localização, busca o clima e renderiza imagens de alta qualidade usando um prompt criado por gpt-5-mini e o gpt-image-1-mini, por isso é necessário um token da API da OpenAI
- É possível informar não só uma localização real, mas também a localização de um amigo ou um lugar fictício; no caso de lugares fictícios, o GPT envia ao serviço de clima a latitude e longitude do local mais parecido na Terra
- O hardware é baseado em um Raspberry Pi 5 e em um display Waveshare e-Paper de 7.3", e usar telas de outros tamanhos exige alterações no código
control.py oferece suporte para exibição na tela, pré-visualização local e limpeza da tela, e é preciso considerar tanto a recomendação da Waveshare de não deixar a mesma imagem exibida por muito tempo quanto o possível aumento dos custos de API
O que o Sol Mate e-Paper Display faz
- Sol Mate e-Paper Display é um conjunto de códigos para gerar e exibir uma imagem de relatório do clima usando Raspberry Pi e um display Waveshare e-Paper
- Ele foi criado inicialmente com o ☀️ Sol Mate GPT, e depois este projeto surgiu da curiosidade sobre como isso ficaria em um display e-Paper
- A localização de entrada pode ser um lugar real, a localização de um amigo ou até um lugar fictício
- Se estiver chovendo, por exemplo, a ilustração reflete o clima atual com pessoas segurando guarda-chuva
- Ao informar um lugar fictício, o GPT envia ao serviço de clima a latitude e longitude do local mais parecido na Terra
Como as imagens são geradas
- As ilustrações são renderizadas com o modelo gpt-image-1-mini
- O prompt da imagem é gerado pelo gpt-5-mini, usando configuração de alta qualidade de imagem
- Por causa desse fluxo de geração, a execução requer um token da API da OpenAI
Hardware necessário
Execução e uso
- O projeto foi pensado para rodar em um Raspberry Pi
- O gerenciamento do ambiente Python usa uv
- Como o
uv gerencia o ambiente virtual, não é necessário ativá-lo manualmente
uv sync
- Em máquinas de desenvolvimento que não sejam macOS ou Linux, a biblioteca de hardware do Raspberry Pi é ignorada por padrão
- É necessário definir a variável de ambiente
OPENAI_API_KEY
- As variáveis de ambiente podem ser lidas de um arquivo
.env no diretório de trabalho atual
OPENAI_API_KEY=... uv run python control.py show Barcelona
- Para verificar rapidamente no ambiente local, é possível executar o comando
preview, que usa a exibição de imagens do iTerm2
- Por padrão, ele salva em
sol-mate-preview-<timestamp>.png no diretório temporário do sistema
OPENAI_API_KEY=... uv run python control.py preview "Barcelona"
Gerenciamento de tela e atualizações automáticas
- A Waveshare recomenda_Manual#Precautions) não deixar a mesma imagem no display por tempo demais
- Para limpar a tela, use o comando
clear
uv run python control.py clear
- A configuração de exemplo atualiza a imagem duas vezes por dia com
cron e limpa a tela de madrugada
- Os caminhos precisam ser ajustados de acordo com o ambiente de instalação de cada um
- Execuções repetidas podem ter um custo considerável
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 e materiais de referência
- É possível usar uma API privada para buscar o clima, mas com a condição de não fazer chamadas excessivas
- Se houver ideia de uso em larga escala, recomenda-se hospedar sua própria solução
- O código-fonte do backend está em blixt/sol-mate
- Fotos adicionais e processo de criação:
1 comentários
Opiniões do Hacker News
Estou usando um Inkplate 6Color em um projeto parecido
Ele vem com um controlador ESP32 integrado, então não precisa de Pi, e também pode funcionar só com bateria
Com uma boa programação de deep sleep/despertar, aguenta até algumas semanas com uma carga
O que mais gosto é uma placa vermelha de On Air que deixei pendurada na porta do escritório; quando executo um Atalho no Mac durante reuniões ou gravações, o status é atualizado automaticamente e os dispositivos são silenciados
Também há exemplos open source para exibir clima, notícias e Google Calendar
https://soldered.com/product/inkplate-6color-color-e-paper-b...
Projetos baratos com e-ink são realmente divertidos e úteis
Um display e-ink conectado a um Pi Zero mostra apenas Yes/No para indicar se vai chover nas próximas 3 horas
Pensando melhor, talvez nem seja necessário um display de 7 cores
O display que uso é este https://shop.pimoroni.com/products/inky-impression-7-3?varia... e parece ser mais barato
É divertido a ponto de dar vontade de espalhar essas telas pela casa
Independentemente, há uma semana fiz algo quase igual com o mesmo display
https://imgz.org/iBLADkCU.jpg
É um porta-retratos que obtém o clima atual e a hora de um local específico, e a IA gera e exibe uma foto que inclui esse local
É curioso como nós dois chegamos até aqui de forma independente
Talvez fosse mesmo o uso mais óbvio
É um bom exemplo para mostrar a novos fundadores que a ideia deles não é única; na prática, quase nenhuma ideia é realmente única
O importante é a execução
Parece o Uber e a Lyft dos painéis de clima em e-ink; já marquei outras coisas parecidas no HN
Quando tiver tempo, também pretendo fazer um, e tudo isso me inspira em desenvolvimento com ESP32 e automação residencial livre e open source
O projeto de hardware e a ideia são legais, mas eu jamais mexeria com a API da OpenAI em um dispositivo sempre ligado
Se um dia eu fizer algo por diversão, talvez faça uma versão usando OpenStreetMap e Stable Diffusion hospedado na LAN, então vale salvar nos favoritos
Comprei dois displays iguais depois de ver projetos parecidos
Originalmente eu planejava fazer um display de fotos coloridas como nesses dois exemplos, mas esta aplicação também parece boa
Espero que o hacking dê certo, e seria legal ver em breve o projeto pronto por aqui
Na imagem, Barcelona aparece com 26°C e 2°C
Já estive em Barcelona algumas vezes, mas é difícil imaginar as duas temperaturas no mesmo dia
Fico me perguntando se os dados meteorológicos são confiáveis, ou se é tudo alucinação e a ideia é só curtir a animação
Ou talvez eu conheça menos do clima de Barcelona do que penso, e uma máxima de 26 e uma mínima de 2 seja possível
Os 2°C são apenas uma alucinação derivada dos 26°C
Como é um projeto de hobby, priorizei fazer o texto parecer único a cada vez e, em geral, mais artístico, em vez de renderizá-lo da forma tradicional
Mas, para transformar isso em um produto sério, modelos de geração de imagem ainda não são bons o suficiente para esse uso
Fico curioso sobre o motivo de “não deixar a mesma imagem no display por tempo demais”
É um problema específico do e-ink colorido?
Na prática, acho que não é um problema tão grande, mas pode haver risco de retenção se os pixels ficarem ativos por tempo demais
[1]: https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manua...
Fico curioso se há alguma diferença no modo de exibição que exija o cuidado de não deixar a mesma imagem por muito tempo, ao contrário do e-ink comum em preto e branco
Se me lembro bem, displays e-ink padrão em preto e branco não tinham burn-in
Vou colocar o link da documentação no README para que as pessoas possam saber mais e decidir por conta própria
[1]: https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manua...
Fico curioso por que esses projetos sempre especificam o uso de um computador pequeno e de baixo consumo, como um Raspberry Pi, para acionar o display
Já existem muitos computadores comuns rodando Debian GNU/Linux
Se eu quisesse usar este código em um desses computadores para acionar um display de papel eletrônico com um cabo USB comum, não seria possível?
Não vejo motivo para ser obrigatório usar algo como um Raspberry Pi
Em um computador grande, se o sistema operacional permitir usar esses periféricos, dá para fazer do mesmo jeito
Antes de esses computadores pequenos se popularizarem, era possível usar os mesmos sinais de baixo nível com uma porta paralela e um programinha para se comunicar diretamente com periféricos
O Raspberry Pi tem muita documentação e código de bootstrap, então é conveniente para alguém com um pouco de experiência em Linux ligar, instalar pacotes e fazer alguma coisa
Com tempo e conhecimento, também dá para fazer com um microcontrolador bem pequeno
Não há nada mágico no display em si, exceto que às vezes ele exige tensões de alimentação estranhas
O problema mais comum é que esses displays não se comunicam diretamente via USB
Para definir os pixels, eles usam SPI ou uma interface digital paralela, então é preciso uma interface intermediária e software para desenhar na tela
Por isso muita gente simplesmente conecta um Raspberry Pi e fala com ele por um protocolo mais comum
Manter um computador comum ligado o tempo todo só para acionar este display é ineficiente
Como todo ótimo projeto, ele permite que alguém avance para a customização
Além das recomendações de hardware, vale olhar só o epaper.py[1] como referência
[1]: https://github.com/blixt/sol-mate-eink/blob/main/epaper.py
Não entendo muito bem por que usar IA para obter a previsão do tempo
Existem dezenas de APIs meteorológicas gratuitas que podem ser chamadas diretamente
Converter o nome coloquial de um bairro em latitude e longitude exatas é algo que alguma API provavelmente faz até certo ponto, mas não conheço uma API gratuita tão precisa quanto o GPT
Além disso, se você digitar “Hogwarts” ou “Tatooine”, graças à IA ela também inventa direitinho o clima desses lugares[1]
Mais importante: ela escreve o prompt para o Dall-E gerar uma imagem que reflita as condições meteorológicas reais, o sol, a lua etc.
[1]: https://x.com/blixt/status/1724099967361462714