{"id":31588468,"url":"https://github.com/timschneeb/esp32-weather-clock-cube","last_synced_at":"2026-05-14T20:31:25.258Z","repository":{"id":317610947,"uuid":"1068130678","full_name":"timschneeb/esp32-weather-clock-cube","owner":"timschneeb","description":"A desktop weather clock with a 240x240 TFT screeen based on the ESP32-S3 (GeekMagic)","archived":false,"fork":false,"pushed_at":"2025-10-29T04:18:58.000Z","size":3947,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-29T06:12:47.669Z","etag":null,"topics":["clock","esp32","esp32-s3","freertos","geekmagic","geekmagic-s3","iot","lvgl","weather"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timschneeb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-01T22:45:35.000Z","updated_at":"2025-10-29T04:19:02.000Z","dependencies_parsed_at":"2025-10-29T06:09:19.213Z","dependency_job_id":"8b279f10-9964-44dd-b94b-d794a2912090","html_url":"https://github.com/timschneeb/esp32-weather-clock-cube","commit_stats":null,"previous_names":["timschneeb/esp32-weather-clock-cube"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/timschneeb/esp32-weather-clock-cube","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timschneeb%2Fesp32-weather-clock-cube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timschneeb%2Fesp32-weather-clock-cube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timschneeb%2Fesp32-weather-clock-cube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timschneeb%2Fesp32-weather-clock-cube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timschneeb","download_url":"https://codeload.github.com/timschneeb/esp32-weather-clock-cube/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timschneeb%2Fesp32-weather-clock-cube/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33042092,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clock","esp32","esp32-s3","freertos","geekmagic","geekmagic-s3","iot","lvgl","weather"],"created_at":"2025-10-06T02:09:30.400Z","updated_at":"2026-05-14T20:31:25.252Z","avatar_url":"https://github.com/timschneeb.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Desk Weather Clock (GeekMagic-S3)\nESP32-S3 firmware for displaying current time, date, weather, and image notifications from other devices on a 240x240 display.\n\n**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)\n\n\u003cimg src=\"meta/demo.jpg\" width=\"150\" /\u003e\n\n## Features\n\n- Support for the built-in capacitive touch button on top of the chassis to toggle power\n- Can display remote images by calling the `/show_image?url=\u003cimage_url\u003e` endpoint or by POSTing images directly to `/show_image`\n- Can show text messages as an overlay by calling the `/show_message?msg=\u003ctext\u003e\u0026duration=\u003ctime_in_ms\u003e` endpoint\n- Synchronizes its power state with your computer (remote device must call `/keepalive` endpoint at least every \u003c5 minutes to stay on)\n- Clock and weather display using OpenWeatherMap API, including temperature, humidity, min/max temperature\n- Web configuration UI: WiFi, MQTT, weather API key, display settings, etc.\n- Falls back to AP mode if WiFi is not configured or unavailable\n\n## Build\n\nThis project is designed to be built using [PlatformIO](https://platformio.org/)\n\n```\npio run -t uploadfs     # Upload SPIFFS flash image\npio run -t upload       # Upload firmware\n```\n### UI development\n\nWhen 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.\nDo not edit the generated files directly (file name ending in `_gen`).\n\n### Wokwi Simulator support\n\nThis 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.\n\nTo 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`.\n\nYou 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).\n\n## Acknowledgements\n\n- Hardware designed and assembled by [GeekMagic](https://github.com/GeekMagicClock/GeekMagic-S3).\n- [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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimschneeb%2Fesp32-weather-clock-cube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimschneeb%2Fesp32-weather-clock-cube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimschneeb%2Fesp32-weather-clock-cube/lists"}