Найти в Дзене
DigitalComfort

Скриншоты с камер наблюдения в Телеграм отправляет автоматизация Home Assistant

Для хранения видеоархива с камер наблюдения есть множество различных способов. Это и облачные сервисы, как правило платные, и локальные устройства хранения - видеорегистраторы или сетевые хранилища. Я в своей системе дачного видеонаблюдения использую многоканальный IP-видеорегистратор. Но находясь "по другую сторону интернета" от дачи, получить доступ к видеоархиву регистратора становится проблематично из-за низкой скорости чтения данных с него. А часто бывает нужно просто быстро что-то глянуть - кто и куда проходил или проезжал. И подробного видео на этом этапе ещё не требуется - достаточно было бы посмотреть несколько снимков с камер. Но чтобы эти снимки посмотреть, их нужно постоянно создавать, где-то хранить и иметь к ним простой и быстрый доступ. Идея использовать для этой цели Телеграм лежала на поверхности. Конечно же, чтобы получать снимки с камер, они (камеры) должны быть подключены к Home Assistant. Это подключение выполняется по-разному в разных ситуациях и универсальной инс
Оглавление

Для хранения видеоархива с камер наблюдения есть множество различных способов. Это и облачные сервисы, как правило платные, и локальные устройства хранения - видеорегистраторы или сетевые хранилища. Я в своей системе дачного видеонаблюдения использую многоканальный IP-видеорегистратор.

Но находясь "по другую сторону интернета" от дачи, получить доступ к видеоархиву регистратора становится проблематично из-за низкой скорости чтения данных с него. А часто бывает нужно просто быстро что-то глянуть - кто и куда проходил или проезжал. И подробного видео на этом этапе ещё не требуется - достаточно было бы посмотреть несколько снимков с камер.

Но чтобы эти снимки посмотреть, их нужно постоянно создавать, где-то хранить и иметь к ним простой и быстрый доступ. Идея использовать для этой цели Телеграм лежала на поверхности.

Подключение камер наблюдения

Конечно же, чтобы получать снимки с камер, они (камеры) должны быть подключены к Home Assistant. Это подключение выполняется по-разному в разных ситуациях и универсальной инструкции тут нет. В моём случае, поскольку я использую IP-камеры (HiWatch и Hikvision), то у меня есть прямые ссылки на RTSP-потоки с них. Подключить такие камеры к Home Assistant можно как минимум двумя способами. Первый - через платформу ffmpeg. Для этого нужно в файле configuration.yaml добавить настройку камер:

-2

После сохранения файла и проверки через меню "Панель разработчика" -> "YAML" -> "Проверить конфигурацию" нужно перезагрузить Home Assistant.

Напомню, что для правки конфигурационных файлов в Home Assistant удобно использовать дополнение File Editor:

Платформу ffmpeg я использовал раньше только для отображения видео с камер в Home Assistant, но настроить с её помощью получение скриншотов мне не удалось, там всё очень неоднозначно.

Поэтому я перешёл на второй, более удобный способ подключения IP-камер к Home Assistant - через интеграцию "Камера видеонаблюдения". Она добавляется как обычно, из меню "Настройки" -> "Устройства и службы (Интеграции,..)" -> кнопка "Добавить интеграцию":

-3

Далее вводим те же настройки, что и для ffmpeg:

-4

Здесь у меня пример уже не для локальной камеры, а для камеры с доступом по VPN-туннелю между дачей и городом, поэтому другой локальный IP-адрес и порт не 554, а прокинутый через роутер 54554. А RTSP-ссылка здесь для камеры домофона Dahua DHI-VTO2111D-P-S2.

После нажатия кнопки "Подтвердить" интеграция пытается сделать предпросмотр с камеры и просит поставить галочку, если всё корректно отображается. У меня этот предпросмотр ни разу не срабатывал, и я просто жмакал эту галочку и всё. Потом оказывалось, что прекрасно всё работает, если зайти в только-что созданный объект камеры в списке объектов в Home Assistant:

-5

Настройка Telegram

Теперь можно переходить к Телеграм. Для начала нужно создать Телеграм-бота, которого потом подключить к Home Assistant. И после этого создать в Телеграм несколько каналов (по числу камер), которые будут использоваться специально для отправки в них скриншотов. У меня в данный момент на даче шесть камер, и я создал в Телеграм шесть каналов. Как создать Телеграм-бота и каналы, а затем подключить их к Home Assistant, я рассказывал в этой инструкции:

Не забудьте в каждый из созданных каналов добавить подписчика - вашего Телеграм-бота Home Assistant.

В итоге в configuration.yaml должны быть настроены нотификаторы для всех камер, примерно так:

-6

Здесь идентификаторы каналов chat_id вынесены в отдельный файл secrets.yaml, лежащий рядом с configuration.yaml, в котором согласно архитектуры Home Assistant принято хранить всякие пароли и прочие секретные данные. В самом же файле secrets.yaml в данном случае делаются записи вида:

-7

После сохранения файлов и проверки через меню "Панель разработчика" -> "YAML" -> "Проверить конфигурацию" нужно перезагрузить Home Assistant.

