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
0or7, and works inside ranges like5-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-colorphotoframe-firmware-seeedstudio_xiao_ee02-merged.bin: Seeed XIAO EE02photoframe-firmware-seeedstudio_xiao_ee04-merged.bin: Seeed XIAO EE04photoframe-firmware-seeedstudio_reterminal_e1002-merged.bin: Seeed reTerminal E1002photoframe-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