Esphome based Immich digital photo frame https://jtenniswood.github.io/espframe/
  • C 87.9%
  • C++ 11%
  • Python 1%
  • CMake 0.1%
Find a file
2026-04-18 08:43:33 +01:00
.agents/skills/compile Add ESPHome compile skill 2026-04-16 11:44:33 +01:00
.github/workflows Move Guition device configs under devices 2026-04-16 18:51:12 +01:00
builds Move Guition device configs under devices 2026-04-16 18:51:12 +01:00
common/addon Remove improv serial 2026-04-18 08:43:33 +01:00
components Avoid overlapping portrait image requests 2026-04-18 07:57:55 +01:00
devices Remove JC1060P470 display compensation 2026-04-17 16:50:28 +01:00
docs Show firmware versions in installer and web UI 2026-04-18 08:07:07 +01:00
.gitignore Enhance codebase organization and UI consistency 2026-03-18 10:43:24 +00:00
package-lock.json Make webserver assets readable 2026-04-16 10:27:59 +01:00
package.json Make webserver assets readable 2026-04-16 10:27:59 +01:00
README.md Hide 7-inch model from docs 2026-04-17 17:55:23 +01:00
renovate.json Fix release build integrity and pin ESPHome Docker image 2026-04-15 11:58:48 +01:00

Espframe for Immich

A standalone digital photo frame that displays your Immich photo library on a Guition ESP32-P4 touchscreen — no additional services required.

Immich Frame displaying photos on a Guition ESP32-P4 touchscreen

Built with ESPHome on the ESP32-P4, the frame connects directly to your Immich server over HTTP and streams photos to your display, completely in private over your local network.

Features

  • Fully standalone — runs on bare hardware, no hub or cloud service needed
  • Photo sources — show all photos, favourites, specific albums, specific people, "on this day" memories, or date-filtered ranges
  • Display tone adjustment — adjust colour temperature (e.g. warm the image if the panel looks too blue)
  • Night tone — automatically adjust screen tone between sunset and sunrise
  • Screen scheduling — schedule when to turn off the display; set daytime and night-time brightness separately
  • Smart portrait pairing — detects portrait photos and pairs them side-by-side from the same day
  • Accent colour fill — letterboxed areas are tinted with a colour sampled from the photo
  • Configuration options — change Immich URL, API key, photo source, date filters, slideshow interval, and more via the built-in web UI

Hardware

Item Link
10" panel (JC8012P4A1) AliExpress
10" printable stand MakerWorld

Install

The easiest way to get started is with the web installer — flash the firmware directly from your browser with no toolchain or build step.

Open the Web Installer →

You'll need a USB-C data cable and Chrome or Edge on desktop.

Documentation

Getting started, configuration, and troubleshooting guides are available at:

jtenniswood.github.io/espframe

Development

# Docs site (live reload)
npm ci
npm run docs:dev

# Compile firmware locally
docker run --rm -v "${PWD}:/config" ghcr.io/esphome/esphome:2026.4.0 compile /config/builds/guition-esp32-p4-jc8012p4a1.factory.yaml

Support This Project

If you find this project useful, consider buying me a coffee to support ongoing development!

Buy Me A Coffee