2025-07-20 19:37:17 +02:00
2025-07-20 18:58:25 +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 19:37:17 +02:00

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

This

Core api and Esp32 (Microcontroller) 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 🫥

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

ESP32 configuration and building

image

Best way of getting the ESP32 ready for code upload is to follow this guide [https://web.archive.org/web/20250706150325/https://www.waveshare.com/wiki/E-Paper_ESP32_Driver_Board] (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. See above link to find the download.

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%