Entities & Services
Each frame device gets a Home Assistant device page with entities for everything the controller can change, plus a set of immich_frame.* services for automations.
Entity highlights
| Area | Entities |
|---|---|
| Source selection | Album select, Albums text (multi, comma-separated), Person select, People text, Require All People switch |
| Filters | Date Filter Preset select, Filter Start Date / Filter End Date date pickers, Date Filter text (raw values like last-30-days), Newest Filter number, Album Order select |
| Profiles | Profile selection and the profile services below |
| Display | Renderer option entities — clock, date, weather, font size, background blur, image metadata (date/time, album, person, camera, EXIF, location, rating, owner, user), progress bar |
| Media | Show Videos switch, Show Archived switch, Kiosk Video Mute button |
| Hardware (FreeKiosk) | Display Brightness, Media Volume numbers; navigation, screen, and volume buttons |
| Telemetry (FreeKiosk) | Device Online (connectivity), Motion (camera devices), Screen On, Device Muted, Battery, Battery Charging, WiFi Signal, Light Level, Auto Brightness Active |
| Maintenance | Refresh Albums, Refresh People buttons, Network Mode select |
Notes:
- The telemetry entities come from FreeKiosk, over MQTT or REST. With an MQTT binding, Device Online and Motion update in about a second (real-time push); without it the integration polls every 30 seconds. Motion needs a device with a camera.
- When no album filter is active, the Album select shows
No Album Filter. Choose it before selecting a person when you want person-only source selection. - The Albums / People text entities accept names or IDs, comma-separated.
allselects all named people; blank ornoneclears the filter. - immich-kiosk documents
require_all_peopleas incompatible with other source buckets (albums, date ranges) — avoid combining them when deterministic results matter.
Services
All services accept an optional device_id (defaults to the configured device).
| Service | Key fields |
|---|---|
immich_frame.set_album | album_id, album_ids, album_name, album_names |
immich_frame.set_people | person_id, person_ids, person_name, person_names |
immich_frame.set_profile | profile_id (required) |
immich_frame.save_profile | name, profile_id, overwrite (default true) |
immich_frame.delete_profile | profile_id |
immich_frame.refresh_albums | — |
immich_frame.refresh_people | — |
immich_frame.set_renderer_options | See below |
immich_frame.set_network_mode | network_mode: auto / local / external (required) |
set_renderer_options
One service covers all renderer overrides. Field groups:
- Slideshow:
durationSeconds,transition,fadeTransitionDuration,crossFadeTransitionDuration,imageEffect,imageEffectAmount,albumOrder - Layout:
layout,imageFit,backgroundBlur,backgroundBlurAmount,fontSize,frameless - Clock & weather:
showTime,timeFormat,showAmPm,showSeconds,showDate,dateFormat,clockSource,showWeather,weatherLocation,weatherRotationInterval,weatherShowForecast,weatherShowHumidity,weatherShowWind,weatherShowWindDirection,weatherShowVisibility,weatherShowTemperatureRange,weatherRoundTemperature - Image metadata:
showImageDate,imageDateFormat,showImageTime,imageTimeFormat,showAlbumName,showPersonName,showPersonAge,showImageLocation,showImageCamera,showImageExif,showImageDescription(plus description scroll tuning),showImageRating,showOwner,showUser,showImageQr,showImageId,showMoreInfo - Sources & filters:
activePersonIds,requireAllPeople,filterDate,filterNewest,showVideos,excludeVideosOver,showArchived - Kiosk UI:
disableNavigation,hideCursor,showProgressBar,progressBarPosition - Display care:
burnInInterval,burnInDuration,burnInOpacity,sleepStart,sleepEnd,sleepIcon,sleepDimScreen,disableSleep
The full field list with selectors lives in services.yaml.
Examples
Switch to a saved profile every morning:
yaml
alias: Lenovo frame morning profile
trigger:
- platform: time
at: "07:00:00"
action:
- service: immich_frame.set_profile
data:
profile_id: morningShow the last 30 days from a specific album on weekends:
yaml
alias: Weekend recent photos
trigger:
- platform: time
at: "08:00:00"
condition:
- condition: time
weekday: [sat, sun]
action:
- service: immich_frame.set_album
data:
album_names: ["Family"]
- service: immich_frame.set_renderer_options
data:
filterDate: last-30-days
albumOrder: newestWake the screen when someone approaches a camera-equipped frame (needs FreeKiosk MQTT with Always-on Motion Detection):
yaml
alias: Frame screen on motion
trigger:
- platform: state
entity_id: binary_sensor.lenovo_frame_motion
to: "on"
action:
- service: button.press
target:
entity_id: button.lenovo_frame_screen_onScreen off at night, back on in the morning:
yaml
alias: Frame screen schedule
trigger:
- platform: time
at: "23:00:00"
id: "off"
- platform: time
at: "07:00:00"
id: "on"
action:
- service: button.press
target:
entity_id: "button.lenovo_frame_screen_{{ trigger.id }}"