Skip to content

Quriz/Weather-Display

Repository files navigation

Weather Display

Weather Display Output

An e-ink weather display based on Harry Stern's Halldisplay.

Overview

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.

Architecture

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.

Hardware

The weather display hardware consists of the Waveshare 7.5" e-Paper B display and the ESP 32 e-Paper driver board.

Project Structure

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.

GitHub Actions

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:

  1. Navigate to: Repository Settings → Secrets and variables → Actions
  2. Create a secret named RENDERER_CONFIG_JSON and paste the contents of your config.json from renderer in it.
  3. Create a secret named ESP_CONFIG_JSON and paste the contents of your config.json from esp in it.

Build Renderer Docker Image

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.

Build ESP Binary

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.

About

An e-ink weather display with memes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages