Some checks failed
Validate / Hassfest (push) Has been cancelled
Enable the HAOS integration to optionally connect to the standalone Immich Watcher server for config sync and event reporting. Server-side: - New /api/sync/* endpoints: GET trackers, POST template render, POST event report - API key auth via X-API-Key header (accepts JWT access tokens) Integration-side: - New sync.py: ServerSyncClient with graceful error handling (all methods return defaults on connection failure) - Options flow: optional server_url and server_api_key fields with connection validation - Coordinator: fire-and-forget event reporting to server when album changes are detected - Translations: en.json and ru.json updated with new fields The connection is fully additive -- the integration works identically without a server URL configured. Server failures never break HA. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
268 lines
15 KiB
JSON
268 lines
15 KiB
JSON
{
|
||
"entity": {
|
||
"sensor": {
|
||
"album_id": {
|
||
"name": "ID альбома"
|
||
},
|
||
"album_asset_count": {
|
||
"name": "Число файлов"
|
||
},
|
||
"album_photo_count": {
|
||
"name": "Число фото"
|
||
},
|
||
"album_video_count": {
|
||
"name": "Число видео"
|
||
},
|
||
"album_last_updated": {
|
||
"name": "Последнее обновление"
|
||
},
|
||
"album_created": {
|
||
"name": "Дата создания"
|
||
},
|
||
"album_public_url": {
|
||
"name": "Публичная ссылка"
|
||
},
|
||
"album_protected_url": {
|
||
"name": "Защищённая ссылка"
|
||
},
|
||
"album_protected_password": {
|
||
"name": "Пароль ссылки"
|
||
}
|
||
},
|
||
"binary_sensor": {
|
||
"album_new_assets": {
|
||
"name": "Новые файлы"
|
||
}
|
||
},
|
||
"camera": {
|
||
"album_thumbnail": {
|
||
"name": "Превью"
|
||
}
|
||
},
|
||
"text": {
|
||
"album_protected_password_edit": {
|
||
"name": "Пароль ссылки"
|
||
}
|
||
},
|
||
"button": {
|
||
"create_share_link": {
|
||
"name": "Создать ссылку"
|
||
},
|
||
"delete_share_link": {
|
||
"name": "Удалить ссылку"
|
||
},
|
||
"create_protected_link": {
|
||
"name": "Создать защищённую ссылку"
|
||
},
|
||
"delete_protected_link": {
|
||
"name": "Удалить защищённую ссылку"
|
||
}
|
||
}
|
||
},
|
||
"config": {
|
||
"step": {
|
||
"user": {
|
||
"title": "Подключение к Immich",
|
||
"description": "Введите данные вашего сервера Immich. API-ключ можно получить в Immich → Настройки пользователя → API-ключи.",
|
||
"data": {
|
||
"hub_name": "Название хаба",
|
||
"immich_url": "URL Immich",
|
||
"api_key": "API-ключ"
|
||
},
|
||
"data_description": {
|
||
"hub_name": "Название для этого сервера Immich (используется в ID сущностей)",
|
||
"immich_url": "URL вашего сервера Immich (например, http://192.168.1.100:2283)",
|
||
"api_key": "Ваш API-ключ Immich"
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"cannot_connect": "Не удалось подключиться к серверу Immich",
|
||
"invalid_auth": "Неверный API-ключ",
|
||
"no_albums": "На сервере не найдено альбомов",
|
||
"unknown": "Произошла непредвиденная ошибка"
|
||
},
|
||
"abort": {
|
||
"already_configured": "Этот сервер Immich уже настроен"
|
||
}
|
||
},
|
||
"config_subentries": {
|
||
"album": {
|
||
"initiate_flow": {
|
||
"user": "Добавить альбом"
|
||
},
|
||
"entry_type": "Альбом",
|
||
"step": {
|
||
"user": {
|
||
"title": "Добавить альбом для отслеживания",
|
||
"description": "Выберите альбом с вашего сервера Immich для отслеживания изменений.",
|
||
"data": {
|
||
"album_id": "Альбом"
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"cannot_connect": "Не удалось подключиться к серверу Immich"
|
||
},
|
||
"abort": {
|
||
"parent_not_found": "Конфигурация хаба не найдена",
|
||
"no_albums": "На сервере не найдено альбомов",
|
||
"all_albums_configured": "Все альбомы уже настроены",
|
||
"album_already_configured": "Этот альбом уже отслеживается"
|
||
}
|
||
}
|
||
},
|
||
"options": {
|
||
"step": {
|
||
"init": {
|
||
"title": "Настройки Immich Album Watcher",
|
||
"description": "Настройте интервал опроса и параметры Telegram для всех альбомов.",
|
||
"data": {
|
||
"scan_interval": "Интервал сканирования (секунды)",
|
||
"telegram_bot_token": "Токен Telegram бота",
|
||
"telegram_cache_ttl": "Время жизни кэша Telegram (часы)",
|
||
"server_url": "URL сервера Watcher (необязательно)",
|
||
"server_api_key": "API ключ сервера Watcher (необязательно)"
|
||
},
|
||
"data_description": {
|
||
"scan_interval": "Как часто проверять изменения в альбомах (10-3600 секунд)",
|
||
"telegram_bot_token": "Токен бота для отправки уведомлений в Telegram",
|
||
"telegram_cache_ttl": "Сколько хранить ID загруженных файлов для повторной отправки без загрузки (1-168 часов, по умолчанию: 48)",
|
||
"server_url": "URL автономного сервера Immich Watcher для синхронизации конфигурации и отчётов о событиях (оставьте пустым для отключения)",
|
||
"server_api_key": "API ключ (JWT токен) для аутентификации на сервере Watcher"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"services": {
|
||
"refresh": {
|
||
"name": "Обновить",
|
||
"description": "Принудительно обновить данные альбома из Immich."
|
||
},
|
||
"get_assets": {
|
||
"name": "Получить файлы",
|
||
"description": "Получить файлы из выбранного альбома с возможностью фильтрации и сортировки.",
|
||
"fields": {
|
||
"limit": {
|
||
"name": "Лимит",
|
||
"description": "Максимальное количество возвращаемых файлов (1-100)."
|
||
},
|
||
"offset": {
|
||
"name": "Смещение",
|
||
"description": "Количество файлов для пропуска (для пагинации)."
|
||
},
|
||
"favorite_only": {
|
||
"name": "Только избранные",
|
||
"description": "Фильтр для отображения только избранных файлов."
|
||
},
|
||
"filter_min_rating": {
|
||
"name": "Минимальный рейтинг",
|
||
"description": "Минимальный рейтинг для файлов (1-5)."
|
||
},
|
||
"order_by": {
|
||
"name": "Сортировать по",
|
||
"description": "Поле для сортировки файлов (date - дата, rating - рейтинг, name - имя, random - случайный)."
|
||
},
|
||
"order": {
|
||
"name": "Порядок",
|
||
"description": "Направление сортировки (ascending - по возрастанию, descending - по убыванию)."
|
||
},
|
||
"asset_type": {
|
||
"name": "Тип файла",
|
||
"description": "Фильтровать файлы по типу (all - все, photo - только фото, video - только видео)."
|
||
},
|
||
"min_date": {
|
||
"name": "Минимальная дата",
|
||
"description": "Фильтровать файлы, созданные в эту дату или после (формат ISO 8601)."
|
||
},
|
||
"max_date": {
|
||
"name": "Максимальная дата",
|
||
"description": "Фильтровать файлы, созданные в эту дату или до (формат ISO 8601)."
|
||
},
|
||
"memory_date": {
|
||
"name": "Дата воспоминания",
|
||
"description": "Фильтр по совпадению месяца и дня, исключая тот же год (воспоминания)."
|
||
},
|
||
"city": {
|
||
"name": "Город",
|
||
"description": "Фильтр по названию города (без учёта регистра)."
|
||
},
|
||
"state": {
|
||
"name": "Регион",
|
||
"description": "Фильтр по названию региона/области (без учёта регистра)."
|
||
},
|
||
"country": {
|
||
"name": "Страна",
|
||
"description": "Фильтр по названию страны (без учёта регистра)."
|
||
}
|
||
}
|
||
},
|
||
"send_telegram_notification": {
|
||
"name": "Отправить уведомление в Telegram",
|
||
"description": "Отправить уведомление в Telegram (текст, фото, видео, документ или медиа-группу).",
|
||
"fields": {
|
||
"bot_token": {
|
||
"name": "Токен бота",
|
||
"description": "Токен Telegram бота (необязательно, если настроен в опциях интеграции)."
|
||
},
|
||
"chat_id": {
|
||
"name": "ID чата",
|
||
"description": "ID чата Telegram для отправки."
|
||
},
|
||
"assets": {
|
||
"name": "Ресурсы",
|
||
"description": "Список медиа-ресурсов с 'url', опциональным 'type' (document/photo/video, по умолчанию document), опциональным 'content_type' (MIME-тип) и опциональным 'cache_key' (свой ключ кэширования вместо URL). Если пусто, отправляет текстовое сообщение. Фото и видео группируются; документы отправляются отдельно."
|
||
},
|
||
"caption": {
|
||
"name": "Подпись",
|
||
"description": "Текст подписи. Для медиа применяется к первому элементу. Для пустых URLs это текст сообщения."
|
||
},
|
||
"reply_to_message_id": {
|
||
"name": "Ответ на",
|
||
"description": "ID сообщения для ответа (необязательно)."
|
||
},
|
||
"disable_web_page_preview": {
|
||
"name": "Отключить предпросмотр ссылок",
|
||
"description": "Отключить предпросмотр ссылок в текстовых сообщениях."
|
||
},
|
||
"parse_mode": {
|
||
"name": "Режим парсинга",
|
||
"description": "Как парсить подпись/текст. Варианты: HTML, Markdown, MarkdownV2, или пустая строка для обычного текста."
|
||
},
|
||
"max_group_size": {
|
||
"name": "Макс. размер группы",
|
||
"description": "Максимальное количество медиа-файлов в одной группе (2-10). Большие списки будут разделены на несколько групп."
|
||
},
|
||
"chunk_delay": {
|
||
"name": "Задержка между группами",
|
||
"description": "Задержка в миллисекундах между отправкой нескольких медиа-групп (0-60000). Полезно для ограничения скорости."
|
||
},
|
||
"wait_for_response": {
|
||
"name": "Ждать ответа",
|
||
"description": "Ждать завершения отправки в Telegram перед возвратом. Установите false для фоновой отправки (автоматизация продолжается немедленно)."
|
||
},
|
||
"max_asset_data_size": {
|
||
"name": "Макс. размер ресурса",
|
||
"description": "Максимальный размер ресурса в байтах. Ресурсы, превышающие этот лимит, будут пропущены. Оставьте пустым для отсутствия ограничения."
|
||
},
|
||
"send_large_photos_as_documents": {
|
||
"name": "Большие фото как документы",
|
||
"description": "Как обрабатывать фото, превышающие лимиты Telegram (10МБ или сумма размеров 10000пкс). Если true, отправлять как документы. Если false, пропускать."
|
||
},
|
||
"chat_action": {
|
||
"name": "Действие в чате",
|
||
"description": "Действие для отображения во время обработки (typing, upload_photo, upload_video, upload_document). Оставьте пустым для отключения."
|
||
},
|
||
"quiet_hours_start": {
|
||
"name": "Начало тихих часов",
|
||
"description": "Время начала тихих часов (формат ЧЧ:ММ, например 22:00). Уведомления в этот период ставятся в очередь и отправляются по окончании. Не указывайте для немедленной отправки."
|
||
},
|
||
"quiet_hours_end": {
|
||
"name": "Конец тихих часов",
|
||
"description": "Время окончания тихих часов (формат ЧЧ:ММ, например 08:00). Уведомления из очереди будут отправлены в это время."
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|