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_JSONand paste the contents of yourconfig.jsonfromrendererin it. - Create a secret named
ESP_CONFIG_JSONand paste the contents of yourconfig.jsonfromespin 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.