Автоматизация

Остался самый простой шаг - настроить автоматизацию для отправки скриншотов с камер в Телеграм.

Для начала нам нужно создать папку, куда будут сохраняться записанные скриншоты. Это будет не архив, а просто буфер, новый скриншот каждый раз будут перезаписываться поверх старого. Это не очень хорошо для карты памяти, если у вас, например, Home Assistant работает на Raspberry Pi. Поэтому (и не только поэтому) я отказался от RPi и перешёл на безвентиляторный мини ПК, где в качестве носителя данных используется SSD. Но и на RPi это работать тоже будет.

Папку лучше всего создать в папке www, доступ к ней открыт по умолчанию и не потребуется настраивать права. С помощью File Editor зайдите внутрь неё и, нажав на иконку "New Folder" создайте новую папку:

-8

Теперь можно создать автоматизацию. Для каждый камеры нужно выполнить всего два действия - сделать снимок и отправить его в Телеграм.

Действие для снимка выполняет интеграция "Камера видеонаблюдения", выбираем в действиях "Камера" -> "Сделать моментальный снимок", кнопкой "Выбрать объект" выбираем нужную камеру и задаём путь и имя файла для данной камеры:

-9

Для других камер делаем тоже самое, выбрав нужный объект камеры и задав другое имя файла в той же папке.

Далее следуют действия отправки снимков в Телеграм. Выбираем в действиях "Уведомления" и ищем там созданный нами нотификатор для Телеграм. Точно не скажу, зачем я в полях message и title вписал not, может быть это не нужно, а может быть эти поля не могли быть пустыми. А вот в поле data необходимо задать конфигурацию для уведомления. Инструкция disable_notification запрещает звуки, всплывающие окна и пуши для этих уведомлений, снимки будут прилетать молча. Типом уведомления нужно задать photo и указать путь к файлу снимка:

-10

Для каждой камеры создаём аналогичное действие. Полностью автоматизация будет выглядеть так:

-11

Триггером запуска выступает интервал времени. Минимальное время, при котором всё более-менее стабильно работает - 20 секунд, то есть по три снимка в минуту. Если интервал уменьшать ещё сильнее, начинаются лаги. Да и даже при таком интервале не всегда все снимки прилетают, некоторые пропускаются.

Искать кадр нужного момента времени в такой ленте, конечно, не очень удобно, но терпимо. Чтобы быстро перейти на нужную дату, надо в поиске выбрать её:

-12

А уже в пределах суток придётся листать, другого способа я не нашёл. В десктопной версии Телеграм делать это гораздо удобнее - листать можно стрелками на клавиатуре, а зажав кнопку - перематывать.

Отдельный вопрос - зачем отправлять все снимки подряд, почему не использовать детектор движения? Я пробовал это делать, но для уличных камер наблюдения этот вариант оказался нерабочим. В кадре всегда есть растительность, колышущаяся на ветру, и отсечь это движение по интенсивности или по площади не удаётся. И даже если для некоторых зон (например, кусочка дороги) получается сделать такое разделение, то в тёмное время суток это всё равно перестаёт работать, если есть хоть малейшие осадки, морось или даже просто туман - все эти мельчайшие капельки ярко светятся в ИК-подсветке камеры и создают хаотичное движение по всей площади кадра. Кроме того, как оказалось, есть некоторые виды летающих насекомых, которых привлекает ИК-свет, и они кружат в поле зрения камеры всю ночь. Поэтому просто отправляю непрерывный поток скриншотов со всех камер круглосуточно.

Забанит ли Телеграм за такой объём постоянно льющихся в него данных? Не знаю. У меня в таком режиме работа идёт уже чуть больше года, и за это время мои камеры в сумме отправили в телегу более четырёх терабайт данных, пока проблем не замечено. Ну и надо понимать, что ни о какой секретности тут и речи быть не может. Не смотря на то, что эти каналы в Телеграм не являются публичными, вы всё равно отправляете изображения в интернет, где не может существовать никаких гарантий приватности. Поэтому используйте это осознанно.

Добавление от 14.01.2026

В какой-то момент снимки вдруг перестали приходит в каналы телеграма, хотя автоматизация исправно работала, не выдавая никаких предупреждений или ошибок в журнале.

Стал разбираться, долго не мог понять в чём дело, но случайно обратил внимание на количество фотографий в описании канала - 1000000. Кругленькая сумма, наверняка достигнуто какое-то ограничение. Так и оказалось. Более миллиона фоток в канал телеграм отправлять не позволяет.

Придётся настроить автоудаление по истечение какого-то времени. Однако настроенное сейчас автоудаление никак не затрагивает те фотки, которые уже отправлены в канал. Они там так и продолжат лежать. Настройка действует только на те фотки, что были отправлены после включения этой настройки.

Поэтому иных путей не остаётся - пришлось полностью очистить историю каналов всех камер, и всё снова заработало без каких-то дополнительных действий. Автоудаление настроил на полгода, так как максимальный вариант в 1 год уже не проходил по количеству фоток с моей настройкой интервала в 20 секунд - 1576800.