2025-07-20 18:51:16 +02:00
2025-07-20 18:51:16 +02:00
2025-07-20 17:47:54 +02:00
2025-07-20 17:47:54 +02:00
2025-07-20 17:47:54 +02:00
2025-07-20 17:47:54 +02:00
2025-07-20 18:40:49 +02:00

This Build and Deploy

Core api and Esp32 code for displaying weather data and public transport information on a e-ink display.

image

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 🫥

  • ESP32 board
  • E-ink display (e.g. Waveshare 7.5 inch)

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 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
Description
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!
Readme 169 KiB
2025-09-27 19:08:47 +00:00
Languages
C# 51.9%
C++ 25.4%
HTML 21.3%
Dockerfile 1.4%