16 KiB
Motion Recorder для Home Assistant
English | Русский
Мощная интеграция Home Assistant для записи камер по датчику движения с продвинутой фильтрацией и автоматическим управлением.
Возможности
- 🎥 Запись по движению - Автоматическая запись камер при обнаружении движения
- 🎯 Несколько датчиков движения - Поддержка нескольких датчиков на одну камеру
- ⏱️ Умное управление временем:
- Фильтр движения (0-10с) - Защита от ложных срабатываний
- Задержка остановки (0-60с) - Продолжение записи после прекращения движения
- Максимальная длительность (10-3600с) - Автоостановка длительных записей
- Поддержка предбуфера - Включение секунд до обнаружения движения (0-60с)
- 🗂️ Гибкое управление файлами:
- Настраиваемые пути сохранения с переменными
- Несколько шаблонов имен файлов
- Автоматическая очистка старых записей (0-365 дней)
- 🔌 Датчик принудительной остановки - Остановка записи по состоянию любой сущности
- 🎛️ Переключатель включения/выключения - Управление записью одним кликом
- Сенсор статуса - Мониторинг состояния записи с красивыми иконками
- 🌍 Многоязычность - Переводы на русский и английский языки
- Горячая перезагрузка - Настройки применяются сразу без перезапуска
Установка
Ручная установка
- Скачайте папку
motion_recorder - Поместите её в директорию
custom_componentsвашего Home Assistant:/config/custom_components/motion_recorder/ - Перезапустите Home Assistant
- Перейдите в Настройки → Устройства и службы → Добавить интеграцию
- Найдите Motion Recorder и следуйте мастеру настройки
Через HACS (Рекомендуется)
- Откройте HACS в Home Assistant
- Перейдите в Интеграции
- Нажмите ⋮ (три точки) → Пользовательские репозитории
- Добавьте репозиторий:
https://github.com/sirmrak/motion_recorder - Категория: Интеграция
- Установите Motion Recorder из HACS
- Перезапустите Home Assistant
- Добавьте интеграцию через Настройки → Устройства и службы
Настройка
Первоначальная настройка
При добавлении интеграции вы настроите:
| Настройка | Описание | По умолчанию | Диапазон |
|---|---|---|---|
| Имя интеграции | Отображаемое имя для этого экземпляра | Motion Recorder | - |
| Камера | Сущность камеры для записи | - | - |
| Путь сохранения | Папка относительно /media |
{camera_name} |
- |
| Формат имени файла | Формат даты/времени для файлов | ДД-ММ-ГГГГ_ЧЧ-ММ-СС |
- |
| Макс. длительность | Максимальная длина записи | 30 сек | 10-3600 сек |
| Предбуфер | Секунды до движения для включения | 0 сек | 0-60 сек |
| Датчики движения | Бинарные сенсоры для запуска записи | - | - |
| Фильтр движения | Задержка перед стартом (защита от ложных срабатываний) | 0 сек | 0-10 сек |
| Задержка остановки | Ожидание после прекращения движения | 0 сек | 0-60 сек |
| Датчик принуд. остановки | Сущность для принудительной остановки | - | - |
| Состояние остановки | Значение состояния для запуска остановки | off |
- |
| Дни хранения | Автоудаление записей старше | 7 дней | 0-365 дней |
| Уровень логирования | Детализация логов | INFO | - |
Опции (после настройки)
После первоначальной настройки вы можете изменить эти параметры через Настройки → Устройства и службы → Motion Recorder → Настроить:
- Максимальная длительность
- Предбуфер
- Фильтр движения
- Задержка остановки
- Дни хранения
- Уровень логирования
Изменения применяются сразу без перезапуска.
Использование
Базовый рабочий процесс
- Обнаружено движение → Сенсор срабатывает
- Фильтр движения (опционально) → Ожидание для подтверждения, что это не ложное срабатывание
- Запись начинается → Поток камеры сохраняется в файл
- Движение продолжается → Запись продолжается до максимальной длительности
- Движение прекратилось → Запускается таймер задержки остановки
- Задержка истекла → Запись останавливается и файл финализируется
- Очистка → Старые файлы удаляются согласно политике хранения
Машина состояний
Интеграция использует чёткую машину состояний, видимую в сенсоре статуса:
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 |
Произошла ошибка |
Создаваемые сущности
Для каждого экземпляра интеграции:
-
Сенсор -
sensor.motion_recorder_<имя>_status- Показывает текущее состояние записи
- Атрибуты: количество записей, общая длительность, общий размер, путь к последнему файлу
-
Переключатель -
switch.motion_recorder_<имя>_enabled- Включение/выключение записи
- Состояние сохраняется между перезапусками
Примеры автоматизаций
Отправка уведомления при завершении записи
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') }}"
Включение света во время записи
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
Отключение записи ночью
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) для принудительной остановки записи немедленно:
- Пример использования: Остановка записи при снятии с охраны
- Пример использования: Остановка записи когда человек покидает комнату
- Пример использования: Кнопка экстренной остановки
Предбуфер
Включите секунды до обнаружения движения в запись:
- Требуется активный поток камеры
- Фактический предбуфер может быть меньше запрошенного в зависимости от буфера потока
- Полезно для записи того, что произошло до срабатывания движения
Решение проблем
Запись не начинается
- Проверьте, что датчик движения работает в Home Assistant
- Убедитесь, что камера поддерживает потоковую передачу
- Проверьте, что интеграция включена (переключатель в положении ВКЛ)
- Просмотрите логи: Настройки → Система → Журналы → фильтр по
motion_recorder
Файлы не создаются
- Убедитесь, что путь сохранения существует или может быть создан
- Проверьте, что Home Assistant имеет права на запись в
/media - Просмотрите логи на наличие ошибок прав доступа
- Попробуйте абсолютный путь вместо относительного
Запись не останавливается
- Проверьте настройку задержки остановки (увеличьте при необходимости)
- Убедитесь, что датчик движения действительно перестаёт срабатывать
- Проверьте, что максимальная длительность установлена правильно
- Просмотрите логи на наличие проблем с таймерами
Сенсор статуса показывает "error"
- Проверьте логи для детального сообщения об ошибке
- Убедитесь, что сущность камеры действительна
- Проверьте, что компонент stream работает
- Попробуйте перезапустить Home Assistant
Логи
Установите уровень логирования DEBUG для детального troubleshooting:
logger:
logs:
custom_components.motion_recorder: DEBUG
Требования
- Home Assistant 2024.6 или новее
- Камера с поддержкой потоковой передачи
- Включённый компонент
stream - Установленный FFmpeg (для некоторых типов камер)
Поддержка
- Проблемы: GitHub Issues
- Обсуждения: GitHub Discussions
- Документация: Документация Home Assistant
Лицензия
Этот проект лицензирован по лицензии MIT - подробности в файле LICENSE.
Благодарности
- Создано с ❤️ для сообщества Home Assistant
- Вдохновлено различными решениями для записи камер
- Спасибо всем контрибьюторам и тестировщикам
Версия: 1.0.0
Последнее обновление: 2026-07-03
Совместимо с: Home Assistant 2024.6+