An open API service indexing awesome lists of open source software.

https://github.com/timschneeb/esp32-weather-clock-cube

A desktop weather clock with a 240x240 TFT screeen based on the ESP32-S3 (GeekMagic)
https://github.com/timschneeb/esp32-weather-clock-cube

clock esp32 esp32-s3 freertos geekmagic geekmagic-s3 iot lvgl weather

Last synced: about 1 month ago
JSON representation

A desktop weather clock with a 240x240 TFT screeen based on the ESP32-S3 (GeekMagic)

Awesome Lists containing this project

README

          

# Desk Weather Clock (GeekMagic-S3)
ESP32-S3 firmware for displaying current time, date, weather, and image notifications from other devices on a 240x240 display.

**Built for the [GeekMagic-S3](https://github.com/GeekMagicClock/GeekMagic-S3) bought from AliExpress** (based on `esp32-s3-devkitm-1` with 16MB flash, 8MB PSRAM and a 240x240 TFT display)

## Features

- Support for the built-in capacitive touch button on top of the chassis to toggle power
- Can display remote images by calling the `/show_image?url=` endpoint or by POSTing images directly to `/show_image`
- Can show text messages as an overlay by calling the `/show_message?msg=&duration=` endpoint
- Synchronizes its power state with your computer (remote device must call `/keepalive` endpoint at least every <5 minutes to stay on)
- Clock and weather display using OpenWeatherMap API, including temperature, humidity, min/max temperature
- Web configuration UI: WiFi, MQTT, weather API key, display settings, etc.
- Falls back to AP mode if WiFi is not configured or unavailable

## Build

This project is designed to be built using [PlatformIO](https://platformio.org/)

```
pio run -t uploadfs # Upload SPIFFS flash image
pio run -t upload # Upload firmware
```
### UI development

When adding or changing XML markup files in `lib/gui`, you must re-generate the C sources in that folder using [LVGL-Editor](https://lvgl.io/editor) or their CLI.
Do not edit the generated files directly (file name ending in `_gen`).

### Wokwi Simulator support

This project can be run in the [Wokwi simulator](https://wokwi.com/). Note that the simulator is much slower than the real hardware, so the display updates will be slow.

To run in Wokwi, build the project using PlatformIO. The build process (specifically `merge_bin.py`) will generate a merged binary image in `.pio/build/esp32-s3-devkitm-1/firmware_merged.bin`.

You can then either manually upload this binary to Wokwi together with the `wokwi.toml` and `diagram.json` files, or use Wokwi VS Code or Jetbrains CLion extension to run the simulator directly from inside your IDE (recommended).

## Acknowledgements

- Hardware designed and assembled by [GeekMagic](https://github.com/GeekMagicClock/GeekMagic-S3).
- [GeekMagic-S3-Frigate-Event-Viewer](https://github.com/Marijn0/GeekMagic-S3-Frigate-Event-Viewer) by [Marijn0](https://github.com/Marijn0/) was used as a template and re-written using FreeRTOS, LVGL, and ESP-IDF APIs.