Immich Album Watcher
A Home Assistant custom integration that monitors Immich photo/video library albums for changes and exposes them as Home Assistant entities with event-firing capabilities.
Features
- Album Monitoring - Watch selected Immich albums for asset additions and removals
- Rich Sensor Data - Multiple sensors per album:
- Album ID (with share URL attribute)
- Asset count (with detected people list)
- Photo count
- Video count
- Last updated timestamp
- Creation date
- Camera Entity - Album thumbnail displayed as a camera entity for dashboards
- Binary Sensor - "New Assets" indicator that turns on when assets are added
- Face Recognition - Detects and lists people recognized in album photos
- Event Firing - Fires Home Assistant events when albums change:
immich_album_watcher_album_changed- General album changesimmich_album_watcher_assets_added- When new assets are addedimmich_album_watcher_assets_removed- When assets are removed
- Enhanced Event Data - Events include detailed asset info:
- Asset type (photo/video)
- Filename
- Creation date
- Asset owner (who uploaded the asset)
- Asset description/caption
- Public URL (if album has a shared link)
- Detected people in the asset
- Services - Custom service calls:
immich_album_watcher.refresh- Force immediate data refreshimmich_album_watcher.get_recent_assets- Get recent assets from an album
- Share Link Management - Button entities to create and delete share links:
- Create/delete public (unprotected) share links
- Create/delete password-protected share links
- Edit protected link passwords via Text entity
- Configurable Polling - Adjustable scan interval (10-3600 seconds)
Installation
HACS Installation (Recommended)
- Open HACS in Home Assistant
- Click on the three dots in the top right corner
- Select Custom repositories
- Add this repository URL:
https://github.com/DolgolyovAlexei/haos-hacs-immich-album-watcher - Select Integration as the category
- Click Add
- Search for "Immich Album Watcher" in HACS and install it
- Restart Home Assistant
- Add the integration via Settings → Devices & Services → Add Integration
Manual Installation
- Download or clone this repository
- Copy the
custom_components/immich_album_watcherfolder to your Home Assistantconfig/custom_componentsdirectory - Restart Home Assistant
- Add the integration via Settings → Devices & Services → Add Integration
Tip: For the best experience, use this integration with the Immich Album Watcher Blueprint to easily create automations for album change notifications.
Configuration
| Option | Description | Default |
|---|---|---|
| Server URL | Your Immich server URL (e.g., https://immich.example.com) |
Required |
| API Key | Your Immich API key | Required |
| Albums | Albums to monitor | Required |
| Scan Interval | How often to check for changes (seconds) | 60 |
Entities Created (per album)
| Entity Type | Name | Description |
|---|---|---|
| Sensor | Album ID | Album identifier with album_name and share_url attributes |
| Sensor | Asset Count | Total number of assets (includes people list in attributes) |
| Sensor | Photo Count | Number of photos in the album |
| Sensor | Video Count | Number of videos in the album |
| Sensor | Last Updated | When the album was last modified |
| Sensor | Created | When the album was created |
| Sensor | Public URL | Public share link URL (accessible links without password) |
| Sensor | Protected URL | Password-protected share link URL (if any exist) |
| Sensor | Protected Password | Password for the protected share link (read-only) |
| Binary Sensor | New Assets | On when new assets were recently added |
| Camera | Thumbnail | Album cover image |
| Text | Protected Password | Editable password for the protected share link |
| Button | Create Share Link | Creates an unprotected public share link |
| Button | Delete Share Link | Deletes the unprotected public share link |
| Button | Create Protected Link | Creates a password-protected share link |
| Button | Delete Protected Link | Deletes the password-protected share link |
Services
Refresh
Force an immediate refresh of all album data:
service: immich_album_watcher.refresh
Get Recent Assets
Get the most recent assets from a specific album (returns response data):
service: immich_album_watcher.get_recent_assets
data:
album_id: "your-album-id-here"
count: 10
Events
Use these events in your automations:
automation:
- alias: "New photos added to album"
trigger:
- platform: event
event_type: immich_album_watcher_assets_added
action:
- service: notify.mobile_app
data:
title: "New Photos"
message: "{{ trigger.event.data.added_count }} new photos in {{ trigger.event.data.album_name }}"
Event Data
| Field | Description |
|---|---|
album_id |
Album ID |
album_name |
Album name |
album_url |
Public URL to view the album (only present if album has a shared link) |
change_type |
Type of change (assets_added, assets_removed, changed) |
added_count |
Number of assets added |
removed_count |
Number of assets removed |
added_assets |
List of added assets with details (see below) |
removed_assets |
List of removed asset IDs |
people |
List of all people detected in the album |
Added Assets Fields
Each item in the added_assets list contains the following fields:
| Field | Description |
|---|---|
id |
Unique asset ID |
asset_type |
Type of asset (IMAGE or VIDEO) |
asset_filename |
Original filename of the asset |
asset_created |
Date/time when the asset was originally created |
asset_owner |
Display name of the user who owns the asset |
asset_owner_id |
Unique ID of the user who owns the asset |
asset_description |
Description/caption of the asset (from EXIF data) |
asset_url |
Public URL to view the asset (only present if album has a shared link) |
people |
List of people detected in this specific asset |
Example accessing asset owner in an automation:
automation:
- alias: "Notify when someone adds photos"
trigger:
- platform: event
event_type: immich_album_watcher_assets_added
action:
- service: notify.mobile_app
data:
title: "New Photos"
message: >
{{ trigger.event.data.added_assets[0].asset_owner }} added
{{ trigger.event.data.added_count }} photos to {{ trigger.event.data.album_name }}
Requirements
- Home Assistant 2024.1.0 or newer
- Immich server with API access
- Valid Immich API key with the following permissions:
Required API Permissions
| Permission | Required | Description |
|---|---|---|
album.read |
Yes | Read album data and asset lists |
asset.read |
Yes | Read asset details (type, filename, creation date) |
user.read |
Yes | Resolve asset owner names |
person.read |
Yes | Read face recognition / people data |
sharedLink.read |
Yes | Read shared links for public/protected URL sensors |
sharedLink.create |
Optional | Create share links via the Button entities |
sharedLink.edit |
Optional | Edit shared link passwords via the Text entity |
sharedLink.delete |
Optional | Delete share links via the Button entities |
Note: Without optional permissions, the corresponding entities will be unavailable or non-functional.
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
License
This project is licensed under the MIT License - see the LICENSE file for details.