finds.dev← search

// the find

lds133/weather_landscape

★ 1,813 · Python · MIT · updated Mar 2026

Visualizing Weather Forecasts Through Landscape Imagery

A Python script that generates a 296x128 bitmap depicting weather as a landscape scene — trees encode wind speed, sprite positions encode time, precipitation draws rain or snow sprites. Built specifically for e-ink displays (ESP32 + Waveshare 2.9"), though the output also works as a phone widget. This is a personal hardware project, not a library.

The visual encoding is genuinely clever: tree height = wind strength, tree species mix = intermediate wind direction. That's the kind of domain-specific design decision you don't see in generic weather widgets. The sprite system is clean — two parallel sets (monochrome for e-ink, RGB for phone) with consistent naming. MicroPython firmware for the ESP32 is included and works independently from the Python server, so the hardware side is self-contained. The README shows actual output images with plain-language descriptions of what they mean, which is exactly the right documentation for a visual project.

Secrets live in a `secrets.py` file you copy from an example — no env var support, no config abstraction, just hardcoded credentials in a Python module. The ESP32 image-generation question (can Pillow/the rendering code run on MicroPython?) is left explicitly unanswered in the README, which means the board just fetches a pre-rendered image from your server — so the ESP32 is a dumb display, not a standalone device. OpenWeather is the only data source; swapping to another API means rewriting `openweathermap.py` with no interface to implement against. No tests anywhere — the visual output is inherently hard to test, but the encoding logic (sprite selection, timeline math) is not.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →