Files
motion_recorder/README.ru.md
T
2026-07-03 15:30:46 +03:00

313 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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+