# lmarzen/esp32-weather-epd

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/lmarzen-esp32-weather-epd).**

5,954 stars · 442 forks · C · gpl-3.0

## Links

- GitHub: https://github.com/lmarzen/esp32-weather-epd
- awesome-repositories: https://awesome-repositories.com/repository/lmarzen-esp32-weather-epd.md

## Topics

`display` `eink` `embedded` `epaper` `esp32` `weather`

## Description

This is an ESP32 firmware project that turns a low-power E-Paper display into a weather dashboard. The device runs on battery power with USB-C recharging, periodically fetches weather forecasts from a remote JSON API, and renders them on the screen alongside indoor sensor readings and battery status.

The project includes a build-time SVG-to-C header converter that embeds weather icons directly into the firmware binary, and those icons can be rotated programmatically to align with wind direction before display. An error state machine handles API failures, low battery, time sync issues, and Wi-Fi disconnection by showing distinct error screens to aid troubleshooting.

Users can personalize the dashboard display by configuring language, units, time and date formats, and air quality scales. The firmware manages Wi-Fi connectivity, NTP time synchronization, battery health monitoring, and charging control for unattended operation.

## Tags

### Hardware & IoT

- [E-Paper Display Drivers](https://awesome-repositories.com/f/hardware-iot/e-paper-display-drivers.md) — Fetches forecast data and indoor sensor readings, then draws them onto a low-power E-Paper screen. ([source](https://github.com/lmarzen/esp32-weather-epd/blob/main/README.md))
- [E-Paper Dashboards](https://awesome-repositories.com/f/hardware-iot/e-paper-dashboards.md) — Displays weather data, indoor sensor readings, and battery status on a low-power E-Paper display.
- [ESP32 Weather Stations](https://awesome-repositories.com/f/hardware-iot/esp32-weather-stations.md) — A low-power ESP32 device that fetches weather forecasts and renders them on an E-Paper screen with customizable settings.
- [ESP32 Firmware Projects](https://awesome-repositories.com/f/hardware-iot/microcontroller-firmware-frameworks/esp32-firmware-projects.md) — Firmware for ESP32 microcontrollers that manages Wi-Fi connectivity, sensor readings, and battery monitoring.

### Part of an Awesome List

- [ADC Voltage Monitors](https://awesome-repositories.com/f/awesome-lists/productivity/battery-monitoring/adc-voltage-monitors.md) — Reads battery voltage through an ADC to estimate charge level and trigger low-battery warnings.
- [Battery Monitoring](https://awesome-repositories.com/f/awesome-lists/productivity/battery-monitoring.md) — Monitors battery level and manages USB-C recharging for unattended operation. ([source](https://github.com/lmarzen/esp32-weather-epd/blob/main/README.md))

### Business & Productivity Software

- [E-Paper Weather Displays](https://awesome-repositories.com/f/business-productivity-software/weather-forecasting-applications/e-paper-weather-displays.md) — Displays weather forecasts and indoor sensor data on a low-power E-Paper screen for at-a-glance viewing.
- [Personal Dashboard Configuration](https://awesome-repositories.com/f/business-productivity-software/personal-dashboards/personal-dashboard-configuration.md) — Customizes language, units, time and date formats, and air quality scales to match personal preferences. ([source](https://github.com/lmarzen/esp32-weather-epd/blob/main/README.md))

### Data & Databases

- [JSON Fetching Libraries](https://awesome-repositories.com/f/data-databases/json-file-processors/media-retrieval-from-json/json-fetching-libraries.md) — Periodically fetches weather forecast data from a remote JSON API and parses it into local data structures.
- [Wind-Aligned Icon Rotations](https://awesome-repositories.com/f/data-databases/real-time-data-streaming/weather-data/icon-mappings/wind-aligned-icon-rotations.md) — Rotates weather icons to point in the same direction as the wind before displaying them. ([source](https://github.com/lmarzen/esp32-weather-epd/tree/main/icons))

### Development Tools & Productivity

- [SVG-to-Header Converters](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/code-generation/c/binary-to-c-header-generators/svg-to-header-converters.md) — Converts SVG weather icons into C header arrays at build time for direct firmware inclusion.
- [Binary-to-C Header Generators](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/code-generation/c/binary-to-c-header-generators.md) — Converts SVG icon files into C header arrays at build time, embedding them directly into the firmware binary.

### Networking & Communication

- [NTP Time Synchronization](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-infrastructure-configuration/network-management/wi-fi-profiles/ntp-time-synchronization.md) — Connects to Wi-Fi and uses NTP to keep the real-time clock accurate for forecast scheduling.

### Operating Systems & Systems Programming

- [USB-C Rechargeable Devices](https://awesome-repositories.com/f/operating-systems-systems-programming/power-management/battery-power-optimization/usb-c-rechargeable-devices.md) — Runs a connected device on battery power with USB-C recharging and battery level monitoring for unattended operation.

### Software Engineering & Architecture

- [Error State Machines](https://awesome-repositories.com/f/software-engineering-architecture/state-machine-logic/lightweight-state-machines/error-state-machines.md) — Switches between distinct display modes for API failures, low battery, time sync issues, and Wi-Fi disconnection.
- [Error State Screens](https://awesome-repositories.com/f/software-engineering-architecture/error-handling/localized-error-messages/display-based-error-messages/error-state-screens.md) — Shows distinct error screens for API failures, low battery, time sync issues, and Wi-Fi disconnection. ([source](https://github.com/lmarzen/esp32-weather-epd/tree/main/showcase))

### System Administration & Monitoring

- [E-Paper Frame Buffers](https://awesome-repositories.com/f/system-administration-monitoring/terminal-buffering-systems/double-buffering/graphical-frame-buffers/e-paper-frame-buffers.md) — Draws weather data and icons into a memory buffer flushed to the E-Paper display in a single update cycle.
- [USB-C Charge Controllers](https://awesome-repositories.com/f/system-administration-monitoring/energy-management/home-battery-integrations/charge-limiters/range-based-charge-maintainers/usb-c-charge-controllers.md) — Controls the USB-C charging circuit to maintain battery health and prevent overcharging during unattended operation.

### Programming Languages & Runtimes

- [SVG-to-Header Converters](https://awesome-repositories.com/f/programming-languages-runtimes/header-file-inclusions/svg-to-header-converters.md) — Transforms SVG icon files into C header files for direct inclusion in firmware code. ([source](https://github.com/lmarzen/esp32-weather-epd/tree/main/icons))

### User Interface & Experience

- [Weather](https://awesome-repositories.com/f/user-interface-experience/system-appearance-syncers/icon-customizers/weather.md) — Customizes weather icons by converting SVG files to firmware-compatible headers and rotating them to align with wind direction.
- [Wind Direction Visualizations](https://awesome-repositories.com/f/user-interface-experience/wind-direction-visualizations.md) — Rotates weather icons programmatically based on wind direction data before rendering them to the display buffer.

### Web Development

- [Embedded Error Screens](https://awesome-repositories.com/f/web-development/error-handling/embedded-error-screens.md) — Shows distinct error screens for API failures, low battery, time sync issues, and Wi-Fi disconnection.
