Skip to content

This is a project I created that pulls weather data from the internet, transforms it into custom images, and displays them wirelessly on an e-ink screen powered by an ESP32. Feel free to use this as inspiration for your own builds!

Notifications You must be signed in to change notification settings

Myxelium/Wireless_Eink_HomeScreen

Repository files navigation

myxelium - Wireless_Eink_HomeScreen stars - Wireless_Eink_HomeScreen forks - Wireless_Eink_HomeScreen GitHub tag License issues - Wireless_Eink_HomeScreen Build and Deploy

What why how

This is a project I created that pulls weather data from the internet, transforms it into custom images, and displays them on an e-ink screen powered by an ESP32.

What This Project Does

I wanted a low-power way to see weather information at a glance, so I built this system that:

  • Fetches real-time weather data from online APIs
  • Processes and converts the data into visual images (temperature graphs, forecast icons, etc.)
  • Sends these images wirelessly to an ESP32 microcontroller
  • Displays the information on an energy-efficient e-ink screen
  • Updates periodically while consuming minimal power
image

How do I get to use this without programming knowledge?

Check in the wiki for the guide how to get everything working!

Git Notes

All commits has to follow this Conventional Commits style to pass the pipeline.

Features 😺

  • Display current weather data
  • Display public transport information
  • Display time and date

Requirements 🫥

Installation

This section provides instructions for setting up and running the HomeApi project.

Prerequisites

  • .NET 9.0 SDK or later
  • Docker (optional, for containerized deployment)
  • Git (to clone the repository)

Option 1: Local Development Setup

  1. Clone the repository:

    git clone https://github.com/Myxelium/HomeScreen.git
    cd HomeApi
  2. Restore dependencies:

    dotnet restore
  3. Build the project:

    dotnet build
  4. Run the application:

    dotnet run

The API will be available at http://localhost:5000.

Option 2: Docker Deployment

  1. Build the Docker image:

    docker build -t homeapi .
  2. Run the container:

    docker run -d -p 5000 --name homeapi homeapi

The API will be accessible at http://localhost:5000.

Configuration

The application uses the standard .NET configuration system. You can modify settings in:

  • appsettings.json - Default configuration
  • appsettings.Development.json - Development environment configuration

API endpoints:

  • Weather data: GET /home
  • Generated image: GET /home/default.jpg
  • Configuration data: GET /home/configuration
  • Departure board: GET /home/departure-board

API Documentation

When running, API documentation is available through Scalar at /scalar.

flowchart TD
subgraph ESP32 Device
ESP[ESP32 E-Ink Display]
ESP -->|HTTP GET /home/configuration| API
ESP -->|HTTP GET /home/default.jpg| API
end

    subgraph HomeApi
        API[HomeControllerAPI]
        API -->|MediatR| Handlers
        Handlers -->|Service Calls| Services
        Services -->|Refit Http Clients| Clients
        Clients -->|External APIs| ExtAPIs
        API -->|Returns JSON/JPEG| ESP
    end

    subgraph ExternalAPIs
        WeatherAPI[Weather API]
        AuroraAPI[Aurora API]
        NominatimAPI[Nominatim API]
        ResRobotAPI[ResRobot API]
    end

    ExtAPIs -.-> WeatherAPI
    ExtAPIs -.-> AuroraAPI
    ExtAPIs -.-> NominatimAPI
    ExtAPIs -.-> ResRobotAPI
Loading

ESP32 configuration and building

image

Best way of getting the ESP32 ready for code upload is to follow this guide WAVESHARE ESP32 GUIDE. Once you have it ready so you can upload code to it copy my code in: Esp32_Code/INFOSCREEN_WITH_INTERVAL from this repo.

Install following libraries (if more is needed search for them and install them too):

  • ArduinoJson
  • GUI_Paint
  • JPEGDEC

You need the Waveshare examples installed since it uses code from them download them here Download or check above link.

About

This is a project I created that pulls weather data from the internet, transforms it into custom images, and displays them wirelessly on an e-ink screen powered by an ESP32. Feel free to use this as inspiration for your own builds!

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published