The weather display displays the following:
- Current date and time
- Current temperature in celsius
- Current humidity
- Current wind speeds
- Current weather state
- Temperature and precipitation forecast for the current and next three days
- Latest meme from the KnowYourMeme home page
The weather location, timezone, weather state texts and more are customizable in the config.
This project consists of two main components:
- Weather Display: An ESP-based display that shows the current weather. Every hour, it downloads a freshly rendered image from a locally hosted WebDAV server.
- Image Renderer: A continuously running service that renders and uploads the image to the WebDAV server every hour.
The weather display hardware consists of the Waveshare 7.5" e-Paper B display and the ESP 32 e-Paper driver board.
renderer/
: Image rendering service.
esp/
: ESP firmware that downloads and displays the rendered image.
brightsky/
: Bright Sky API wrapper to get the weather forecasts. Used in the renderer
package.
knowyourmeme/
: Library for getting the KnowYourMeme feed via web scraping. Used in the renderer
package.
build-utils/
: Small helper library for generating the config from config.json
for the esp
and renderer
packages.
There is a CI workflow for linting and testing the code.
There are also two actions for building esp
and renderer
.
All workflows need your config for esp
and renderer
to compile the project.
Here is how you can add them:
- Navigate to: Repository Settings → Secrets and variables → Actions
- Create a secret named
RENDERER_CONFIG_JSON
and paste the contents of yourconfig.json
fromrenderer
in it. - Create a secret named
ESP_CONFIG_JSON
and paste the contents of yourconfig.json
fromesp
in it.
There is a workflow to build and publish a renderer
docker image to the GitHub Container Registry. In a private repository, only you have access to the image in the registry.
I use it to self-host the renderer on my TrueNAS Scale system.
There is a workflow to build the esp
binary.
I use it so that I don't need to have a devcontainer or WSL distro to build it.
Then you can download the artifact and flash it to your ESP.