Добавить README.ru.md
This commit is contained in:
+313
@@ -0,0 +1,313 @@
|
||||
# Motion Recorder для Home Assistant
|
||||
[English](README.md) | Русский
|
||||
|
||||
Мощная интеграция Home Assistant для записи камер по датчику движения с продвинутой фильтрацией и автоматическим управлением.
|
||||
|
||||
## Возможности
|
||||
|
||||
- 🎥 **Запись по движению** - Автоматическая запись камер при обнаружении движения
|
||||
- 🎯 **Несколько датчиков движения** - Поддержка нескольких датчиков на одну камеру
|
||||
- ⏱️ **Умное управление временем**:
|
||||
- Фильтр движения (0-10с) - Защита от ложных срабатываний
|
||||
- Задержка остановки (0-60с) - Продолжение записи после прекращения движения
|
||||
- Максимальная длительность (10-3600с) - Автоостановка длительных записей
|
||||
- **Поддержка предбуфера** - Включение секунд до обнаружения движения (0-60с)
|
||||
- 🗂️ **Гибкое управление файлами**:
|
||||
- Настраиваемые пути сохранения с переменными
|
||||
- Несколько шаблонов имен файлов
|
||||
- Автоматическая очистка старых записей (0-365 дней)
|
||||
- 🔌 **Датчик принудительной остановки** - Остановка записи по состоянию любой сущности
|
||||
- 🎛️ **Переключатель включения/выключения** - Управление записью одним кликом
|
||||
- **Сенсор статуса** - Мониторинг состояния записи с красивыми иконками
|
||||
- 🌍 **Многоязычность** - Переводы на русский и английский языки
|
||||
- **Горячая перезагрузка** - Настройки применяются сразу без перезапуска
|
||||
|
||||
## Установка
|
||||
|
||||
### Ручная установка
|
||||
|
||||
1. Скачайте папку `motion_recorder`
|
||||
2. Поместите её в директорию `custom_components` вашего Home Assistant:
|
||||
```
|
||||
/config/custom_components/motion_recorder/
|
||||
```
|
||||
3. Перезапустите Home Assistant
|
||||
4. Перейдите в **Настройки → Устройства и службы → Добавить интеграцию**
|
||||
5. Найдите **Motion Recorder** и следуйте мастеру настройки
|
||||
|
||||
### Через HACS (Рекомендуется)
|
||||
|
||||
1. Откройте HACS в Home Assistant
|
||||
2. Перейдите в **Интеграции**
|
||||
3. Нажмите **⋮** (три точки) → **Пользовательские репозитории**
|
||||
4. Добавьте репозиторий: `https://github.com/sirmrak/motion_recorder`
|
||||
5. Категория: **Интеграция**
|
||||
6. Установите **Motion Recorder** из HACS
|
||||
7. Перезапустите Home Assistant
|
||||
8. Добавьте интеграцию через **Настройки → Устройства и службы**
|
||||
|
||||
## Настройка
|
||||
|
||||
### Первоначальная настройка
|
||||
|
||||
При добавлении интеграции вы настроите:
|
||||
|
||||
| Настройка | Описание | По умолчанию | Диапазон |
|
||||
|-----------|----------|--------------|----------|
|
||||
| **Имя интеграции** | Отображаемое имя для этого экземпляра | Motion Recorder | - |
|
||||
| **Камера** | Сущность камеры для записи | - | - |
|
||||
| **Путь сохранения** | Папка относительно `/media` | `{camera_name}` | - |
|
||||
| **Формат имени файла** | Формат даты/времени для файлов | `ДД-ММ-ГГГГ_ЧЧ-ММ-СС` | - |
|
||||
| **Макс. длительность** | Максимальная длина записи | 30 сек | 10-3600 сек |
|
||||
| **Предбуфер** | Секунды до движения для включения | 0 сек | 0-60 сек |
|
||||
| **Датчики движения** | Бинарные сенсоры для запуска записи | - | - |
|
||||
| **Фильтр движения** | Задержка перед стартом (защита от ложных срабатываний) | 0 сек | 0-10 сек |
|
||||
| **Задержка остановки** | Ожидание после прекращения движения | 0 сек | 0-60 сек |
|
||||
| **Датчик принуд. остановки** | Сущность для принудительной остановки | - | - |
|
||||
| **Состояние остановки** | Значение состояния для запуска остановки | `off` | - |
|
||||
| **Дни хранения** | Автоудаление записей старше | 7 дней | 0-365 дней |
|
||||
| **Уровень логирования** | Детализация логов | INFO | - |
|
||||
|
||||
### Опции (после настройки)
|
||||
|
||||
После первоначальной настройки вы можете изменить эти параметры через **Настройки → Устройства и службы → Motion Recorder → Настроить**:
|
||||
|
||||
- Максимальная длительность
|
||||
- Предбуфер
|
||||
- Фильтр движения
|
||||
- Задержка остановки
|
||||
- Дни хранения
|
||||
- Уровень логирования
|
||||
|
||||
Изменения применяются сразу без перезапуска.
|
||||
|
||||
## Использование
|
||||
|
||||
### Базовый рабочий процесс
|
||||
|
||||
1. **Обнаружено движение** → Сенсор срабатывает
|
||||
2. **Фильтр движения** (опционально) → Ожидание для подтверждения, что это не ложное срабатывание
|
||||
3. **Запись начинается** → Поток камеры сохраняется в файл
|
||||
4. **Движение продолжается** → Запись продолжается до максимальной длительности
|
||||
5. **Движение прекратилось** → Запускается таймер задержки остановки
|
||||
6. **Задержка истекла** → Запись останавливается и файл финализируется
|
||||
7. **Очистка** → Старые файлы удаляются согласно политике хранения
|
||||
|
||||
### Машина состояний
|
||||
|
||||
Интеграция использует чёткую машину состояний, видимую в сенсоре статуса:
|
||||
|
||||
```
|
||||
idle → detecting → recording → delaying → finalizing → idle
|
||||
```
|
||||
|
||||
| Состояние | Иконка | Описание |
|
||||
|-----------|--------|----------|
|
||||
| `idle` | 💤 `mdi:sleep` | Ожидание движения |
|
||||
| `detecting` | 🎯 `mdi:motion-sensor` | Активен фильтр движения |
|
||||
| `recording` | 🔴 `mdi:record-rec` | Идёт запись |
|
||||
| `delaying` | ⏳ `mdi:timer-sand` | Ожидание после прекращения движения |
|
||||
| `finalizing` | ✅ `mdi:file-check` | Сохранение и финализация файла |
|
||||
| `disabled` | 📹 `mdi:video-off` | Запись отключена через переключатель |
|
||||
| `error` | ⚠️ `mdi:alert-circle` | Произошла ошибка |
|
||||
|
||||
### Создаваемые сущности
|
||||
|
||||
Для каждого экземпляра интеграции:
|
||||
|
||||
1. **Сенсор** - `sensor.motion_recorder_<имя>_status`
|
||||
- Показывает текущее состояние записи
|
||||
- Атрибуты: количество записей, общая длительность, общий размер, путь к последнему файлу
|
||||
|
||||
2. **Переключатель** - `switch.motion_recorder_<имя>_enabled`
|
||||
- Включение/выключение записи
|
||||
- Состояние сохраняется между перезапусками
|
||||
|
||||
### Примеры автоматизаций
|
||||
|
||||
#### Отправка уведомления при завершении записи
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Уведомление о завершении записи"
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.motion_recorder_front_door_status
|
||||
to: "idle"
|
||||
from: "finalizing"
|
||||
action:
|
||||
- service: notify.mobile_app
|
||||
data:
|
||||
message: "Запись завершена: {{ state_attr('sensor.motion_recorder_front_door_status', 'last_file_path') }}"
|
||||
```
|
||||
|
||||
#### Включение света во время записи
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Свет во время записи"
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.motion_recorder_front_door_status
|
||||
to: "recording"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
target:
|
||||
entity_id: light.porch
|
||||
```
|
||||
|
||||
#### Отключение записи ночью
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: "Отключение записи ночью"
|
||||
trigger:
|
||||
- platform: time
|
||||
at: "23:00:00"
|
||||
action:
|
||||
- service: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.motion_recorder_front_door_enabled
|
||||
|
||||
- alias: "Включение записи утром"
|
||||
trigger:
|
||||
- platform: time
|
||||
at: "07:00:00"
|
||||
action:
|
||||
- service: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.motion_recorder_front_door_enabled
|
||||
```
|
||||
|
||||
## Управление файлами
|
||||
|
||||
### Путь сохранения
|
||||
|
||||
Путь сохранения относителен к директории `/media` вашего Home Assistant. Вы можете использовать переменные:
|
||||
|
||||
- `{camera_name}` - Заменяется на имя сущности камеры (без префикса `camera.`)
|
||||
|
||||
**Примеры:**
|
||||
- `{camera_name}` → `/media/front_door/`
|
||||
- `cameras/{camera_name}` → `/media/cameras/front_door/`
|
||||
- `/absolute/path/recordings` → Абсолютный путь (должен существовать)
|
||||
|
||||
### Шаблоны имен файлов
|
||||
|
||||
Выберите из предустановленных форматов:
|
||||
|
||||
| Формат | Пример вывода |
|
||||
|--------|---------------|
|
||||
| `ДД-ММ-ГГГГ_ЧЧ-ММ-СС` | `02-07-2026_20-30-45.mp4` |
|
||||
| `ГГГГ-ММ-ДД_ЧЧ-ММ-СС` | `2026-07-02_20-30-45.mp4` |
|
||||
| `ДД.ММ.ГГГГ_ЧЧ-ММ-СС` | `02.07.2026_20-30-45.mp4` |
|
||||
| `ГГГГММДД_ЧЧММСС` | `20260702_203045.mp4` |
|
||||
| `ДД.ММ.ГГГГ_ЧЧ.ММ.СС` | `02.07.2026_20.30.45.mp4` |
|
||||
|
||||
Все форматы включают секунды для предотвращения перезаписи файлов при нескольких записях в одну минуту.
|
||||
|
||||
### Автоматическая очистка
|
||||
|
||||
Файлы старше периода хранения автоматически удаляются ежедневно в 03:00.
|
||||
|
||||
- **0 дней** = Никогда не удалять
|
||||
- **7 дней** = Удалить файлы старше 7 дней
|
||||
- **30 дней** = Удалить файлы старше 30 дней
|
||||
- **365 дней** = Удалить файлы старше 1 года
|
||||
|
||||
Очистка работает в фоновом режиме и не влияет на производительность записи.
|
||||
|
||||
## Продвинутые возможности
|
||||
|
||||
### Несколько датчиков движения
|
||||
|
||||
Вы можете выбрать несколько датчиков движения. Запись запускается при срабатывании **любого** сенсора. Интеграция использует логику ИЛИ:
|
||||
|
||||
- Сенсор A сработал → Запись началась
|
||||
- Сенсор A остановился, Сенсор B всё ещё активен → Запись продолжается
|
||||
- Все сенсоры остановились → Запускается таймер задержки остановки
|
||||
|
||||
### Датчик принудительной остановки
|
||||
|
||||
Используйте любую сущность (`binary_sensor`, `switch`, `input_boolean`) для принудительной остановки записи немедленно:
|
||||
|
||||
- **Пример использования**: Остановка записи при снятии с охраны
|
||||
- **Пример использования**: Остановка записи когда человек покидает комнату
|
||||
- **Пример использования**: Кнопка экстренной остановки
|
||||
|
||||
### Предбуфер
|
||||
|
||||
Включите секунды **до** обнаружения движения в запись:
|
||||
|
||||
- Требуется активный поток камеры
|
||||
- Фактический предбуфер может быть меньше запрошенного в зависимости от буфера потока
|
||||
- Полезно для записи того, что произошло до срабатывания движения
|
||||
|
||||
## Решение проблем
|
||||
|
||||
### Запись не начинается
|
||||
|
||||
1. Проверьте, что датчик движения работает в Home Assistant
|
||||
2. Убедитесь, что камера поддерживает потоковую передачу
|
||||
3. Проверьте, что интеграция включена (переключатель в положении ВКЛ)
|
||||
4. Просмотрите логи: **Настройки → Система → Журналы** → фильтр по `motion_recorder`
|
||||
|
||||
### Файлы не создаются
|
||||
|
||||
1. Убедитесь, что путь сохранения существует или может быть создан
|
||||
2. Проверьте, что Home Assistant имеет права на запись в `/media`
|
||||
3. Просмотрите логи на наличие ошибок прав доступа
|
||||
4. Попробуйте абсолютный путь вместо относительного
|
||||
|
||||
### Запись не останавливается
|
||||
|
||||
1. Проверьте настройку задержки остановки (увеличьте при необходимости)
|
||||
2. Убедитесь, что датчик движения действительно перестаёт срабатывать
|
||||
3. Проверьте, что максимальная длительность установлена правильно
|
||||
4. Просмотрите логи на наличие проблем с таймерами
|
||||
|
||||
### Сенсор статуса показывает "error"
|
||||
|
||||
1. Проверьте логи для детального сообщения об ошибке
|
||||
2. Убедитесь, что сущность камеры действительна
|
||||
3. Проверьте, что компонент stream работает
|
||||
4. Попробуйте перезапустить Home Assistant
|
||||
|
||||
### Логи
|
||||
|
||||
Установите уровень логирования **DEBUG** для детального troubleshooting:
|
||||
|
||||
```yaml
|
||||
logger:
|
||||
logs:
|
||||
custom_components.motion_recorder: DEBUG
|
||||
```
|
||||
|
||||
## Требования
|
||||
|
||||
- Home Assistant 2024.6 или новее
|
||||
- Камера с поддержкой потоковой передачи
|
||||
- Включённый компонент `stream`
|
||||
- Установленный FFmpeg (для некоторых типов камер)
|
||||
|
||||
## Поддержка
|
||||
|
||||
- **Проблемы**: [GitHub Issues](https://github.com/sirmrak/motion_recorder/issues)
|
||||
- **Обсуждения**: [GitHub Discussions](https://github.com/sirmrak/motion_recorder/discussions)
|
||||
- **Документация**: [Документация Home Assistant](https://www.home-assistant.io/integrations/)
|
||||
|
||||
## Лицензия
|
||||
|
||||
Этот проект лицензирован по лицензии MIT - подробности в файле LICENSE.
|
||||
|
||||
## Благодарности
|
||||
|
||||
- Создано с ❤️ для сообщества Home Assistant
|
||||
- Вдохновлено различными решениями для записи камер
|
||||
- Спасибо всем контрибьюторам и тестировщикам
|
||||
|
||||
---
|
||||
|
||||
**Версия**: 1.0.0
|
||||
**Последнее обновление**: 2026-07-03
|
||||
**Совместимо с**: Home Assistant 2024.6+
|
||||
Reference in New Issue
Block a user