github aitjcize/esp32-photoframe v2.10.0

4 hours ago

What's New

  • Cron-based auto-rotate schedule — the single rotation interval is replaced by a flexible schedule you build in the web UI (and the mobile app / image server): repeating intervals, specific times, and day-of-week selection, stored as compact cron rules. Bound the active hours right in the schedule (e.g. every 2 hours, 7 AM–11 PM) instead of relying on a separate quiet-hours setting.
    • Your existing rotation interval migrates automatically to an equivalent schedule on first boot.
    • Day-of-week uses standard cron semantics (Sunday is 0 or 7, and works inside ranges like 5-7 = Fri–Sun).
  • Sleep schedule (quiet hours) removed — the active window now lives in the rotation schedule itself, so the separate quiet-hours setting is gone.

Important

Upgrade note — the sleep schedule is not migrated. Unlike the rotation
interval, your existing quiet-hours setting is dropped on upgrade, not
converted. If your frame relied on it to stay dark at night, re-express the
active hours in the schedule — e.g. 0 7-23/2 *, or two rules for an
overnight gap — otherwise it will resume rotating overnight.

Improvements

  • More reliable wake timing — after RTC clock drift, an early wake now re-sleeps and refreshes at the correct scheduled minute instead of a few minutes early, eliminating the occasional double refresh.
  • Time stays accurate without Home Assistant — NTP (and OTA) background tasks now run on any Wi-Fi-connected wake, so URL-mode frames without HA keep their clock synced.

Internal

  • Added a cron unit-test suite (firmware host tests + web UI) and keep the parser/preview/compiler in lock-step across firmware, web UI, mobile app, and image server.
  • Various schedule-editor UX and validation fixes; empty schedules and malformed rules are now rejected with a clear error.

Installation

Web Flasher (Easiest)

Flash directly from your browser (Chrome/Edge/Opera): https://aitjcize.github.io/esp32-photoframe/#flash

Manually

Choose the merged binary for your board (6 supported):

  • photoframe-firmware-waveshare_photopainter_73-merged.bin: Waveshare 7.3" 7-color
  • photoframe-firmware-seeedstudio_xiao_ee02-merged.bin: Seeed XIAO EE02
  • photoframe-firmware-seeedstudio_xiao_ee04-merged.bin: Seeed XIAO EE04
  • photoframe-firmware-seeedstudio_reterminal_e1002-merged.bin: Seeed reTerminal E1002
  • photoframe-firmware-seeedstudio_reterminal_e1003-merged.bin: Seeed reTerminal E1003 (10.3" grayscale)
  • photoframe-firmware-seeedstudio_reterminal_e1004-merged.bin: Seeed reTerminal E1004
esptool.py --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 write_flash 0x0 photoframe-firmware-[board]-merged.bin

Don't miss a new esp32-photoframe release

NewReleases is sending notifications on new releases.