You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`random` picks a different effect per slide (and avoids repeating the previous one)
55
+
- Configurable duration and CSS easing
56
+
- Aspect ratio + fill mode inheritance from the camera entity (cover / contain / blur backdrop)
57
+
51
58
### 🎨 Smart Rendering Engine
52
59
53
60
#### Orientation Mismatch Handling
@@ -82,7 +89,7 @@ The following entities allow you to adjust slideshow behavior without restarting
82
89
| Number | Slide interval | 60 | Any positive integer (seconds) | Time between slides |
83
90
| Number | Album refresh | 24 | Any positive integer (hours) | How often album contents refresh |
84
91
| Number | Pair divider size | 8 | 0-64 (px) | Width of divider between paired images |
85
-
| Number | Image cache size |150| 50–1000 (MB) | Memory budget for downloaded image data |
92
+
| Number | Image cache size |75| 50-1000 (MB) | Memory budget for downloaded image data (per album)|
86
93
| Select | Fill mode | blur | blur, cover, contain | How images fill the canvas |
87
94
| Select | Orientation mismatch | pair | pair, single, avoid | Handling of portrait and landscape mismatch |
88
95
| Select | Order mode | random | random, album_order, newest_taken, oldest_taken, newest_added, oldest_added | Slide ordering behavior |
@@ -201,6 +208,48 @@ The slideshow camera exposes per-frame metadata as attributes (use with `state_a
201
208
|`byte_size`| int \| null | Original file size in bytes (Google Photos only) |
202
209
|`paused`| bool | Whether the slideshow is paused |
203
210
|`date_filter`| string | Active date filter mode |
211
+
|`frame_id`| int | Monotonic counter incremented on every committed slide. Used by the [card](#-album-slideshow-card) to detect new frames |
212
+
213
+
---
214
+
215
+
## 🎞 Album Slideshow Card
216
+
217
+
The integration ships with a custom Lovelace card that does the slide-to-slide transition entirely in the browser. The server only renders one still per slide change; the card cross-fades in CSS, which the browser composites on the GPU. Result: a smooth dissolve on a Pi 4, even with several albums on screen.
218
+
219
+
The card is registered automatically when the integration loads; you do **not** need to add it as a HACS frontend repository or configure a Lovelace resource manually. After installing or upgrading, hard-refresh the dashboard once (Ctrl+Shift+R) so the browser picks up the script.
220
+
221
+
A visual editor is available - pick **Album Slideshow** from the card picker in Lovelace and the form will appear automatically.
222
+
223
+
### Minimal example
224
+
225
+
```yaml
226
+
type: custom:album-slideshow-card
227
+
entity: camera.album_slideshow_living_room
228
+
```
229
+
230
+
### Full options
231
+
232
+
```yaml
233
+
type: custom:album-slideshow-card
234
+
entity: camera.album_slideshow_living_room
235
+
transition: random # random | none | fade | slide-left
236
+
# | slide-right | slide-up | slide-down
237
+
# | wipe-left | wipe-right | zoom
238
+
duration: 800# ms; CSS transition length
239
+
easing: ease-in-out # any CSS timing function (ease, linear, cubic-bezier(...))
240
+
aspect_ratio: 16/9# CSS aspect-ratio value (16/9, 4/3, 1/1, auto)
241
+
fit: auto # auto | cover | contain
242
+
# auto inherits the camera's fill_mode (cover / contain / blur)
243
+
background: '#000'# color shown behind contained images
244
+
tap_action: none # none | more-info
245
+
```
246
+
247
+
### Notes
248
+
249
+
- `transition: random` picks a different effect per slide and avoids repeating the previous one.
250
+
- `fit: auto` reads the camera's `fill_mode` attribute. `blur` renders the slide as `contain` plus a blurred backdrop layer behind it.
251
+
- Every slide commit increments the camera's `frame_id` attribute. The card cache-busts the camera proxy URL with that value, so the browser refetches a fresh JPEG on every change instead of serving a stale cached image.
252
+
- If the entity is unavailable, the card shows a "Camera not ready" placeholder.
0 commit comments